m_MEF90_DefMechATKKL Module

KKL (v2) model, which can be rewritten as a regular GD model with $a(\alpha) = g(\alpha)$ and $w(\alpha) = 1-g(\alpha)$ where $g(\alpha) = 4(1-\alpha)^3 - 3 (1-\alpha)^4$ Karma, A., Kessler, D. A., and Levine, H. (2001). Phase-field model of mode III dynamic fracture. Phys. Rev. Lett., 87(4):045501. doi:10.1103/PhysRevLett.87.045501



Derived Types

type, public, extends(MEF90DefMechAT_Type) ::  MEF90DefMechATKKL_Type

Components

Type Visibility Attributes Name Initial
integer(kind=C_INT32_T), public :: aOrder = -1
integer(kind=C_INT32_T), public :: comm
real(kind=C_DOUBLE), public :: cw = -1.0_Kr
real(kind=C_DOUBLE), public :: fractureToughness = 0.0_Kr
real(kind=C_DOUBLE), public :: internalLength = -1.0_Kr
logical(kind=C_BOOL), public :: isElastic = PETSC_FALSE
character(kind=c_char, len=MEF90MXSTRLEN), public :: name = "NULL"
character(kind=c_char, len=MEF90MXSTRLEN), public :: prefix
real(kind=C_DOUBLE), public :: residualStiffness = 0.0_Kr
class(mef90Mat), public, allocatable :: toughnessAnisotropyMatrix
character(len=MEF90MXSTRLEN), public :: type = ''
integer(kind=C_INT32_T), public :: wOrder = -1

Type-Bound Procedures

procedure, public, pass(self) :: D2a => D2aKKL
procedure, public, pass(self) :: D2w => D2wKKL
procedure, public, pass(self) :: Da => DaKKL
procedure, public, pass(self) :: Dw => DwKKL
procedure, public, pass(self) :: a => aKKL
procedure, public, pass(self) :: setFromOptions => MEF90DefMechATKKL_setFromOptions
procedure, public, pass(self) :: view => MEF90Object_view
procedure, public, pass(self) :: view_internal => MEF90DefMechAT_View
procedure, public, pass(self) :: w => wKKL

Functions

private function D2aKKL(self, alpha)

Author
Blaise Bourdin (2020, bourdin@lsu.edu)

D2aKKL: the second derivative of the "a" function of the KKL (v2) model

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechATKKL_Type), intent(in) :: self
real(kind=C_DOUBLE) :: alpha

Return Value real(kind=c_double)

private function D2wKKL(self, alpha)

Author
Blaise Bourdin (2020, bourdin@lsu.edu)

D2wKKL: the second derivative of the "w" function of the KKL (v2) model

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechATKKL_Type), intent(in) :: self
real(kind=C_DOUBLE) :: alpha

Return Value real(kind=c_double)

private function DaKKL(self, alpha)

Author
Blaise Bourdin (2020, bourdin@lsu.edu)

DaKKL: the derivative of the "a" function of the KKL (v2) model

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechATKKL_Type), intent(in) :: self
real(kind=C_DOUBLE) :: alpha

Return Value real(kind=c_double)

private function DwKKL(self, alpha)

Author
Blaise Bourdin (2020, bourdin@lsu.edu)

DwKKL: the derivative of the "w" function of the KKL (v2) model

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechATKKL_Type), intent(in) :: self
real(kind=C_DOUBLE) :: alpha

Return Value real(kind=c_double)

private function aKKL(self, alpha)

Author
Blaise Bourdin (2020, bourdin@lsu.edu)

aKKL: the "a" function of the KKL (v2) model,

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechATKKL_Type), intent(in) :: self
real(kind=C_DOUBLE) :: alpha

Return Value real(kind=c_double)

private function wKKL(self, alpha)

Author
Blaise Bourdin (2020, bourdin@lsu.edu)

wKKL: the "w" function of the of the KKL (v2) model

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechATKKL_Type), intent(in) :: self
real(kind=C_DOUBLE) :: alpha

Return Value real(kind=c_double)


Subroutines

private subroutine MEF90DefMechATKKL_setFromOptions(self, ierr)

Author
Blaise Bourdin (2025-26, bourdin@mcmaster.ca)

MEF90DefMechATKKL_setFromOptions: initializes a MEF90_DefMechATKKL_Type from options

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechATKKL_Type), intent(inout) :: self
integer(kind=C_INT32_T), intent(inout) :: ierr