ElastoPlasticityClass Module



Interfaces

public interface to_EP_Model

public interface d_dsigma

  • public function d_dsigma_P_PotentialFunction(PlasticPotential, CauchyStress, PlasticStrain, params, epsilon) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    procedure(P_PotentialFunction) :: PlasticPotential
    real(kind=real64), intent(in) :: CauchyStress(:,:)
    real(kind=real64), intent(in) :: PlasticStrain(:,:)
    real(kind=real64), intent(in) :: params(:)
    real(kind=real64), intent(in), optional :: epsilon

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

public interface d_depsilon

  • public function d_depsilon_E_PotentialFunction(ElasticPotential, ElasticStrain, params, epsilon) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    procedure(E_PotentialFunction) :: ElasticPotential
    real(kind=real64), intent(in) :: ElasticStrain(:,:)
    real(kind=real64), intent(in) :: params(:)
    real(kind=real64), intent(in), optional :: epsilon

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

public interface d2_depsilon2

  • public function d2_depsilon2_E_PotentialFunction(ElasticPotential, ElasticStrain, params, epsilon) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    procedure(E_PotentialFunction) :: ElasticPotential
    real(kind=real64), intent(in) :: ElasticStrain(:,:)
    real(kind=real64), intent(in) :: params(:)
    real(kind=real64), intent(in), optional :: epsilon

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

public interface to_I1

  • public function to_I1_real64(CauchyStress) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: CauchyStress(:,:)

    Return Value real(kind=real64)

  • public function to_I1_complex64(CauchyStress) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=real64), intent(in) :: CauchyStress(:,:)

    Return Value complex(kind=real64)

public interface to_J1

  • public function to_J1_real64(CauchyStress) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: CauchyStress(:,:)

    Return Value real(kind=real64)

  • public function to_J1_complex64(CauchyStress) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=real64), intent(in) :: CauchyStress(:,:)

    Return Value complex(kind=real64)

public interface to_J2

  • public function to_J2_real64(CauchyStress) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: CauchyStress(:,:)

    Return Value real(kind=real64)

  • public function to_J2_complex64(CauchyStress) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=real64), intent(in) :: CauchyStress(:,:)

    Return Value complex(kind=real64)

public interface to_J3

  • public function to_J3_real64(CauchyStress) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: CauchyStress(:,:)

    Return Value real(kind=real64)

  • public function to_J3_complex64(CauchyStress) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=real64), intent(in) :: CauchyStress(:,:)

    Return Value complex(kind=real64)

public interface to_LodeAngle

  • public function to_LodeAngle_real64(CauchyStress) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: CauchyStress(:,:)

    Return Value real(kind=real64)

  • public function to_LodeAngle_complex64(CauchyStress) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=real64), intent(in) :: CauchyStress(:,:)

    Return Value complex(kind=real64)


Abstract Interfaces

abstract interface

  • public function ScalarFunction(x, params) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=real64), intent(in) :: x
    real(kind=real64), intent(in) :: params(:)

    Return Value complex(kind=real64)

abstract interface

  • public function E_PotentialFunction(ElasticStrain, params) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=real64), intent(in) :: ElasticStrain(:,:)
    real(kind=real64), intent(in) :: params(:)

    Return Value complex(kind=real64)

abstract interface

  • public function P_PotentialFunction(CauchyStress, PlasticStrain, params) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=real64), intent(in) :: CauchyStress(:,:)
    complex(kind=real64), intent(in) :: PlasticStrain(:,:)
    real(kind=real64), intent(in) :: params(:)

    Return Value complex(kind=real64)

abstract interface

  • public function StressRatioFunction(CauchyStress, dCauchyStress, StrainRatio) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in) :: CauchyStress(:,:)
    real(kind=real64), intent(in) :: dCauchyStress(:,:)
    real(kind=real64), intent(in) :: StrainRatio(:,:)

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


Derived Types

type, public ::  EP_Model_

Components

Type Visibility Attributes Name Initial
procedure(E_PotentialFunction), public, nopass, pointer :: ElasticPotential => null()
procedure(P_PotentialFunction), public, nopass, pointer :: YieldFunction => null()
procedure(P_PotentialFunction), public, nopass, pointer :: PlasticPotential => null()
procedure(StressRatioFunction), public, nopass, pointer :: StressRatio => null()

Type-Bound Procedures

procedure, public :: StiffnessMatrix => StiffnessMatrix_EP_model

type, public ::  EP_Domain_

Components

Type Visibility Attributes Name Initial
procedure(E_PotentialFunction), public, nopass, pointer :: ElasticPotential => null()
procedure(P_PotentialFunction), public, nopass, pointer :: YieldFunction => null()
procedure(P_PotentialFunction), public, nopass, pointer :: PlasticPotential => null()
type(FEMDomain_), public :: femdomain
real(kind=real64), public, allocatable :: YieldFunction_params(:,:)
real(kind=real64), public, allocatable :: PlasticPotential_params(:,:)
real(kind=real64), public, allocatable :: ElasticPotential_params(:,:)
real(kind=real64), public, allocatable :: CauchyStress_field(:,:,:)
real(kind=real64), public, allocatable :: Strain_field(:,:,:)
real(kind=real64), public, allocatable :: PlasticStrain_field(:,:,:)
real(kind=real64), public, allocatable :: dCauchyStress_field(:,:,:)
real(kind=real64), public, allocatable :: dStrain_field(:,:,:)
real(kind=real64), public, allocatable :: PlasticStrain_field_n(:,:,:)
real(kind=real64), public, allocatable :: displacement(:)

Type-Bound Procedures

procedure, public :: importField => importFieldEpDomain
procedure, public :: exportField => exportFieldEpDomain

type, public ::  ElastoPlasticity_

Components

Type Visibility Attributes Name Initial
type(FEMSolver_), public :: femsolver
type(EP_Domain_), public, allocatable :: ep_domain(:)
real(kind=real64), public :: tol = dble(1.0e-5)
real(kind=real64), public :: gravity_accel(1:3) = [0.0d0, 0.0d0, -9.810d0]
integer(kind=int32), public :: MAX_NEWTON_LOOP_ITR = 10000

Type-Bound Procedures

procedure, public :: init => initElastoPlasticity
procedure, public :: solve => solveElastoPlasticity
procedure, public :: solve_increment => solve_increment_ElastoPlasticity
procedure, public, pass :: edit_YF_PP_ElastoPlasticity
generic, public :: edit => edit_YF_PP_ElastoPlasticity
procedure, public :: export => exportElastoPlasticity
procedure, public :: exportField => exportFieldElastoPlasticity
procedure, public :: importField => importFieldElastoPlasticity
procedure, public :: get_internal_force => get_internal_forceElastoPlasticity
procedure, public :: update_stress_for_increment => update_stress_for_incrementElastoPlasticity
procedure, public :: get_delta_internal_force => get_delta_internal_forceElastoPlasticity
procedure, public :: get_external_force => get_external_forceElastoPlasticity
procedure, public :: fill_zero_at_DBC => fill_zero_at_DBCElastoPlasticity
procedure, public :: getYieldFunctionTemplate => getYieldFunctionTemplateElastoPlasticity
procedure, public :: getPlasticStrain => getPlasticStrain_ElastoPlasticity
procedure, public :: getPlasticStrain_n => getPlasticStrain_n_ElastoPlasticity
procedure, public :: getStrain => getStrain_ElastoPlasticity
procedure, public :: getCauchyStress => getCauchyStress_ElastoPlasticity
procedure, public :: getdCauchyStress => getdCauchyStress_ElastoPlasticity
procedure, public :: getTractionForce => getTractionForce_ElastoPlasticity
procedure, public :: setPlasticStrain => setPlasticStrain_ElastoPlasticity
procedure, public :: setCauchyStress => setCauchyStress_ElastoPlasticity
procedure, public :: setdCauchyStress => setdCauchyStress_ElastoPlasticity
procedure, public :: addStrain => addStrain_ElastoPlasticity
procedure, public :: setdStrain => setdStrain_ElastoPlasticity
procedure, public :: reset => rezeroElastoPlasticity
procedure, public :: rezero => rezeroElastoPlasticity
procedure, public :: I1 => I1ElastoPlasticity
procedure, public :: J2 => J2ElastoPlasticity
procedure, public :: I1_e => I1_e_ElastoPlasticity
procedure, public :: J2_e => J2_e_ElastoPlasticity

Functions

public function to_StressTensor(YieldFunction, PlasticPotential, Strain, dStrain, CauchyStress, PlasticStrain, YieldParams, PlasticParams, ElasticParams, pval, epsilon, Jmat) result(tr_CauchyStress)

Arguments

Type IntentOptional Attributes Name
procedure(P_PotentialFunction) :: YieldFunction
procedure(P_PotentialFunction) :: PlasticPotential
real(kind=real64), intent(in) :: Strain(:,:)
real(kind=real64), intent(in) :: dStrain(:,:)
real(kind=real64), intent(in) :: CauchyStress(:,:)
real(kind=real64), intent(inout) :: PlasticStrain(:,:)
real(kind=real64), intent(in) :: YieldParams(:)
real(kind=real64), intent(in) :: PlasticParams(:)
real(kind=real64), intent(in) :: ElasticParams(:)
real(kind=real64), intent(inout), optional :: pval
real(kind=real64), intent(in) :: epsilon
real(kind=real64), intent(inout), optional, allocatable :: Jmat(:,:)

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

public function to_dStressTensor(YieldFunction, PlasticPotential, dStrain, CauchyStress, PlasticStrain, YieldParams, PlasticParams, ElasticParams, pval, epsilon, new_PlasticStrain) result(dCauchyStress)

Arguments

Type IntentOptional Attributes Name
procedure(P_PotentialFunction) :: YieldFunction
procedure(P_PotentialFunction) :: PlasticPotential

return increment of Cauchy tensor

real(kind=real64), intent(in) :: dStrain(:,:)
real(kind=real64), intent(in) :: CauchyStress(:,:)
real(kind=real64), intent(in) :: PlasticStrain(:,:)
real(kind=real64), intent(in) :: YieldParams(:)
real(kind=real64), intent(in) :: PlasticParams(:)
real(kind=real64), intent(in) :: ElasticParams(:)
real(kind=real64), intent(inout), optional :: pval
real(kind=real64), intent(in) :: epsilon
real(kind=real64), intent(inout), optional, allocatable :: new_PlasticStrain(:,:)

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

public function neoHookean(ElasticStrain, params) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: ElasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

Return Value complex(kind=real64)

public function neoHookean_Vladimirov(ElasticStrain, params) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: ElasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

Return Value complex(kind=real64)

public function neoHookean_Simo(ElasticStrain, params) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: ElasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

Return Value complex(kind=real64)

public function StVenant(ElasticStrain, params) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: ElasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

Return Value complex(kind=real64)

public function StVenant_ConstModel(ElasticStrain, params) result(CauchyStress)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: ElasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

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

public function StVenant_StiffnessMatrix(params) result(E)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: params(:)

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

public function StVenant_StiffnessMatrix_2D(params) result(E)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: params(:)

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

public function MohrCoulomb(CauchyStress, PlasticStrain, params) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)
complex(kind=real64), intent(in) :: PlasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

Return Value complex(kind=real64)

public function DruckerPrager(CauchyStress, PlasticStrain, params) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)
complex(kind=real64), intent(in) :: PlasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

Return Value complex(kind=real64)

public function VonMises(CauchyStress, PlasticStrain, params) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)
complex(kind=real64), intent(in) :: PlasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

Return Value complex(kind=real64)

public function Tresca(CauchyStress, PlasticStrain, params) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)
complex(kind=real64), intent(in) :: PlasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

Return Value complex(kind=real64)

public function CamClay(CauchyStress, PlasticStrain, params) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)
complex(kind=real64), intent(in) :: PlasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

Return Value complex(kind=real64)

public function ModifiedCamClay(CauchyStress, PlasticStrain, params) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)
complex(kind=real64), intent(in) :: PlasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)

Return Value complex(kind=real64)

public function to_I1_complex64(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)

Return Value complex(kind=real64)

public function to_I1_real64(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: CauchyStress(:,:)

Return Value real(kind=real64)

public function tensordot(a_ij, b_ij) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: a_ij(:,:)
real(kind=real64), intent(in) :: b_ij(:,:)

Return Value real(kind=real64)

public function tensorSelfDot(a_ij) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: a_ij(:,:)

Return Value real(kind=real64)

public function to_J1_complex64(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)

Return Value complex(kind=real64)

public function to_J1_real64(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: CauchyStress(:,:)

Return Value real(kind=real64)

public function to_J2_complex64(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)

Return Value complex(kind=real64)

public function to_J2_real64(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: CauchyStress(:,:)

Return Value real(kind=real64)

public function to_J3_complex64(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)

Return Value complex(kind=real64)

public function to_J3_real64(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: CauchyStress(:,:)

Return Value real(kind=real64)

public function to_LodeAngle_complex64(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: CauchyStress(:,:)

Return Value complex(kind=real64)

public function to_LodeAngle_real64(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: CauchyStress(:,:)

Return Value real(kind=real64)

public function to_DeviatricStress(CauchyStress) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: CauchyStress(:,:)

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

public function d_dsigma_P_PotentialFunction(PlasticPotential, CauchyStress, PlasticStrain, params, epsilon) result(ret)

Arguments

Type IntentOptional Attributes Name
procedure(P_PotentialFunction) :: PlasticPotential
real(kind=real64), intent(in) :: CauchyStress(:,:)
real(kind=real64), intent(in) :: PlasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)
real(kind=real64), intent(in), optional :: epsilon

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

public function d_depsilon_E_PotentialFunction(ElasticPotential, ElasticStrain, params, epsilon) result(ret)

Arguments

Type IntentOptional Attributes Name
procedure(E_PotentialFunction) :: ElasticPotential
real(kind=real64), intent(in) :: ElasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)
real(kind=real64), intent(in), optional :: epsilon

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

public function d2_depsilon2_E_PotentialFunction(ElasticPotential, ElasticStrain, params, epsilon) result(ret)

Arguments

Type IntentOptional Attributes Name
procedure(E_PotentialFunction) :: ElasticPotential
real(kind=real64), intent(in) :: ElasticStrain(:,:)
real(kind=real64), intent(in) :: params(:)
real(kind=real64), intent(in), optional :: epsilon

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

public function get_Return_mapping_tangent_matrix(PlasticPotential, CauchyStress, PlasticStrain, Strain, ElasticParams, gamma, PlasticParams, epsilon) result(ret)

Arguments

Type IntentOptional Attributes Name
procedure(P_PotentialFunction) :: PlasticPotential
real(kind=real64), intent(in) :: CauchyStress(:,:)
real(kind=real64), intent(in) :: PlasticStrain(:,:)
real(kind=real64), intent(in) :: Strain(:,:)
real(kind=real64), intent(in) :: ElasticParams(:)
real(kind=real64), intent(in) :: gamma
real(kind=real64), intent(in) :: PlasticParams(:)
real(kind=real64), intent(in), optional :: epsilon

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

public function get_internal_forceElastoPlasticity(this, dU) result(ret)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
real(kind=real64), intent(in) :: dU(:)

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

public function get_delta_internal_forceElastoPlasticity(this) result(ret)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this

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

public function getPlasticStrain_ElastoPlasticity(this, GaussPointID, ElementID) result(ret)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(in) :: this
integer(kind=int32), intent(in) :: GaussPointID
integer(kind=int32), intent(in) :: ElementID

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

public function getPlasticStrain_n_ElastoPlasticity(this, GaussPointID, ElementID) result(ret)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(in) :: this
integer(kind=int32), intent(in) :: GaussPointID
integer(kind=int32), intent(in) :: ElementID

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

public function getStrain_ElastoPlasticity(this, GaussPointID, ElementID) result(ret)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(in) :: this
integer(kind=int32), intent(in) :: GaussPointID
integer(kind=int32), intent(in) :: ElementID

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

public function getCauchyStress_ElastoPlasticity(this, GaussPointID, ElementID) result(ret)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(in) :: this
integer(kind=int32), intent(in) :: GaussPointID
integer(kind=int32), intent(in) :: ElementID

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

public function getdCauchyStress_ElastoPlasticity(this, GaussPointID, ElementID) result(ret)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(in) :: this
integer(kind=int32), intent(in) :: GaussPointID
integer(kind=int32), intent(in) :: ElementID

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

public function get_external_forceElastoPlasticity(this) result(ret)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this

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

public function I1ElastoPlasticity(this) result(I1)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this

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

public function J2ElastoPlasticity(this) result(J2)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this

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

public function I1_e_ElastoPlasticity(this) result(I1)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this

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

public function J2_e_ElastoPlasticity(this) result(J2)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this

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

public function getTractionForce_ElastoPlasticity(this, NodeList) result(ret)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
integer(kind=int32), intent(in) :: NodeList(:)

Return Value real(kind=real64), (1:3)

public function to_EP_Model_ElastoPlastClass(ElasticPotential, YieldFunction, PlasticPotential, StressRatio) result(ret)

Arguments

Type IntentOptional Attributes Name
procedure(E_PotentialFunction) :: ElasticPotential
procedure(P_PotentialFunction) :: YieldFunction
procedure(P_PotentialFunction) :: PlasticPotential
procedure(StressRatioFunction), optional :: StressRatio

Return Value type(EP_Model_)

public function JaumannStressRatio(sigma, d_sigma, l) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: sigma(:,:)
real(kind=real64), intent(in) :: d_sigma(:,:)
real(kind=real64), intent(in) :: l(:,:)

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

public function TruesdellStressRatio(sigma, d_sigma, l) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: sigma(:,:)
real(kind=real64), intent(in) :: d_sigma(:,:)
real(kind=real64), intent(in) :: l(:,:)

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

public function OldroydStressRatio(sigma, d_sigma, l) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: sigma(:,:)
real(kind=real64), intent(in) :: d_sigma(:,:)
real(kind=real64), intent(in) :: l(:,:)

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

public function StiffnessMatrix_EP_model(EP_Model, ElasticParams, PlasticParams, ElasticStrain, nDim) result(ret)

Arguments

Type IntentOptional Attributes Name
class(EP_Model_), intent(in) :: EP_Model
real(kind=real64), intent(in) :: ElasticParams(:)
real(kind=real64), intent(in) :: PlasticParams(:)
real(kind=real64), intent(in) :: ElasticStrain(:,:)
integer(kind=int32), intent(in) :: nDim

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

public function imaginaryTimestepDerivative_c(this_func, x, params) result(ret)

Arguments

Type IntentOptional Attributes Name
procedure(ScalarFunction) :: this_func
real(kind=real64), intent(in) :: x
real(kind=real64), intent(in) :: params(:)

Return Value real(kind=real64)

public function imaginaryTimestep2ndDerivative(this_func, x, params) result(ret)

Arguments

Type IntentOptional Attributes Name
procedure(ScalarFunction) :: this_func
real(kind=real64), intent(in) :: x
real(kind=real64), intent(in) :: params(:)

Return Value real(kind=real64)

public function imaginaryTimestepDerivative(this_func, x, params) result(ret)

Arguments

Type IntentOptional Attributes Name
procedure(ScalarFunction) :: this_func
real(kind=real64), intent(in) :: x
real(kind=real64), intent(in) :: params(:)

Return Value real(kind=real64)

public function ForwardDifferenceDerivative(this_func, x, params) result(ret)

Arguments

Type IntentOptional Attributes Name
procedure(ScalarFunction) :: this_func
real(kind=real64), intent(in) :: x
real(kind=real64), intent(in) :: params(:)

Return Value real(kind=real64)

public function CentralDifferenceDerivative(this_func, x, params) result(ret)

Arguments

Type IntentOptional Attributes Name
procedure(ScalarFunction) :: this_func
real(kind=real64), intent(in) :: x
real(kind=real64), intent(in) :: params(:)

Return Value real(kind=real64)

public function is_elastic(val) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: val

Return Value logical


Subroutines

public subroutine getYieldFunctionTemplateElastoPlasticity(this, name)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(in) :: this
character(len=*), intent(in) :: name

public subroutine initElastoPlasticity(this, femdomains, default_YieldFunction, default_YieldFunction_params, default_PlasticPotential, default_PlasticPotential_params)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
type(FEMDomain_), intent(in), target :: femdomains(:)
procedure(P_PotentialFunction) :: default_YieldFunction
real(kind=real64), intent(in) :: default_YieldFunction_params(:)
procedure(P_PotentialFunction) :: default_PlasticPotential
real(kind=real64), intent(in) :: default_PlasticPotential_params(:)

public subroutine edit_YF_PP_ElastoPlasticity(this, DomainID, YieldFunction, PlasticPotential)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
integer(kind=int32), intent(in) :: DomainID
procedure(P_PotentialFunction) :: YieldFunction
procedure(P_PotentialFunction) :: PlasticPotential

public subroutine solveElastoPlasticity(this, YoungModulus, PoissonRatio, Density, fix_node_list_x, fix_node_list_y, fix_node_list_z, fix_value_list_x, fix_value_list_y, fix_value_list_z)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
real(kind=real64), intent(in) :: YoungModulus(:)
real(kind=real64), intent(in) :: PoissonRatio(:)
real(kind=real64), intent(in) :: Density(:)
integer(kind=int32), intent(in), optional :: fix_node_list_x(:)
integer(kind=int32), intent(in), optional :: fix_node_list_y(:)
integer(kind=int32), intent(in), optional :: fix_node_list_z(:)
real(kind=real64), intent(in), optional :: fix_value_list_x(:)
real(kind=real64), intent(in), optional :: fix_value_list_y(:)
real(kind=real64), intent(in), optional :: fix_value_list_z(:)

public subroutine solve_increment_ElastoPlasticity(this, YoungModulus, PoissonRatio, delta_Density, fix_node_list_x, fix_node_list_y, fix_node_list_z, fix_value_list_x, fix_value_list_y, fix_value_list_z)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
real(kind=real64), intent(in) :: YoungModulus(:)
real(kind=real64), intent(in) :: PoissonRatio(:)
real(kind=real64), intent(in) :: delta_Density(:)
integer(kind=int32), intent(in), optional :: fix_node_list_x(:)
integer(kind=int32), intent(in), optional :: fix_node_list_y(:)
integer(kind=int32), intent(in), optional :: fix_node_list_z(:)
real(kind=real64), intent(in), optional :: fix_value_list_x(:)
real(kind=real64), intent(in), optional :: fix_value_list_y(:)
real(kind=real64), intent(in), optional :: fix_value_list_z(:)

public subroutine update_stress_for_incrementElastoPlasticity(this, dU)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
real(kind=real64), intent(in) :: dU(:)

public subroutine setPlasticStrain_ElastoPlasticity(this, ElementID, GaussPointID, PlasticStrain)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
integer(kind=int32), intent(in) :: ElementID
integer(kind=int32), intent(in) :: GaussPointID
real(kind=real64), intent(in) :: PlasticStrain(:,:)

public subroutine setCauchyStress_ElastoPlasticity(this, ElementID, GaussPointID, CauchyStress)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
integer(kind=int32), intent(in) :: ElementID
integer(kind=int32), intent(in) :: GaussPointID
real(kind=real64), intent(in) :: CauchyStress(:,:)

public subroutine setdCauchyStress_ElastoPlasticity(this, ElementID, GaussPointID, dCauchyStress)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
integer(kind=int32), intent(in) :: ElementID
integer(kind=int32), intent(in) :: GaussPointID
real(kind=real64), intent(in) :: dCauchyStress(:,:)

public subroutine addStrain_ElastoPlasticity(this, ElementID, GaussPointID, dStrain)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
integer(kind=int32), intent(in) :: ElementID
integer(kind=int32), intent(in) :: GaussPointID
real(kind=real64), intent(in) :: dStrain(:,:)

public subroutine setdStrain_ElastoPlasticity(this, ElementID, GaussPointID, dStrain)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
integer(kind=int32), intent(in) :: ElementID
integer(kind=int32), intent(in) :: GaussPointID
real(kind=real64), intent(in) :: dStrain(:,:)

public subroutine fill_zero_at_DBCElastoPlasticity(this, values, idx)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
real(kind=real64), intent(inout) :: values(:)
integer(kind=int32), intent(in) :: idx(:)

public subroutine exportElastoPlasticity(this, name, step, amp)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
character(len=*), intent(in) :: name
integer(kind=int32), intent(in), optional :: step
real(kind=real64), intent(in), optional :: amp

public subroutine rezeroElastoPlasticity(this)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this

public subroutine exportFieldElastoPlasticity(this, name)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(in) :: this
character(len=*), intent(in) :: name

public subroutine importFieldElastoPlasticity(this, name, num_domain)

Arguments

Type IntentOptional Attributes Name
class(ElastoPlasticity_), intent(inout) :: this
character(len=*), intent(in) :: name
integer(kind=int32), intent(in) :: num_domain

public subroutine exportFieldEpDomain(this, name)

Arguments

Type IntentOptional Attributes Name
class(EP_Domain_), intent(in) :: this
character(len=*), intent(in) :: name

public subroutine importFieldEpDomain(this, name)

Arguments

Type IntentOptional Attributes Name
class(EP_Domain_), intent(inout) :: this
character(len=*), intent(in) :: name