Merge branch 'initial-temp' into 'development'
Initial temperature See merge request damask/DAMASK!539
This commit is contained in:
commit
b1effccafe
2
PRIVATE
2
PRIVATE
|
@ -1 +1 @@
|
||||||
Subproject commit 17250a3a29f07af3c4d4e4083213d46efd534268
|
Subproject commit 9c1f83babb7894bfaa16255d6c15a4a438c7f168
|
|
@ -107,8 +107,6 @@ program DAMASK_grid
|
||||||
load_steps, &
|
load_steps, &
|
||||||
load_step, &
|
load_step, &
|
||||||
solver, &
|
solver, &
|
||||||
initial_conditions, &
|
|
||||||
thermal, &
|
|
||||||
step_bc, &
|
step_bc, &
|
||||||
step_mech, &
|
step_mech, &
|
||||||
step_discretization
|
step_discretization
|
||||||
|
@ -303,9 +301,7 @@ program DAMASK_grid
|
||||||
select case (ID(field))
|
select case (ID(field))
|
||||||
|
|
||||||
case (FIELD_THERMAL_ID)
|
case (FIELD_THERMAL_ID)
|
||||||
initial_conditions => config_load%get('initial_conditions',defaultVal=emptyDict)
|
call grid_thermal_spectral_init()
|
||||||
thermal => initial_conditions%get('thermal',defaultVal=emptyDict)
|
|
||||||
call grid_thermal_spectral_init(thermal%get_asFloat('T'))
|
|
||||||
|
|
||||||
case (FIELD_DAMAGE_ID)
|
case (FIELD_DAMAGE_ID)
|
||||||
call grid_damage_spectral_init()
|
call grid_damage_spectral_init()
|
||||||
|
|
|
@ -37,13 +37,14 @@ module discretization_grid
|
||||||
size3offset !< (local) size offset in 3rd direction
|
size3offset !< (local) size offset in 3rd direction
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
discretization_grid_init
|
discretization_grid_init, &
|
||||||
|
discretization_grid_getInitialCondition
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief reads the geometry file to obtain information on discretization
|
!> @brief Read the geometry file to obtain information on discretization.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine discretization_grid_init(restart)
|
subroutine discretization_grid_init(restart)
|
||||||
|
|
||||||
|
@ -171,7 +172,7 @@ end subroutine discretization_grid_init
|
||||||
|
|
||||||
|
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
!> @brief Calculate undeformed position of IPs/cell centers (pretend to be an element)
|
!> @brief Calculate undeformed position of IPs/cell centers (pretend to be an element).
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
function IPcoordinates0(cells,geomSize,cells3Offset)
|
function IPcoordinates0(cells,geomSize,cells3Offset)
|
||||||
|
|
||||||
|
@ -196,7 +197,7 @@ end function IPcoordinates0
|
||||||
|
|
||||||
|
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
!> @brief Calculate position of undeformed nodes (pretend to be an element)
|
!> @brief Calculate position of undeformed nodes (pretend to be an element).
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
pure function nodes0(cells,geomSize,cells3Offset)
|
pure function nodes0(cells,geomSize,cells3Offset)
|
||||||
|
|
||||||
|
@ -220,7 +221,7 @@ end function nodes0
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Calculate IP interface areas
|
!> @brief Calculate IP interface areas.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure function cellSurfaceArea(geomSize,cells)
|
pure function cellSurfaceArea(geomSize,cells)
|
||||||
|
|
||||||
|
@ -238,7 +239,7 @@ end function cellSurfaceArea
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Calculate IP interface areas normals
|
!> @brief Calculate IP interface areas normals.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure function cellSurfaceNormal(nElems)
|
pure function cellSurfaceNormal(nElems)
|
||||||
|
|
||||||
|
@ -257,7 +258,7 @@ end function cellSurfaceNormal
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Build IP neighborhood relations
|
!> @brief Build IP neighborhood relations.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure function IPneighborhood(cells)
|
pure function IPneighborhood(cells)
|
||||||
|
|
||||||
|
@ -313,4 +314,40 @@ pure function IPneighborhood(cells)
|
||||||
end function IPneighborhood
|
end function IPneighborhood
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief Read initial condition from VTI file.
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
function discretization_grid_getInitialCondition(label) result(ic)
|
||||||
|
|
||||||
|
character(len=*), intent(in) :: label
|
||||||
|
real(pReal), dimension(cells(1),cells(2),cells3) :: ic
|
||||||
|
|
||||||
|
real(pReal), dimension(:), allocatable :: ic_global, ic_local
|
||||||
|
integer(MPI_INTEGER_KIND) :: err_MPI
|
||||||
|
|
||||||
|
integer, dimension(worldsize) :: &
|
||||||
|
displs, sendcounts
|
||||||
|
|
||||||
|
if (worldrank == 0) then
|
||||||
|
ic_global = VTI_readDataset_real(IO_read(interface_geomFile),label)
|
||||||
|
else
|
||||||
|
allocate(ic_global(0)) ! needed for IntelMPI
|
||||||
|
endif
|
||||||
|
|
||||||
|
call MPI_Gather(product(cells(1:2))*cells3Offset, 1_MPI_INTEGER_KIND,MPI_INTEGER,displs,&
|
||||||
|
1_MPI_INTEGER_KIND,MPI_INTEGER,0_MPI_INTEGER_KIND,MPI_COMM_WORLD,err_MPI)
|
||||||
|
if (err_MPI /= 0_MPI_INTEGER_KIND) error stop 'MPI error'
|
||||||
|
call MPI_Gather(product(cells(1:2))*cells3, 1_MPI_INTEGER_KIND,MPI_INTEGER,sendcounts,&
|
||||||
|
1_MPI_INTEGER_KIND,MPI_INTEGER,0_MPI_INTEGER_KIND,MPI_COMM_WORLD,err_MPI)
|
||||||
|
if (err_MPI /= 0_MPI_INTEGER_KIND) error stop 'MPI error'
|
||||||
|
|
||||||
|
allocate(ic_local(product(cells(1:2))*cells3))
|
||||||
|
call MPI_Scatterv(ic_global,sendcounts,displs,MPI_DOUBLE,ic_local,size(ic_local),&
|
||||||
|
MPI_DOUBLE,0_MPI_INTEGER_KIND,MPI_COMM_WORLD,err_MPI)
|
||||||
|
if (err_MPI /= 0_MPI_INTEGER_KIND) error stop 'MPI error'
|
||||||
|
|
||||||
|
ic = reshape(ic_local,[cells(1),cells(2),cells3])
|
||||||
|
|
||||||
|
end function discretization_grid_getInitialCondition
|
||||||
|
|
||||||
end module discretization_grid
|
end module discretization_grid
|
||||||
|
|
|
@ -65,9 +65,7 @@ contains
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief allocates all neccessary fields and fills them with data
|
!> @brief allocates all neccessary fields and fills them with data
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine grid_thermal_spectral_init(T_0)
|
subroutine grid_thermal_spectral_init()
|
||||||
|
|
||||||
real(pReal), intent(in) :: T_0
|
|
||||||
|
|
||||||
PetscInt, dimension(0:worldsize-1) :: localK
|
PetscInt, dimension(0:worldsize-1) :: localK
|
||||||
integer :: i, j, k, ce
|
integer :: i, j, k, ce
|
||||||
|
@ -105,9 +103,9 @@ subroutine grid_thermal_spectral_init(T_0)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! init fields
|
! init fields
|
||||||
allocate(T_current(cells(1),cells(2),cells3), source=T_0)
|
T_current = discretization_grid_getInitialCondition('T')
|
||||||
allocate(T_lastInc(cells(1),cells(2),cells3), source=T_0)
|
T_lastInc = T_current
|
||||||
allocate(T_stagInc(cells(1),cells(2),cells3), source=T_0)
|
T_stagInc = T_current
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! initialize solver specific parts of PETSc
|
! initialize solver specific parts of PETSc
|
||||||
|
|
Loading…
Reference in New Issue