ansys、flux之类的功能比较正规点, 设置一下就可以做分析, 但是你有什么新奇点的想法大概是很难实现的了
matlab有个FEM函数包, 也许做这方面能容易些吧。
如果你是公司里要做事情, 用ansys flux这种现成的就好了。 如果是搞研究要琢磨算法或者写论文的话也许matlab好一些。 如果研究完了要实用的话, 可以等matlab做通了转fortran, 速度能快一些
写代码比较省心, 要是能设置好分布式计算的话, 算几天什么数据都有了 。 而且用ansys的话论文里对算法、精度、开销、细节之类的也不太好分析吧
我是说ansys, flux之类的东西方法都是固定的, 不是用来研究的, 如果就具体某类问题你选了一个比较适合的方法,做了一些适当的改进的话, 自己写个程序就要比用这些更实用点。
是的
第一种方法:
1 建立工作目录/ ]"
2 将ABAQUS安装目录\64-pr11\site下的aba_param_dpinc 或 aba_param_spinc拷贝到工作目录,并改名为aba_paraminc;
3 将编译的fortran程序拷贝到工作目录;
4 将obj文件拷贝到工作目录;
5 建立好输入文件inp;
6 运行abaqus job=inp_name user=fortran name即可。
第二种方法:
在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在User subroutine file中点击Select按钮,从d出对话框中选择你要调用的子程序文件(后缀为for或f)。
像是fortran77的程序,又不完全是。改为fortran77的程序如下,编译、连接均通过。
PROGRAM JOURNAL
DIMENSION H(61,21),P(61,21)
DATA B,R,C0,AN,EDA,EPSON,aSUM1/6E-2,25E-3,5E-5,6E4,005,07,0/
OPEN(9,FILE='PRESSUREDAT',STATUS='new')
OPEN(8,FILE='FILMDAT',STATUS='new')
PI=31415926
N=61
M=21
DX=20PI/FLOAT(N-1)
DY=1/FLOAT(M-1)
OMEGA=AN20PI/600
U=OMEGAR
ALFA=(R/BDX/DY)2
CALL SUBH(N,M,DX,EPSON,H)
CALL SUBP(N,M,DX,EPSON,ALFA,H,P)
CALL SUBM(N,M,DX,DY,aSUM1,PI,P)
CALL OUTPUT(N,M,DX,DY,H,P)
STOP
END
SUBROUTINE SUBH(N,M,DX,EPSON,H)
DIMENSION H(N,M)
DO 1 I=1,N
SETA=(I-10)DX
DO 2 J=1,M
H(I,J)=10+EPSONCOS(SETA)
2 continue
1 continue
RETURN
END
SUBROUTINE SUBP(N,M,DX,EPSON,ALFA,H,P)
DIMENSION H(N,M),P(N,M)
DO 3 I=1,N
DO 4 J=2,M-1
P(I,J)=05
4 continue
3 continue
DO 5 J=1,M
P(1,J)=00
P(N,J)=00
5 continue
DO 6 I=1,N
P(I,1)=00
P(I,M)=00
6 continue
IK=0
10 C1=00
ALOAD=00
DO 12 I=2,N-1
I1=I-1
I2=I+1
DO 13 J=2,M-1
PD=P(I,J)
J1=J-1
J2=J+1
A1=(05(H(I2,J)+H(I,J)))3
A2=(05(H(I,J)+H(I1,J)))3
A3=ALFA(05(H(I,J2)+H(I,J)))3
A4=ALFA(05(H(I,J)+H(I,J1)))3
P(I,J)=(-DX(H(I2,J)-H(I1,J))+A1P(I2,J)+A2P(I1,J)+A3P(I,J2)+
1 A4P(I,J1))/(A1+A2+A3+A4)
P(I,J)=07PD+03P(I,J)
IF(P(I,J)LT00)P(I,J)=00
C1=C1+ABS(P(I,J)-PD)
ALOAD=ALOAD+P(I,J)
20 CONTINUE
13 continue
12 continue
IK=IK+1
C1=C1/ALOAD
WRITE(,)IK,C1,ALOAD
IF(C1GT1E-7)GOTO 10
RETURN
END
SUBROUTINE SUBM(N,M,DX,DY,aSUM1,PI,P)
DIMENSION P(N,M)
PX=0
PY=0
TEMP=PI/60
DO 30 I=1,N
AI=(I-1)TEMP
DO 35 J=1,M
PX=PX-P(I,J)COS(AI)DXDY
PY=PY+P(I,J)SIN(AI)DXDY
35 continue
30 continue
aSUM1=SQRT(PXPX+PYPY)
WRITE(,)aSUM1
RETURN
END
SUBROUTINE OUTPUT(N,M,DX,DY,H,P)
DIMENSION Y(21),H(N,M),P(N,M)
DO 36 J=1,M
Y(J)=(J-1)DY-05
36 continue
WRITE(8,40)Y(1),(Y(J),J=1,M)
WRITE(9,40)Y(1),(Y(J),J=1,M)
DO 37 I=1,N
AX=(I-10)3600/(N-10)
WRITE(8,40)AX,(H(I,J),J=1,M)
WRITE(9,40)AX,(P(I,J),J=1,M)
37 continue
40 FORMAT(22(E126,1X))
STOP
END
以上就是关于有限元求解2维和3维亥姆霍兹方程,是用fortran matlab等编程语言,还是 Ansys、Ansoft、FLUX等专业软件全部的内容,包括:有限元求解2维和3维亥姆霍兹方程,是用fortran matlab等编程语言,还是 Ansys、Ansoft、FLUX等专业软件、用Fortran 如何编这个程序、请教Fortran问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)