命令流指的是一条条命令,与鼠标在AUI对话框中的点选操作相对应。虽然在对话框中进行操作更直观、易懂,但是往往需要重复操作导致建模效率大大降低。虽然命令流不如对话框直观,但是编辑、修改模型中的参数和设置都非常方便,可重复操作性强。
对于较大的模型,如果保存为*.idb格式,占用硬盘空间较大,但是打开速度较快;如果保存为*.in格式,则占用硬盘空间很小,更易于保存,但是打开并执行文件需要较长时间,主要原因是读入几何、划分网格需要花费较长的时间。
对话框操作比较繁琐,且可重复性差,修改过程中需要重新定义许多参数,而修改命令流将更方便快捷。举个简单的例子,图4-1所示的几何体由3个基本几何体进行布尔运算得到。如果希望改变两个孔的内径,可以采取下列两种方法之一来实现:
图4-1 布尔运算后的体
1)在AUI中操作。可以先单击后退按钮,重新定义两个圆柱,重新做布尔运算,操作比较繁琐。由于默认情况下后退按钮只能后退5步操作,如果后退不能成功,则必须首先删除该体,并重新定义3个基本几何体,然后做布尔运算,这样将更加麻烦。
2)在命令流中操作。生成该体的命令流文件如图4-2所示,第1条命令表示生成一个块体(block),第2条和第3条命令则表示生成两个圆柱体(cylinder),第4条命令表示用块体减去两个圆柱体的布尔运算。修改图4-2方框中的数值并保存命令流文件,重新读入该文件即可修改两个孔的半径,操作起来十分方便。
图4-2 生成布尔体的命令流
下面分6点来介绍前处理命令流的应用。
(1)常用的命令ADINA中的命令和关键字非常多,读者不可能将它们全部记住,这并不表明学习命令流很困难。实质上,常用的命令流关键字并不是很多,而且规律性很强,稍微学习就可以很快上手。建议采用“边做边学”的方法来学习命令流,而无须特意去学习。首先在AUI中进行操作,生成对应的命令流文件,然后将AUI中的操作与命令流比较来学习,就可以很容易理解每条命令的含义,并迅速掌握命令和关键字。下面将简单介绍一些最常用的命令:
1)定义点:(生成4个点)。
*
COORDINATES POINT SYSTEM=0
@ CLEAR
1 0.00000000000000 0.00000000000000 0.00000000000000 0
2 0.00000000000000 1.00000000000000 0.00000000000000 0
3 0.00000000000000 0.00000000000000 1.00000000000000 0
4 0.00000000000000 1.00000000000000 1.00000000000000 0
@
2)定义线:(点1和点3生成一条直线)。
*
LINE STRAIGHT NAME=1 Pl=1 P2=3
3)定义面:(点1、2、3和4生成一个面)。
*
SURFACE VERTEX NAME=1 Pl=1 P2=2 P3=4 P4=3
4)定义体:(由面1拉伸成体及定义parasolid块体)。
*
VOLUME EXTRUDED NAME=1 SURFACE=1 DX=1.00000000000000,DY=0.00000000000000 DZ=0.00000000000000 SYSTEM=0 PCOINCID=YES,PTOLERAN=1.OOOOOOOOOOOOOOE-05 NDIV=1 0PTION=VECTOR,RATIO=1.00000000000000 PROGRESS=GEOMETRIC CBIAS=NO
*
BODY BLOCK NAME=1 0PTION=CENTERED POSITION=VECTOR ORIENTAT=SYS-TEM,CXl=0.00000000000000 CX2=0.00000000000000 CX3=0.00000000000000 ,SYSTEM=0 DXl=1.00000000000000 DX2=1.00000000000000 ,DX3=1.00000000000000
5)定义材料:(定义杨氏模量为2 e11,泊松比为0.3,密度为7800的线弹性材料)。
*
MATERIAL ELASTIC NAME=1 E=2.OOOOOOOOOOOOOOE +11 NU=0.300000000000000 ,DENSITY=7800.00000000000 ALPHA=0.00000000000000 MDESCRIP='NONE'
6)定义和施加约束:(定义了名为FIX-X的约束,并将其施加在面1上)。
*
FIXITY NAME=FIX-X
@ CLEAR
'X-TRANSLATION'
WVALIZATION I
@
*
FIXBOUNDARY SURFACES FIXITY=ALL
@ CLEAR
1 I FIX-X I
@
7)定义和施加载荷:(定义大小为100沿Z轴负方向的力,并将其施加在点3处)。
*
LOAD FORCE NAME=1 MAGNITUD=100.000000000000 FX=0.00000000000000,FY=0.00000000000000 FZ=-1.00000000000000
*
APPLY-LOAD BODY=0
@ CLEAR
1'FORCE il'POINT'3 0 1 0.00000000000000 0 -1 0 0 0'NO',
0.00000000000000 0.00000000000000 1 0'MID'
@
8)定义和施加初始条件:(定义Y向初始速度为100的名为INI的初始条件,并将其施加在体1上)。
INITIAL- COND NAME=INI INITIALS=NO
@ CLEAR
iY- VELOCITY.100.000000000000
@
SET-1NITCOND VOLUMES CONDIT10=1NI
@ CLEAR
1 iINI'0
@
*
EGROUP THREEDSOLID NAME=1 DISPLACE=DEFAULT STRAINS=DEFAULT MATE-RIAL=1 RSINT=DEFAULT TINT=DEFAULT RESULTS=STRESSES DEGEN=YES,FORMULAT=0 STRESSRE=GLOBAL INITIALS=NONE FRACTUR=NO,CMASS=DEFAULT STRAIN-F=0 UL-FORMU=DEFAULT LVUSl=0 LVUS2=0,SED=NO RUPTURE=ADINA INCOMPAT=DEFAULT TIME-OFF=0.00000000000000,POROUS=NO WTMC=1.00000000000000 0PTION=NONE DESCRIPT='NONE',PRINT=DEFAULT SAVE=DEFAULT TBIRTH=0.00000000000000,TDEATH=0.00000000000000 TMC-MATE=1 RUPTURE-=0
10)指定网格密度:(为体1指定网格密度)。
*
SUBDIVIDE VOLUME NAME=1 MODE=DIVISIONS NDIVl=10 NDIV2=5 NDIV3=8,RATI01=1.00000000000000 RATI02=1.00000000000000,RATI03=1.00000000000000 PROGRESS=GEOMETRIC EXTEND=NONE CBIASl=NO,CBIAS2=NO CBIAS3=NO
11)划分网格:(为体1划分网格)。
*
GVOLUME NODES=8 PATI'ERN=0 NCOINCID=BOUNDARIES NCFACE=123456 NCEDGE=,'123456789ABC'NCVERTEX=12345678 NCTOLERA=1.00000000000000E-05,(www.xing528.com)
SUBSTRUC=0 GROUP=1 MESHING=MAPPED PREFSHAP=AUTOMATIC DEGENERA=NO,
COLLAPSE=NO MIDNODES=CURVED METHOD=DELAUNAY BOUNDARY=ADVFRONT
@ CLEAR
1
@
划分网格的命令包括:GPOINT(为离散点划分网格)、GLINE、GSURFACE、GVOL-UME(为native建模方式的线、面、体划分网格)、GEDGE、GFACE、GBODY(为parasolid建模方式的线、面、体划分网格)。虽然两种几何建模方式的划分网格命令有所不同,但在同一模型中可以混合使用,详见第4.2.3节“网格的连续与不连续”。
12)Master命令。
*
MASTER ANALYSIS=DYNAMIC-DIRECT-INTEGRATION MODEX=EXECUTE,TSTART=0.00000000000000 IDOF=0 0VALIZAT=NONE FLUIDPOT=AUTOMATIC,CYCLJCPA=1 IPOSJT=STOP REACTION=YES INITJALS=NO FSINTERA=YES,IRINT=DEFAULT CMASS=NO SHELLNDO=AUTOMATIC AUTOMATI=ATS,SOLVER=SPARSE CONTACT-=CONSTRAINT-FUNCTION,TRELEASE=0.00000000000000 RESTART-=NO FRACTURE=NO LOAD-CAS=NO,LOAD-PEN=NO MAXSOLME=0 MTOTM=2 RECL=3000 SINGULAR=YES,STJFFNES=0.000100000000000000 MAP-OUTP=NONE MAP-FORM=NO,NODAL-DE=''POROUS-C=NO ADAPTIVE=0 ZOOM-LAB=1 AXIS-CYC=0,PERIODIC=NO VECTOR-S=GEOMETRY EPSI-FIR=NO STABILIZ=NO,STABFACT=1.OOOOOOOOOOOOOOE-10 RESULTS=PORTHOLE FEFCORR=NO,BOLTSTEP=1 EXTEND-S=YES CONVERT-=NO DEGEN=YES TMC-MODE=NO,ENSIGHT-=NO
命令流中,Master命令是参数最多、最为复杂的一条命令,它可以设置模型的计算模块、各种求解参数、单元算法等。一般情况下很少手工修改Master命令。此外,除了上面所列举的命令之外,命令流中还包括很多其他命令(例如,设定接触、设定特殊边界条件、设定运动假设、设定迭代收敛准则等),读者可以在“边做边学”中不断地理解和掌握。
13)生成求解文件(*.dat)命令。
ADINA FILE='probOl_a.dat'OVERWRITE=YES
该语句的功能是:让ADINA Structures在当前文件夹中输出文件名为prob01_a.dat的求解文件。如果当前文件夹中包含同名文件,则将其覆盖。
ADINA-F FILE='probOl_f.dat'OVERWRITE=YES
该语句的功能是:让ADINA-CFD在当前文件夹中输出文件名为prob01_f.dat的求解文件。如果当前文件夹中包含同名文件,则将其覆盖。
(2)整理命令流文件 保存的命令流文件能够将AUI中的所有操作按照顺序一一记录下来,如果在AUI中操作错误而反复修改过,生成的命令流文件中也会包含对应的重复命令。重新读取命令流文件时,也会重复操作这些命令,这不但增加了程序的执行时间,而且降低了命令流文件的可读性,使得命令流看起来非常无条理。一般情况下都需要经常整理命令流文件,并删掉重复的命令,这是建模分析的好习惯。对于ADINA软件的初学者,盲目地删除命令流可能出现各种意想不到的问题,为了避免出现错误,建议初学者在修改命令流时不要覆盖原始文件。
在创建模型的过程中,覆盖保存命令流文件时可能会出现下列命令行(人工编辑命令流时可以删除这些命令行):
*
FEPROGRAM PROGRAM=ADINA
*
CONTROL PLOTUNIT=PERCENT VERBOSE=YES ERRORLIM=0 LOGLIMIT=0 UNDO=5,PROMPTDE=UNKNOWN AUTOREPA=YES DRAWMATT=YES,DRAWTEXT=EXACT DRAWLINE=EXACT DRAWFILL=EXACT AUTOMREB=YES,ZONECOPY=NO SWEEPCOI=YES SESSIONS=YES DYNAMICT=YES,UPDATETH=YES AUTOREGE=NO ERRORACT=CONTINUE FILEVERS=V85,INITFCHE=NO SIGDIGIT=6 AUTOZONE=YES PSFILEVE=VO
定义边界条件时经常会遇到多个线、面的边界条件相同的情况,下列是定义流固耦合界面的命令,面1~面20表示流固耦合界面。保存命令流文件时,每个面都会占据1行,20个面将占据20行,如果包含上百个面则将占据上百行,使得命令流文件较长,阅读和修改都很麻烦。
FSBOUNDARY FACES NAME=1 BODY=1
@ CLEAR
1
2
3
……
20
@
如果定义的流固耦合界面的面号连续,在编辑修改命令流文件时,可以将其修改为下列形式,不仅节省了存储空间,而且增加了命令流文件的可读性。
FSBOUNDARY FACES NAME=1 BODY=1
@ CLEAR
1
to
20
@
也可以整理为一行,如下所示。
FSBOUNDARY FACES NAME=1 BODY=1
@ CLEAR
1 t0 20
@
如果定义的流固耦合界面的面号不连续,例如,面8和面9不属于流固耦合面,则可以将该命令修改为如下所示(定义其他边界条件、指定网格密度及划分网格时,也可以采用“to”的方法):
FSBOUNDARY FACES NAME=1 BODY=1
@ CLEAR
1
to
7
10
to
20
@
(3)“*”的含义 在命令流文件中,“*”表示注释,无实际意义。为了便于他人读懂命令流文件,可以在“*”的后面添加说明语句。例如:
*定义面1~面20为流固耦合边界条件
FSBOUNDARY FACES NAME=1 BODY=1
@ CLEAR
1
to
20
@
(4)活用read end命令read end是一条命令,允许手动添加到命令流文件中的适当位置。当程序执行到该关键字时将暂停,读者可以根据需要在AUI中进行各种操作,操作完成后,可以单击图标继续读取命令流文件。例如,如果对当前模型指定的网格密度和网格划分效果不满意,此时可以打开命令流文件,找到指定网格密度及网格划分的语句,将这些语句删除,并使用read end命令代替,保存命令流文件后重新读入该文件。程序暂停后就可以在AUI中手动操作网格密度和划分网格。操作完成后,单击图标来执行剩余的命令,然后重新保存命令流文件。这样做不仅可以指定满足要求的网格密度和网格划分,同时也可以得到修改后的命令流文件。如果读者希望在模型中修改或插入某些命令,就可以使用read end语句来灵活地修改模型。
(5)定义参数化变量 整理好的命令流文件相当于一个可参数化修改的文件。例如,当希望修改网格密度时,只要打开命令流文件查找到对应的语句,修改网格密度参数后保存文件,然后重新读入该文件即可。同时,ADINA软件还允许在命令流中自定义参数化变量,格式可参考如下示例:
这段命令流定义了3个变量,分别是length、width和height。其中,length等于1,width等于length的4倍,height等于width的平方根。然后定义了block,它的长(DX1)、宽(DX2)和高(DX3)分别等于length、width和height。需要注意的是:定义变量时需要使用PARAMETER关键字,为变量赋值时需要使用“′′”,引用其他变量时则需要在变量前加“$”。
(6)简化命令流文件 ADINA-AUI自动生成的命令行非常长,读者可以根据需要对这些命令进行简化,简化后的命令行看起来非常简单,可读性更强。例如,系统默认生成的二维单元组的命令如下:
*
EGROUP TWODSOLID NAME=2 SUBTYPE=STRAIN DISPLACE=DEFAULT,STRAINS=DEFAULT MATERIAL=2 INT=DEFAULT RESULTS=STRESSES,DEGEN=YES FORMULAT=0 STRESSRE=GLOBAL INITIALS=NONE FRACTUR=NO,CMASS=DEFAULT STRAIN-F=0 UL-FORMU=DEFAULT PNTGPS=0 NODGPS=0,LVUSl=0 LVUS2=0 SED=NO RUPTURE=ADINA INCOMPAT=DEFAULT,TIME-OFF=0.00000000000000 POROUS=NO WTMC=1.00000000000000,OPTION=NONE DESCRIPT=iNONE iTHICKNES=1.00000000000000,PRINT=DEFAULT SAVE=DEFAULT TBIRTH=0.00000000000000,rrDEArrH=0.00000000000000 rrMC_ MATE=1 RUPTURE-=0
上述命令共包含9行代码。定义单元组时只改变了应变状态及材料,其他均采用默认设置,因此,可以将该命令行简化为如下所示:
*
EGROUP TWODSOLID NAME=2 SUBTYPE=STRAIN MATERIAL=2
ADINA安装目录的Samples文件夹中提供了primer手册和verify手册的例题命令流文件,它们均经过了简化和整理(尤其是verify手册,需要有一定的“功底”才能够看懂)。
需要注意的是:简化命令流需要一定的基础,读者一定不要将需要的某些命令删掉,否则可能会出现一些问题。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。