flowchan.gms : 무료 슬롯의 흐름 COPS 2.0 #7

설명

긴 수직 방향으로 주입하는 동안 유체의 흐름을 분석합니다.
무료 슬롯(흐름이 경계값으로 모델링된다고 가정)
문제

        u''''=R (u'u''-uu''), 0<=t<=1,
        u(0) =0, u(1)=1, u'(0)=u'(1)=0,

여기서 u는 전위 함수이고, u'는 접선 속도입니다.
유체이고 R은 레이놀즈 수입니다.

이 모델은 COPS 벤치마킹 제품군에서 나온 것입니다.
참조http://www-unix.mcs.anl.gov/~more/cops/.이산화 지점 수는 다음 명령을 사용하여 지정할 수 있습니다
라인 매개변수 --nh. NH에 대한 COPS 성능 테스트가 보고되었습니다.
= 50, 100, 200, 400

모델은 NLP(더미 목표 사용) 또는
중추신경계. CNS 모델을 해결하려면 명령줄 매개변수 --cns를 선택합니다.

Dolan, E D 등, JJ, 벤치마킹 최적화
COPS가 포함된 소프트웨어. 기술. 대표, 수학과 컴퓨터
과학부, 2000.

Ascher, UM, Mattheij, RM M 및 Russell, RD, 수치
보통의 경계값 문제 해결
미분 방정식. 1995년 시암.

키워드: 비선형 계획법, 공학, 경계값 문제, 유체
          속도, 유체 역학

대형 모델 유형 :NLP


카테고리 : 무료 슬롯 모델 라이브러리


메인 파일 : flowchan.gms

무료 슬롯 COPS 2.0 #7의 $title 흐름(FLOWCHAN,SEQ=235)

$onText
긴 수직으로 주입하는 동안 유체의 흐름을 분석합니다.
무료 슬롯(흐름이 경계값으로 모델링된다고 가정)
문제

        u''''=R (u'u''-uu''), 0<=t<=1,
        u(0) =0, u(1)=1, u'(0)=u'(1)=0,

여기서 u는 전위 함수이고, u'는 접선 속도입니다.
유체이고 R은 레이놀즈 수입니다.

이 모델은 COPS 벤치마킹 제품군에서 나온 것입니다.
http://www-unix.mcs.anl.gov/~more/cops/를 참조하세요.

이산화 지점 수는 다음 명령을 사용하여 지정할 수 있습니다.
라인 매개변수 --nh. NH에 대한 COPS 성능 테스트가 보고되었습니다.
= 50, 100, 200, 400

모델은 NLP(더미 목표 사용) 또는
중추신경계. CNS 모델을 해결하려면 명령줄 매개변수 --cns를 선택합니다.

Dolan, E D 등, JJ, 벤치마킹 최적화
COPS가 포함된 소프트웨어. 기술. 대표, 수학과 컴퓨터
과학부, 2000.

Ascher, UM, Mattheij, RM M 및 Russell, RD, 수치
보통의 경계값 문제 해결
미분 방정식. 1995년 시암.

키워드: 비선형 계획법, 공학, 경계값 문제, 유체
          속도, 유체 역학
$offText

$if 세트 n $set nh %n%
$설정되지 않은 경우 nh $set nh 50
$set NC 4
$세트 4번째

세트
   nc '배치 포인트' / 1*%nc% /
   nh '파티션 간격' / 1*%nh% /
   nd '미분방정식의 차수' / 1*%nd% /;

스칼라
   tf '[0 tf]에 정의된 ODE' / 1 /
   R '레이놀즈 수' / 10.0 /
   h '균일한 간격 길이';

h = tf/%nh%;

매개변수
   bc(nd,*) '경계 조건' / 1.시작 0
                                                         1.1 종료
                                                         2.0 시작
                                                         2.0 종료 /
   rho(nc) 'k차 르장드르 다항식의 근' / 1 0.06943184420297
                                                         2 0.33000947820757
                                                         3 0.66999052179243
                                                         4 0.93056815579703 /;

* 배열 근사 u는 매개변수 v와 w에 의해 정의됩니다.
* uc[i,j]는 배열 지점에서 평가됩니다.
* Duc[i,j,s]는 배열점에서 u의 (s-1)차 도함수입니다.

변수
   v(nh,nd)
   w(nh,nc)
   Duc(nh,nc,nd);

방정식
   덕데프(nh,nc,nd)
   bc_3
   bc_4
   연속성(nh,nd)
   배열(nh,nc);

별칭 (nh,i), (nc,j,kj), (nd,s,ks);

Ducdefi,j,s..
   Duc(i,j,s) =e= sumks$(ord(ks)-ord(s)>=0), v[i,ks]*power(rho[j]*h,ord(ks)-ord(s))/fact[ord(ks)-ord(s)]
               + power(h,%nd%-ord(s)+1)*sumkj, w[i,kj]*power(rho[j],ord(kj)+%nd%-ord(s))/fact[ord(kj)+%nd%-ord(s)];

* 경계조건
v.fx('1','1') = bc('1','시작');
v.fx('1','2') = bc('2','시작');

bc_3..
      sumks, v['%nh%',ks]*power(h,ord(ks)-1)/fact[ord(ks)-1] + power(h,%nd%)
   * 합계kj, w['%nh%',kj]/fact[ord(kj)+%nd%-1]
  =e= bc('1','끝');

bc_4..
      sumks$(ord(ks)-2>=0), v['%nh%',ks]*power(h,ord(ks)-2)/fact[ord(ks)-2]
   + 전력(h,%nd%-1)*sumkj, w['%nh%',kj]/fact[ord(kj)+%nd%-2]
  =e= bc('2','끝');

연속성(i+1,s)..
      sumks$(ord(ks)-ord(s)>=0), v[i,ks]*power(h,ord(ks)-ord(s))/fact[ord(ks)-ord(s)]
   + power(h,%nd%-ord(s)+1)*sumkj, w[i,kj]/fact[ord(kj)+%nd%-ord(s)]
  =e= v[i+1,s];

배열(i,j)..
   sumkj, w[i,kj]*power(rho[j],ord(kj)-1)/fact[ord(kj)-1] =e=
   R*(Duc[i,j,'2']*Duc[i,j,'3'] - Duc[i,j,'1']*Duc[i,j,'4']);

* 초기값
매개변수 t(nh) '파티션';
t(i) = (ord(i) - 1)*h;

v.l[i,'1'] = sqr(t[i])*(3 - 2*t[i]);
v.l[i,'2'] = 6*t[i]*(1 - t[i]);
v.l[i,'3'] = 6*(1.0 - 2*t[i]);
v.l[i,'4'] = -12;

Duc.li,j,s = sumks$(ord(ks)-ord(s)>=0), v.l[i,ks]*power(rho[j]*h,ord(ks)-ord(s))/fact[ord(ks)-ord(s)];

$설정되지 않은 경우 cns $goTo nlp

모델 무료 슬롯 / 모두 /;

$if set workSpace 무료 슬롯.workSpace = %workSpace%;

cns를 사용하여 무료 슬롯을 해결합니다.

$go계속하려면

$라벨 nlp
변수 obj '더미 목표';

방정식 defobj;

defobj..obj =e= 0.0;

모델 무료 슬롯 / 모두 /;

$if set workSpace 무료 슬롯.workSpace = %workSpace%

nlp를 사용하여 obj를 최소화하는 무료 슬롯을 해결합니다.

$label 계속
매개변수 uc(nh,nc,nd) '요약 보고서';
uc(i,j,s) = v.l[i,s] + h*sumkj, w.l[i,kj]*power(rho[j],ord(kj))/fact[ord(kj)];

UC를 표시;