FiniteDeformationClass Module



Contents


Derived Types

type, public :: FiniteDeform_

Components

TypeVisibility AttributesNameInitial
type(FEMDomain_), public, pointer:: FEMDomain
real(kind=real64), public, allocatable:: DeformStress(:,:,:)
real(kind=real64), public, allocatable:: DeformStrain(:,:,:)
real(kind=real64), public, allocatable:: DeformStressInit(:,:,:)
real(kind=real64), public, allocatable:: DeformStressinc(:,:,:)
real(kind=real64), public, allocatable:: DeformStressMat(:,:,:)
real(kind=real64), public, allocatable:: DeformStressRHS(:,:)
real(kind=real64), public, allocatable:: DeformVecEBETot(:,:)
real(kind=real64), public, allocatable:: DeformVecEBEInc(:,:)
real(kind=real64), public, allocatable:: DeformVecGloTot(:)
real(kind=real64), public, allocatable:: DeformVecGloInc(:)
real(kind=real64), public, allocatable:: TractionVecGlo(:)
real(kind=real64), public, allocatable:: ResidualVecGlo(:)
real(kind=real64), public, allocatable:: InternalVecGlo(:)
real(kind=real64), public, allocatable:: VolInitCurrEBE(:,:)
real(kind=real64), public, allocatable:: YoungsModulus(:)
real(kind=real64), public, allocatable:: PoissonsRatio(:)
real(kind=real64), public, allocatable:: PorePressure(:)
real(kind=real64), public :: dt
real(kind=real64), public :: error
real(kind=real64), public :: reactionforce
real(kind=real64), public :: nr_tol =1.0e-8
logical, public :: ReducedIntegration =.false.
logical, public :: infinitesimal =.false.
integer(kind=int32), public :: itr
integer(kind=int32), public :: Step =0

Type-Bound Procedures

procedure, public :: Solve => SolveFiniteDeformNewton
procedure, public :: UpdateSolution => SolveFiniteDeform
procedure, public :: DivideBC => DevideBCIntoTimestep
procedure, public :: UpdateBC => UpdateBCInTimestep
procedure, public :: UpdateInitConfig
procedure, public :: Setup => SetupFiniteDeform
procedure, public :: Update => UpdateFiniteDeform
procedure, public :: Display => DisplayDeformStress
procedure, public :: getDBCVector => getDBCVectorDeform
procedure, public :: getDispVector => getDispVectorDeform
procedure, public :: getVolume => getVolumeDeform
procedure, public :: check => checkFiniteDeform
procedure, public :: import => importFiniteDeform
procedure, public :: export => exportFiniteDeform
procedure, public :: remove => removeFiniteDeform
procedure, public :: save => saveFiniteDeform
procedure, public :: open => openFiniteDeform
procedure, public :: link => linkFiniteDeform

Functions

public function getVolumeDeform(obj) result(volume)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

Return Value real(kind=real64), allocatable, (:)


Subroutines

public subroutine removeFiniteDeform(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

public subroutine linkFiniteDeform(obj, FEMDomain)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
type(FEMDomain_), intent(in), target:: FEMDomain

public subroutine openFiniteDeform(obj, path, name)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
character(len=*), intent(in) :: path
character(len=*), intent(in), optional :: name

public subroutine saveFiniteDeform(obj, path, name)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
character(len=*), intent(in) :: path
character(len=*), intent(in), optional :: name

public subroutine importFiniteDeform(obj, YoungsModulus, PoissonsRatio, PorePressure)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
real(kind=real64), intent(in), optional :: YoungsModulus(:)
real(kind=real64), intent(in), optional :: PoissonsRatio(:)
real(kind=real64), intent(in), optional :: PorePressure(:)

public subroutine checkFiniteDeform(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(in) :: obj

public subroutine SolveFiniteDeformNewton(obj, OptionItr, Solvertype, nr_tol, infinitesimal, restart)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: OptionItr
character(len=*), intent(in), optional :: Solvertype
real(kind=real64), intent(in), optional :: nr_tol
logical, intent(in), optional :: infinitesimal
logical, intent(in), optional :: restart

public subroutine DevideBCIntoTimestep(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

public subroutine UpdateBCInTimestep(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

public subroutine ImportFEMDomainFiDe(obj, OptionalFileFormat, OptionalProjectName)

print , "Project : ",ProjectName print , "is Exported as : ",FileFormat," format" print *, "File Name is : ",FileName

Read more…

Arguments

Type IntentOptional AttributesName
class(FEMDomain_), intent(inout) :: obj
character(len=4), intent(in), optional :: OptionalFileFormat
character(len=*), intent(in), optional :: OptionalProjectName

public subroutine SetupFiniteDeform(obj, tol)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: tol

public subroutine UpdateFiniteDeform(obj, restart)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
logical, intent(in), optional :: restart

public subroutine UpdateCurrConfig(obj, restart)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
logical, intent(in), optional :: restart

public subroutine UpdateInitConfig(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

public subroutine GetDeformStressMatAndVector(obj, OptionalStep, restart)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: OptionalStep
logical, intent(in), optional :: restart

public subroutine GetKmat(obj, mdl, sf, Kmat_e, gvec_e, dim_num, elemnod_num, elem, gp)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Read more…

Arguments

Type IntentOptional AttributesName
type(FiniteDeform_), intent(inout) :: obj
type(ConstModel_), intent(inout) :: mdl
type(ShapeFunction_), intent(in) :: sf
real(kind=real64), intent(inout) :: Kmat_e(:,:)
real(kind=real64), intent(inout) :: gvec_e(:)
integer(kind=int32), intent(in) :: dim_num
integer(kind=int32), intent(in) :: elemnod_num
integer(kind=int32), intent(in) :: elem
integer(kind=int32), intent(in) :: gp

public subroutine GetGvec(obj, mdl, sf, gvec_e, dim_num, elemnod_num, elem)

Arguments

Type IntentOptional AttributesName
type(FiniteDeform_), intent(in) :: obj
type(ConstModel_), intent(inout) :: mdl
type(ShapeFunction_), intent(in) :: sf
real(kind=real64), intent(inout) :: gvec_e(:)
integer(kind=int32), intent(in) :: dim_num
integer(kind=int32), intent(in) :: elemnod_num
integer(kind=int32), intent(in) :: elem

public subroutine K_mat_ICU(Kmat, elem_nod, i, Kemat)

Arguments

Type IntentOptional AttributesName
real(kind=real64), intent(inout) :: Kmat(:,:,:)
integer(kind=int32), intent(in) :: elem_nod(:,:)
integer(kind=int32), intent(in) :: i
real(kind=real64), intent(in) :: Kemat(:,:)

public subroutine g_vector_ICU(elem, elem_nod, gvec_e, gvec)

Arguments

Type IntentOptional AttributesName
integer(kind=int32), intent(in) :: elem
integer(kind=int32), intent(in) :: elem_nod(:,:)
real(kind=real64), intent(in) :: gvec_e(:)
real(kind=real64), intent(inout) :: gvec(:,:)

public subroutine F_tensor_ICU(obj, elem, gauss, F_iJ_n, F_iJ)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
integer(kind=int32), intent(in) :: elem
integer(kind=int32), intent(in) :: gauss
real(kind=real64), allocatable:: F_iJ_n(:,:)
real(kind=real64), allocatable:: F_iJ(:,:)

public subroutine C_tensor(F, C_IJ, b_ij, itr, dim_num)

Arguments

Type IntentOptional AttributesName
real(kind=real64), intent(in) :: F(:,:)
real(kind=real64), allocatable:: C_IJ(:,:)
real(kind=real64), allocatable:: b_ij(:,:)
integer(kind=int32), intent(in) :: itr
integer(kind=int32), intent(in) :: dim_num

public subroutine Cp_tensor(elem, gauss, strain_measure, Cp_iJ_n, Cp_iJ, Cp_IJ_inv, dim_num)

Arguments

Type IntentOptional AttributesName
integer(kind=int32), intent(in) :: elem
integer(kind=int32), intent(in) :: gauss
real(kind=real64), intent(in) :: strain_measure(:,:,:)
real(kind=real64), allocatable:: Cp_iJ_n(:,:)
real(kind=real64), allocatable:: Cp_iJ(:,:)
real(kind=real64), allocatable:: Cp_IJ_inv(:,:)
integer(kind=int32), intent(in) :: dim_num

public subroutine M_neo_Hookean(C_IJ, Cp_IJ, Cp_IJ_inv, M_IJ, Lamda, mu, elem, gauss)

Arguments

Type IntentOptional AttributesName
real(kind=real64), intent(in) :: C_IJ(:,:)
real(kind=real64), intent(in) :: Cp_IJ(:,:)
real(kind=real64), intent(in) :: Cp_IJ_inv(:,:)
real(kind=real64), allocatable:: M_IJ(:,:)
real(kind=real64), intent(in) :: Lamda
real(kind=real64), intent(in) :: mu
integer(kind=int32), intent(in) :: elem
integer(kind=int32), intent(in) :: gauss

public subroutine Return_Mapping_MCDP(dim_num, elem, gauss, C_IJ, Cp_IJ, Cp_IJ_n, Cp_IJ_inv, M_IJ, MatPara, itr_rm, tol, sigma, F_T, F_T_inv, itr, itr_contact, strain_measure, step)

Arguments

Type IntentOptional AttributesName
integer(kind=int32), intent(in) :: dim_num
integer(kind=int32), intent(in) :: elem
integer(kind=int32), intent(in) :: gauss
real(kind=real64), intent(in) :: C_IJ(:,:)
real(kind=real64), intent(inout) :: Cp_IJ(:,:)
real(kind=real64), intent(in) :: Cp_IJ_n(:,:)
real(kind=real64), intent(inout), allocatable:: Cp_IJ_inv(:,:)
real(kind=real64), intent(inout), allocatable:: M_IJ(:,:)
real(kind=real64), intent(in) :: MatPara(:)
integer(kind=int32), intent(in) :: itr_rm
real(kind=real64) :: tol
real(kind=real64), intent(inout) :: sigma(:,:,:)
real(kind=real64), intent(in) :: F_T(:,:)
real(kind=real64), intent(in) :: F_T_inv(:,:)
integer(kind=int32), intent(in) :: itr
integer(kind=int32), intent(in) :: itr_contact
real(kind=real64), intent(inout) :: strain_measure(:,:,:)
integer(kind=int32), intent(in) :: step

public subroutine Ce_neoHK_current(dim_num, elem, gauss, Lame1, Lame2, C_IJ, Cp_IJ, b_ij, M_IJ, Ce_neoHK, F_T, F_T_inv, ij)

Arguments

Type IntentOptional AttributesName
integer(kind=int32), intent(in) :: dim_num
integer(kind=int32), intent(in) :: elem
integer(kind=int32), intent(in) :: gauss
real(kind=real64), intent(in) :: Lame1
real(kind=real64), intent(in) :: Lame2
real(kind=real64), intent(in) :: C_IJ(:,:)
real(kind=real64), intent(in) :: Cp_IJ(:,:)
real(kind=real64), intent(in) :: b_ij(:,:)
real(kind=real64), intent(in) :: M_IJ(:,:)
real(kind=real64), intent(out), allocatable:: Ce_neoHK(:,:)
real(kind=real64), intent(in) :: F_T(:,:)
real(kind=real64), intent(in) :: F_T_inv(:,:)
integer(kind=int32), intent(out), allocatable:: ij(:,:)

public subroutine GetSigmaVec(Sigma, Sigma_ij, dim_num)

Arguments

Type IntentOptional AttributesName
real(kind=real64), intent(inout), allocatable:: Sigma(:)
real(kind=real64), intent(in) :: Sigma_ij(:,:)
integer(kind=int32), intent(in) :: dim_num

public subroutine GetDmat(Dmat, c_ijkl, dim_num)

Arguments

Type IntentOptional AttributesName
real(kind=real64), intent(inout), allocatable:: Dmat(:,:)
real(kind=real64), intent(in) :: c_ijkl(:,:,:,:)
integer(kind=int32), intent(in) :: dim_num

public subroutine B_mat(dim_num, Psymat, Jmat, detJ, Bmat, mm)

Arguments

Type IntentOptional AttributesName
integer(kind=int32), intent(in) :: dim_num
real(kind=real64), intent(in) :: Psymat(:,:)
real(kind=real64), intent(in) :: Jmat(:,:)
real(kind=real64), intent(in) :: detJ
real(kind=real64), intent(inout), allocatable:: Bmat(:,:)
integer(kind=int32) :: mm

public subroutine K_mat_e(j, s, BTmat, Ce_neoHK, Bmat, detJ, Kmat_e, F_iJ)

Arguments

Type IntentOptional AttributesName
integer(kind=int32), intent(in) :: j
real(kind=real64), intent(in) :: s(:)
real(kind=real64), intent(in) :: BTmat(:,:)
real(kind=real64), intent(in) :: Ce_neoHK(:,:)
real(kind=real64), intent(in) :: Bmat(:,:)
real(kind=real64), intent(in) :: detJ
real(kind=real64), intent(out) :: Kmat_e(:,:)
real(kind=real64), intent(in) :: F_iJ(:,:)

public subroutine g_vector_e(elem, gauss, s, BTmat, sigma, detJ, gvec_e)

Arguments

Type IntentOptional AttributesName
integer(kind=int32), intent(in) :: elem
integer(kind=int32), intent(in) :: gauss
real(kind=real64), intent(in) :: s(:)
real(kind=real64), intent(in) :: BTmat(:,:)
real(kind=real64), intent(in) :: sigma(:,:,:)
real(kind=real64), intent(in) :: detJ
real(kind=real64), intent(inout) :: gvec_e(:)

public subroutine SolveFiniteDeform(obj, OptionItr, Solvertype, nr_tol)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: OptionItr
character(len=*), intent(in), optional :: Solvertype
real(kind=real64), intent(in), optional :: nr_tol

public subroutine resultFiniteDeform(obj, path, Name, step)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
character(len=*), intent(in) :: path
character(len=*), intent(in) :: Name
integer(kind=int32), intent(in), optional :: step

public subroutine exportAsPlyFiniteDeform(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

public subroutine DisplayDeformStress(obj, DisplayMode, OptionalStep, Name, withDirichlet)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
character(len=*), intent(in), optional :: DisplayMode
integer(kind=int32), intent(in), optional :: OptionalStep
character(len=*), intent(in), optional :: Name
logical, intent(in), optional :: withDirichlet

public subroutine GetTractionVector(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

public subroutine GetInternalVector(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

public subroutine GetResidualVector(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

public subroutine UpdateStressMeasure(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

public subroutine UpdateStrainMeasure(obj)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj

public subroutine DisplayReactionForce(obj, id)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(in) :: obj
integer(kind=int32), intent(in), optional :: id

public subroutine getDBCVectorDeform(obj, DBCvec)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(in) :: obj
real(kind=real64), intent(inout), allocatable:: DBCvec(:,:)

public subroutine getDispVectorDeform(obj, Vector)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(in) :: obj
real(kind=real64), intent(inout), allocatable:: Vector(:,:)

public subroutine exportFiniteDeform(obj, restart, path)

Arguments

Type IntentOptional AttributesName
class(FiniteDeform_), intent(inout) :: obj
logical, intent(in), optional :: restart
character(len=*), intent(in) :: path