Merge remote-tracking branch 'origin/development' into prepare-transposed-FFTW
This commit is contained in:
commit
aee8ecd43d
|
@ -83,7 +83,7 @@ class Result:
|
||||||
|
|
||||||
>>> import damask
|
>>> import damask
|
||||||
>>> r = damask.Result('my_file.hdf5')
|
>>> r = damask.Result('my_file.hdf5')
|
||||||
>>> r.add_Cauchy()
|
>>> r.add_stress_Cauchy()
|
||||||
>>> r.add_equivalent_Mises('sigma')
|
>>> r.add_equivalent_Mises('sigma')
|
||||||
>>> r.export_VTK()
|
>>> r.export_VTK()
|
||||||
>>> r_last = r.view(increments=-1)
|
>>> r_last = r.view(increments=-1)
|
||||||
|
|
|
@ -468,8 +468,8 @@ def shapeshifter(fro: _Tuple[int, ...],
|
||||||
new_dims : tuple
|
new_dims : tuple
|
||||||
Dimensions for reshape.
|
Dimensions for reshape.
|
||||||
|
|
||||||
Example
|
Examples
|
||||||
-------
|
--------
|
||||||
>>> import numpy as np
|
>>> import numpy as np
|
||||||
>>> from damask import util
|
>>> from damask import util
|
||||||
>>> a = np.ones((3,4,2))
|
>>> a = np.ones((3,4,2))
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
module element
|
module element
|
||||||
use IO
|
use IO
|
||||||
|
|
||||||
implicit none
|
implicit none(type,external)
|
||||||
private
|
private
|
||||||
|
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -8,7 +8,7 @@ module VTI
|
||||||
use base64
|
use base64
|
||||||
use IO
|
use IO
|
||||||
|
|
||||||
implicit none
|
implicit none(type,external)
|
||||||
private
|
private
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -13,7 +13,7 @@ module lattice
|
||||||
use math
|
use math
|
||||||
use rotations
|
use rotations
|
||||||
|
|
||||||
implicit none
|
implicit none(type,external)
|
||||||
private
|
private
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -31,7 +31,7 @@ module materialpoint
|
||||||
use discretization_grid
|
use discretization_grid
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
implicit none
|
implicit none(type,external)
|
||||||
public
|
public
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -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, &
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -75,7 +75,7 @@ module function isobrittle_init() result(mySources)
|
||||||
if (prm%W_crit <= 0.0_pReal) extmsg = trim(extmsg)//' W_crit'
|
if (prm%W_crit <= 0.0_pReal) extmsg = trim(extmsg)//' W_crit'
|
||||||
|
|
||||||
Nmembers = count(material_phaseID==ph)
|
Nmembers = count(material_phaseID==ph)
|
||||||
call phase_allocateState(damageState(ph),Nmembers,1,1,1)
|
call phase_allocateState(damageState(ph),Nmembers,1,0,1)
|
||||||
damageState(ph)%atol = src%get_asFloat('atol_phi',defaultVal=1.0e-9_pReal)
|
damageState(ph)%atol = src%get_asFloat('atol_phi',defaultVal=1.0e-9_pReal)
|
||||||
if (any(damageState(ph)%atol < 0.0_pReal)) extmsg = trim(extmsg)//' atol_phi'
|
if (any(damageState(ph)%atol < 0.0_pReal)) extmsg = trim(extmsg)//' atol_phi'
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 :: &
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue