possibility to set damage potential order
This commit is contained in:
parent
b69a422529
commit
0a5ccb3d91
|
@ -135,7 +135,7 @@ module numerics
|
||||||
integrationOrder = 2_pInt, & !< order of quadrature rule required
|
integrationOrder = 2_pInt, & !< order of quadrature rule required
|
||||||
structOrder = 2_pInt, & !< order of displacement shape functions
|
structOrder = 2_pInt, & !< order of displacement shape functions
|
||||||
thermalOrder = 2_pInt, & !< order of temperature field shape functions
|
thermalOrder = 2_pInt, & !< order of temperature field shape functions
|
||||||
damageOrder = 1_pInt, & !< order of damage field shape functions
|
damageOrder = 2_pInt, & !< order of damage field shape functions
|
||||||
vacancyfluxOrder = 2_pInt, & !< order of vacancy concentration and chemical potential field shape functions
|
vacancyfluxOrder = 2_pInt, & !< order of vacancy concentration and chemical potential field shape functions
|
||||||
porosityOrder = 2_pInt, & !< order of porosity field shape functions
|
porosityOrder = 2_pInt, & !< order of porosity field shape functions
|
||||||
hydrogenfluxOrder = 2_pInt !< order of hydrogen concentration and chemical potential field shape functions
|
hydrogenfluxOrder = 2_pInt !< order of hydrogen concentration and chemical potential field shape functions
|
||||||
|
|
|
@ -29,6 +29,7 @@ module source_damage_isoBrittle
|
||||||
|
|
||||||
real(pReal), dimension(:), allocatable, private :: &
|
real(pReal), dimension(:), allocatable, private :: &
|
||||||
source_damage_isoBrittle_aTol, &
|
source_damage_isoBrittle_aTol, &
|
||||||
|
source_damage_isoBrittle_N, &
|
||||||
source_damage_isoBrittle_critStrainEnergy
|
source_damage_isoBrittle_critStrainEnergy
|
||||||
|
|
||||||
enum, bind(c)
|
enum, bind(c)
|
||||||
|
@ -128,6 +129,7 @@ subroutine source_damage_isoBrittle_init(fileUnit)
|
||||||
allocate(source_damage_isoBrittle_outputID(maxval(phase_Noutput),maxNinstance), source=undefined_ID)
|
allocate(source_damage_isoBrittle_outputID(maxval(phase_Noutput),maxNinstance), source=undefined_ID)
|
||||||
allocate(source_damage_isoBrittle_Noutput(maxNinstance), source=0_pInt)
|
allocate(source_damage_isoBrittle_Noutput(maxNinstance), source=0_pInt)
|
||||||
allocate(source_damage_isoBrittle_critStrainEnergy(maxNinstance), source=0.0_pReal)
|
allocate(source_damage_isoBrittle_critStrainEnergy(maxNinstance), source=0.0_pReal)
|
||||||
|
allocate(source_damage_isoBrittle_N(maxNinstance), source=1.0_pReal)
|
||||||
allocate(source_damage_isoBrittle_aTol(maxNinstance), source=0.0_pReal)
|
allocate(source_damage_isoBrittle_aTol(maxNinstance), source=0.0_pReal)
|
||||||
|
|
||||||
rewind(fileUnit)
|
rewind(fileUnit)
|
||||||
|
@ -164,6 +166,9 @@ subroutine source_damage_isoBrittle_init(fileUnit)
|
||||||
case ('isobrittle_criticalstrainenergy')
|
case ('isobrittle_criticalstrainenergy')
|
||||||
source_damage_isoBrittle_critStrainEnergy(instance) = IO_floatValue(line,positions,2_pInt)
|
source_damage_isoBrittle_critStrainEnergy(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
|
||||||
|
case ('isobrittle_n')
|
||||||
|
source_damage_isoBrittle_N(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
|
||||||
case ('isobrittle_atol')
|
case ('isobrittle_atol')
|
||||||
source_damage_isoBrittle_aTol(instance) = IO_floatValue(line,positions,2_pInt)
|
source_damage_isoBrittle_aTol(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
|
||||||
|
@ -321,14 +326,18 @@ subroutine source_damage_isoBrittle_getRateAndItsTangent(localphiDot, dLocalphiD
|
||||||
localphiDot, &
|
localphiDot, &
|
||||||
dLocalphiDot_dPhi
|
dLocalphiDot_dPhi
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
phase, constituent, sourceOffset
|
phase, constituent, instance, sourceOffset
|
||||||
|
|
||||||
phase = mappingConstitutive(2,ipc,ip,el)
|
phase = mappingConstitutive(2,ipc,ip,el)
|
||||||
constituent = mappingConstitutive(1,ipc,ip,el)
|
constituent = mappingConstitutive(1,ipc,ip,el)
|
||||||
|
instance = source_damage_isoBrittle_instance(phase)
|
||||||
sourceOffset = source_damage_isoBrittle_offset(phase)
|
sourceOffset = source_damage_isoBrittle_offset(phase)
|
||||||
|
|
||||||
localphiDot = 1.0_pReal - phi*sourceState(phase)%p(sourceOffset)%state(1,constituent)
|
localphiDot = (1.0_pReal - phi)**(source_damage_isoBrittle_N(instance) - 1.0_pReal) - &
|
||||||
dLocalphiDot_dPhi = -sourceState(phase)%p(sourceOffset)%state(1,constituent)
|
phi*sourceState(phase)%p(sourceOffset)%state(1,constituent)
|
||||||
|
dLocalphiDot_dPhi = - (source_damage_isoBrittle_N(instance) - 1.0_pReal)* &
|
||||||
|
(1.0_pReal - phi)**max(0.0_pReal,source_damage_isoBrittle_N(instance) - 2.0_pReal) &
|
||||||
|
- sourceState(phase)%p(sourceOffset)%state(1,constituent)
|
||||||
|
|
||||||
end subroutine source_damage_isoBrittle_getRateAndItsTangent
|
end subroutine source_damage_isoBrittle_getRateAndItsTangent
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue