new module "discretization"
should replace the part of mesh that is not only needed by plastic_nonlocal
This commit is contained in:
parent
00189554cd
commit
a4cce1bf61
153
src/CPFEM2.f90
153
src/CPFEM2.f90
|
@ -4,14 +4,32 @@
|
||||||
!> @brief needs a good name and description
|
!> @brief needs a good name and description
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module CPFEM2
|
module CPFEM2
|
||||||
|
use prec
|
||||||
|
use numerics
|
||||||
|
use debug
|
||||||
|
use config
|
||||||
|
use FEsolving
|
||||||
|
use math
|
||||||
|
use mesh
|
||||||
|
use material
|
||||||
|
use lattice
|
||||||
|
use IO
|
||||||
|
use HDF5
|
||||||
|
use DAMASK_interface
|
||||||
|
use results
|
||||||
|
use discretization
|
||||||
|
use HDF5_utilities
|
||||||
|
use homogenization
|
||||||
|
use constitutive
|
||||||
|
use crystallite
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
CPFEM_age, &
|
CPFEM_age, &
|
||||||
CPFEM_initAll, &
|
CPFEM_initAll, &
|
||||||
CPFEM_results
|
CPFEM_results
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -20,38 +38,6 @@ contains
|
||||||
!> @brief call (thread safe) all module initializations
|
!> @brief call (thread safe) all module initializations
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine CPFEM_initAll()
|
subroutine CPFEM_initAll()
|
||||||
use prec, only: &
|
|
||||||
prec_init
|
|
||||||
use numerics, only: &
|
|
||||||
numerics_init
|
|
||||||
use debug, only: &
|
|
||||||
debug_init
|
|
||||||
use config, only: &
|
|
||||||
config_init
|
|
||||||
use FEsolving, only: &
|
|
||||||
FE_init
|
|
||||||
use math, only: &
|
|
||||||
math_init
|
|
||||||
use mesh, only: &
|
|
||||||
mesh_init
|
|
||||||
use material, only: &
|
|
||||||
material_init
|
|
||||||
use HDF5_utilities, only: &
|
|
||||||
HDF5_utilities_init
|
|
||||||
use results, only: &
|
|
||||||
results_init
|
|
||||||
use lattice, only: &
|
|
||||||
lattice_init
|
|
||||||
use constitutive, only: &
|
|
||||||
constitutive_init
|
|
||||||
use crystallite, only: &
|
|
||||||
crystallite_init
|
|
||||||
use homogenization, only: &
|
|
||||||
homogenization_init, &
|
|
||||||
materialpoint_postResults
|
|
||||||
use IO, only: &
|
|
||||||
IO_init
|
|
||||||
use DAMASK_interface
|
|
||||||
#ifdef FEM
|
#ifdef FEM
|
||||||
use FEM_Zoo, only: &
|
use FEM_Zoo, only: &
|
||||||
FEM_Zoo_init
|
FEM_Zoo_init
|
||||||
|
@ -85,41 +71,6 @@ end subroutine CPFEM_initAll
|
||||||
!> @brief allocate the arrays defined in module CPFEM and initialize them
|
!> @brief allocate the arrays defined in module CPFEM and initialize them
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine CPFEM_init
|
subroutine CPFEM_init
|
||||||
use IO, only: &
|
|
||||||
IO_error
|
|
||||||
use numerics, only: &
|
|
||||||
worldrank
|
|
||||||
use debug, only: &
|
|
||||||
debug_level, &
|
|
||||||
debug_CPFEM, &
|
|
||||||
debug_levelBasic, &
|
|
||||||
debug_levelExtensive
|
|
||||||
use FEsolving, only: &
|
|
||||||
restartRead
|
|
||||||
use material, only: &
|
|
||||||
material_phase, &
|
|
||||||
homogState, &
|
|
||||||
phase_plasticity, &
|
|
||||||
plasticState
|
|
||||||
use config, only: &
|
|
||||||
material_Nhomogenization
|
|
||||||
use crystallite, only: &
|
|
||||||
crystallite_F0, &
|
|
||||||
crystallite_Fp0, &
|
|
||||||
crystallite_Lp0, &
|
|
||||||
crystallite_Fi0, &
|
|
||||||
crystallite_Li0, &
|
|
||||||
crystallite_S0
|
|
||||||
use hdf5
|
|
||||||
use HDF5_utilities, only: &
|
|
||||||
HDF5_openFile, &
|
|
||||||
HDF5_closeFile, &
|
|
||||||
HDF5_openGroup, &
|
|
||||||
HDF5_closeGroup, &
|
|
||||||
HDF5_read
|
|
||||||
use DAMASK_interface, only: &
|
|
||||||
getSolverJobName
|
|
||||||
|
|
||||||
|
|
||||||
integer :: ph,homog
|
integer :: ph,homog
|
||||||
character(len=1024) :: rankStr, PlasticItem, HomogItem
|
character(len=1024) :: rankStr, PlasticItem, HomogItem
|
||||||
|
@ -172,52 +123,7 @@ end subroutine CPFEM_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief forwards data after successful increment
|
!> @brief forwards data after successful increment
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine CPFEM_age()
|
subroutine CPFEM_age
|
||||||
use prec, only: &
|
|
||||||
pReal
|
|
||||||
use numerics, only: &
|
|
||||||
worldrank
|
|
||||||
use debug, only: &
|
|
||||||
debug_level, &
|
|
||||||
debug_CPFEM, &
|
|
||||||
debug_levelBasic, &
|
|
||||||
debug_levelExtensive, &
|
|
||||||
debug_levelSelective
|
|
||||||
use FEsolving, only: &
|
|
||||||
restartWrite
|
|
||||||
use material, only: &
|
|
||||||
plasticState, &
|
|
||||||
sourceState, &
|
|
||||||
homogState, &
|
|
||||||
thermalState, &
|
|
||||||
damageState, &
|
|
||||||
material_phase, &
|
|
||||||
phase_plasticity, &
|
|
||||||
phase_Nsources
|
|
||||||
use config, only: &
|
|
||||||
material_Nhomogenization
|
|
||||||
use crystallite, only: &
|
|
||||||
crystallite_partionedF,&
|
|
||||||
crystallite_F0, &
|
|
||||||
crystallite_Fp0, &
|
|
||||||
crystallite_Fp, &
|
|
||||||
crystallite_Fi0, &
|
|
||||||
crystallite_Fi, &
|
|
||||||
crystallite_Lp0, &
|
|
||||||
crystallite_Lp, &
|
|
||||||
crystallite_Li0, &
|
|
||||||
crystallite_Li, &
|
|
||||||
crystallite_S0, &
|
|
||||||
crystallite_S
|
|
||||||
use HDF5_utilities, only: &
|
|
||||||
HDF5_openFile, &
|
|
||||||
HDF5_closeFile, &
|
|
||||||
HDF5_addGroup, &
|
|
||||||
HDF5_closeGroup, &
|
|
||||||
HDF5_write
|
|
||||||
use hdf5
|
|
||||||
use DAMASK_interface, only: &
|
|
||||||
getSolverJobName
|
|
||||||
|
|
||||||
integer :: i, ph, homog, mySource
|
integer :: i, ph, homog, mySource
|
||||||
character(len=32) :: rankStr, PlasticItem, HomogItem
|
character(len=32) :: rankStr, PlasticItem, HomogItem
|
||||||
|
@ -289,14 +195,6 @@ end subroutine CPFEM_age
|
||||||
!> @brief triggers writing of the results
|
!> @brief triggers writing of the results
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine CPFEM_results(inc,time)
|
subroutine CPFEM_results(inc,time)
|
||||||
use results
|
|
||||||
use HDF5_utilities
|
|
||||||
use homogenization, only: &
|
|
||||||
homogenization_results
|
|
||||||
use constitutive, only: &
|
|
||||||
constitutive_results
|
|
||||||
use crystallite, only: &
|
|
||||||
crystallite_results
|
|
||||||
|
|
||||||
integer, intent(in) :: inc
|
integer, intent(in) :: inc
|
||||||
real(pReal), intent(in) :: time
|
real(pReal), intent(in) :: time
|
||||||
|
@ -306,6 +204,7 @@ subroutine CPFEM_results(inc,time)
|
||||||
call constitutive_results
|
call constitutive_results
|
||||||
call crystallite_results
|
call crystallite_results
|
||||||
call homogenization_results
|
call homogenization_results
|
||||||
|
call discretization_results
|
||||||
call results_removeLink('current') ! ToDo: put this into closeJobFile
|
call results_removeLink('current') ! ToDo: put this into closeJobFile
|
||||||
call results_closeJobFile
|
call results_closeJobFile
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief spatial discretization
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
module discretization
|
||||||
|
|
||||||
|
use, intrinsic :: iso_c_binding
|
||||||
|
use prec
|
||||||
|
use results
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
private
|
||||||
|
|
||||||
|
integer, public, protected :: &
|
||||||
|
discretization_nElem, &
|
||||||
|
discretization_nIP
|
||||||
|
|
||||||
|
real(pReal), dimension(:,:), allocatable :: &
|
||||||
|
discretization_Centers_disp, &
|
||||||
|
discretization_Nodes_disp
|
||||||
|
|
||||||
|
public :: &
|
||||||
|
discretization_init, &
|
||||||
|
discretization_results
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
|
||||||
|
subroutine discretization_init(nElem,nIP,nNodes)
|
||||||
|
|
||||||
|
integer, intent(in) :: &
|
||||||
|
nElem, &
|
||||||
|
nIP, &
|
||||||
|
nNodes
|
||||||
|
|
||||||
|
write(6,'(/,a)') ' <<<+- discretization init -+>>>'
|
||||||
|
|
||||||
|
discretization_nElem = nElem
|
||||||
|
discretization_nIP = nIP
|
||||||
|
|
||||||
|
allocate(discretization_Centers_disp(3,nIP),source = 0.0_pReal)
|
||||||
|
allocate(discretization_Nodes_disp( 3,nNodes),source = 0.0_pReal)
|
||||||
|
|
||||||
|
end subroutine discretization_init
|
||||||
|
|
||||||
|
|
||||||
|
subroutine discretization_results
|
||||||
|
|
||||||
|
call results_writeDataset('current',discretization_Centers_disp,'U','disp','m')
|
||||||
|
call results_writeDataset('current',discretization_Nodes_disp,'u','disp','m')
|
||||||
|
|
||||||
|
end subroutine discretization_results
|
||||||
|
|
||||||
|
end module discretization
|
|
@ -6,14 +6,24 @@
|
||||||
!> @brief Sets up the mesh for the solvers MSC.Marc, Abaqus and the spectral solver
|
!> @brief Sets up the mesh for the solvers MSC.Marc, Abaqus and the spectral solver
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module mesh
|
module mesh
|
||||||
|
#include <petsc/finclude/petscsys.h>
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
use prec
|
use prec
|
||||||
use debug
|
use debug
|
||||||
|
use discretization
|
||||||
use geometry_plastic_nonlocal
|
use geometry_plastic_nonlocal
|
||||||
use mesh_base
|
use mesh_base
|
||||||
|
use DAMASK_interface
|
||||||
|
use PETScsys
|
||||||
|
use IO
|
||||||
|
use debug
|
||||||
|
use numerics
|
||||||
|
use FEsolving
|
||||||
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
|
|
||||||
integer(pInt), public, protected :: &
|
integer(pInt), public, protected :: &
|
||||||
mesh_Nnodes
|
mesh_Nnodes
|
||||||
|
|
||||||
|
@ -97,7 +107,6 @@ contains
|
||||||
|
|
||||||
subroutine tMesh_grid_init(self,nodes)
|
subroutine tMesh_grid_init(self,nodes)
|
||||||
|
|
||||||
implicit none
|
|
||||||
class(tMesh_grid) :: self
|
class(tMesh_grid) :: self
|
||||||
real(pReal), dimension(:,:), intent(in) :: nodes
|
real(pReal), dimension(:,:), intent(in) :: nodes
|
||||||
|
|
||||||
|
@ -111,25 +120,6 @@ end subroutine tMesh_grid_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine mesh_init(ip,el)
|
subroutine mesh_init(ip,el)
|
||||||
|
|
||||||
#include <petsc/finclude/petscsys.h>
|
|
||||||
use PETScsys
|
|
||||||
|
|
||||||
use DAMASK_interface
|
|
||||||
use IO, only: &
|
|
||||||
IO_error
|
|
||||||
use debug, only: &
|
|
||||||
debug_e, &
|
|
||||||
debug_i, &
|
|
||||||
debug_level, &
|
|
||||||
debug_mesh, &
|
|
||||||
debug_levelBasic
|
|
||||||
use numerics, only: &
|
|
||||||
numerics_unitlength
|
|
||||||
use FEsolving, only: &
|
|
||||||
FEsolving_execElem, &
|
|
||||||
FEsolving_execIP
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
include 'fftw3-mpi.f03'
|
include 'fftw3-mpi.f03'
|
||||||
integer(C_INTPTR_T) :: devNull, local_K, local_K_offset
|
integer(C_INTPTR_T) :: devNull, local_K, local_K_offset
|
||||||
integer :: ierr, worldsize, j
|
integer :: ierr, worldsize, j
|
||||||
|
@ -207,6 +197,7 @@ subroutine mesh_init(ip,el)
|
||||||
theMesh%homogenizationAt = mesh_element(3,:)
|
theMesh%homogenizationAt = mesh_element(3,:)
|
||||||
theMesh%microstructureAt = mesh_element(4,:)
|
theMesh%microstructureAt = mesh_element(4,:)
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!
|
!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
call discretization_init(product(grid),product(grid),mesh_Nnodes)
|
||||||
|
|
||||||
end subroutine mesh_init
|
end subroutine mesh_init
|
||||||
|
|
||||||
|
@ -217,17 +208,7 @@ end subroutine mesh_init
|
||||||
! supposed to be called only once!
|
! supposed to be called only once!
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine mesh_spectral_read_grid()
|
subroutine mesh_spectral_read_grid()
|
||||||
use IO, only: &
|
|
||||||
IO_stringPos, &
|
|
||||||
IO_lc, &
|
|
||||||
IO_stringValue, &
|
|
||||||
IO_intValue, &
|
|
||||||
IO_floatValue, &
|
|
||||||
IO_error
|
|
||||||
use DAMASK_interface, only: &
|
|
||||||
geometryFile
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
character(len=:), allocatable :: rawData
|
character(len=:), allocatable :: rawData
|
||||||
character(len=65536) :: line
|
character(len=65536) :: line
|
||||||
integer(pInt), allocatable, dimension(:) :: chunkPos
|
integer(pInt), allocatable, dimension(:) :: chunkPos
|
||||||
|
|
Loading…
Reference in New Issue