m_hyper#

Purpose

Material function for hyperelastic solids.

Syntax

 mat= m_hyper('default') 
 mat= m_hyper('database name') 
 pl = m_hyper('dbval MatId name');
 pl = m_hyper('dbval -unit TM MatId name');
 pl = m_hyper('dbval -punit TM MatId name');

Description

Function based on m_elastic function adapted for hyperelastic material. Only subtype 1 is currently used:

1 : Nominal hyperelastic material#

Nominal hyperelastic materials are described by a row of the form

 [MatID   typ  rho Wtype C_1 C_2 K]

with typ an identifier generated with the fe_mat('m_hyper','SI',1) command, rho (density), Wtype (value for Energy choice), C1, C2, K (energy coefficients).
Possible values for Wtype are:

0:W = C1(J1−3) + C2(J2−3) + K(J3−1)2
1:W = C1(J1−3) + C2(J2−3) + K(J3−1) − (C1 + 2C2 + K)ln(J3)

Other energy functions can be added by editing the hyper.c Enpassiv function.

In RivlinCube test, m_hyper is called in this form:

model.pl=m_hyper('dbval 100 Ref'); % this is where the material is defined

the hyperelastic material called "Ref" is described in the database of m_hyper.m file:

  out.pl=[MatId fe_mat('type','m_hyper','SI',1) 1e-06 0 .3 .2 .3];
  out.name='Ref';
  out.type='m_hyper';
  out.unit='SI';

Here is an example to set your material property for a given structure model:

model.pl = [MatID fe_mat('m_hyper','SI',1) typ rho Wtype C_1 C_2 K];
model.Elt(2:end,length(feval(ElemF,'node')+1)) = MatID;