calcmode only needed for Abaqus and MSC.Marc
This commit is contained in:
parent
cf6d388a6b
commit
4b14cc5560
|
@ -98,7 +98,7 @@ subroutine CPFEM_initAll(el,ip)
|
||||||
call config_init
|
call config_init
|
||||||
call math_init
|
call math_init
|
||||||
call FE_init
|
call FE_init
|
||||||
call mesh_init(ip, el) ! pass on coordinates to alter calcMode of first ip
|
call mesh_init(ip, el)
|
||||||
call lattice_init
|
call lattice_init
|
||||||
call material_init
|
call material_init
|
||||||
call constitutive_init
|
call constitutive_init
|
||||||
|
|
|
@ -481,9 +481,9 @@ subroutine mesh_init(ip,el)
|
||||||
FEsolving_execElem, &
|
FEsolving_execElem, &
|
||||||
#ifndef Spectral
|
#ifndef Spectral
|
||||||
modelName, &
|
modelName, &
|
||||||
|
calcMode
|
||||||
#endif
|
#endif
|
||||||
FEsolving_execIP, &
|
FEsolving_execIP, &
|
||||||
calcMode
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
#ifdef Spectral
|
#ifdef Spectral
|
||||||
|
@ -629,12 +629,10 @@ subroutine mesh_init(ip,el)
|
||||||
allocate(FEsolving_execIP(2_pInt,mesh_NcpElems), source=1_pInt) ! parallel loop bounds set to comprise from first IP...
|
allocate(FEsolving_execIP(2_pInt,mesh_NcpElems), source=1_pInt) ! parallel loop bounds set to comprise from first IP...
|
||||||
forall (j = 1_pInt:mesh_NcpElems) FEsolving_execIP(2,j) = FE_Nips(FE_geomtype(mesh_element(2,j))) ! ...up to own IP count for each element
|
forall (j = 1_pInt:mesh_NcpElems) FEsolving_execIP(2,j) = FE_Nips(FE_geomtype(mesh_element(2,j))) ! ...up to own IP count for each element
|
||||||
|
|
||||||
|
#if defined(Marc4DAMASK) || defined(Abaqus)
|
||||||
allocate(calcMode(mesh_maxNips,mesh_NcpElems))
|
allocate(calcMode(mesh_maxNips,mesh_NcpElems))
|
||||||
calcMode = .false. ! pretend to have collected what first call is asking (F = I)
|
calcMode = .false. ! pretend to have collected what first call is asking (F = I)
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
calcMode(ip,mesh_FEasCP('elem',el)) = .true. ! first ip,el needs to be already pingponged to "calc"
|
calcMode(ip,mesh_FEasCP('elem',el)) = .true. ! first ip,el needs to be already pingponged to "calc"
|
||||||
#else
|
|
||||||
calcMode(ip,el) = .true. ! first ip,el needs to be already pingponged to "calc"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
!!!! COMPATIBILITY HACK !!!!
|
!!!! COMPATIBILITY HACK !!!!
|
||||||
|
|
|
@ -25,8 +25,12 @@ use PETScis
|
||||||
mesh_NcpElems, & !< total number of CP elements in mesh
|
mesh_NcpElems, & !< total number of CP elements in mesh
|
||||||
mesh_NcpElemsGlobal, &
|
mesh_NcpElemsGlobal, &
|
||||||
mesh_Nnodes, & !< total number of nodes in mesh
|
mesh_Nnodes, & !< total number of nodes in mesh
|
||||||
mesh_maxNips, & !< max number of IPs in any CP element
|
mesh_maxNipNeighbors, & !< max number of IP neighbors in any CP element
|
||||||
mesh_maxNipNeighbors
|
mesh_maxNipNeighbors
|
||||||
|
!!!! BEGIN DEPRECATED !!!!!
|
||||||
|
integer(pInt), public, protected :: &
|
||||||
|
mesh_maxNips, & !< max number of IPs in any CP element
|
||||||
|
!!!! BEGIN DEPRECATED !!!!!
|
||||||
|
|
||||||
real(pReal), public, protected :: charLength
|
real(pReal), public, protected :: charLength
|
||||||
|
|
||||||
|
@ -117,8 +121,7 @@ subroutine mesh_init(ip,el)
|
||||||
worldsize
|
worldsize
|
||||||
use FEsolving, only: &
|
use FEsolving, only: &
|
||||||
FEsolving_execElem, &
|
FEsolving_execElem, &
|
||||||
FEsolving_execIP, &
|
FEsolving_execIP
|
||||||
calcMode
|
|
||||||
use FEM_Zoo, only: &
|
use FEM_Zoo, only: &
|
||||||
FEM_Zoo_nQuadrature, &
|
FEM_Zoo_nQuadrature, &
|
||||||
FEM_Zoo_QuadraturePoints
|
FEM_Zoo_QuadraturePoints
|
||||||
|
@ -231,10 +234,11 @@ subroutine mesh_init(ip,el)
|
||||||
allocate(FEsolving_execIP(2_pInt,mesh_NcpElems)); FEsolving_execIP = 1_pInt ! parallel loop bounds set to comprise from first IP...
|
allocate(FEsolving_execIP(2_pInt,mesh_NcpElems)); FEsolving_execIP = 1_pInt ! parallel loop bounds set to comprise from first IP...
|
||||||
forall (j = 1_pInt:mesh_NcpElems) FEsolving_execIP(2,j) = FE_Nips(FE_geomtype(mesh_element(2,j))) ! ...up to own IP count for each element
|
forall (j = 1_pInt:mesh_NcpElems) FEsolving_execIP(2,j) = FE_Nips(FE_geomtype(mesh_element(2,j))) ! ...up to own IP count for each element
|
||||||
|
|
||||||
if (allocated(calcMode)) deallocate(calcMode)
|
!!!! COMPATIBILITY HACK !!!!
|
||||||
allocate(calcMode(mesh_maxNips,mesh_NcpElems))
|
! for a homogeneous mesh, all elements have the same number of IPs and and cell nodes.
|
||||||
calcMode = .false. ! pretend to have collected what first call is asking (F = I)
|
! hence, xxPerElem instead of maxXX
|
||||||
calcMode(ip,el) = .true. ! first ip,el needs to be already pingponged to "calc"
|
mesh_NipsPerElem = mesh_maxNips
|
||||||
|
!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
end subroutine mesh_init
|
end subroutine mesh_init
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue