토션 : 탄성-플라스틱 비틀림

참조

  • Neculai Andrei, 슬롯 무료체험 기술을 사용한 비선형 최적화 애플리케이션, 스프링거 최적화 및 그 애플리케이션, 모델토션(5.24) 장기계공학의 응용, 2013

카테고리 : 슬롯 무료체험 NOA 라이브러리


메인파일 : torsion.gms

$onText
비틀림이 발생할 때 무한히 긴 실린더의 잠재적인 응력 결정
적용됩니다.

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

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

참고자료:
Dolan, E D 등, J J, COPS를 사용한 벤치마킹 최적화 소프트웨어.
  기술. 대표, 수학 및 컴퓨터 과학부, 2000.
Glowinski, R, 비선형 변형 문제에 대한 수치적 방법.
  스프링거 출판사, 1984.
Averick, B M, Carter, R G, More, J J 및 Xue, G L, MINPACK-2 테스트
  문제 수집. 기술. 대표, 수학과 컴퓨터 과학
  아르곤 국립 연구소 부문, 1992.
Andrei, N., 제약 없는 최적화 알고리즘 추론에 대한 비판.
  Romanian Academic Press, 부쿠레슈티, 2009, 페이지: 432-434.
$offText

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

첫 번째 방향으로 nx개의 그리드 포인트를 설정합니다. / x0*x%nx% /
     두 번째 방향의 ny 그리드 점 / y0*y%ny% /

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

매개변수 D(nx,ny) 경계까지의 거리
           x에 대한 hx 그리드 간격
           y에 대한 hy 그리드 간격
           삼각형의 면적
           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) 유한 요소 근사 응력,
          린낮은,
          린어퍼,
          쿼드낮음,
          쿼드어퍼,
          스트레스;

방정식 정의,
          디플루,
          데프QL,
          데프큐,
          스트레스 해소;

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);

모델 비틀림 / 모두 /;

$ifThenI x%mode%==xbook
v.lo(i,j) = -d(i,j);
v.up(i,j) = d(i,j);
v.l(i,j) = d(i,j);

d,hx,hy,area를 표시합니다.
$onEcho >minos.opt
  초기본 한도 = 5000
$offEcho
torsion.workspace=120;
$endIf

nlp를 사용하여 비틀림을 최소화하는 응력을 해결합니다.

$ifThenI x%mode%==xbook
파일 res1 /torsion.txt/;
res1.pw=4000;
res1을 넣어;

loop(nx, loop(ny, put v.l(nx,ny):6:2; ); put /;); 놓다 /;
$endIf

* 비틀림 종료