new numerics parameter "unitlength" that scales the model size in DAMASK; this enables to use very small models in marc without getting any numerical problems for example with contact which does not seem to work when using very small numbers
This commit is contained in:
parent
b587bffdd5
commit
8336d0705c
|
@ -237,7 +237,8 @@ subroutine CPFEM_general(mode, coords, ffn, ffn1, Temperature, dt, element, IP,
|
||||||
!*** variables and functions from other modules ***!
|
!*** variables and functions from other modules ***!
|
||||||
use prec, only: pInt
|
use prec, only: pInt
|
||||||
use numerics, only: defgradTolerance, &
|
use numerics, only: defgradTolerance, &
|
||||||
iJacoStiffness
|
iJacoStiffness, &
|
||||||
|
numerics_unitlength
|
||||||
use debug, only: debug_level, &
|
use debug, only: debug_level, &
|
||||||
debug_CPFEM, &
|
debug_CPFEM, &
|
||||||
debug_levelBasic, &
|
debug_levelBasic, &
|
||||||
|
@ -611,11 +612,11 @@ subroutine CPFEM_general(mode, coords, ffn, ffn1, Temperature, dt, element, IP,
|
||||||
CPFEM_dcsde(1:6,1:6,IP,cp_en) = CPFEM_odd_jacobian * math_identity2nd(6)
|
CPFEM_dcsde(1:6,1:6,IP,cp_en) = CPFEM_odd_jacobian * math_identity2nd(6)
|
||||||
CPFEM_calc_done = .false.
|
CPFEM_calc_done = .false.
|
||||||
#ifndef Marc
|
#ifndef Marc
|
||||||
mesh_ipCenterOfGravity(1:3,IP,cp_en) = coords(1:3,1)
|
mesh_ipCenterOfGravity(1:3,IP,cp_en) = numerics_unitlength * coords(1:3,1)
|
||||||
#else
|
#else
|
||||||
do node = 1,FE_Nnodes(mesh_element(2,cp_en))
|
do node = 1,FE_Nnodes(mesh_element(2,cp_en))
|
||||||
FEnodeID = mesh_FEasCP('node',mesh_element(4+node,cp_en))
|
FEnodeID = mesh_FEasCP('node',mesh_element(4+node,cp_en))
|
||||||
mesh_node(1:3,FEnodeID) = mesh_node0(1:3,FEnodeID) + coords(1:3,node)
|
mesh_node(1:3,FEnodeID) = mesh_node0(1:3,FEnodeID) + numerics_unitlength * coords(1:3,node)
|
||||||
enddo
|
enddo
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ pert_method 1 # perturbation method (1 = forward, 2 = b
|
||||||
integrator 1 # integration method (1 = Fixed Point Iteration, 2 = Euler, 3 = Adaptive Euler, 4 = classical 4th order Runge-Kutta, 5 = 5th order Runge-Kutta Cash-Karp)
|
integrator 1 # integration method (1 = Fixed Point Iteration, 2 = Euler, 3 = Adaptive Euler, 4 = classical 4th order Runge-Kutta, 5 = 5th order Runge-Kutta Cash-Karp)
|
||||||
integratorStiffness 1 # integration method used for stiffness (1 = Fixed Point Iteration, 2 = Euler, 3 = Adaptive Euler, 4 = classical 4th order Runge-Kutta, 5 = 5th order Runge-Kutta Cash-Karp)
|
integratorStiffness 1 # integration method used for stiffness (1 = Fixed Point Iteration, 2 = Euler, 3 = Adaptive Euler, 4 = classical 4th order Runge-Kutta, 5 = 5th order Runge-Kutta Cash-Karp)
|
||||||
analyticJaco 0 # use analytic Jacobian or perturbation (0 = perturbations, 1 = analytic)
|
analyticJaco 0 # use analytic Jacobian or perturbation (0 = perturbations, 1 = analytic)
|
||||||
|
unitlength 1 # physical length of one computational length unit
|
||||||
|
|
||||||
## crystallite numerical parameters ##
|
## crystallite numerical parameters ##
|
||||||
nCryst 20 # crystallite loop limit (only for debugging info, loop limit is determined by "subStepMinCryst")
|
nCryst 20 # crystallite loop limit (only for debugging info, loop limit is determined by "subStepMinCryst")
|
||||||
|
|
Loading…
Reference in New Issue