您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 03_FLAC3D50_fish应用
FLAC3D5.0培训教程(武汉)工程师李振2014.3.27-3.28ITASCA(武汉)咨询有限公司FLAC3D5.0培训日程安排1.FLAC3DV5.0界面操作2.FLAC3D基本操作方法vs应用流程;3.FLAC3D内置Fish语言的应用;4.FLAC3D结构单元vs接触单元;5.FLAC3D渗流模块6.其他2014.3.27~2014.3.28•FISH是什么?•FISH能做什么?•FISH功能函数简介•FISH应用介绍FISH简介及其应用FISH是ITASCA软件内置的一款程序编译器:•FISH拥有高级程序语言所具有的普遍性功能,如变量、数组、函数定义、文件读写访问等•FISH具有自定义函数功能,并作为命令为FLAC3D程序随时调用•FISH内置了几乎全部的FLAC3D模型变量,根据变量的类型可进行任意访问或者修改•基于强大交互式访问能力,FISH成为很多ITASCA爱好者进行接口开发的首选工具,这些接口程序呈现功能用途多样化特色FISH是什么?FISH的一般应用方法:1.特殊功能;例如,模型生成、材料参数赋值、输入参数自动控制、分析结果后处理;2.作为HISTORY命令变量,用于监测用户模型自定义变量;3.特定功能在计算迭代过程中的自动执行;如,数值试验中的侍服控制(使用WHILESTEPPING函数);4.作为本构模型函数;如,在执行迭代过程中修改模型参数;5.编写FLAC3D与其他程序之间(包括ITASCA程序)的访问接口。FISH能干什么?注意项:•(;)为FISH注释符号•SET为参数初始化命令•自定义FISH变量、数组等参数具有全局特点•自定义变量或函数名称•自定义数组•自定义标量参数•模型变量(如,应力、属性)•内置函数•访问表(table)、一般性内存信息FISH可以定义:FISH变量、函数和操作DEFname...END如何定义FISH函数CASE_OFexprIFexpr1testexpr2······CASEnELSE······END_CASEEND_IFLOOPvar(expr1,expr2)LOOPWHILEexpr1testexpr2······END_LOOPEND_LOOP条件语句循环语句FISH变量、函数和操作COMMAND···END_COMMAND段落语句:嵌入FLAC3D命令功能FISH变量、函数和操作Fish函数Fish函数结构deffunction-name;定义函数名……;函数语句end;函数结束的标志Fish函数举例deffuncb=10a=b+10end@funcprint@aFish函数Fish函数与变量对于Fish函数和变量需要注意一下几点:函数和变量的赋值遵循数据类型的法则;变量和函数名的命名规则不能以数字开头,不能含有中文,不能含有下列字符:.,*/+-^=#()[]@;‘’“”变量和函数名不能与FLAC3D,FISH保留字相冲突;对变量赋值时,不能将当前函数的函数名放在“=”右边,这样会形成递归调用;变量和函数名是全局的;对FISH函数和变量的引用和通过如下命令来实现:•list用于查看函数和变量的数值•HISTORY可对函数和变量的数值进行记录•SET可对变量进行赋值Fish函数Fish函数数据类型整型:-2147483648~-2147483648浮点型:10-300~10300字符型:以(’)为分界符,常用于保存时文件名的定义指针型:表示单元和节点的存储地址Fish函数Fish函数语句选择语句CASEOF表达式…默认语句CASEn1…表达式值为n1时的语句CASEn2…表达式值为n2时的语句ENDCASE条件语句IF条件表达式…ENDIF注:IF语句内部可继续嵌套条件语句循环语句LOOPvar(exp1,exp2)…ENDLOOP或LOOPWHILE条件表达式…ENDLOOP命令语句COMMAND…ENDCOMMANDFish函数单元遍历和节点遍历基本变量zone_head和gp_head:分别表示单元和节点的头指针z_next()和gp_next:分别表示下一个单元(节点)单元遍历程序框架:p_z=zone_headloopwhilep_z#null;语句p_z=z_next(p_z)endloop节点遍历程序框架:p_gp=gp_headloopwhilep_z#null;语句p_gp=z_next(p_gp)endloopWHILESTEPPING(executionofthefunctionateveryFLACstep)WHILE_STEPPINGINT(changethetypeoftheassociatedvariable)FLOATSTRINGARRAYvar(n1,n2)(definitionofanarray)FISH特殊语句Mathematicalfunctionsatanatan2cosexptanlnlogsinsqrtabsmaxminsgnTypeconversionfloatintstringtypeMessagefunctionsinoutRandomgeneratorgrandurandLogicaloperatorsandnotorOthersfc_argget_memlose_memTablesxtableytabletableMemoryAccessimemfmemFISH内置数学函数FLAC3D模型数据结构对象n对象n-1对象2对象1HeaderNullFLAC3D数据对象及其头指针:•节点对象:gp_head•单元对象:zone_head•接触对象:i_head.......nextFLAC3D模型对象内置函数—节点节点n节点n-1节点2节点1gp_headNull•节点坐标•节点位移•节点速度......next表.节点内置变量.......注意*号的含义FLAC3D数据处理工具—表(table)x1y1x2y2x3y3xnyn表结构示意图建立数据表:tableidx1y1x2y2...xnyntable(xi,yi)常用数据表操作函数:•value=xtable(id,seq)•value=ytable(id,seq)Fish--避免递归调用!!generatezonebricksize111definestress_sumstress_sum=0.0localpnt=zone_headloopwhilepnt#nullstress_sum=stress_sum+z_sxx(pnt)pnt=z_next(pnt)end_loopend@stress_sumFISH语言新增功能变量名与函数名在fish语句外(或者是command里)时,调用须在前加@@变量名(函数名)LOOP语句可以使用局部变量(localvariables)LOOPFOREACH自动循环遍历每个对象EXITLOOP跳出循环.CONTINUE跳过循环中剩下的代码ELSEIF.应用实例:•土体的模量随小主应力变化3()naaEkppdefE_modifyp_z=zone_headd_k=704d_n=0.38d_pa=101325.0;//标准大气压loopwhilep_z#nullsigma_3=-1.0*z_sig1(p_z)E_new=d_k*d_pa*(sigma_3/d_pa)^d_nz_prop(p_z,'young')=E_newp_z=z_next(p_z)endloopendE_modify应用实例•获得最大位移的大小及发生位置deffind_max_dispp_gp=gp_headmaxdisp_value=0.0maxdisp_gpid=0loopwhilep_gp#nulldisp_gp=sqrt(gp_xdisp(p_gp)^2+gp_ydisp(p_gp)^2+gp_zdisp(p_gp)^2)ifdisp_gpmaxdisp_valuemaxdisp_value=disp_gpmaxdisp_gpid=gp_id(p_gp)endifp_gp=gp_next(p_gp)endloopendfind_max_dispprintmaxdisp_valuemaxdisp_gpidFISH的编写习惯第一步第二步defabcendabcdefabcp_gp=gp_headloopwhilep_gp#nullp_gp=gp_next(p_gp)endloopendabc第三步第四步defabcp_gp=gp_headloopwhilep_gp#nullcommandendcommandp_gp=gp_next(p_gp)endloopendabcdefabcp_gp=gp_headloopwhilep_gp#nullcommandappnstress…endcommandp_gp=gp_next(p_gp)endloopendabcFISH高级操作—文件读写FISH高级操作—文件读写FISH高级操作—文件读写1.使用FISH访问模型对象的变量,如节点位移、单元应力信息2.定制自定义监测变量,监测某节点总位移or寻找某制定区域的最大位移3.使用FISH进行材料参数、或边界条件修改4.循环开挖施工、求解、保存阶段文件5.其他FISH操作练习•Ad=getmem()
本文标题:03_FLAC3D50_fish应用
链接地址:https://www.777doc.com/doc-3050043 .html