From 3c99a5fe2898f5f7fd255dde690d3e2abbcbed8c Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 13 Nov 2019 17:57:48 +1300 Subject: [PATCH 1/2] fix isotropic exponential constitutive function --- src/equations_set_constants.F90 | 6 +- src/finite_elasticity_routines.F90 | 172 ++++++++++++++++++++++++----- 2 files changed, 149 insertions(+), 29 deletions(-) diff --git a/src/equations_set_constants.F90 b/src/equations_set_constants.F90 index 53a9bbac..2c08ca64 100644 --- a/src/equations_set_constants.F90 +++ b/src/equations_set_constants.F90 @@ -163,8 +163,10 @@ MODULE EquationsSetConstants INTEGER(INTG), PARAMETER :: EQUATIONS_SET_RATE_BASED_GROWTH_MODEL_SUBTYPE=39 INTEGER(INTG), PARAMETER :: EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_GROWTH_MODEL_SUBTYPE=40 INTEGER(INTG), PARAMETER :: EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE=41 - INTEGER(INTG), PARAMETER :: EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE=42 - INTEGER(INTG), PARAMETER :: EQUATIONS_SET_MR_AND_GROWTH_LAW_IN_CELLML_SUBTYPE=43 + INTEGER(INTG), PARAMETER :: EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE=42 + + INTEGER(INTG), PARAMETER :: EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE=43 + INTEGER(INTG), PARAMETER :: EQUATIONS_SET_MR_AND_GROWTH_LAW_IN_CELLML_SUBTYPE=44 !Fluid mechanics class ! Stokes equations diff --git a/src/finite_elasticity_routines.F90 b/src/finite_elasticity_routines.F90 index c5b8c450..63a838d3 100644 --- a/src/finite_elasticity_routines.F90 +++ b/src/finite_elasticity_routines.F90 @@ -669,6 +669,7 @@ SUBROUTINE FINITE_ELASTICITY_GAUSS_ELASTICITY_TENSOR(EQUATIONS_SET,DEPENDENT_INT REAL(DP) :: TEMPTERM1,TEMPTERM2,VALUE REAL(DP), POINTER :: C(:) !Parameters for constitutive laws REAL(DP) :: B(6),E(6),DQ_DE(6),Q + REAL(DP) :: ONETHIRD_TRACE REAL(DP) :: I3EE(6,6) !vectorMatrices%nonlinearMatrices jacobianMatrix=>nonlinearMatrices%jacobians(1)%ptr IF(jacobianMatrix%updateJacobian) THEN - IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN DEPENDENT_FIELD=>equations%interpolation%geometricField GEOMETRIC_FIELD=>equations%interpolation%dependentField ELSE @@ -980,7 +1031,9 @@ SUBROUTINE FiniteElasticity_FiniteElementJacobianEvaluate(EQUATIONS_SET,ELEMENT_ !Point interpolation pointer geometricInterpPoint=>equations%interpolation%geometricInterpPoint(FIELD_U_VARIABLE_TYPE)%ptr geometricInterpPointMetrics=>equations%interpolation%geometricInterpPointMetrics(FIELD_U_VARIABLE_TYPE)%ptr - IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN dependentInterpPoint=>equations%interpolation%geometricInterpPoint(FIELD_U_VARIABLE_TYPE)%ptr dependentInterpPointMetrics=>equations%interpolation%geometricInterpPointMetrics(FIELD_U_VARIABLE_TYPE)%ptr geometricInterpPoint=>equations%interpolation%dependentInterpPoint(FIELD_VAR_TYPE)%ptr @@ -1513,7 +1566,9 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN rhsVector=>vectorMatrices%rhsVector vectorMapping =>vectorEquations%vectorMapping - IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN DEPENDENT_FIELD =>equations%interpolation%geometricField GEOMETRIC_FIELD =>equations%interpolation%dependentField ELSE @@ -1570,7 +1625,9 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN !Grab interpolation parameters FIELD_VARIABLE=>EQUATIONS_SET%equations%vectorEquations%vectorMapping%nonlinearMapping%residualVariables(1)%ptr FIELD_VAR_TYPE=FIELD_VARIABLE%VARIABLE_TYPE - IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN GEOMETRIC_INTERPOLATION_PARAMETERS=>equations%interpolation%dependentInterpParameters(FIELD_VAR_TYPE)%ptr DEPENDENT_INTERPOLATION_PARAMETERS=>equations%interpolation%geometricInterpParameters(FIELD_U_VARIABLE_TYPE)%ptr ELSE @@ -1631,7 +1688,9 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN ! END IF !Point interpolation pointer - IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN DEPENDENT_INTERPOLATED_POINT=>equations%interpolation%geometricInterpPoint(FIELD_U_VARIABLE_TYPE)%ptr DEPENDENT_INTERPOLATED_POINT_METRICS=>equations%interpolation%geometricInterpPointMetrics(FIELD_U_VARIABLE_TYPE)%ptr GEOMETRIC_INTERPOLATED_POINT=>equations%interpolation%dependentInterpPoint(FIELD_VAR_TYPE)%ptr @@ -1667,7 +1726,9 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN SELECT CASE(EQUATIONS_SET_SUBTYPE) ! --------------------------------------------------------------- CASE(EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & - & EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE) + & EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & + & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE ) + !Loop over gauss points and add residuals DO gauss_idx=1,DEPENDENT_NUMBER_OF_GAUSS_POINTS !Interpolate dependent, geometric, fibre and materials fields @@ -1823,7 +1884,6 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN ! --------------------------------------------------------------- CASE(EQUATIONS_SET_NO_SUBTYPE,EQUATIONS_SET_MEMBRANE_SUBTYPE, & & EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE, & - & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE,EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE, & @@ -2138,7 +2198,9 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN !Hydrostatic pressure component (skip for membrane problems) IF (EQUATIONS_SET_SUBTYPE /= EQUATIONS_SET_MEMBRANE_SUBTYPE) THEN - IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN HYDROSTATIC_PRESSURE_COMPONENT=GEOMETRIC_FIELD%VARIABLES(var1)%NUMBER_OF_COMPONENTS DEPENDENT_COMPONENT_INTERPOLATION_TYPE=GEOMETRIC_FIELD%VARIABLES(var1)%COMPONENTS( & & HYDROSTATIC_PRESSURE_COMPONENT)%INTERPOLATION_TYPE @@ -2153,7 +2215,9 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN TEMPTERM1=GAUSS_WEIGHT*Jxxi*(Jznu-Jg) ENDIF IF(DEPENDENT_COMPONENT_INTERPOLATION_TYPE==FIELD_NODE_BASED_INTERPOLATION) THEN !node based - IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN COMPONENT_BASIS=>GEOMETRIC_FIELD%VARIABLES(var1)%COMPONENTS(HYDROSTATIC_PRESSURE_COMPONENT)%DOMAIN% & & TOPOLOGY%ELEMENTS%ELEMENTS(elementNumber)%BASIS ELSE @@ -2524,7 +2588,9 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN !Hydrostatic pressure component (skip for membrane problems) IF (EQUATIONS_SET_SUBTYPE /= EQUATIONS_SET_MEMBRANE_SUBTYPE) THEN - IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN HYDROSTATIC_PRESSURE_COMPONENT=GEOMETRIC_FIELD%VARIABLES(var1)%NUMBER_OF_COMPONENTS DEPENDENT_COMPONENT_INTERPOLATION_TYPE=GEOMETRIC_FIELD%VARIABLES(var1)%COMPONENTS( & & HYDROSTATIC_PRESSURE_COMPONENT)%INTERPOLATION_TYPE @@ -2539,7 +2605,9 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN TEMPTERM1=GAUSS_WEIGHT*Jxxi*(Je-1.0_DP) ENDIF IF(DEPENDENT_COMPONENT_INTERPOLATION_TYPE==FIELD_NODE_BASED_INTERPOLATION) THEN !node based - IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN COMPONENT_BASIS=>GEOMETRIC_FIELD%VARIABLES(var1)%COMPONENTS(HYDROSTATIC_PRESSURE_COMPONENT)%DOMAIN% & & TOPOLOGY%ELEMENTS%ELEMENTS(elementNumber)%BASIS ELSE @@ -3539,10 +3607,11 @@ SUBROUTINE FiniteElasticity_FiniteElementPreResidualEvaluate(equationsSet,err,er CALL Field_VariableGet(dependentField,FIELD_U1_VARIABLE_TYPE,dependentVariable,err,error,*999) CALL FiniteElasticity_StressStrainCalculate(equationsSet,EQUATIONS_SET_R_CAUCHY_GREEN_DEFORMATION_TENSOR, & & dependentVariable,err,error,*999) + CASE(EQUATIONS_SET_MEMBRANE_SUBTYPE,EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE, & & EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & - & EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE, & - & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE,& + & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE,& & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_POLYNOMIAL_SUBTYPE, & & EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_SUBTYPE,EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_ACTIVE_SUBTYPE, & & EQUATIONS_SET_TRANS_ISOTROPIC_ACTIVE_TRANSITION_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE, & @@ -3555,6 +3624,8 @@ SUBROUTINE FiniteElasticity_FiniteElementPreResidualEvaluate(equationsSet,err,er & EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE,EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE, & & EQUATIONS_SET_INCOMPRESSIBLE_ELAST_MULTI_COMP_DARCY_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE, & & EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_ELASTICITY_FLUID_PRESSURE_STATIC_INRIA_SUBTYPE, & & EQUATIONS_SET_ELASTICITY_FLUID_PRESSURE_HOLMES_MOW_SUBTYPE, & & EQUATIONS_SET_ELASTICITY_FLUID_PRES_HOLMES_MOW_ACTIVE_SUBTYPE, & @@ -3623,6 +3694,8 @@ SUBROUTINE FiniteElasticity_FiniteElementPostResidualEvaluate(EQUATIONS_SET,err, & EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE,EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE, & & EQUATIONS_SET_INCOMPRESSIBLE_ELAST_MULTI_COMP_DARCY_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE, & & EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE,& + & EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_ELASTICITY_FLUID_PRESSURE_STATIC_INRIA_SUBTYPE, & & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_HUMPHREY_YIN_SUBTYPE,& & EQUATIONS_SET_ELASTICITY_FLUID_PRESSURE_HOLMES_MOW_SUBTYPE, & @@ -4683,8 +4756,13 @@ SUBROUTINE FiniteElasticity_TensorInterpolateXi(equationsSet,tensorEvaluateType, !Calculate F=dZ/dNU, the deformation gradient tensor at the xi location numberOfDimensions=equationsSet%region%coordinate_system%number_of_dimensions numberOfXi=elementBasis%number_of_xi - CALL FiniteElasticity_GaussDeformationGradientTensor(dependentInterpolatedPointMetrics, & + IF(ASSOCIATED(equations%interpolation%fibreInterpPoint)) THEN + CALL FiniteElasticity_GaussDeformationGradientTensor(dependentInterpolatedPointMetrics, & & geometricInterpolatedPointMetrics,fibreInterpolatedPoint,dZdNu,err,error,*999) + ELSE + CALL FiniteElasticity_GaussDeformationGradientTensor(dependentInterpolatedPointMetrics, & + & geometricInterpolatedPointMetrics,geometricInterpolatedPoint,dZdNu,err,error,*999) + END IF IF(tensorEvaluateType==EQUATIONS_SET_R_CAUCHY_GREEN_DEFORMATION_TENSOR .OR. & & tensorEvaluateType==EQUATIONS_SET_GREEN_LAGRANGE_STRAIN_TENSOR) THEN @@ -5032,7 +5110,9 @@ SUBROUTINE FiniteElasticity_SurfacePressureResidualEvaluate(EQUATIONS_SET,ELEMEN nonlinearMatrices=>vectorEquations%vectorMatrices%nonlinearMatrices EQUATIONS_SET_SUBTYPE = EQUATIONS_SET%SPECIFICATION(3) - IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN DEPENDENT_FIELD=>equations%interpolation%geometricField ELSE DEPENDENT_FIELD=>equations%interpolation%dependentField @@ -5071,7 +5151,9 @@ SUBROUTINE FiniteElasticity_SurfacePressureResidualEvaluate(EQUATIONS_SET,ELEMEN DEPENDENT_FACE_BASIS=>DECOMPOSITION%DOMAIN(MESH_COMPONENT_NUMBER)%ptr%TOPOLOGY%FACES%FACES(face_number)%BASIS FACE_QUADRATURE_SCHEME=>DEPENDENT_FACE_BASIS%QUADRATURE%QUADRATURE_SCHEME_MAP(BASIS_DEFAULT_QUADRATURE_SCHEME)%ptr - IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN + IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN FACE_DEPENDENT_INTERPOLATION_PARAMETERS=>equations%interpolation%geometricInterpParameters(FIELD_VAR_U_TYPE)%ptr FACE_DEPENDENT_INTERPOLATED_POINT=>equations%interpolation%geometricInterpPoint(FIELD_VAR_U_TYPE)%ptr FACE_DEPENDENT_INTERPOLATED_POINT_METRICS=>equations%interpolation% & @@ -6367,11 +6449,6 @@ SUBROUTINE FINITE_ELASTICITY_GAUSS_CAUCHY_TENSOR(EQUATIONS_SET,DEPENDENT_INTERPO PIOLA_TENSOR(1,1)=PIOLA_TENSOR(1,1)+VALUE ENDIF - CASE(EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE) - !Form of constitutive model is: - ! W=c1/2 (e^(c2*(I1-3)) - 1) - ! S = 2*dW/dC + 2pC^-1 - PIOLA_TENSOR=C(1)*C(2)*EXP(C(2)*(AZL(1,1)+AZL(2,2)+AZL(3,3)-3.0_DP))*IDENTITY+2.0_DP*P*AZU CASE(EQUATIONS_SET_ELASTICITY_FLUID_PRESSURE_STATIC_INRIA_SUBTYPE) !C(1)=Mooney Rivlin parameter !C(2)=Mooney Rivlin parameter @@ -7032,7 +7109,7 @@ SUBROUTINE FINITE_ELASTICITY_GAUSS_STRESS_TENSOR(EQUATIONS_SET,DEPENDENT_INTERPO !Calculate isochoric fictitious 2nd Piola tensor (in Voigt form) I1=AZL(1,1)+AZL(2,2)+AZL(3,3) TEMPTERM1=-2.0_DP*C(2) - TEMPTERM2=2.0_DP*(C(1)+I1*C(2)) + TEMPTERM2= 2.0_DP*(C(1)+I1*C(2)) STRESS_TENSOR(1)=TEMPTERM1*AZL(1,1)+TEMPTERM2 STRESS_TENSOR(2)=TEMPTERM1*AZL(2,2)+TEMPTERM2 STRESS_TENSOR(3)=TEMPTERM1*AZL(3,3)+TEMPTERM2 @@ -7060,6 +7137,35 @@ SUBROUTINE FINITE_ELASTICITY_GAUSS_STRESS_TENSOR(EQUATIONS_SET,DEPENDENT_INTERPO ONETHIRD_TRACE=SUM(STRESS_TENSOR(1:3))/3.0_DP STRESS_TENSOR(1:3)=STRESS_TENSOR(1:3)-ONETHIRD_TRACE+P + + CASE(EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) + + IF(EQUATIONS_SET%specification(3)==EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + PRESSURE_COMPONENT=GEOMETRIC_INTERPOLATED_POINT%INTERPOLATION_PARAMETERS%FIELD_VARIABLE%NUMBER_OF_COMPONENTS + P=GEOMETRIC_INTERPOLATED_POINT%VALUES(PRESSURE_COMPONENT,NO_PART_DERIV) + ELSE + PRESSURE_COMPONENT=DEPENDENT_INTERPOLATED_POINT%INTERPOLATION_PARAMETERS%FIELD_VARIABLE%NUMBER_OF_COMPONENTS + P=DEPENDENT_INTERPOLATED_POINT%VALUES(PRESSURE_COMPONENT,NO_PART_DERIV) + ENDIF + !Form of constitutive model is: + ! W=c1/2 (e^(c2*(I1-3)) - 1) + ! S = 2*dW/dC + 2pC^-1 + I1 = AZL(1,1) + AZL(2,2) + AZL(3,3) + TEMPTERM1 = (C(1)*C(2)*EXP(C(2)*(I1-3.0_DP)))*2.0_DP + STRESS_TENSOR(1)=TEMPTERM1 + STRESS_TENSOR(2)=TEMPTERM1 + STRESS_TENSOR(3)=TEMPTERM1 + STRESS_TENSOR(4)=0 + STRESS_TENSOR(5)=0 + STRESS_TENSOR(6)=0 + + + CALL FINITE_ELASTICITY_PUSH_STRESS_TENSOR(STRESS_TENSOR,MOD_DZDNU,Jznu,err,error,*999) + !Calculate isochoric Cauchy tensor (the deviatoric part) and add the volumetric part (the hydrostatic pressure). + ONETHIRD_TRACE=SUM(STRESS_TENSOR(1:3))/3.0_DP + STRESS_TENSOR(1:3)=STRESS_TENSOR(1:3)-ONETHIRD_TRACE+P + + CASE(EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE,EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) IF(EQUATIONS_SET%specification(3)==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) THEN @@ -7397,6 +7503,8 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET & EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE,EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE, & & EQUATIONS_SET_INCOMPRESSIBLE_ELAST_MULTI_COMP_DARCY_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE, & & EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_CONSTITUTIVE_LAW_IN_CELLML_EVALUATE_SUBTYPE, & & EQUATIONS_SET_CONSTITUTIVE_AND_GROWTH_LAW_IN_CELLML_SUBTYPE, & & EQUATIONS_SET_GROWTH_LAW_IN_CELLML_SUBTYPE, & @@ -7481,6 +7589,8 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET SELECT CASE(EQUATIONS_SET_SUBTYPE) CASE(EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE, & & EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_COMPRESSIBLE_FINITE_ELASTICITY_SUBTYPE,& @@ -7591,6 +7701,8 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET & EQUATIONS_SET_ACTIVECONTRACTION_SUBTYPE, EQUATIONS_SET_NO_SUBTYPE,EQUATIONS_SET_MEMBRANE_SUBTYPE, & & EQUATIONS_SET_ORTHOTROPIC_MATERIAL_HOLZAPFEL_OGDEN_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE, & & EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_HUMPHREY_YIN_SUBTYPE, & & EQUATIONS_SET_STANDARD_MONODOMAIN_ELASTICITY_SUBTYPE,EQUATIONS_SET_1D3D_MONODOMAIN_ELASTICITY_SUBTYPE, & & EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE,EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE, & @@ -10167,6 +10279,9 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET NUMBER_OF_FLUID_COMPONENTS=0 SELECT CASE(EQUATIONS_SET_SUBTYPE) CASE(EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE,EQUATIONS_SET_NO_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & + & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_INCOMPRESSIBLE_FINITE_ELASTICITY_DARCY_SUBTYPE, & & EQUATIONS_SET_STANDARD_MONODOMAIN_ELASTICITY_SUBTYPE, & @@ -10197,8 +10312,6 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET ENDIF CASE(EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE) NUMBER_OF_COMPONENTS=2; - CASE(EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE) - NUMBER_OF_COMPONENTS=2; CASE(EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE) NUMBER_OF_COMPONENTS=5; CASE(EQUATIONS_SET_TRANSVERSE_ISOTROPIC_POLYNOMIAL_SUBTYPE) @@ -10820,6 +10933,8 @@ SUBROUTINE FiniteElasticity_EquationsSetSolutionMethodSet(EQUATIONS_SET,SOLUTION & EQUATIONS_SET_INCOMPRESSIBLE_ELASTICITY_DRIVEN_DARCY_SUBTYPE, & & EQUATIONS_SET_INCOMPRESSIBLE_ELAST_MULTI_COMP_DARCY_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE, & & EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_CONSTITUTIVE_LAW_IN_CELLML_EVALUATE_SUBTYPE, & & EQUATIONS_SET_CONSTITUTIVE_AND_GROWTH_LAW_IN_CELLML_SUBTYPE, & & EQUATIONS_SET_GROWTH_LAW_IN_CELLML_SUBTYPE, & @@ -10901,7 +11016,8 @@ SUBROUTINE FiniteElasticity_EquationsSetSpecificationSet(equationsSet,specificat CASE(EQUATIONS_SET_MEMBRANE_SUBTYPE,EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE, & & EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE, & - & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE, & + & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE,& + & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE, & & EQUATIONS_SET_TRANS_ISOTROPIC_ACTIVE_TRANSITION_SUBTYPE, & & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_POLYNOMIAL_SUBTYPE, & & EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_SUBTYPE,EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_ACTIVE_SUBTYPE, & @@ -10914,6 +11030,8 @@ SUBROUTINE FiniteElasticity_EquationsSetSpecificationSet(equationsSet,specificat & EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE,EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE, & & EQUATIONS_SET_INCOMPRESSIBLE_ELAST_MULTI_COMP_DARCY_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE, & & EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_CONSTITUTIVE_LAW_IN_CELLML_EVALUATE_SUBTYPE, & & EQUATIONS_SET_CONSTITUTIVE_AND_GROWTH_LAW_IN_CELLML_SUBTYPE, & & EQUATIONS_SET_GROWTH_LAW_IN_CELLML_SUBTYPE, & From b9caaeb17521c6350b635e7ca9eff0bcb8a54f30 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 13 Nov 2019 17:59:00 +1300 Subject: [PATCH 2/2] add MR and Exponential constitutive function --- src/equations_set_constants.F90 | 2 + src/finite_elasticity_routines.F90 | 116 ++++++++++++++++++++++++----- src/opencmiss_iron.F90 | 9 ++- 3 files changed, 109 insertions(+), 18 deletions(-) diff --git a/src/equations_set_constants.F90 b/src/equations_set_constants.F90 index 2c08ca64..de76a6a6 100644 --- a/src/equations_set_constants.F90 +++ b/src/equations_set_constants.F90 @@ -167,6 +167,8 @@ MODULE EquationsSetConstants INTEGER(INTG), PARAMETER :: EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE=43 INTEGER(INTG), PARAMETER :: EQUATIONS_SET_MR_AND_GROWTH_LAW_IN_CELLML_SUBTYPE=44 + INTEGER(INTG), PARAMETER :: EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE=45 + INTEGER(INTG), PARAMETER :: EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE = 46 !Fluid mechanics class ! Stokes equations diff --git a/src/finite_elasticity_routines.F90 b/src/finite_elasticity_routines.F90 index 63a838d3..b16a7afe 100644 --- a/src/finite_elasticity_routines.F90 +++ b/src/finite_elasticity_routines.F90 @@ -980,7 +980,8 @@ SUBROUTINE FiniteElasticity_FiniteElementJacobianEvaluate(EQUATIONS_SET,ELEMENT_ IF(jacobianMatrix%updateJacobian) THEN IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN DEPENDENT_FIELD=>equations%interpolation%geometricField GEOMETRIC_FIELD=>equations%interpolation%dependentField ELSE @@ -1033,7 +1034,8 @@ SUBROUTINE FiniteElasticity_FiniteElementJacobianEvaluate(EQUATIONS_SET,ELEMENT_ geometricInterpPointMetrics=>equations%interpolation%geometricInterpPointMetrics(FIELD_U_VARIABLE_TYPE)%ptr IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE.OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN dependentInterpPoint=>equations%interpolation%geometricInterpPoint(FIELD_U_VARIABLE_TYPE)%ptr dependentInterpPointMetrics=>equations%interpolation%geometricInterpPointMetrics(FIELD_U_VARIABLE_TYPE)%ptr geometricInterpPoint=>equations%interpolation%dependentInterpPoint(FIELD_VAR_TYPE)%ptr @@ -1568,7 +1570,8 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN DEPENDENT_FIELD =>equations%interpolation%geometricField GEOMETRIC_FIELD =>equations%interpolation%dependentField ELSE @@ -1627,7 +1630,8 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN FIELD_VAR_TYPE=FIELD_VARIABLE%VARIABLE_TYPE IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN GEOMETRIC_INTERPOLATION_PARAMETERS=>equations%interpolation%dependentInterpParameters(FIELD_VAR_TYPE)%ptr DEPENDENT_INTERPOLATION_PARAMETERS=>equations%interpolation%geometricInterpParameters(FIELD_U_VARIABLE_TYPE)%ptr ELSE @@ -1690,7 +1694,8 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN !Point interpolation pointer IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN DEPENDENT_INTERPOLATED_POINT=>equations%interpolation%geometricInterpPoint(FIELD_U_VARIABLE_TYPE)%ptr DEPENDENT_INTERPOLATED_POINT_METRICS=>equations%interpolation%geometricInterpPointMetrics(FIELD_U_VARIABLE_TYPE)%ptr GEOMETRIC_INTERPOLATED_POINT=>equations%interpolation%dependentInterpPoint(FIELD_VAR_TYPE)%ptr @@ -1727,7 +1732,8 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN ! --------------------------------------------------------------- CASE(EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & - & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE ) + & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE ) !Loop over gauss points and add residuals DO gauss_idx=1,DEPENDENT_NUMBER_OF_GAUSS_POINTS @@ -2200,7 +2206,8 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN IF (EQUATIONS_SET_SUBTYPE /= EQUATIONS_SET_MEMBRANE_SUBTYPE) THEN IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN HYDROSTATIC_PRESSURE_COMPONENT=GEOMETRIC_FIELD%VARIABLES(var1)%NUMBER_OF_COMPONENTS DEPENDENT_COMPONENT_INTERPOLATION_TYPE=GEOMETRIC_FIELD%VARIABLES(var1)%COMPONENTS( & & HYDROSTATIC_PRESSURE_COMPONENT)%INTERPOLATION_TYPE @@ -2217,7 +2224,8 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN IF(DEPENDENT_COMPONENT_INTERPOLATION_TYPE==FIELD_NODE_BASED_INTERPOLATION) THEN !node based IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN COMPONENT_BASIS=>GEOMETRIC_FIELD%VARIABLES(var1)%COMPONENTS(HYDROSTATIC_PRESSURE_COMPONENT)%DOMAIN% & & TOPOLOGY%ELEMENTS%ELEMENTS(elementNumber)%BASIS ELSE @@ -2590,7 +2598,8 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN IF (EQUATIONS_SET_SUBTYPE /= EQUATIONS_SET_MEMBRANE_SUBTYPE) THEN IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN HYDROSTATIC_PRESSURE_COMPONENT=GEOMETRIC_FIELD%VARIABLES(var1)%NUMBER_OF_COMPONENTS DEPENDENT_COMPONENT_INTERPOLATION_TYPE=GEOMETRIC_FIELD%VARIABLES(var1)%COMPONENTS( & & HYDROSTATIC_PRESSURE_COMPONENT)%INTERPOLATION_TYPE @@ -2607,7 +2616,8 @@ SUBROUTINE FiniteElasticity_FiniteElementResidualEvaluate(EQUATIONS_SET,elementN IF(DEPENDENT_COMPONENT_INTERPOLATION_TYPE==FIELD_NODE_BASED_INTERPOLATION) THEN !node based IF(EQUATIONS_SET_SUBTYPE==EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN COMPONENT_BASIS=>GEOMETRIC_FIELD%VARIABLES(var1)%COMPONENTS(HYDROSTATIC_PRESSURE_COMPONENT)%DOMAIN% & & TOPOLOGY%ELEMENTS%ELEMENTS(elementNumber)%BASIS ELSE @@ -3611,7 +3621,8 @@ SUBROUTINE FiniteElasticity_FiniteElementPreResidualEvaluate(equationsSet,err,er CASE(EQUATIONS_SET_MEMBRANE_SUBTYPE,EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE, & & EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE,& - & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE,& + & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE,& & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_POLYNOMIAL_SUBTYPE, & & EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_SUBTYPE,EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_ACTIVE_SUBTYPE, & & EQUATIONS_SET_TRANS_ISOTROPIC_ACTIVE_TRANSITION_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE, & @@ -3681,6 +3692,8 @@ SUBROUTINE FiniteElasticity_FiniteElementPostResidualEvaluate(EQUATIONS_SET,err, & EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE,EQUATIONS_SET_STANDARD_MONODOMAIN_ELASTICITY_SUBTYPE, & & EQUATIONS_SET_ORTHOTROPIC_MATERIAL_COSTA_SUBTYPE,EQUATIONS_SET_COMPRESSIBLE_FINITE_ELASTICITY_SUBTYPE,& & EQUATIONS_SET_COMPRESSIBLE_ACTIVECONTRACTION_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE, & @@ -5112,7 +5125,8 @@ SUBROUTINE FiniteElasticity_SurfacePressureResidualEvaluate(EQUATIONS_SET,ELEMEN IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN DEPENDENT_FIELD=>equations%interpolation%geometricField ELSE DEPENDENT_FIELD=>equations%interpolation%dependentField @@ -5153,7 +5167,8 @@ SUBROUTINE FiniteElasticity_SurfacePressureResidualEvaluate(EQUATIONS_SET,ELEMEN IF (EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE .OR. & & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE .OR. & - & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE) THEN + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE .OR. & + & EQUATIONS_SET_SUBTYPE == EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN FACE_DEPENDENT_INTERPOLATION_PARAMETERS=>equations%interpolation%geometricInterpParameters(FIELD_VAR_U_TYPE)%ptr FACE_DEPENDENT_INTERPOLATED_POINT=>equations%interpolation%geometricInterpPoint(FIELD_VAR_U_TYPE)%ptr FACE_DEPENDENT_INTERPOLATED_POINT_METRICS=>equations%interpolation% & @@ -6120,7 +6135,19 @@ SUBROUTINE FINITE_ELASTICITY_GAUSS_CAUCHY_TENSOR(EQUATIONS_SET,DEPENDENT_INTERPO & EQUATIONS_SET_INCOMPRESSIBLE_FINITE_ELASTICITY_DARCY_SUBTYPE,EQUATIONS_SET_STANDARD_MONODOMAIN_ELASTICITY_SUBTYPE, & & EQUATIONS_SET_1D3D_MONODOMAIN_ELASTICITY_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_POLYNOMIAL_SUBTYPE, & & EQUATIONS_SET_MONODOMAIN_ELASTICITY_W_TITIN_SUBTYPE,EQUATIONS_SET_MONODOMAIN_ELASTICITY_VELOCITY_SUBTYPE, & - & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE,EQUATIONS_SET_MR_AND_GROWTH_LAW_IN_CELLML_SUBTYPE) + & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE,EQUATIONS_SET_MR_AND_GROWTH_LAW_IN_CELLML_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, & + & EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) + + + IF(EQUATIONS_SET%specification(3)==EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE) THEN + PRESSURE_COMPONENT=GEOMETRIC_INTERPOLATED_POINT%INTERPOLATION_PARAMETERS%FIELD_VARIABLE%NUMBER_OF_COMPONENTS + P=GEOMETRIC_INTERPOLATED_POINT%VALUES(PRESSURE_COMPONENT,NO_PART_DERIV) + ELSE + PRESSURE_COMPONENT=DEPENDENT_INTERPOLATED_POINT%INTERPOLATION_PARAMETERS%FIELD_VARIABLE%NUMBER_OF_COMPONENTS + P=DEPENDENT_INTERPOLATED_POINT%VALUES(PRESSURE_COMPONENT,NO_PART_DERIV) + ENDIF + !Form of constitutive model is: ! W=c1*(I1-3)+c2*(I2-3)+p*(I3-1) !Also assumed I3 = det(AZL) = 1.0 @@ -7165,6 +7192,46 @@ SUBROUTINE FINITE_ELASTICITY_GAUSS_STRESS_TENSOR(EQUATIONS_SET,DEPENDENT_INTERPO ONETHIRD_TRACE=SUM(STRESS_TENSOR(1:3))/3.0_DP STRESS_TENSOR(1:3)=STRESS_TENSOR(1:3)-ONETHIRD_TRACE+P + CASE(EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) + + IF(EQUATIONS_SET%specification(3)== EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) THEN + PRESSURE_COMPONENT=GEOMETRIC_INTERPOLATED_POINT%INTERPOLATION_PARAMETERS%FIELD_VARIABLE%NUMBER_OF_COMPONENTS + P=GEOMETRIC_INTERPOLATED_POINT%VALUES(PRESSURE_COMPONENT,NO_PART_DERIV) + ELSE + PRESSURE_COMPONENT=DEPENDENT_INTERPOLATED_POINT%INTERPOLATION_PARAMETERS%FIELD_VARIABLE%NUMBER_OF_COMPONENTS + P=DEPENDENT_INTERPOLATED_POINT%VALUES(PRESSURE_COMPONENT,NO_PART_DERIV) + ENDIF + + + IF (NINT(C(5)) .EQ. 1) THEN + I1=AZL(1,1)+AZL(2,2)+AZL(3,3) + TEMPTERM1=-2.0_DP*C(2) + TEMPTERM2= 2.0_DP*(C(1)+I1*C(2)) + STRESS_TENSOR(1)=TEMPTERM1*AZL(1,1)+TEMPTERM2 + STRESS_TENSOR(2)=TEMPTERM1*AZL(2,2)+TEMPTERM2 + STRESS_TENSOR(3)=TEMPTERM1*AZL(3,3)+TEMPTERM2 + STRESS_TENSOR(4)=TEMPTERM1*AZL(2,1) + STRESS_TENSOR(5)=TEMPTERM1*AZL(3,1) + STRESS_TENSOR(6)=TEMPTERM1*AZL(3,2) + + ELSE + !Form of constitutive model is: + ! W=c1/2 (e^(c2*(I1-3)) - 1) + ! S = 2*dW/dC + 2pC^-1 + I1 = AZL(1,1) + AZL(2,2) + AZL(3,3) + TEMPTERM1 = (C(3)*C(4)*EXP(C(4)*(I1-3.0_DP)))*2.0_DP + STRESS_TENSOR(1)=TEMPTERM1 + STRESS_TENSOR(2)=TEMPTERM1 + STRESS_TENSOR(3)=TEMPTERM1 + STRESS_TENSOR(4)=0 + STRESS_TENSOR(5)=0 + STRESS_TENSOR(6)=0 + END IF + + CALL FINITE_ELASTICITY_PUSH_STRESS_TENSOR(STRESS_TENSOR,MOD_DZDNU,Jznu,err,error,*999) + !Calculate isochoric Cauchy tensor (the deviatoric part) and add the volumetric part (the hydrostatic pressure). + ONETHIRD_TRACE=SUM(STRESS_TENSOR(1:3))/3.0_DP + STRESS_TENSOR(1:3)=STRESS_TENSOR(1:3)-ONETHIRD_TRACE+P CASE(EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE,EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE) @@ -7492,6 +7559,7 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET & EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE, & & EQUATIONS_SET_TRANS_ISOTROPIC_ACTIVE_TRANSITION_SUBTYPE, & + & EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE,EQUATIONS_SET_TRANSVERSE_ISOTROPIC_POLYNOMIAL_SUBTYPE, & & EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_SUBTYPE,EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_ACTIVE_SUBTYPE, & & EQUATIONS_SET_ORTHOTROPIC_MATERIAL_COSTA_SUBTYPE,EQUATIONS_SET_COMPRESSIBLE_FINITE_ELASTICITY_SUBTYPE, & @@ -7517,6 +7585,7 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET & EQUATIONS_SET_HOLZAPFEL_OGDEN_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_RATE_BASED_SMOOTH_MODEL_SUBTYPE,EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_SMOOTH_MODEL_SUBTYPE, & & EQUATIONS_SET_RATE_BASED_GROWTH_MODEL_SUBTYPE,EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_GROWTH_MODEL_SUBTYPE) + SELECT CASE(EQUATIONS_SET_SETUP%SETUP_TYPE) CASE(EQUATIONS_SET_SETUP_INITIAL_TYPE) SELECT CASE(EQUATIONS_SET_SETUP%ACTION_TYPE) @@ -7593,6 +7662,8 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET & EQUATIONS_SET_REFERENCE_STATE_ISO_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE, & & EQUATIONS_SET_COMPRESSIBLE_FINITE_ELASTICITY_SUBTYPE,& & EQUATIONS_SET_COMPRESSIBLE_ACTIVECONTRACTION_SUBTYPE,& & EQUATIONS_SET_NO_SUBTYPE, & @@ -7602,6 +7673,7 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET & EQUATIONS_SET_ELASTICITY_FLUID_PRES_HOLMES_MOW_ACTIVE_SUBTYPE, & & EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE, & & EQUATIONS_SET_MR_AND_GROWTH_LAW_IN_CELLML_SUBTYPE) + ! pass, fibre field isn't required as the constitutive relation is isotropic CASE(EQUATIONS_SET_ORTHOTROPIC_MATERIAL_COSTA_SUBTYPE, & & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE, & @@ -7708,7 +7780,10 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET & EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE,EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE, & & EQUATIONS_SET_MONODOMAIN_ELASTICITY_W_TITIN_SUBTYPE, & & EQUATIONS_SET_MONODOMAIN_ELASTICITY_VELOCITY_SUBTYPE, & - & EQUATIONS_SET_HOLZAPFEL_OGDEN_ACTIVECONTRACTION_SUBTYPE) + & EQUATIONS_SET_HOLZAPFEL_OGDEN_ACTIVECONTRACTION_SUBTYPE, & + & EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) + SELECT CASE(EQUATIONS_SET_SETUP%ACTION_TYPE) CASE(EQUATIONS_SET_SETUP_START_ACTION) IF(EQUATIONS_SET%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED) THEN @@ -10287,6 +10362,9 @@ SUBROUTINE FINITE_ELASTICITY_EQUATIONS_SET_SETUP(EQUATIONS_SET,EQUATIONS_SET_SET & EQUATIONS_SET_STANDARD_MONODOMAIN_ELASTICITY_SUBTYPE, & & EQUATIONS_SET_MR_AND_GROWTH_LAW_IN_CELLML_SUBTYPE) NUMBER_OF_COMPONENTS=2; + CASE(EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) + NUMBER_OF_COMPONENTS=5; CASE(EQUATIONS_SET_ACTIVE_STRAIN_SUBTYPE) NUMBER_OF_COMPONENTS=8; CASE(EQUATIONS_SET_MULTISCALE_ACTIVE_STRAIN_SUBTYPE) @@ -10953,7 +11031,9 @@ SUBROUTINE FiniteElasticity_EquationsSetSolutionMethodSet(EQUATIONS_SET,SOLUTION & EQUATIONS_SET_1D3D_MONODOMAIN_ACTIVE_STRAIN_SUBTYPE, & & EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_RATE_BASED_SMOOTH_MODEL_SUBTYPE,EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_SMOOTH_MODEL_SUBTYPE, & - & EQUATIONS_SET_RATE_BASED_GROWTH_MODEL_SUBTYPE,EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_GROWTH_MODEL_SUBTYPE) + & EQUATIONS_SET_RATE_BASED_GROWTH_MODEL_SUBTYPE,EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_GROWTH_MODEL_SUBTYPE, & + & EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) SELECT CASE(SOLUTION_METHOD) CASE(EQUATIONS_SET_FEM_SOLUTION_METHOD) EQUATIONS_SET%SOLUTION_METHOD=EQUATIONS_SET_FEM_SOLUTION_METHOD @@ -11046,7 +11126,9 @@ SUBROUTINE FiniteElasticity_EquationsSetSpecificationSet(equationsSet,specificat & EQUATIONS_SET_1D3D_MONODOMAIN_ACTIVE_STRAIN_SUBTYPE, & & EQUATIONS_SET_HOLZAPFEL_OGDEN_ACTIVECONTRACTION_SUBTYPE, & & EQUATIONS_SET_RATE_BASED_SMOOTH_MODEL_SUBTYPE,EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_SMOOTH_MODEL_SUBTYPE, & - & EQUATIONS_SET_RATE_BASED_GROWTH_MODEL_SUBTYPE,EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_GROWTH_MODEL_SUBTYPE) + & EQUATIONS_SET_RATE_BASED_GROWTH_MODEL_SUBTYPE,EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_GROWTH_MODEL_SUBTYPE, & + & EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE, & + & EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE) !Set full specification IF(ALLOCATED(equationsSet%specification)) THEN CALL FlagError("Equations set specification is already allocated.",err,error,*999) diff --git a/src/opencmiss_iron.F90 b/src/opencmiss_iron.F90 index 300cf38f..a5deeceb 100644 --- a/src/opencmiss_iron.F90 +++ b/src/opencmiss_iron.F90 @@ -2518,6 +2518,10 @@ MODULE OpenCMISS_Iron INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE = EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE !< Mooney-Rivlin constitutive law for finite elasticity equations set subtype \see OpenCMISS_EquationsSetSubtypes,OpenCMISS INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE = & & EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE !< Incompressible Mooney-Rivlin constitutive law for finite elasticity equations set subtype \see OpenCMISS_EquationsSetSubtypes,OpenCMISS + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE = & + & EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE !< mixing mooney rivlin with exponential constitutive law + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE = & + & EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE !< mixing mooney rivlin with exponential constitutive law for backward formulation INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE = & & EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE !< Nearly Incompressible Mooney-Rivlin constitutive law for finite elasticity equations set subtype \see OpenCMISS_EquationsSetSubtypes,OpenCMISS INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE = & @@ -2526,7 +2530,8 @@ MODULE OpenCMISS_Iron & EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE !< St Venant Kirchoff constitutive law with steady-state active contraction for finite elasticity equations set subtype \see OpenCMISS_EquationsSetSubtypes,OpenCMISS INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_ACTIVECONTRACTION_SUBTYPE =& & EQUATIONS_SET_ACTIVECONTRACTION_SUBTYPE !< Active contraction/costa-based law with quasistatic time loop for finite elasticity equations set subtype \see OpenCMISS_EquationsSetSubtypes,OpenCMISS - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE = EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE !< Isotropic exponential constitutive law for finite elasticity equations set subtype \see OpenCMISS_EquationsSetSubtypes,OpenCMISS + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE = & + & EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE !< Isotropic exponential constitutive law for finite elasticity equations set subtype \see OpenCMISS_EquationsSetSubtypes,OpenCMISS INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE = & & EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE !< Transverse isotropic exponential constitutive law for finite elasticity equations set subtype \see OpenCMISS_EquationsSetSubtypes,OpenCMISS INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE = & @@ -3083,6 +3088,8 @@ MODULE OpenCMISS_Iron & CMFE_EQUATIONS_SET_SHELL_SUBTYPE, & & CMFE_EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE,CMFE_EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE, & & CMFE_EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE, & + & CMFE_EQUATIONS_SET_MR_AND_EXPONENTIAL_SUBTYPE,& + & CMFE_EQUATIONS_SET_REFERENCE_STATE_MR_AND_EXPONENTIAL_SUBTYPE,& & CMFE_EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, CMFE_EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, & & CMFE_EQUATIONS_SET_ACTIVECONTRACTION_SUBTYPE,CMFE_EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & & CMFE_EQUATIONS_SET_COMPRESSIBLE_ACTIVECONTRACTION_SUBTYPE,CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE, &