m_MEF90_DefMechSplit_class Module



Abstract Interfaces

abstract interface

  • private subroutine D2EEDInterface(self, HookesLaw, phi, psi, D2EEDPlus, D2EEDMinus, ierr)

    Arguments

    Type IntentOptional Attributes Name
    class(MEF90DefMechSplit), intent(in) :: self
    class(MEF90HookesLaw), intent(in) :: HookesLaw
    class(mef90Mat), intent(in) :: phi
    class(mef90Mat), intent(in) :: psi
    real(kind=C_DOUBLE), intent(out) :: D2EEDPlus
    real(kind=C_DOUBLE), intent(out) :: D2EEDMinus
    integer(kind=C_INT32_T), intent(inout) :: ierr

abstract interface

  • private subroutine DEEDInterface(self, HookesLaw, phi, DEEDPlus, DEEDMinus, ierr)

    Arguments

    Type IntentOptional Attributes Name
    class(MEF90DefMechSplit), intent(in) :: self
    class(MEF90HookesLaw), intent(in) :: HookesLaw
    class(mef90Mat), intent(in) :: phi
    real(kind=C_DOUBLE), intent(out) :: DEEDPlus
    real(kind=C_DOUBLE), intent(out) :: DEEDMinus
    integer(kind=C_INT32_T), intent(inout) :: ierr

abstract interface

  • private subroutine EEDInterface(self, HookesLaw, phi, EEDPlus, EEDMinus, ierr)

    Arguments

    Type IntentOptional Attributes Name
    class(MEF90DefMechSplit), intent(in) :: self
    class(MEF90HookesLaw), intent(in) :: HookesLaw
    class(mef90Mat), intent(in) :: phi
    real(kind=C_DOUBLE), intent(out) :: EEDPlus
    real(kind=C_DOUBLE), intent(out) :: EEDMinus
    integer(kind=C_INT32_T), intent(inout) :: ierr

abstract interface

  • private subroutine setupInterface(self, Strain, ierr)

    Arguments

    Type IntentOptional Attributes Name
    class(MEF90DefMechSplit), intent(inout) :: self
    class(mef90Mat), intent(in) :: Strain
    integer(kind=C_INT32_T), intent(inout) :: ierr

Derived Types

type, public, abstract, extends(MEF90Object) ::  MEF90DefMechSplit

MEF90DefMechSplit: The abstract class used to define an energy split for handling unilateral contact

Components

Type Visibility Attributes Name Initial
integer(kind=C_INT32_T), public :: comm
logical(kind=C_BOOL), public :: isHybrid = PETSC_FALSE
character(kind=c_char, len=MEF90MXSTRLEN), public :: name = "NULL"
character(kind=c_char, len=MEF90MXSTRLEN), public :: prefix
integer, public :: quadratureOrder = 0
class(mef90Mat), public, allocatable :: strain
character(len=MEF90MXSTRLEN), public :: type = ''

Type-Bound Procedures

procedure(D2EEDInterface), public, deferred, pass(self) :: D2EED
procedure(DEEDInterface), public, deferred, pass(self) :: DEED
procedure(EEDInterface), public, deferred, pass(self) :: EED
procedure, public, pass(self) :: setFromOptions => MEF90Object_setFromOptions
procedure(setupInterface), public, deferred, pass(self) :: setup
procedure, public, pass(self) :: view => MEF90Object_view
procedure(MEF90ObjectViewInterface), public, deferred, pass(self) :: view_internal

Functions

public function MEF90DefMechSplit_D2SmoothPositiveSquare(x, gamma)

Author
Blaise Bourdin (2018-2020, bourdin@lsu.edu) Blaise Bourdin (2026, bourdin@mcmaster.ca)

MEF90DefMechSplit_D2SmoothPositiveSquare: the second derivative of MEF90_DefMechSplitHD_PenaltyFunction

Arguments

Type IntentOptional Attributes Name
real(kind=C_DOUBLE), intent(in) :: x
real(kind=C_DOUBLE), intent(in) :: gamma

Return Value real(kind=C_DOUBLE)

public function MEF90DefMechSplit_DSmoothPositiveSquare(x, gamma)

Author
Blaise Bourdin (2018-2020, bourdin@lsu.edu) Blaise Bourdin (2026, bourdin@mcmaster.ca)

MEF90DefMechSplit_DSmoothPositiveSquare: the first derivative of MEF90_DefMechSplitHD_PenaltyFunction

Arguments

Type IntentOptional Attributes Name
real(kind=C_DOUBLE), intent(in) :: x
real(kind=C_DOUBLE), intent(in) :: gamma

Return Value real(kind=C_DOUBLE)

public function MEF90DefMechSplit_SmoothPositiveSquare(x, gamma)

Author
Blaise Bourdin (2018-2020, bourdin@lsu.edu) Blaise Bourdin (2026, bourdin@mcmaster.ca)

MEF90DefMechSplit_SmoothPositiveSquare: a low order polynomial C^2 regularization of (max(x,0))**2, defined by 0 if x \le -gamma/2 (x+\gamma/2)^3/3/\gamma if -\gamma/2 < x \le \gamma/2 x^2+gamma^2/12 otherwise

Arguments

Type IntentOptional Attributes Name
real(kind=C_DOUBLE), intent(in) :: x
real(kind=C_DOUBLE), intent(in) :: gamma

Return Value real(kind=C_DOUBLE)