torsion.gms : 탄성-소성 슬롯 COPS 2.0 #15

설명

다음의 경우 무한히 긴 원통의 잠재적인 응력을 결정하십시오.
슬롯이 적용됩니다.

이 모델은 COPS 벤치마킹 제품군에서 나온 것입니다.
참조http://www-unix.mcs.anl.gov/~more/cops/.내부 그리드 포인트 수는 다음 명령을 사용하여 지정할 수 있습니다
라인 매개변수 --nx 및 --ny. COPS 성능 테스트가 완료되었습니다.
nx-1 = 50, ny-1 = 25, 50, 75, 100에 대해 보고됨

대형 모델 유형 :NLP


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


메인 파일 : torsion.gms

$title 탄성-플라스틱 슬롯 COPS 2.0 #15 (TORSION,SEQ=243)

$onText
다음과 같은 경우 무한히 긴 원통의 응력 잠재력을 결정합니다.
슬롯이 적용됩니다.

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

내부 격자점 수는 다음 명령을 사용하여 지정할 수 있습니다.
라인 매개변수 --nx 및 --ny. COPS 성능 테스트가 완료되었습니다.
nx-1 = 50, ny-1 = 25, 50, 75, 100에 대해 보고됨

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

Glowinski, R, 비선형 변이에 대한 수치적 방법
문제. 스프링거 출판사, 1984.

Averick, B M, Carter, R G, More, J J 및 Xue, G L, The
MINPACK-2 테스트 문제집. 기술. 대표, 수학과
아르곤 국립 연구소(Argonne National Laboratory) 컴퓨터 과학부,
1992.

키워드: 비선형 프로그래밍, 공학, 탄성-소성 슬롯 문제,
          탄성-소성 분석
$offText

$설정되지 않은 경우 nx $set nx 51
$설정되지 않은 경우 $set ny 26

세트
   nx '첫 번째 방향의 그리드 점' / x0*x%nx% /
   ny '두 번째 방향의 그리드 점' / y0*y%ny% /;

별칭 (nx,i), (ny,j);

매개변수
   D(nx,ny) '경계까지의 거리'
   hx 'x의 그리드 간격'
   hy 'y의 그리드 간격'
   면적 '삼각형의 면적'
   c '일부 상수' / 5.0 /;

hx = 1/(카드(nx) - 1);
hy = 1/(카드(ny) - 1);
면적 = 0.5*hx*hy;

D(i,j) = min(min(ord(i)-1, 카드(nx)-ord(i))*hx, min(ord(j)-1, 카드(ny)-ord(j))*hy);

변수
   v(nx,ny) '유한 요소 근사를 정의합니다'
   스트레스
   린로워
   린어퍼
   쿼드낮음
   쿼드어퍼;

방정식
   기본
   defLU
   defQL
   defQU
   스트레스 해소;

defLL..linLower =e= sum((nx(i+1),ny(j+1)), v[i+1,j] + v[i,j] + v[i,j+1]);

defLU.. linUpper =e= sum((nx(i-1),ny(j-1)), v[i,j] + v[i-1,j] + v[i,j-1]);

defQL..quadLower =e= sum((nx(i+1),ny(j+1)), sqr((v[i+1,j] - v[i,j])/hx)
                                            + sqr((v[i,j+1] - v[i,j])/hy));

defQU..quadUpper =e= sum((nx(i-1),ny(j-1)), sqr((v[i,j] - v[i-1,j])/hx)
                                            + sqr((v[i,j] - v[i,j-1])/hy));

defstress.. 응력 =e= 면적*( (quadLower +quadUpper)/2
                             -c*(linLower + linUpper )/3);

v.lo(i,j) = -d(i,j);
v.up(i,j) = d(i,j);
v.l(i,j) = d(i,j);

모델 슬롯 / 모두 /;

d, hx, hy, 면적을 표시합니다.

$if set workSpace torsion.workSpace = %workSpace%

nlp를 사용하여 슬롯을 최소화하는 응력을 해결합니다.

$exit

* 중간 변수 제거
방정식 디스트레스x;

디스트레스x..
   스트레스 =e= 면적*(( sum((nx(i+1),ny(j+1)), sqr((v[i+1,j] - v[i,j])/hx) + sqr((v[i,j+1] - v[i,j])/hy))
                     + sum((nx(i-1),ny(j-1)), sqr((v[i,j] - v[i-1,j])/hx) + sqr((v[i,j] - v[i,j-1])/hy)))/2
                   -c*(합((nx(i+1),ny(j+1)), v[i+1,j] + v[i,j] + v[i,j+1])
                     + sum((nx(i-1),ny(j-1)), v[i,j] + v[i-1,j] + v[i,j-1]))/3);

모델 슬롯x / defstressx /;

$if set workSpace torsionx.workSpace = %workSpace%

nlp를 사용하여 슬롯을 해결하고 스트레스를 최소화합니다.