二次开发环境.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:20 大小:1.5MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

二次开发环境.ppt

二次开发环境.ppt

预览

免费试读已结束,剩余 10 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

内容二次开发环境自定义本构模型的功能自定义本构模型的基本方法doubleUserModel::GetProperty()和voidUserModel::SetProperty()函数constchar*UserModel::Initialize()函数参数和状态指示器的初始化,并对派生类声明中定义的私有变量进行赋值constchar*UserModel::Run(unsignednDin,States*ps)函数由应变增量计算得到应力增量,从而获得新的应力constchar*UserModel::SaveRestore()函数对计算结果进行保存。程序的调试在VC++的工程设置中将FLAC3D软件中的EXE文件路径加入到程序的调试范围中,并将FLAC3D自带的DLL文件加入到附加动态链接库(AdditionalDLLs)中,然后在Initialize()或Run()函数中设置断点,进行调试;在程序文件中加入return()语句,这样可以将希望得到的变量值以错误提示的形式在FLAC3D窗口中得到。常用模型信息传递指针变量模型源程序分解静力本构(Mohr-Coulomb)1.屈服函数写成线性函数S:写成线性函数S:constchar*UserMohrModel::Initialize(unsigneduDim,State*){if((uDim!=2)&&(uDim!=3))return("IllegaldimensioninUserMohrconstitutivemodel");dE1=dBulk+d4d3*dShear;dE2=dBulk-d2d3*dShear;dG2=2.0*dShear;doubledRsin=sin(dFriction*dDegRad);dNPH=(1.0+dRsin)/(1.0-dRsin);dCSN=2.0*dCohesion*sqrt(dNPH);if(dFriction){doubledApex=dCohesion*cos(dFriction*dDegRad)/dRsin;dTension=dTension<dApex?dTension:dApex;}dRsin=sin(dDilation*dDegRad);dRnps=(1.0+dRsin)/(1.0-dRsin);doubledRa=dE1-dRnps*dE2;doubledRb=dE2-dRnps*dE1;doubledRd=dRa-dRb*dNPH;dSC1=dRa/dRd;dSC3=dRb/dRd;dSC2=dE2*(1.0-dRnps)/dRd;dBISC=sqrt(1.0+dNPH*dNPH)+dNPH;dE21=dE2/dE1;return(0);}constchar*UserMohrModel::Run(unsigneduDim,State*ps){if((uDim!=3)&&(uDim!=2))return("IllegaldimensioninMohrconstitutivemodel");if(ps->dHystDampMult>0.0)HDampInit(ps->dHystDampMult);/*---plasticityindicator:*//*store'now'info.as'past'andturn'now'infooff---*/if(ps->mState&mShearNow)ps->mState=(unsignedlong)(ps->mState|mShearPast);ps->mState=(unsignedlong)(ps->mState&~mShearNow);if(ps->mState&mTensionNow)ps->mState=(unsignedlong)(ps->mState|mTensionPast);ps->mState=(unsignedlong)(ps->mState&~mTensionNow);intiPlas=0;doubledTeTens=dTension;/*---trialelasticstresses---*/doubledE11=ps->stnE.d11;doubledE22=ps->stnE.d22;doubledE33=ps->stnE.d33;ps->stnS.d11+=dE11*dE1+(dE22+dE33)*dE2;ps->stnS.d22+=(dE11+dE33)*dE2+dE22*dE1;ps->stnS.d33+=(dE11+dE22)*dE2+dE33*dE1;ps->stnS.d12+=ps->stnE.d12*dG2;ps->stnS.d13+