removed a bunch of unneded functions
This commit is contained in:
parent
14394e7e13
commit
21cfe09412
332
code/mesh.f90
332
code/mesh.f90
|
@ -640,7 +640,7 @@ subroutine mesh_init(ip,el)
|
||||||
if (myDebug) write(6,'(a)') ' Built shared elements'; flush(6)
|
if (myDebug) write(6,'(a)') ' Built shared elements'; flush(6)
|
||||||
call mesh_build_ipNeighborhood
|
call mesh_build_ipNeighborhood
|
||||||
#else
|
#else
|
||||||
call mesh_spectral_build_ipNeighborhood(FILEUNIT)
|
call mesh_spectral_build_ipNeighborhood
|
||||||
#endif
|
#endif
|
||||||
if (myDebug) write(6,'(a)') ' Built IP neighborhood'; flush(6)
|
if (myDebug) write(6,'(a)') ' Built IP neighborhood'; flush(6)
|
||||||
|
|
||||||
|
@ -1388,11 +1388,9 @@ end subroutine mesh_spectral_build_elements
|
||||||
!> @brief build neighborhood relations for spectral
|
!> @brief build neighborhood relations for spectral
|
||||||
!> @details assign globals: mesh_ipNeighborhood
|
!> @details assign globals: mesh_ipNeighborhood
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine mesh_spectral_build_ipNeighborhood(fileUnit)
|
subroutine mesh_spectral_build_ipNeighborhood
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: &
|
|
||||||
fileUnit
|
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
x,y,z, &
|
x,y,z, &
|
||||||
e
|
e
|
||||||
|
@ -1529,332 +1527,8 @@ function mesh_nodesAroundCentres(gDim,Favg,centres) result(nodes)
|
||||||
nodes = nodes/8.0_pReal
|
nodes = nodes/8.0_pReal
|
||||||
|
|
||||||
end function mesh_nodesAroundCentres
|
end function mesh_nodesAroundCentres
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief calculate coordinates in current configuration for given defgrad
|
|
||||||
! using integration in Fourier space
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
function mesh_deformedCoordsFFT(gDim,F,FavgIn,scalingIn) result(coords)
|
|
||||||
use IO, only: &
|
|
||||||
IO_error
|
|
||||||
use numerics, only: &
|
|
||||||
fftw_timelimit, &
|
|
||||||
fftw_planner_flag
|
|
||||||
use debug, only: &
|
|
||||||
debug_mesh, &
|
|
||||||
debug_level, &
|
|
||||||
debug_levelBasic
|
|
||||||
use math, only: &
|
|
||||||
PI, &
|
|
||||||
math_mul33x3
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), intent(in), dimension(:,:,:,:,:) :: F
|
|
||||||
real(pReal), dimension(3,size(F,3),size(F,4),size(F,5)) :: coords
|
|
||||||
real(pReal), intent(in), dimension(3) :: gDim
|
|
||||||
real(pReal), intent(in), dimension(3,3), optional :: FavgIn
|
|
||||||
real(pReal), intent(in), dimension(3), optional :: scalingIn
|
|
||||||
|
|
||||||
! allocatable arrays for fftw c routines
|
|
||||||
type(C_PTR) :: planForth, planBack
|
|
||||||
type(C_PTR) :: coords_fftw, defgrad_fftw
|
|
||||||
real(pReal), dimension(:,:,:,:,:), pointer :: F_real
|
|
||||||
complex(pReal), dimension(:,:,:,:,:), pointer :: F_fourier
|
|
||||||
real(pReal), dimension(:,:,:,:), pointer :: coords_real
|
|
||||||
complex(pReal), dimension(:,:,:,:), pointer :: coords_fourier
|
|
||||||
! other variables
|
|
||||||
integer(pInt) :: i, j, k, m, res1Red
|
|
||||||
integer(pInt), dimension(3) :: k_s, iRes
|
|
||||||
real(pReal), dimension(3) :: scaling, step, offset_coords, integrator
|
|
||||||
real(pReal), dimension(3,3) :: Favg
|
|
||||||
integer(pInt), dimension(2:3,2) :: Nyquist ! highest frequencies to be removed (1 if even, 2 if odd)
|
|
||||||
|
|
||||||
if (present(scalingIn)) then
|
|
||||||
where (scalingIn < 0.0_pReal) ! invalid values. in case of f2py -1 if not present
|
|
||||||
scaling = [1.0_pReal,1.0_pReal,1.0_pReal]
|
|
||||||
elsewhere
|
|
||||||
scaling = scalingIn
|
|
||||||
end where
|
|
||||||
else
|
|
||||||
scaling = 1.0_pReal
|
|
||||||
endif
|
|
||||||
|
|
||||||
iRes = [size(F,3),size(F,4),size(F,5)]
|
|
||||||
integrator = gDim / 2.0_pReal / PI ! see notes where it is used
|
|
||||||
res1Red = iRes(1)/2_pInt + 1_pInt ! size of complex array in first dimension (c2r, r2c)
|
|
||||||
step = gDim/real(iRes, pReal)
|
|
||||||
Nyquist(2,1:2) = [iRes(2)/2_pInt + 1_pInt, iRes(2)/2_pInt + 1_pInt + mod(iRes(2),2_pInt)]
|
|
||||||
Nyquist(3,1:2) = [iRes(3)/2_pInt + 1_pInt, iRes(3)/2_pInt + 1_pInt + mod(iRes(3),2_pInt)]
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! report
|
|
||||||
if (iand(debug_level(debug_mesh),debug_levelBasic) /= 0_pInt) then
|
|
||||||
write(6,'(a)') ' Restore geometry using FFT-based integration'
|
|
||||||
write(6,'(a,3(i12 ))') ' grid a b c: ', iRes
|
|
||||||
write(6,'(a,3(es12.5))') ' size x y z: ', gDim
|
|
||||||
endif
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! sanity check
|
|
||||||
if (pReal /= C_DOUBLE .or. pInt /= C_INT) &
|
|
||||||
call IO_error(0_pInt,ext_msg='Fortran to C in mesh_deformedCoordsFFT')
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! allocation and FFTW initialization
|
|
||||||
defgrad_fftw = fftw_alloc_complex(int(res1Red *iRes(2)*iRes(3)*9_pInt,C_SIZE_T)) ! C_SIZE_T is of type integer(8)
|
|
||||||
coords_fftw = fftw_alloc_complex(int(res1Red *iRes(2)*iRes(3)*3_pInt,C_SIZE_T)) ! C_SIZE_T is of type integer(8)
|
|
||||||
call c_f_pointer(defgrad_fftw, F_real, &
|
|
||||||
[iRes(1)+2_pInt-mod(iRes(1),2_pInt),iRes(2),iRes(3),3_pInt,3_pInt])
|
|
||||||
call c_f_pointer(defgrad_fftw, F_fourier, &
|
|
||||||
[res1Red, iRes(2),iRes(3),3_pInt,3_pInt])
|
|
||||||
call c_f_pointer(coords_fftw, coords_real, &
|
|
||||||
[iRes(1)+2_pInt-mod(iRes(1),2_pInt),iRes(2),iRes(3),3_pInt])
|
|
||||||
call c_f_pointer(coords_fftw, coords_fourier, &
|
|
||||||
[res1Red, iRes(2),iRes(3),3_pInt])
|
|
||||||
|
|
||||||
call fftw_set_timelimit(fftw_timelimit)
|
|
||||||
planForth = fftw_plan_many_dft_r2c(3_pInt,[iRes(3),iRes(2) ,iRes(1)],9_pInt,& ! dimensions , length in each dimension in reversed order
|
|
||||||
F_real,[iRes(3),iRes(2) ,iRes(1)+2_pInt-mod(iRes(1),2_pInt)],& ! input data , physical length in each dimension in reversed order
|
|
||||||
1_pInt, iRes(3)*iRes(2)*(iRes(1)+2_pInt-mod(iRes(1),2_pInt)),& ! striding , product of physical lenght in the 3 dimensions
|
|
||||||
F_fourier,[iRes(3),iRes(2) ,res1Red],&
|
|
||||||
1_pInt, iRes(3)*iRes(2)* res1Red,fftw_planner_flag)
|
|
||||||
|
|
||||||
planBack = fftw_plan_many_dft_c2r(3_pInt,[iRes(3),iRes(2) ,iRes(1)],3_pInt,&
|
|
||||||
coords_fourier,[iRes(3),iRes(2) ,res1Red],&
|
|
||||||
1_pInt, iRes(3)*iRes(2)* res1Red,&
|
|
||||||
coords_real,[iRes(3),iRes(2) ,iRes(1)+2_pInt-mod(iRes(1),2_pInt)],&
|
|
||||||
1_pInt, iRes(3)*iRes(2)*(iRes(1)+2_pInt-mod(iRes(1),2_pInt)),&
|
|
||||||
fftw_planner_flag)
|
|
||||||
F_real(1:iRes(1),1:iRes(2),1:iRes(3),1:3,1:3) = &
|
|
||||||
reshape(F,[iRes(1),iRes(2),iRes(3),3,3], order = [4,5,1,2,3]) ! F_real is overwritten during plan creatio, is larger (padding) and has different order
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! FFT
|
|
||||||
call fftw_execute_dft_r2c(planForth, F_real, F_fourier)
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! if no average F is given, compute it in Fourier space
|
|
||||||
if (present(FavgIn)) then
|
|
||||||
if (all(FavgIn < 0.0_pReal)) then
|
|
||||||
Favg = real(F_fourier(1,1,1,1:3,1:3),pReal)/real(product(iRes),pReal) !the f2py way to tell it is not present
|
|
||||||
else
|
|
||||||
Favg = FavgIn
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
Favg = real(F_fourier(1,1,1,1:3,1:3),pReal)/real(product(iRes),pReal)
|
|
||||||
endif
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! remove highest frequency in each direction, in third direction only if not 2D
|
|
||||||
|
|
||||||
if(iRes(1)/=1_pInt) & ! do not delete the whole slice in case of 2D calculation
|
|
||||||
F_fourier (res1Red, 1:iRes(2), 1:iRes(3), 1:3,1:3) &
|
|
||||||
= cmplx(0.0_pReal,0.0_pReal,pReal)
|
|
||||||
if(iRes(2)/=1_pInt) & ! do not delete the whole slice in case of 2D calculation
|
|
||||||
F_fourier (1:res1Red,Nyquist(2,1):Nyquist(2,2),1:iRes(3), 1:3,1:3) &
|
|
||||||
= cmplx(0.0_pReal,0.0_pReal,pReal)
|
|
||||||
if(iRes(3)/=1_pInt) & ! do not delete the whole slice in case of 2D calculation
|
|
||||||
F_fourier (1:res1Red,1:iRes(2), Nyquist(3,1):Nyquist(3,2),1:3,1:3) &
|
|
||||||
= cmplx(0.0_pReal,0.0_pReal,pReal)
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! integration in Fourier space
|
|
||||||
coords_fourier = cmplx(0.0_pReal,0.0_pReal,pReal)
|
|
||||||
do k = 1_pInt, iRes(3)
|
|
||||||
k_s(3) = k-1_pInt
|
|
||||||
if(k > iRes(3)/2_pInt+1_pInt) k_s(3) = k_s(3)-iRes(3)
|
|
||||||
do j = 1_pInt, iRes(2)
|
|
||||||
k_s(2) = j-1_pInt
|
|
||||||
if(j > iRes(2)/2_pInt+1_pInt) k_s(2) = k_s(2)-iRes(2)
|
|
||||||
do i = 1_pInt, res1Red
|
|
||||||
k_s(1) = i-1_pInt
|
|
||||||
do m = 1_pInt,3_pInt
|
|
||||||
coords_fourier(i,j,k,m) = sum(F_fourier(i,j,k,m,1:3)*&
|
|
||||||
cmplx(0.0_pReal,real(k_s,pReal)*integrator,pReal))
|
|
||||||
enddo
|
|
||||||
if (any(k_s /= 0_pInt)) coords_fourier(i,j,k,1:3) = &
|
|
||||||
coords_fourier(i,j,k,1:3) / cmplx(-sum(k_s*k_s),0.0_pReal,pReal)
|
|
||||||
enddo; enddo; enddo
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! iFFT and freeing memory
|
|
||||||
call fftw_execute_dft_c2r(planBack,coords_fourier,coords_real)
|
|
||||||
coords = reshape(coords_real(1:iRes(1),1:iRes(2),1:iRes(3),1:3), [3,iRes(1),iRes(2),iRes(3)], &
|
|
||||||
order = [2,3,4,1])/real(product(iRes),pReal) ! weight and change order
|
|
||||||
call fftw_destroy_plan(planForth)
|
|
||||||
call fftw_destroy_plan(planBack)
|
|
||||||
call fftw_free(defgrad_fftw)
|
|
||||||
call fftw_free(coords_fftw)
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! add average to scaled fluctuation and put (0,0,0) on (0,0,0)
|
|
||||||
offset_coords = math_mul33x3(F(1:3,1:3,1,1,1),step/2.0_pReal) - scaling*coords(1:3,1,1,1)
|
|
||||||
forall(k = 1_pInt:iRes(3), j = 1_pInt:iRes(2), i = 1_pInt:iRes(1)) &
|
|
||||||
coords(1:3,i,j,k) = scaling(1:3)*coords(1:3,i,j,k) &
|
|
||||||
+ offset_coords &
|
|
||||||
+ math_mul33x3(Favg,step*real([i,j,k]-1_pInt,pReal))
|
|
||||||
|
|
||||||
end function mesh_deformedCoordsFFT
|
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief calculates the mismatch between volume of reconstructed (compatible) cube and
|
|
||||||
! determinant of defgrad at the FP
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
function mesh_volumeMismatch(gDim,F,nodes) result(vMismatch)
|
|
||||||
use IO, only: &
|
|
||||||
IO_error
|
|
||||||
use debug, only: &
|
|
||||||
debug_mesh, &
|
|
||||||
debug_level, &
|
|
||||||
debug_levelBasic
|
|
||||||
use math, only: &
|
|
||||||
math_det33, &
|
|
||||||
math_volTetrahedron
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), intent(in), dimension(:,:,:,:,:) :: &
|
|
||||||
F
|
|
||||||
real(pReal), dimension(size(F,3),size(F,4),size(F,5)) :: &
|
|
||||||
vMismatch
|
|
||||||
real(pReal), intent(in), dimension(:,:,:,:) :: &
|
|
||||||
nodes
|
|
||||||
real(pReal), dimension(3) :: &
|
|
||||||
gDim
|
|
||||||
integer(pInt), dimension(3) :: &
|
|
||||||
iRes
|
|
||||||
real(pReal), dimension(3,8) :: coords
|
|
||||||
integer(pInt) :: i,j,k
|
|
||||||
real(pReal) :: volInitial
|
|
||||||
|
|
||||||
iRes = [size(F,3),size(F,4),size(F,5)]
|
|
||||||
volInitial = product(gDim)/real(product(iRes), pReal)
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! report and check
|
|
||||||
if (iand(debug_level(debug_mesh),debug_levelBasic) /= 0_pInt) then
|
|
||||||
write(6,'(a)') ' Calculating volume mismatch'
|
|
||||||
write(6,'(a,3(i12 ))') ' grid a b c: ', iRes
|
|
||||||
write(6,'(a,3(es12.5))') ' size x y z: ', gDim
|
|
||||||
endif
|
|
||||||
|
|
||||||
if (any([iRes/=size(nodes,2)-1_pInt,iRes/=size(nodes,3)-1_pInt,iRes/=size(nodes,4)-1_pInt]))&
|
|
||||||
call IO_error(0_pInt,ext_msg='Arrays F and nodes in mesh_volumeMismatch')
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! calculate actual volume and volume resulting from deformation gradient
|
|
||||||
do k = 1_pInt,iRes(3)
|
|
||||||
do j = 1_pInt,iRes(2)
|
|
||||||
do i = 1_pInt,iRes(1)
|
|
||||||
coords(1:3,1) = nodes(1:3,i, j, k )
|
|
||||||
coords(1:3,2) = nodes(1:3,i+1_pInt,j, k )
|
|
||||||
coords(1:3,3) = nodes(1:3,i+1_pInt,j+1_pInt,k )
|
|
||||||
coords(1:3,4) = nodes(1:3,i, j+1_pInt,k )
|
|
||||||
coords(1:3,5) = nodes(1:3,i, j, k+1_pInt)
|
|
||||||
coords(1:3,6) = nodes(1:3,i+1_pInt,j, k+1_pInt)
|
|
||||||
coords(1:3,7) = nodes(1:3,i+1_pInt,j+1_pInt,k+1_pInt)
|
|
||||||
coords(1:3,8) = nodes(1:3,i, j+1_pInt,k+1_pInt)
|
|
||||||
vMismatch(i,j,k) = &
|
|
||||||
abs(math_volTetrahedron(coords(1:3,7),coords(1:3,1),coords(1:3,8),coords(1:3,4))) &
|
|
||||||
+ abs(math_volTetrahedron(coords(1:3,7),coords(1:3,1),coords(1:3,8),coords(1:3,5))) &
|
|
||||||
+ abs(math_volTetrahedron(coords(1:3,7),coords(1:3,1),coords(1:3,3),coords(1:3,4))) &
|
|
||||||
+ abs(math_volTetrahedron(coords(1:3,7),coords(1:3,1),coords(1:3,3),coords(1:3,2))) &
|
|
||||||
+ abs(math_volTetrahedron(coords(1:3,7),coords(1:3,5),coords(1:3,2),coords(1:3,6))) &
|
|
||||||
+ abs(math_volTetrahedron(coords(1:3,7),coords(1:3,5),coords(1:3,2),coords(1:3,1)))
|
|
||||||
vMismatch(i,j,k) = vMismatch(i,j,k)/math_det33(F(1:3,1:3,i,j,k))
|
|
||||||
enddo; enddo; enddo
|
|
||||||
vMismatch = vMismatch/volInitial
|
|
||||||
|
|
||||||
end function mesh_volumeMismatch
|
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief Routine to calculate the mismatch between the vectors from the central point to
|
|
||||||
! the corners of reconstructed (combatible) volume element and the vectors calculated by deforming
|
|
||||||
! the initial volume element with the current deformation gradient
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
function mesh_shapeMismatch(gDim,F,nodes,centres) result(sMismatch)
|
|
||||||
use IO, only: &
|
|
||||||
IO_error
|
|
||||||
use debug, only: &
|
|
||||||
debug_mesh, &
|
|
||||||
debug_level, &
|
|
||||||
debug_levelBasic
|
|
||||||
use math, only: &
|
|
||||||
math_mul33x3
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), intent(in), dimension(:,:,:,:,:) :: &
|
|
||||||
F
|
|
||||||
real(pReal), dimension(size(F,3),size(F,4),size(F,5)) :: &
|
|
||||||
sMismatch
|
|
||||||
real(pReal), intent(in), dimension(:,:,:,:) :: &
|
|
||||||
nodes, &
|
|
||||||
centres
|
|
||||||
real(pReal), dimension(3) :: &
|
|
||||||
gDim, &
|
|
||||||
fRes
|
|
||||||
integer(pInt), dimension(3) :: &
|
|
||||||
iRes
|
|
||||||
real(pReal), dimension(3,8) :: coordsInitial
|
|
||||||
integer(pInt) i,j,k
|
|
||||||
|
|
||||||
iRes = [size(F,3),size(F,4),size(F,5)]
|
|
||||||
fRes = real(iRes,pReal)
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! report and check
|
|
||||||
if (iand(debug_level(debug_mesh),debug_levelBasic) /= 0_pInt) then
|
|
||||||
write(6,'(a)') ' Calculating shape mismatch'
|
|
||||||
write(6,'(a,3(i12 ))') ' grid a b c: ', iRes
|
|
||||||
write(6,'(a,3(es12.5))') ' size x y z: ', gDim
|
|
||||||
endif
|
|
||||||
|
|
||||||
if(any([iRes/=size(nodes,2)-1_pInt,iRes/=size(nodes,3)-1_pInt,iRes/=size(nodes,4)-1_pInt]) .or.&
|
|
||||||
any([iRes/=size(centres,2), iRes/=size(centres,3), iRes/=size(centres,4)]))&
|
|
||||||
call IO_error(0_pInt,ext_msg='Arrays F and nodes/centres in mesh_shapeMismatch')
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! initial positions
|
|
||||||
coordsInitial(1:3,1) = [-gDim(1)/fRes(1),-gDim(2)/fRes(2),-gDim(3)/fRes(3)]
|
|
||||||
coordsInitial(1:3,2) = [+gDim(1)/fRes(1),-gDim(2)/fRes(2),-gDim(3)/fRes(3)]
|
|
||||||
coordsInitial(1:3,3) = [+gDim(1)/fRes(1),+gDim(2)/fRes(2),-gDim(3)/fRes(3)]
|
|
||||||
coordsInitial(1:3,4) = [-gDim(1)/fRes(1),+gDim(2)/fRes(2),-gDim(3)/fRes(3)]
|
|
||||||
coordsInitial(1:3,5) = [-gDim(1)/fRes(1),-gDim(2)/fRes(2),+gDim(3)/fRes(3)]
|
|
||||||
coordsInitial(1:3,6) = [+gDim(1)/fRes(1),-gDim(2)/fRes(2),+gDim(3)/fRes(3)]
|
|
||||||
coordsInitial(1:3,7) = [+gDim(1)/fRes(1),+gDim(2)/fRes(2),+gDim(3)/fRes(3)]
|
|
||||||
coordsInitial(1:3,8) = [-gDim(1)/fRes(1),+gDim(2)/fRes(2),+gDim(3)/fRes(3)]
|
|
||||||
coordsInitial = coordsInitial/2.0_pReal
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! compare deformed original and deformed positions to actual positions
|
|
||||||
do k = 1_pInt,iRes(3)
|
|
||||||
do j = 1_pInt,iRes(2)
|
|
||||||
do i = 1_pInt,iRes(1)
|
|
||||||
sMismatch(i,j,k) = &
|
|
||||||
sqrt(sum((nodes(1:3,i, j, k ) - centres(1:3,i,j,k)&
|
|
||||||
- math_mul33x3(F(1:3,1:3,i,j,k), coordsInitial(1:3,1)))**2.0_pReal))&
|
|
||||||
+ sqrt(sum((nodes(1:3,i+1_pInt,j, k ) - centres(1:3,i,j,k)&
|
|
||||||
- math_mul33x3(F(1:3,1:3,i,j,k), coordsInitial(1:3,2)))**2.0_pReal))&
|
|
||||||
+ sqrt(sum((nodes(1:3,i+1_pInt,j+1_pInt,k ) - centres(1:3,i,j,k)&
|
|
||||||
- math_mul33x3(F(1:3,1:3,i,j,k), coordsInitial(1:3,3)))**2.0_pReal))&
|
|
||||||
+ sqrt(sum((nodes(1:3,i, j+1_pInt,k ) - centres(1:3,i,j,k)&
|
|
||||||
- math_mul33x3(F(1:3,1:3,i,j,k), coordsInitial(1:3,4)))**2.0_pReal))&
|
|
||||||
+ sqrt(sum((nodes(1:3,i, j, k+1_pInt) - centres(1:3,i,j,k)&
|
|
||||||
- math_mul33x3(F(1:3,1:3,i,j,k), coordsInitial(1:3,5)))**2.0_pReal))&
|
|
||||||
+ sqrt(sum((nodes(1:3,i+1_pInt,j, k+1_pInt) - centres(1:3,i,j,k)&
|
|
||||||
- math_mul33x3(F(1:3,1:3,i,j,k), coordsInitial(1:3,6)))**2.0_pReal))&
|
|
||||||
+ sqrt(sum((nodes(1:3,i+1_pInt,j+1_pInt,k+1_pInt) - centres(1:3,i,j,k)&
|
|
||||||
- math_mul33x3(F(1:3,1:3,i,j,k), coordsInitial(1:3,7)))**2.0_pReal))&
|
|
||||||
+ sqrt(sum((nodes(1:3,i, j+1_pInt,k+1_pInt) - centres(1:3,i,j,k)&
|
|
||||||
- math_mul33x3(F(1:3,1:3,i,j,k), coordsInitial(1:3,8)))**2.0_pReal))
|
|
||||||
enddo; enddo; enddo
|
|
||||||
|
|
||||||
end function mesh_shapeMismatch
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef Marc4DAMASK
|
#ifdef Marc4DAMASK
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Figures out table styles (Marc only) and stores to 'initialcondTableStyle' and
|
!> @brief Figures out table styles (Marc only) and stores to 'initialcondTableStyle' and
|
||||||
|
|
Loading…
Reference in New Issue