/* * The Guccione Constitutive Material Law * * Model Status * * This is the original unchecked version of the model imported * from the previous CellML model repository, 24-Jan-2006. * * Model Structure * * This is an example of how CellML can be used to describe a material * law which models the passive, mechanical behaviour of a material. * The material law is to calculate the stress induced in a body * when a certain amount of deformation (strain) is imposed on * it. The calculated stresses are used to solve a system of equations * that govern the mechanics of large deformations. This is an * example of how CellML can be used to describe a material law. * The example presented is the Guccione constitutive material * law, which defines the relationship between six independent * strain components and the stress components. * * The Guccione material law was developed by Guccione et al. to * model the passive material (mechanical) properties of intact * ventricular myocardium.They approximated the equatorial region * of the canine left ventricle as a thich-walled cylinder made * of incompressible (volume is conserved during deformation), * hyperelastic (stores energy during deformation) and homogeneous * (made of same material) myocardium. Biaxial tests have shown * that passive myocardium exhibits anisotropy due to the fibre * orientation and structure of myocardial tissue (Guccione et * al. 1991). Here, Guccione et al. assumed transverse isotropy * (behaviour is independent of all directions of loading perpendicular * to one direction). For further details refer to Guccione et * al. 1991. * * The model was implemented in a manner that could be used for * peforming finite element model simulations on the CMISS software * program developed at the Bioengineering Institute, University * of Auckland. Examples of how the CellML model is used can seen * here. * * The complete original paper reference is cited below: * * Passive Material Properties of Intact Ventricular Myocardium * Determined From a Cylindrical Model, J. M. Guccione, A. D. McCulloch, * and L. K. Waldman, 1991. Journal of Biomechanical Engineering, * 113, 42-55. PubMed ID: 2020175 */ import nsrunit; unit conversion on; unit strain=1 dimensionless; unit stress=1 dimensionless; math main { //Warning: the following variables were set 'extern' or given // an initial value of '0' because the model would otherwise be // underdetermined: E11, E22, E33, E12, E13, E23 extern real E11 strain; extern real E22 strain; extern real E33 strain; extern real E12 strain; extern real E13 strain; extern real E23 strain; real aff strain; aff=0; real afn strain; afn=0; real afs strain; afs=0; real ann strain; ann=0; real ans strain; ans=0; real ass strain; ass=0; real bff strain; bff=0; real bfn strain; bfn=0; real bfs strain; bfs=0; real bnn strain; bnn=0; real bns strain; bns=0; real bss strain; bss=0; real kff strain; kff=0; real kfn strain; kfn=0; real kfs strain; kfs=0; real knn strain; knn=0; real kns strain; kns=0; real kss strain; kss=0; real Tdev11 stress; real Tdev22 stress; real Tdev33 stress; real Tdev12 stress; real Tdev13 stress; real Tdev23 stress; real elim11 strain; real elim22 strain; real elim33 strain; real elim12 strain; real elim13 strain; real elim23 strain; real etol11 strain; real etol22 strain; real etol33 strain; real etol12 strain; real etol13 strain; real etol23 strain; real tol dimensionless; tol=0.9; real signE11 dimensionless; real signE22 dimensionless; real signE33 dimensionless; real signE12 dimensionless; real signE13 dimensionless; real signE23 dimensionless; real eabs11 strain; real eabs22 strain; real eabs33 strain; real eabs12 strain; real eabs13 strain; real eabs23 strain; real aMeabs11 strain; real aMeabs22 strain; real aMeabs33 strain; real aMeabs12 strain; real aMeabs13 strain; real aMeabs23 strain; real mbffM1 strain; real mbfnM1 strain; real mbfsM1 strain; real mbnnM1 strain; real mbnsM1 strain; real mbssM1 strain; real p11 strain; real p12 strain; real p13 strain; real p22 strain; real p23 strain; real p33 strain; real q11 strain; real q12 strain; real q13 strain; real q22 strain; real q23 strain; real q33 strain; // // elim11=(tol*aff); elim22=(tol*ass); elim33=(tol*ann); elim12=(tol*afs); elim13=(tol*afn); elim23=(tol*ans); etol11=(aff-elim11); etol22=(ass-elim22); etol33=(ann-elim33); etol12=(afs-elim12); etol13=(afn-elim13); etol23=(ans-elim23); signE11=(if (E11>=0) 1 else -1); signE22=(if (E22>=0) 1 else -1); signE33=(if (E33>=0) 1 else -1); signE12=(if (E12>=0) 1 else -1); signE13=(if (E13>=0) 1 else -1); signE23=(if (E23>=0) 1 else -1); mbffM1=((-1)-bff); mbfnM1=((-1)-bfn); mbfsM1=((-1)-bfs); mbnnM1=((-1)-bnn); mbnsM1=((-1)-bns); mbssM1=((-1)-bss); eabs11=(signE11*E11); eabs22=(signE22*E22); eabs33=(signE33*E33); eabs12=(signE12*E12); eabs13=(signE13*E13); eabs23=(signE23*E23); aMeabs11=(aff-eabs11); aMeabs12=(afs-eabs12); aMeabs13=(afn-eabs13); aMeabs22=(ass-eabs22); aMeabs23=(ans-eabs23); aMeabs33=(ann-eabs33); p11=(etol11^((-1)*bff)*kff*(2+4*bff*elim11*signE11*etol11^(-1)+(-1)*bff*elim11^2*mbffM1*etol11^(-2))); q11=(etol11^((-1)*bff)*kff*elim11*(2+elim11*bff*signE11*etol11^(-1))-p11*elim11); p12=(etol12^((-1)*bfs)*kfs*(2+4*bfs*elim12*signE12*etol12^(-1)+(-1)*bfs*elim12^2*mbfsM1*etol12^(-2))); q12=(etol12^((-1)*bfs)*kfs*elim12*(2+elim12*bfs*signE12*etol12^(-1))-p12*elim12); p13=(etol13^((-1)*bfn)*kfn*(2+4*bfn*elim13*signE13*etol13^(-1)+(-1)*bfn*elim13^2*mbfnM1*etol13^(-2))); q13=(etol13^((-1)*bfn)*kfn*elim13*(2+elim13*bfn*signE13*etol13^(-1))-p13*elim13); p22=(etol22^((-1)*bss)*kss*(2+4*bss*elim22*signE22*etol22^(-1)+(-1)*bss*elim22^2*mbssM1*etol22^(-2))); q22=(etol22^((-1)*bss)*kss*elim22*(2+elim22*bss*signE22*etol22^(-1))-p22*elim22); p23=(etol23^((-1)*bns)*kns*(2+4*bns*elim23*signE23*etol23^(-1)+(-1)*bns*elim23^2*mbnsM1*etol23^(-2))); q23=(etol23^((-1)*bns)*kns*elim23*(2+elim23*bns*signE23*etol23^(-1))-p23*elim23); p33=(etol33^((-1)*bnn)*knn*(2+4*bnn*elim33*signE33*etol33^(-1)+(-1)*bnn*elim33^2*mbnnM1*etol33^(-2))); q33=(etol33^((-1)*bnn)*knn*elim33*(2+elim33*bnn*signE33*etol33^(-1))-p33*elim33); Tdev11=(if (eabs11<=elim11) aMeabs11^((-1)*bff)*kff*E11*(2+E11*bff*signE11*aMeabs11^(-1)) else p11*E11+q11); Tdev22=(if (eabs22<=elim22) aMeabs22^((-1)*bss)*kss*E22*(2+E22*bss*signE22*aMeabs22^(-1)) else p22*E22+q22); Tdev33=(if (eabs33<=elim33) aMeabs33^((-1)*bnn)*knn*E33*(2+E33*bnn*signE33*aMeabs33^(-1)) else p33*E33+q33); Tdev12=(if (eabs12<=elim12) aMeabs12^((-1)*bfs)*kfs*E12*(2+E12*bfs*signE12*aMeabs12^(-1)) else p12*E12+q12); Tdev13=(if (eabs13<=elim13) aMeabs13^((-1)*bfn)*kfn*E13*(2+E13*bfn*signE13*aMeabs13^(-1)) else p13*E13+q13); Tdev23=(if (eabs23<=elim23) aMeabs23^((-1)*bns)*kns*E23*(2+E23*bns*signE23*aMeabs23^(-1)) else p23*E23+q23); }