【COMSOL】Marzas 材料模型 C 源文件代码解析

本文详细解读了COMSOL中Mazars材料模型的C源文件,涉及应变、应力计算,材料参数及状态数组。通过输入检查、计算拉梅常数、主应变和主应力,确定损伤因子并更新材料状态,最终计算损伤后的应力和雅可比矩阵。在COMSOL中,使用线性单元可实现计算收敛。
摘要由CSDN通过智能技术生成

文件头

该材料模型输入为应变、材料参数、模型状态,输出为应力、雅可比矩阵,供 COMSOL 使用。

#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#ifdef _MSC_VER
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif
#define MIN(a,b) (((a)<(b))?(a):(b))
#define MAX(a,b) (((a)>(b))?(a):(b))

文件头里这些定义我只能看懂定义了MIN、和MAX

函数主体

EXPORT int eval(double e[6],       // Input: Green-Lagrange strain tensor components in Voigt order (xx,yy,zz,yz,zx,xy)
                double s[6],       // Output: Second Piola-Kirchhoff stress components in Voigt order (xx,yy,zz,yz,zx,xy)
                double D[6][6],    // Output: Jacobian of stress with respect to strain, 6-by-6 matrix in row-major order
                int *nPar,         // Input: Number of material model parameters, scalar,
                double *par,       // Input: Parameters: par[0] = E0, par[1] = nu0, ...
                int *nStates,      // Input: Number of states, scalar               
                double *states) {
     // States, nStates-vector

该计算应力结果的函数的输入有:
e[6]:格林-朗格朗日应变张量,以 Voigt 顺序存储,xx, yy, zz, yz, zx, xy。
s[6]: 皮奥拉·基尔霍夫应力,以 Voigt 顺序存储,xx, yy, zz, yz, zx, xy。
以上两者都是定义在参考构型上的。
D[6][6]: 应力-应变的雅可比矩阵。
nPar: 材料模型参数个数。
par: 材料模型参数数组。
nStates:状态数量。
states:状态数组。

在 COMSOL 软件中的外部材料选择类型“广义应力-应变关系”,就确定了输入量和输出量,还要求自定义材料属性明细,在里面,可以定义材料参数。在这个案例中,材料参数有10个:
E 0 , ν 0 E_0,\nu_0 E0,ν0:初始杨氏模量、泊松比
stchelp1、stchelp2、stchelp3:三个主拉伸伸长率
κ 0 \kappa_0 κ0:初始损伤阈值
A t , B t , A c , B c A_t,B_t,A_c,B_c At,Bt,Ac,Bc:模型中其它参数。(模型详情见上一篇

  int i, j;
  double E0, nu0, stch[3], kappa0, At, Bt, Ac, Bc, kappa, ep[3], evol, lambLame, muLame;
  double sp[
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值