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:
Christoph Kords 2012-09-24 06:13:26 +00:00
parent b587bffdd5
commit 8336d0705c
2 changed files with 5 additions and 3 deletions

View File

@ -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

View File

@ -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")