Merge branch 'implicit-none-external' into 'development'

implicit none cover external

See merge request damask/DAMASK!610
This commit is contained in:
Sharan Roongta 2022-07-08 11:43:19 +00:00
commit bb63048a0f
45 changed files with 152 additions and 66 deletions

View File

@ -18,7 +18,7 @@ module CLI
use parallelization use parallelization
use system_routines use system_routines
implicit none implicit none(type,external)
private private
integer, public, protected :: & integer, public, protected :: &
CLI_restartInc = 0 !< Increment at which calculation starts CLI_restartInc = 0 !< Increment at which calculation starts

View File

@ -18,7 +18,11 @@ module HDF5_utilities
use prec use prec
use parallelization use parallelization
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------

View File

@ -12,7 +12,7 @@ module IO
use prec use prec
implicit none implicit none(type,external)
private private
character(len=*), parameter, public :: & character(len=*), parameter, public :: &

View File

@ -8,7 +8,7 @@ module LAPACK_interface
pure subroutine dgeev(jobvl,jobvr,n,a,lda,wr,wi,vl,ldvl,vr,ldvr,work,lwork,info) pure subroutine dgeev(jobvl,jobvr,n,a,lda,wr,wi,vl,ldvl,vr,ldvr,work,lwork,info)
use prec use prec
implicit none implicit none(type,external)
character, intent(in) :: jobvl,jobvr character, intent(in) :: jobvl,jobvr
integer, intent(in) :: n,lda,ldvl,ldvr,lwork integer, intent(in) :: n,lda,ldvl,ldvr,lwork
@ -22,7 +22,7 @@ module LAPACK_interface
pure subroutine dgesv(n,nrhs,a,lda,ipiv,b,ldb,info) pure subroutine dgesv(n,nrhs,a,lda,ipiv,b,ldb,info)
use prec use prec
implicit none implicit none(type,external)
integer, intent(in) :: n,nrhs,lda,ldb integer, intent(in) :: n,nrhs,lda,ldb
real(pReal), intent(inout), dimension(lda,n) :: a real(pReal), intent(inout), dimension(lda,n) :: a
@ -33,7 +33,7 @@ module LAPACK_interface
pure subroutine dgetrf(m,n,a,lda,ipiv,info) pure subroutine dgetrf(m,n,a,lda,ipiv,info)
use prec use prec
implicit none implicit none(type,external)
integer, intent(in) :: m,n,lda integer, intent(in) :: m,n,lda
real(pReal), intent(inout), dimension(lda,n) :: a real(pReal), intent(inout), dimension(lda,n) :: a
@ -43,7 +43,7 @@ module LAPACK_interface
pure subroutine dgetri(n,a,lda,ipiv,work,lwork,info) pure subroutine dgetri(n,a,lda,ipiv,work,lwork,info)
use prec use prec
implicit none implicit none(type,external)
integer, intent(in) :: n,lda,lwork integer, intent(in) :: n,lda,lwork
real(pReal), intent(inout), dimension(lda,n) :: a real(pReal), intent(inout), dimension(lda,n) :: a
@ -54,7 +54,7 @@ module LAPACK_interface
pure subroutine dsyev(jobz,uplo,n,a,lda,w,work,lwork,info) pure subroutine dsyev(jobz,uplo,n,a,lda,w,work,lwork,info)
use prec use prec
implicit none implicit none(type,external)
character, intent(in) :: jobz,uplo character, intent(in) :: jobz,uplo
integer, intent(in) :: n,lda,lwork integer, intent(in) :: n,lda,lwork

View File

@ -25,7 +25,7 @@ module DAMASK_interface
use ifport, only: & use ifport, only: &
CHDIR CHDIR
implicit none implicit none(type,external)
private private
logical, protected, public :: symmetricSolver logical, protected, public :: symmetricSolver
@ -210,7 +210,7 @@ subroutine hypela2(d,g,e,de,s,t,dt,ngens,m,nn,kcus,matus,ndi,nshear,disp, &
use materialpoint_Marc use materialpoint_Marc
use OMP_LIB use OMP_LIB
implicit none implicit none(type,external)
integer(pI64), intent(in) :: & ! according to MSC.Marc 2012 Manual D integer(pI64), intent(in) :: & ! according to MSC.Marc 2012 Manual D
ngens, & !< size of stress-strain law ngens, & !< size of stress-strain law
nn, & !< integration point number nn, & !< integration point number
@ -382,7 +382,7 @@ subroutine flux(f,ts,n,time)
use homogenization use homogenization
use discretization_Marc use discretization_Marc
implicit none implicit none(type,external)
real(pReal), dimension(6), intent(in) :: & real(pReal), dimension(6), intent(in) :: &
ts ts
integer(pI64), dimension(10), intent(in) :: & integer(pI64), dimension(10), intent(in) :: &
@ -410,7 +410,7 @@ subroutine uedinc(inc,incsub)
use materialpoint_Marc use materialpoint_Marc
use discretization_Marc use discretization_Marc
implicit none implicit none(type,external)
integer(pI64), intent(in) :: inc, incsub integer(pI64), intent(in) :: inc, incsub
integer :: n, nqncomp, nqdatatype integer :: n, nqncomp, nqdatatype

View File

@ -17,7 +17,7 @@ module discretization_Marc
use geometry_plastic_nonlocal use geometry_plastic_nonlocal
use results use results
implicit none implicit none(type,external)
private private
real(pReal), public, protected :: & real(pReal), public, protected :: &

View File

@ -5,7 +5,7 @@
module element module element
use IO use IO
implicit none implicit none(type,external)
private private
!--------------------------------------------------------------------------------------------------- !---------------------------------------------------------------------------------------------------

View File

@ -23,7 +23,7 @@ module materialpoint_Marc
use discretization use discretization
use discretization_Marc use discretization_Marc
implicit none implicit none(type,external)
private private
real(pReal), dimension (:,:,:), allocatable, private :: & real(pReal), dimension (:,:,:), allocatable, private :: &

View File

@ -12,7 +12,7 @@ module YAML_parse
use system_routines use system_routines
#endif #endif
implicit none implicit none(type,external)
private private
public :: & public :: &
@ -24,7 +24,7 @@ module YAML_parse
subroutine to_flow_C(flow,length_flow,mixed) bind(C) subroutine to_flow_C(flow,length_flow,mixed) bind(C)
use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR, C_PTR use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR, C_PTR
implicit none implicit none(type,external)
type(C_PTR), intent(out) :: flow type(C_PTR), intent(out) :: flow
integer(C_INT), intent(out) :: length_flow integer(C_INT), intent(out) :: length_flow

View File

@ -11,7 +11,7 @@ module YAML_types
use IO use IO
use prec use prec
implicit none implicit none(type,external)
private private
type, abstract, public :: tNode type, abstract, public :: tNode

View File

@ -9,7 +9,7 @@ module config
use results use results
use parallelization use parallelization
implicit none implicit none(type,external)
private private
class(tNode), pointer, public :: & class(tNode), pointer, public :: &

View File

@ -5,7 +5,7 @@
module constants module constants
use prec use prec
implicit none implicit none(type,external)
public public
real(pReal), parameter :: & real(pReal), parameter :: &

View File

@ -7,7 +7,7 @@ module discretization
use prec use prec
use results use results
implicit none implicit none(type,external)
private private
integer, public, protected :: & integer, public, protected :: &

View File

@ -9,7 +9,7 @@ module geometry_plastic_nonlocal
use prec use prec
use results use results
implicit none implicit none(type,external)
public public
integer, protected :: & integer, protected :: &

View File

@ -30,7 +30,11 @@ program DAMASK_grid
use grid_thermal_spectral use grid_thermal_spectral
use results use results
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
type :: tLoadCase type :: tLoadCase
type(tRotation) :: rot !< rotation of BC type(tRotation) :: rot !< rotation of BC

View File

@ -5,7 +5,7 @@
module FFTW3 module FFTW3
use, intrinsic :: ISO_C_binding use, intrinsic :: ISO_C_binding
implicit none implicit none(type,external)
public public
include 'fftw3-mpi.f03' include 'fftw3-mpi.f03'

View File

@ -8,7 +8,7 @@ module VTI
use base64 use base64
use IO use IO
implicit none implicit none(type,external)
private private
public :: & public :: &

View File

@ -7,7 +7,7 @@ module base64
use prec use prec
use IO use IO
implicit none implicit none(type,external)
private private
character(len=*), parameter :: & character(len=*), parameter :: &

View File

@ -23,7 +23,11 @@ module discretization_grid
use discretization use discretization
use geometry_plastic_nonlocal use geometry_plastic_nonlocal
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
integer, dimension(3), public, protected :: & integer, dimension(3), public, protected :: &

View File

@ -22,7 +22,11 @@ module grid_damage_spectral
use YAML_types use YAML_types
use config use config
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
type :: tNumerics type :: tNumerics

View File

@ -27,7 +27,12 @@ module grid_mechanical_FEM
use discretization use discretization
use discretization_grid use discretization_grid
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
type(tSolutionParams) :: params type(tSolutionParams) :: params

View File

@ -26,7 +26,11 @@ module grid_mechanical_spectral_basic
use homogenization use homogenization
use discretization_grid use discretization_grid
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
type(tSolutionParams) :: params type(tSolutionParams) :: params

View File

@ -26,7 +26,11 @@ module grid_mechanical_spectral_polarisation
use homogenization use homogenization
use discretization_grid use discretization_grid
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
type(tSolutionParams) :: params type(tSolutionParams) :: params

View File

@ -25,7 +25,11 @@ module grid_thermal_spectral
use YAML_types use YAML_types
use config use config
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
type :: tNumerics type :: tNumerics

View File

@ -22,7 +22,12 @@ module spectral_utilities
use discretization use discretization
use homogenization use homogenization
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------

View File

@ -5,7 +5,7 @@
module zlib module zlib
use prec use prec
implicit none implicit none(type,external)
private private
public :: & public :: &
@ -15,7 +15,7 @@ module zlib
subroutine inflate_C(s_deflated,s_inflated,deflated,inflated) bind(C) subroutine inflate_C(s_deflated,s_inflated,deflated,inflated) bind(C)
use, intrinsic :: ISO_C_Binding, only: C_SIGNED_CHAR, C_INT64_T use, intrinsic :: ISO_C_Binding, only: C_SIGNED_CHAR, C_INT64_T
implicit none implicit none(type,external)
integer(C_INT64_T), intent(in) :: s_deflated,s_inflated integer(C_INT64_T), intent(in) :: s_deflated,s_inflated
integer(C_SIGNED_CHAR), dimension(s_deflated), intent(in) :: deflated integer(C_SIGNED_CHAR), dimension(s_deflated), intent(in) :: deflated

View File

@ -18,7 +18,7 @@ module homogenization
use results use results
use lattice use lattice
implicit none implicit none(type,external)
private private
type :: tState type :: tState

View File

@ -13,7 +13,7 @@ module lattice
use math use math
use rotations use rotations
implicit none implicit none(type,external)
private private
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------

View File

@ -14,7 +14,7 @@ module material
use discretization use discretization
use YAML_types use YAML_types
implicit none implicit none(type,external)
private private
type, public :: tRotationContainer type, public :: tRotationContainer

View File

@ -31,7 +31,7 @@ module materialpoint
use discretization_grid use discretization_grid
#endif #endif
implicit none implicit none(type,external)
public public
contains contains

View File

@ -12,7 +12,7 @@ module math
use YAML_types use YAML_types
use LAPACK_interface use LAPACK_interface
implicit none implicit none(type,external)
public public
#if __INTEL_COMPILER >= 1900 #if __INTEL_COMPILER >= 1900
! do not make use of associated entities available to other modules ! do not make use of associated entities available to other modules

View File

@ -20,7 +20,7 @@ program DAMASK_mesh
use FEM_Utilities use FEM_Utilities
use mesh_mechanical_FEM use mesh_mechanical_FEM
implicit none implicit none(type,external)
type :: tLoadCase type :: tLoadCase
real(pReal) :: time = 0.0_pReal !< length of increment real(pReal) :: time = 0.0_pReal !< length of increment

View File

@ -5,7 +5,7 @@
module FEM_quadrature module FEM_quadrature
use prec use prec
implicit none implicit none(type,external)
private private
integer, parameter :: & integer, parameter :: &

View File

@ -21,7 +21,11 @@ module FEM_utilities
use homogenization use homogenization
use FEM_quadrature use FEM_quadrature
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
logical, public :: cutBack = .false. !< cut back of BVP solver in case convergence is not achieved or a material point is terminally ill logical, public :: cutBack = .false. !< cut back of BVP solver in case convergence is not achieved or a material point is terminally ill
@ -65,6 +69,11 @@ module FEM_utilities
type(tComponentBC), allocatable, dimension(:) :: componentBC type(tComponentBC), allocatable, dimension(:) :: componentBC
end type tFieldBC end type tFieldBC
external :: & ! ToDo: write interfaces
PetscSectionGetFieldComponents, &
PetscSectionGetFieldDof, &
PetscSectionGetFieldOffset
public :: & public :: &
FEM_utilities_init, & FEM_utilities_init, &
utilities_constitutiveResponse, & utilities_constitutiveResponse, &

View File

@ -25,7 +25,11 @@ module discretization_mesh
use YAML_types use YAML_types
use prec use prec
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
integer, public, protected :: & integer, public, protected :: &
@ -52,6 +56,11 @@ module discretization_mesh
real(pReal), dimension(:,:,:), allocatable :: & real(pReal), dimension(:,:,:), allocatable :: &
mesh_ipCoordinates !< IP x,y,z coordinates (after deformation!) mesh_ipCoordinates !< IP x,y,z coordinates (after deformation!)
external :: &
#ifdef PETSC_USE_64BIT_INDICES
DMDestroy, &
#endif
DMView ! ToDo: write interface
public :: & public :: &
discretization_mesh_init, & discretization_mesh_init, &
mesh_FEM_build_ipVolumes, & mesh_FEM_build_ipVolumes, &
@ -242,10 +251,10 @@ subroutine mesh_FEM_build_ipCoordinates(dimPlex,qPoints)
call DMPlexComputeCellGeometryAffineFEM(geomMesh,cell,pV0,pCellJ,pInvcellJ,detJ,err_PETSc) call DMPlexComputeCellGeometryAffineFEM(geomMesh,cell,pV0,pCellJ,pInvcellJ,detJ,err_PETSc)
CHKERRQ(err_PETSc) CHKERRQ(err_PETSc)
qOffset = 0 qOffset = 0
do qPt = 1, mesh_maxNips do qPt = 1_pPETSCINT, mesh_maxNips
do dirI = 1, dimPlex do dirI = 1_pPETSCINT, dimPlex
mesh_ipCoordinates(dirI,qPt,cell+1) = pV0(dirI) mesh_ipCoordinates(dirI,qPt,cell+1) = pV0(dirI)
do dirJ = 1, dimPlex do dirJ = 1_pPETSCINT, dimPlex
mesh_ipCoordinates(dirI,qPt,cell+1) = mesh_ipCoordinates(dirI,qPt,cell+1) + & mesh_ipCoordinates(dirI,qPt,cell+1) = mesh_ipCoordinates(dirI,qPt,cell+1) + &
pCellJ((dirI-1)*dimPlex+dirJ)*(qPoints(qOffset+dirJ) + 1.0_pReal) pCellJ((dirI-1)*dimPlex+dirJ)*(qPoints(qOffset+dirJ) + 1.0_pReal)
enddo enddo

View File

@ -26,7 +26,11 @@ module mesh_mechanical_FEM
use homogenization use homogenization
use math use math
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
@ -67,6 +71,18 @@ module mesh_mechanical_FEM
logical :: ForwardData logical :: ForwardData
real(pReal), parameter :: eps = 1.0e-18_pReal real(pReal), parameter :: eps = 1.0e-18_pReal
external :: & ! ToDo: write interfaces
#ifdef PETSC_USE_64BIT_INDICES
ISDestroy, &
#endif
PetscSectionGetNumFields, &
PetscFESetQuadrature, &
PetscFEGetDimension, &
PetscFEDestroy, &
PetscSectionGetDof, &
PetscFEGetDualSpace, &
PetscDualSpaceGetFunctional
public :: & public :: &
FEM_mechanical_init, & FEM_mechanical_init, &
FEM_mechanical_solution, & FEM_mechanical_solution, &
@ -359,7 +375,7 @@ subroutine FEM_mechanical_formResidual(dm_local,xx_local,f_local,dummy,err_PETSc
CHKERRQ(err_PETSc) CHKERRQ(err_PETSc)
call VecWAXPY(x_local,1.0_pReal,xx_local,solution_local,err_PETSc) call VecWAXPY(x_local,1.0_pReal,xx_local,solution_local,err_PETSc)
CHKERRQ(err_PETSc) CHKERRQ(err_PETSc)
do field = 1, dimPlex; do face = 1, mesh_Nboundaries do field = 1_pPETSCINT, dimPlex; do face = 1_pPETSCINT, mesh_Nboundaries
if (params%fieldBC%componentBC(field)%Mask(face)) then if (params%fieldBC%componentBC(field)%Mask(face)) then
call DMGetStratumSize(dm_local,'Face Sets',mesh_boundaries(face),bcSize,err_PETSc) call DMGetStratumSize(dm_local,'Face Sets',mesh_boundaries(face),bcSize,err_PETSc)
if (bcSize > 0) then if (bcSize > 0) then
@ -374,7 +390,7 @@ subroutine FEM_mechanical_formResidual(dm_local,xx_local,f_local,dummy,err_PETSc
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! evaluate field derivatives ! evaluate field derivatives
do cell = cellStart, cellEnd-1 !< loop over all elements do cell = cellStart, cellEnd-1_pPETSCINT !< loop over all elements
call PetscSectionGetNumFields(section,numFields,err_PETSc) call PetscSectionGetNumFields(section,numFields,err_PETSc)
CHKERRQ(err_PETSc) CHKERRQ(err_PETSc)
@ -383,11 +399,11 @@ subroutine FEM_mechanical_formResidual(dm_local,xx_local,f_local,dummy,err_PETSc
call DMPlexComputeCellGeometryAffineFEM(dm_local,cell,pV0,pCellJ,pInvcellJ,detJ,err_PETSc) call DMPlexComputeCellGeometryAffineFEM(dm_local,cell,pV0,pCellJ,pInvcellJ,detJ,err_PETSc)
CHKERRQ(err_PETSc) CHKERRQ(err_PETSc)
IcellJMat = reshape(pInvcellJ,shape=[dimPlex,dimPlex]) IcellJMat = reshape(pInvcellJ,shape=[dimPlex,dimPlex])
do qPt = 0, nQuadrature-1 do qPt = 0_pPETSCINT, nQuadrature-1_pPETSCINT
m = cell*nQuadrature + qPt+1 m = cell*nQuadrature + qPt+1_pPETSCINT
BMat = 0.0_pReal BMat = 0.0_pReal
do basis = 0, nBasis-1 do basis = 0_pPETSCINT, nBasis-1_pPETSCINT
do comp = 0, dimPlex-1 do comp = 0_pPETSCINT, dimPlex-1_pPETSCINT
cidx = basis*dimPlex+comp cidx = basis*dimPlex+comp
i = ((qPt*nBasis + basis)*dimPlex + comp)*dimPlex+comp i = ((qPt*nBasis + basis)*dimPlex + comp)*dimPlex+comp
BMat(comp*dimPlex+1_pPETSCINT:(comp+1_pPETSCINT)*dimPlex,basis*dimPlex+comp+1_pPETSCINT) = & BMat(comp*dimPlex+1_pPETSCINT:(comp+1_pPETSCINT)*dimPlex,basis*dimPlex+comp+1_pPETSCINT) = &
@ -425,11 +441,11 @@ subroutine FEM_mechanical_formResidual(dm_local,xx_local,f_local,dummy,err_PETSc
CHKERRQ(err_PETSc) CHKERRQ(err_PETSc)
IcellJMat = reshape(pInvcellJ,shape=[dimPlex,dimPlex]) IcellJMat = reshape(pInvcellJ,shape=[dimPlex,dimPlex])
f_scal = 0.0_pReal f_scal = 0.0_pReal
do qPt = 0, nQuadrature-1 do qPt = 0_pPETSCINT, nQuadrature-1_pPETSCINT
m = cell*nQuadrature + qPt+1 m = cell*nQuadrature + qPt+1_pPETSCINT
BMat = 0.0_pReal BMat = 0.0_pReal
do basis = 0, nBasis-1 do basis = 0_pPETSCINT, nBasis-1_pPETSCINT
do comp = 0, dimPlex-1 do comp = 0_pPETSCINT, dimPlex-1_pPETSCINT
cidx = basis*dimPlex+comp cidx = basis*dimPlex+comp
i = ((qPt*nBasis + basis)*dimPlex + comp)*dimPlex+comp i = ((qPt*nBasis + basis)*dimPlex + comp)*dimPlex+comp
BMat(comp*dimPlex+1_pPETSCINT:(comp+1_pPETSCINT)*dimPlex,basis*dimPlex+comp+1_pPETSCINT) = & BMat(comp*dimPlex+1_pPETSCINT:(comp+1_pPETSCINT)*dimPlex,basis*dimPlex+comp+1_pPETSCINT) = &
@ -531,11 +547,11 @@ subroutine FEM_mechanical_formJacobian(dm_local,xx_local,Jac_pre,Jac,dummy,err_P
MatB = 0.0_pReal MatB = 0.0_pReal
FAvg = 0.0_pReal FAvg = 0.0_pReal
BMatAvg = 0.0_pReal BMatAvg = 0.0_pReal
do qPt = 0, nQuadrature-1 do qPt = 0_pPETSCINT, nQuadrature-1_pPETSCINT
m = cell*nQuadrature + qPt + 1 m = cell*nQuadrature + qPt + 1_pPETSCINT
BMat = 0.0_pReal BMat = 0.0_pReal
do basis = 0, nBasis-1 do basis = 0_pPETSCINT, nBasis-1_pPETSCINT
do comp = 0, dimPlex-1 do comp = 0_pPETSCINT, dimPlex-1_pPETSCINT
cidx = basis*dimPlex+comp cidx = basis*dimPlex+comp
i = ((qPt*nBasis + basis)*dimPlex + comp)*dimPlex+comp i = ((qPt*nBasis + basis)*dimPlex + comp)*dimPlex+comp
BMat(comp*dimPlex+1_pPETSCINT:(comp+1_pPETSCINT)*dimPlex,basis*dimPlex+comp+1_pPETSCINT) = & BMat(comp*dimPlex+1_pPETSCINT:(comp+1_pPETSCINT)*dimPlex,basis*dimPlex+comp+1_pPETSCINT) = &
@ -741,7 +757,7 @@ subroutine FEM_mechanical_updateCoords()
call PetscDSGetTabulation(mechQuad,0_pPETSCINT,basisField,basisFieldDer,err_PETSc) call PetscDSGetTabulation(mechQuad,0_pPETSCINT,basisField,basisFieldDer,err_PETSc)
CHKERRQ(err_PETSc) CHKERRQ(err_PETSc)
allocate(ipCoords(3,nQuadrature,mesh_NcpElems),source=0.0_pReal) allocate(ipCoords(3,nQuadrature,mesh_NcpElems),source=0.0_pReal)
do c=cellStart,cellEnd-1 do c=cellStart,cellEnd-1_pPETSCINT
qOffset=0 qOffset=0
call DMPlexVecGetClosure(dm_local,section,x_local,c,x_scal,err_PETSc) !< get nodal coordinates of each element call DMPlexVecGetClosure(dm_local,section,x_local,c,x_scal,err_PETSc) !< get nodal coordinates of each element
CHKERRQ(err_PETSc) CHKERRQ(err_PETSc)

View File

@ -18,7 +18,11 @@ module parallelization
use prec use prec
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
#ifndef PETSC #ifndef PETSC

View File

@ -19,7 +19,7 @@ module phase
use HDF5 use HDF5
use HDF5_utilities use HDF5_utilities
implicit none implicit none(type,external)
private private
type :: tState type :: tState

View File

@ -8,7 +8,7 @@ module polynomials
use YAML_parse use YAML_parse
use YAML_types use YAML_types
implicit none implicit none(type,external)
private private
type, public :: tPolynomial type, public :: tPolynomial

View File

@ -15,7 +15,7 @@ module prec
use PETScSys use PETScSys
#endif #endif
implicit none implicit none(type,external)
public public
! https://stevelionel.com/drfortran/2017/03/27/doctor-fortran-in-it-takes-all-kinds ! https://stevelionel.com/drfortran/2017/03/27/doctor-fortran-in-it-takes-all-kinds

View File

@ -12,8 +12,14 @@ subroutine quit(stop_id)
#endif #endif
use HDF5 use HDF5
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
integer, intent(in) :: stop_id integer, intent(in) :: stop_id
integer, dimension(8) :: dateAndTime integer, dimension(8) :: dateAndTime
integer :: err_HDF5 integer :: err_HDF5
integer(MPI_INTEGER_KIND) :: err_MPI integer(MPI_INTEGER_KIND) :: err_MPI

View File

@ -21,7 +21,11 @@ module results
use DAMASK_interface use DAMASK_interface
#endif #endif
#if (PETSC_VERSION_MAJOR==3 && PETSC_VERSION_MINOR>14) && !defined(PETSC_HAVE_MPI_F90MODULE_VISIBILITY)
implicit none(type,external)
#else
implicit none implicit none
#endif
private private
integer(HID_T) :: resultsFile integer(HID_T) :: resultsFile

View File

@ -50,7 +50,7 @@ module rotations
use IO use IO
use math use math
implicit none implicit none(type,external)
private private
real(pReal), parameter :: P = -1.0_pReal !< parameter for orientation conversion. real(pReal), parameter :: P = -1.0_pReal !< parameter for orientation conversion.
@ -796,7 +796,7 @@ end function conjugateQuaternion
subroutine selfTest() subroutine selfTest()
type(tRotation) :: R type(tRotation) :: R
real(pReal), dimension(4) :: qu, ax real(pReal), dimension(4) :: qu
real(pReal), dimension(3) :: x, eu, v3 real(pReal), dimension(3) :: x, eu, v3
real(pReal), dimension(3,3) :: om, t33 real(pReal), dimension(3,3) :: om, t33
real(pReal), dimension(3,3,3,3) :: t3333 real(pReal), dimension(3,3,3,3) :: t3333

View File

@ -6,7 +6,7 @@ module signals
use prec use prec
use system_routines use system_routines
implicit none implicit none(type,external)
private private
logical, volatile, public, protected :: & logical, volatile, public, protected :: &

View File

@ -7,7 +7,7 @@ module system_routines
use prec use prec
implicit none implicit none(type,external)
private private
public :: & public :: &
@ -27,7 +27,7 @@ module system_routines
function setCWD_C(cwd) bind(C) function setCWD_C(cwd) bind(C)
use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR
implicit none implicit none(type,external)
integer(C_INT) :: setCWD_C integer(C_INT) :: setCWD_C
character(kind=C_CHAR), dimension(*), intent(in) :: cwd character(kind=C_CHAR), dimension(*), intent(in) :: cwd
@ -36,7 +36,7 @@ module system_routines
subroutine getCWD_C(cwd, stat) bind(C) subroutine getCWD_C(cwd, stat) bind(C)
use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR
use prec use prec
implicit none implicit none(type,external)
character(kind=C_CHAR), dimension(pPathLen+1), intent(out) :: cwd ! NULL-terminated array character(kind=C_CHAR), dimension(pPathLen+1), intent(out) :: cwd ! NULL-terminated array
integer(C_INT), intent(out) :: stat integer(C_INT), intent(out) :: stat
@ -45,7 +45,7 @@ module system_routines
subroutine getHostName_C(hostname, stat) bind(C) subroutine getHostName_C(hostname, stat) bind(C)
use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR
use prec use prec
implicit none implicit none(type,external)
character(kind=C_CHAR), dimension(pStringLen+1), intent(out) :: hostname ! NULL-terminated array character(kind=C_CHAR), dimension(pStringLen+1), intent(out) :: hostname ! NULL-terminated array
integer(C_INT), intent(out) :: stat integer(C_INT), intent(out) :: stat
@ -54,7 +54,7 @@ module system_routines
subroutine getUserName_C(username, stat) bind(C) subroutine getUserName_C(username, stat) bind(C)
use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR use, intrinsic :: ISO_C_Binding, only: C_INT, C_CHAR
use prec use prec
implicit none implicit none(type,external)
character(kind=C_CHAR), dimension(pStringLen+1), intent(out) :: username ! NULL-terminated array character(kind=C_CHAR), dimension(pStringLen+1), intent(out) :: username ! NULL-terminated array
integer(C_INT), intent(out) :: stat integer(C_INT), intent(out) :: stat
@ -62,28 +62,28 @@ module system_routines
subroutine signalint_C(handler) bind(C) subroutine signalint_C(handler) bind(C)
use, intrinsic :: ISO_C_Binding, only: C_FUNPTR use, intrinsic :: ISO_C_Binding, only: C_FUNPTR
implicit none implicit none(type,external)
type(C_FUNPTR), intent(in), value :: handler type(C_FUNPTR), intent(in), value :: handler
end subroutine signalint_C end subroutine signalint_C
subroutine signalusr1_C(handler) bind(C) subroutine signalusr1_C(handler) bind(C)
use, intrinsic :: ISO_C_Binding, only: C_FUNPTR use, intrinsic :: ISO_C_Binding, only: C_FUNPTR
implicit none implicit none(type,external)
type(C_FUNPTR), intent(in), value :: handler type(C_FUNPTR), intent(in), value :: handler
end subroutine signalusr1_C end subroutine signalusr1_C
subroutine signalusr2_C(handler) bind(C) subroutine signalusr2_C(handler) bind(C)
use, intrinsic :: ISO_C_Binding, only: C_FUNPTR use, intrinsic :: ISO_C_Binding, only: C_FUNPTR
implicit none implicit none(type,external)
type(C_FUNPTR), intent(in), value :: handler type(C_FUNPTR), intent(in), value :: handler
end subroutine signalusr2_C end subroutine signalusr2_C
subroutine free_C(ptr) bind(C,name='free') subroutine free_C(ptr) bind(C,name='free')
use, intrinsic :: ISO_C_Binding, only: C_PTR use, intrinsic :: ISO_C_Binding, only: C_PTR
implicit none implicit none(type,external)
type(C_PTR), value :: ptr type(C_PTR), value :: ptr
end subroutine free_C end subroutine free_C