OpenCMISS-Iron Internal API Documentation
constants.f90
Go to the documentation of this file.
1 
43 
45 MODULE constants
46 
47  USE kinds
48 
49  IMPLICIT NONE
50 
51  !Module parameters
52 
56  REAL(DP), PARAMETER :: euler=2.718281828459045235360287471352662497757_dp
57  REAL(DP), PARAMETER :: pi=3.141592653589793238462643383279502884197_dp
58  REAL(DP), PARAMETER :: twopi=6.283185307179586476925286766559005768394_dp
60 
64  REAL(DP), PARAMETER :: convergence_tolerance_dp=5.0_dp*epsilon(1.0_dp)
66  !cpb 02/04/07 IBM compilers do not like this, initialise in BASE_ROUTINES_INITIALISE
67  !REAL(DP), PARAMETER :: LOOSE_TOLERANCE=EPSILON(1.0_DP)**0.5
68  REAL(DP) :: loose_tolerance
69  REAL(DP), PARAMETER :: zero_tolerance_dp=5.0_dp*epsilon(1.0_dp)
70  REAL(DP), PARAMETER :: zero_tolerance=zero_tolerance_dp
71  REAL(DP), PARAMETER :: convergence_tolerance_sp=5.0_sp*epsilon(1.0_sp)
72  !cpb 02/04/07 IBM compilers do not like this, initialise in BASE_ROUTINES_INITIALISE
73  !REAL(SP), PARAMETER :: LOOSE_TOLERANCE_SP=EPSILON(1.0_SP)**0.5
74  REAL(SP) :: loose_tolerance_sp
75  REAL(SP), PARAMETER :: zero_tolerance_sp=5.0_sp*epsilon(1.0_sp)
77 
78  !String parameters
79  INTEGER(INTG), PARAMETER :: maxstrlen=255
80 
85  INTEGER(INTG), PARAMETER :: integer_type=1
86  INTEGER(INTG), PARAMETER :: short_integer_type=2
87  INTEGER(INTG), PARAMETER :: long_integer_type=3
88  INTEGER(INTG), PARAMETER :: single_real_type=4
89  INTEGER(INTG), PARAMETER :: double_real_type=5
90  INTEGER(INTG), PARAMETER :: quadruple_real_type=6
91  INTEGER(INTG), PARAMETER :: character_type=7
92  INTEGER(INTG), PARAMETER :: logical_type=8
93  INTEGER(INTG), PARAMETER :: single_complex_type=9
94  INTEGER(INTG), PARAMETER :: double_complex_type=10
95  INTEGER(INTG), PARAMETER :: quadruple_complex_type=11
96  INTEGER(INTG), PARAMETER :: c_int_type=12
98 
103  INTEGER(INTG), PARAMETER :: big_endian_number=1
104  INTEGER(INTG), PARAMETER :: little_endian_number=2
106 
111  INTEGER(INTG), PARAMETER :: ascii_character=1
112  INTEGER(INTG), PARAMETER :: unicode_character=2
114 
119  INTEGER(INTG), PARAMETER :: twos_complement_integer=1
120  INTEGER(INTG), PARAMETER :: signed_magnitude_integer=2
122 
127  INTEGER(INTG), PARAMETER :: spieee_number=1
128  INTEGER(INTG), PARAMETER :: dpieee_number=2
130 
135  INTEGER(INTG), PARAMETER :: dec_computer=1
136  INTEGER(INTG), PARAMETER :: sgi_computer=2
137  INTEGER(INTG), PARAMETER :: ibm_computer=3
138  INTEGER(INTG), PARAMETER :: cray_computer=4
139  INTEGER(INTG), PARAMETER :: pc_computer=5
140  INTEGER(INTG), PARAMETER :: unknown_computer=255
142 
147  INTEGER(INTG), PARAMETER :: vms_os=1
148  INTEGER(INTG), PARAMETER :: irix_os=2
149  INTEGER(INTG), PARAMETER :: windows_os=3
150  INTEGER(INTG), PARAMETER :: linux_os=4
151  INTEGER(INTG), PARAMETER :: aix_os=5
152  INTEGER(INTG), PARAMETER :: unknown_os=255
154 
159  INTEGER(INTG), PARAMETER :: library_cmiss_type=1
160  INTEGER(INTG), PARAMETER :: library_petsc_type=2
161  INTEGER(INTG), PARAMETER :: library_mumps_type=3
162  INTEGER(INTG), PARAMETER :: library_superlu_type=4
163  INTEGER(INTG), PARAMETER :: library_spooles_type=5
164  INTEGER(INTG), PARAMETER :: library_umfpack_type=6
165  INTEGER(INTG), PARAMETER :: library_lusol_type=7
166  INTEGER(INTG), PARAMETER :: library_essl_type=8
167  INTEGER(INTG), PARAMETER :: library_lapack_type=9
168  INTEGER(INTG), PARAMETER :: library_tao_type=10
169  INTEGER(INTG), PARAMETER :: library_hypre_type=11
170  INTEGER(INTG), PARAMETER :: library_pastix_type=12
172 
177  INTEGER(INTG), PARAMETER :: no_part_deriv=1
178  INTEGER(INTG), PARAMETER :: first_part_deriv=2
179  INTEGER(INTG), PARAMETER :: second_part_deriv=3
180  INTEGER(INTG), PARAMETER :: third_part_deriv=4
181  INTEGER(INTG), PARAMETER :: part_deriv_s1=2
182  INTEGER(INTG), PARAMETER :: part_deriv_s1_s1=3
183  INTEGER(INTG), PARAMETER :: part_deriv_s2=4
184  INTEGER(INTG), PARAMETER :: part_deriv_s2_s2=5
185  INTEGER(INTG), PARAMETER :: part_deriv_s1_s2=6
186  INTEGER(INTG), PARAMETER :: part_deriv_s3=7
187  INTEGER(INTG), PARAMETER :: part_deriv_s3_s3=8
188  INTEGER(INTG), PARAMETER :: part_deriv_s1_s3=9
189  INTEGER(INTG), PARAMETER :: part_deriv_s2_s3=10
190  INTEGER(INTG), PARAMETER :: part_deriv_s1_s2_s3=11
191  INTEGER(INTG), PARAMETER :: part_deriv_s4=12
192  INTEGER(INTG), PARAMETER :: part_deriv_s4_s4=13
193  INTEGER(INTG), PARAMETER :: part_deriv_s1_s4=14
194  INTEGER(INTG), PARAMETER :: part_deriv_s2_s4=15
195  INTEGER(INTG), PARAMETER :: part_deriv_s3_s4=16
196  INTEGER(INTG), PARAMETER :: part_deriv_s1_s2_s4=17
197  INTEGER(INTG), PARAMETER :: part_deriv_s1_s3_s4=18
198  INTEGER(INTG), PARAMETER :: part_deriv_s2_s3_s4=19
199  INTEGER(INTG), PARAMETER :: part_deriv_s1_s4_s4=20
200 
201  INTEGER(INTG), PARAMETER :: part_deriv_s2_s4_s4=21
202 
203  INTEGER(INTG), PARAMETER :: part_deriv_s3_s4_s4=22
204 
205  INTEGER(INTG), PARAMETER :: part_deriv_s4_s4_s4=23
207 
212  INTEGER(INTG), PARAMETER :: maximum_global_deriv_number=8
213  INTEGER(INTG), PARAMETER :: no_global_deriv=1
214  INTEGER(INTG), PARAMETER :: global_deriv_s1=2
215  INTEGER(INTG), PARAMETER :: global_deriv_s2=3
216  INTEGER(INTG), PARAMETER :: global_deriv_s1_s2=4
217  INTEGER(INTG), PARAMETER :: global_deriv_s3=5
218  INTEGER(INTG), PARAMETER :: global_deriv_s1_s3=6
219  INTEGER(INTG), PARAMETER :: global_deriv_s2_s3=7
220  INTEGER(INTG), PARAMETER :: global_deriv_s1_s2_s3=8
222 
227  INTEGER(INTG), PARAMETER :: maximum_physical_deriv_number=2
228  INTEGER(INTG), PARAMETER :: no_physical_deriv=1
229  INTEGER(INTG), PARAMETER :: gradient_physical_deriv=2
231 
232  INTEGER(INTG) :: partial_derivative_index(23,4) = reshape( &
253 
255 
257  & part_deriv_s4_s4 ]
258 
261 
264 
267 
270 
271  !Other xi directions
273  INTEGER(INTG) :: other_xi_directions2(2) = [ 2,1 ]
275  INTEGER(INTG) :: other_xi_directions3(3,3,2) = reshape([ 1,2,3,2,1,1,3,3,2,0,3,2,3,0,1,2,1,0 ],[3,3,2])
276 
277  INTEGER(INTG) :: other_xi_directions4(4,3) = reshape([ 2,3,4,1,3,4,1,2,4,1,2,3 ],[4,3])
278 
279  INTEGER(INTG) :: other_xi_orientations2(2) = [1,-1]
280  INTEGER(INTG) :: other_xi_orientations3(3,3) = reshape([0,-1,1,1,0,-1,-1,1,0],[3,3])
281 
282  !Tensor to voigt indices and voigt to tensor indices maps.
284  INTEGER(INTG), PARAMETER :: tensor_to_voigt2(2,2)=reshape([1,3,3,2],[2,2]) !TENSOR_TO_VOIGT2(i,j) converts a pair (i,j) of rank 2 symmetric tensor indices to Voigt index (a) in 2 dimensions.
285  INTEGER(INTG), PARAMETER :: voigt_to_tensor2(2,3)=reshape([1,1,2,2,1,2],[2,3]) !VOIGT_TO_TENSOR2(a) converts a Voigt index (a) to a pair (i,j) of rank 2 symmetric tensor indices in 2 dimensions.
286  INTEGER(INTG), PARAMETER :: tensor_to_voigt3(3,3)=reshape([1,4,5,4,2,6,5,6,3],[3,3]) !TENSOR_TO_VOIGT3(i,j) converts a pair (i,j) of rank 2 symmetric tensor indices to Voigt index (a) in 3 dimensions.
287  INTEGER(INTG), PARAMETER :: voigt_to_tensor3(2,6)=reshape([1,1,2,2,3,3,1,2,1,3,2,3],[2,6]) !VOIGT_TO_TENSOR3(i,j) converts a Voigt index (a) to a pair (i,j) of rank 2 symmetric tensor indices in 3 dimensions.
288 
289 END MODULE constants
integer(intg), parameter signed_magnitude_integer
Signed magnitude integer type.
Definition: constants.f90:120
integer(intg), parameter second_part_deriv
Second partial derivative i.e., d^2u/ds^2.
Definition: constants.f90:179
integer(intg), dimension(2) other_xi_directions2
OTHER_XI_DIRECTIONS2(ni) gives the other xi direction for direction ni for a two dimensional element...
Definition: constants.f90:273
integer(intg), parameter c_int_type
C integer data type.
Definition: constants.f90:96
integer(intg), parameter no_physical_deriv
No physical derivative i.e., u.
Definition: constants.f90:228
integer(intg), parameter global_deriv_s1_s2_s3
Cross derivative in the s1, s2 and s3 direction i.e., d^3u/ds1ds2ds3.
Definition: constants.f90:220
integer(intg), dimension(20) partial_derivative_global_derivative_map
PARTIAL_DERIVATIVE_GLOBAL_DERIVATIVE_MAP(nu) gives the global derivative index for the the nu'th part...
Definition: constants.f90:262
integer(intg), parameter cray_computer
Cray computer system type.
Definition: constants.f90:138
integer(intg), parameter no_global_deriv
No global derivative i.e., u.
Definition: constants.f90:213
real(sp), parameter zero_tolerance_sp
The zero tolerance for single precision zero tests i.e., if(abs(x)>zero_tolerance) then...
Definition: constants.f90:75
integer(intg), parameter twos_complement_integer
Twos complement integer type.
Definition: constants.f90:119
integer(intg), parameter linux_os
Linux operating system type.
Definition: constants.f90:150
integer(intg), parameter sgi_computer
Silicon Graphics computer system type.
Definition: constants.f90:136
integer(intg), parameter library_cmiss_type
CMISS (internal) library type.
Definition: constants.f90:159
real(dp), parameter pi
The double precision value of pi.
Definition: constants.f90:57
integer(intg), parameter no_part_deriv
No partial derivative i.e., u.
Definition: constants.f90:177
integer(intg), parameter part_deriv_s4_s4_s4
Third partial derivative in the s4 direction i.e., d^3u/ds4^3.
Definition: constants.f90:205
integer(intg), parameter part_deriv_s4
First partial derivative in the s4 direction i.e., du/ds4.
Definition: constants.f90:191
integer(intg), parameter short_integer_type
Short integer data type.
Definition: constants.f90:86
integer(intg), parameter library_lusol_type
LUSOL library type.
Definition: constants.f90:165
integer(intg), dimension(4) partial_derivative_second_derivative_map
PARTIAL_DERIVATIVE_SECOND_DERIVATIVE_MAP(nic) gives the partial derivative index for the second deriv...
Definition: constants.f90:256
integer(intg), parameter maximum_physical_deriv_number
The maximum physical derivative number.
Definition: constants.f90:227
integer(intg), parameter library_mumps_type
MUMPS library type.
Definition: constants.f90:161
integer(intg), parameter library_umfpack_type
UMFPack library type.
Definition: constants.f90:164
integer(intg), parameter double_real_type
Double precision real data type.
Definition: constants.f90:89
integer(intg), parameter part_deriv_s3_s4
Cross derivative in the s3 and s4 direction i.e., d^2u/ds3ds4.
Definition: constants.f90:195
integer(intg), dimension(2, 3), parameter voigt_to_tensor2
Definition: constants.f90:285
integer(intg), parameter first_part_deriv
First partial derivative i.e., du/ds.
Definition: constants.f90:178
integer(intg), parameter long_integer_type
Long integer data type.
Definition: constants.f90:87
integer(intg), parameter part_deriv_s2
First partial derivative in the s2 direction i.e., du/ds2.
Definition: constants.f90:183
integer(intg), parameter part_deriv_s3_s4_s4
Cross derivative in the s3, s4 and s4 direction i.e., d^3u/ds3ds4^2.
Definition: constants.f90:203
integer(intg), parameter part_deriv_s4_s4
Second partial derivative in the s4 direction i.e., d^2u/ds4ds4.
Definition: constants.f90:192
integer(intg), parameter part_deriv_s1_s4_s4
Cross derivative in the s2, s4 and s4 direction i.e., d^3u/ds1ds4^2.
Definition: constants.f90:199
integer(intg), parameter global_deriv_s2
First global derivative in the s2 direction i.e., du/ds2.
Definition: constants.f90:215
integer(intg), dimension(3) global_derivative_maximum_map
GLOBAL_DERIVATIVE_MAXIMUM_MAP(ni) gives the maximum of global derivative index for the the ni'th dire...
Definition: constants.f90:269
integer(intg), parameter global_deriv_s2_s3
Global Cross derivative in the s2 and s3 direction i.e., d^2u/ds2ds3.
Definition: constants.f90:219
integer(intg), parameter ascii_character
ASCII character type.
Definition: constants.f90:111
integer(intg), dimension(3, 3) other_xi_orientations3
OTHER_XI_ORIENTATIONSS3(ni,nii) gives the orientation of the given two xi directions. Is equal to leviCivita(ni,nii,OTHER_XI_DIRECTIONS3(ni,nii,2)) where leviCivita is the Levi-Civita or alternating symbol.
Definition: constants.f90:280
integer(intg), parameter library_essl_type
ESSL library type.
Definition: constants.f90:166
integer(intg), dimension(2, 2), parameter tensor_to_voigt2
Definition: constants.f90:284
This module contains all program wide constants.
Definition: constants.f90:45
integer(intg), parameter part_deriv_s1
First partial derivative in the s1 direction i.e., du/ds1.
Definition: constants.f90:181
real(sp) loose_tolerance_sp
The loose tolerance for single precision convergence calculations. Loose tolerance is to be used in t...
Definition: constants.f90:74
integer(intg), parameter double_complex_type
Double precision complex data type.
Definition: constants.f90:94
integer(intg), parameter pc_computer
PC computer system type.
Definition: constants.f90:139
integer(intg), parameter maxstrlen
Maximum string length fro character strings.
Definition: constants.f90:79
integer(intg), dimension(3, 3), parameter tensor_to_voigt3
Definition: constants.f90:286
integer(intg), parameter logical_type
Logical/boolean data type.
Definition: constants.f90:92
integer(intg), parameter windows_os
Windows operating system type.
Definition: constants.f90:149
integer(intg), dimension(8) global_derivative_partial_derivative_map
GLOBAL_DERIVATIVE_PARTIAL_DERIVATIVE_MAP(nk) gives the partial derivative index for the the nk'th glo...
Definition: constants.f90:265
real(dp), parameter zero_tolerance_dp
The zero tolerance for double precision zero tests i.e., if(abs(x)>zero_tolerance) then...
Definition: constants.f90:69
integer(intg), parameter part_deriv_s1_s3_s4
Cross derivative in the s1, s3 and s4 direction i.e., d^3u/ds1ds3ds4.
Definition: constants.f90:197
integer(intg), parameter part_deriv_s3
First partial derivative in the s3 direction i.e., du/ds3.
Definition: constants.f90:186
integer(intg), parameter irix_os
IRIX operating system type.
Definition: constants.f90:148
integer(intg), dimension(3, 3, 2) other_xi_directions3
OTHER_XI_DIRECTIONS3(ni,nii,type) gives the other xi directions for direction ni for a three dimensio...
Definition: constants.f90:275
integer(intg), parameter quadruple_real_type
Quadruple precision real data type.
Definition: constants.f90:90
integer(intg), parameter unicode_character
Unicode character type.
Definition: constants.f90:112
integer(intg), parameter part_deriv_s1_s1
Second partial derivative in the s1 direction i.e., d^2u/ds1ds1.
Definition: constants.f90:182
integer(intg), parameter library_hypre_type
Hypre library type.
Definition: constants.f90:169
integer(intg), parameter part_deriv_s2_s3
Cross derivative in the s2 and s3 direction i.e., d^2u/ds2ds3.
Definition: constants.f90:189
integer(intg), parameter library_petsc_type
PETSc library type.
Definition: constants.f90:160
integer(intg), parameter part_deriv_s2_s3_s4
Cross derivative in the s2, s3 and s4 direction i.e., d^3u/ds2ds3ds4.
Definition: constants.f90:198
integer(intg), parameter part_deriv_s1_s3
Cross derivative in the s1 and s3 direction i.e., d^2u/ds1ds3.
Definition: constants.f90:188
integer(intg), dimension(4) partial_derivative_first_derivative_map
PARTIAL_DERIVATIVE_FIRST_DERIVATIVE_MAP(nic) gives the partial derivative index for the first derivat...
Definition: constants.f90:254
integer(intg), parameter unknown_computer
Unknown computer system type.
Definition: constants.f90:140
integer(intg), parameter third_part_deriv
Third partial derivative i.e., d^3u/ds^3.
Definition: constants.f90:180
integer(intg), parameter ibm_computer
IBM system type.
Definition: constants.f90:137
real(dp), parameter convergence_tolerance_dp
The convergence tolerance for double precision convergence calculations. Convergence tests should be ...
Definition: constants.f90:64
integer(intg), parameter unknown_os
Unknown operating system type.
Definition: constants.f90:152
real(dp), parameter convergence_tolerance
Definition: constants.f90:65
integer(intg), parameter global_deriv_s1_s2
Global Cross derivative in the s1 and s2 direction i.e., d^2u/ds1ds2.
Definition: constants.f90:216
integer(intg), parameter library_spooles_type
SPOOLES library type.
Definition: constants.f90:163
integer(intg), parameter dpieee_number
Double precision IEEE real type.
Definition: constants.f90:128
integer(intg), dimension(4, 3) other_xi_directions4
OTHER_XI_DIRECTIONS4(nic,nii) gives the other xi coordinates for coordinate nic for a simplex element...
Definition: constants.f90:277
integer(intg), parameter part_deriv_s1_s4
Cross derivative in the s1 and s4 direction i.e., d^2u/ds1ds4.
Definition: constants.f90:193
real(dp), parameter euler
The double precision value of e.
Definition: constants.f90:56
integer(intg), parameter global_deriv_s1
First global derivative in the s1 direction i.e., du/ds1.
Definition: constants.f90:214
integer(intg), dimension(4) partial_derivative_maximum_map
PARTIAL_DERIVATIVE_MAXIMUM_MAP(nic) gives the maximum of partial derivative index for the the ni(c)'t...
Definition: constants.f90:259
integer(intg), parameter single_complex_type
Single precision complex data type.
Definition: constants.f90:93
real(dp), parameter convergence_tolerance_sp
The convergence tolerance for single precision convergence calculations. Convergence tests should be ...
Definition: constants.f90:71
real(dp), parameter twopi
The double value of 2pi.
Definition: constants.f90:58
integer(intg), parameter library_lapack_type
LAPACK library type.
Definition: constants.f90:167
integer(intg), parameter part_deriv_s2_s4
Cross derivative in the s2 and s4 direction i.e., d^2u/ds2ds4.
Definition: constants.f90:194
real(dp) loose_tolerance
The loose tolerance for double precision convergence calculations. Loose tolerance is to be used in t...
Definition: constants.f90:68
integer(intg), parameter part_deriv_s1_s2
Cross derivative in the s1 and s2 direction i.e., d^2u/ds1ds2.
Definition: constants.f90:185
integer(intg), parameter part_deriv_s2_s2
Second partial derivative in the s2 direction i.e., d^2u/ds2ds2.
Definition: constants.f90:184
integer(intg), parameter vms_os
VMS operating system type.
Definition: constants.f90:147
integer(intg), parameter global_deriv_s3
First global derivative in the s3 direction i.e., du/ds3.
Definition: constants.f90:217
integer(intg), dimension(2) other_xi_orientations2
OTHER_XI_ORIENTATIONSS2(ni) gives the orientation of the given xi direction and the other xi directio...
Definition: constants.f90:279
integer(intg), parameter part_deriv_s3_s3
Second partial derivative in the s3 direction i.e., d^2u/ds3ds3.
Definition: constants.f90:187
integer(intg), parameter maximum_global_deriv_number
The maximum global derivative number.
Definition: constants.f90:212
integer(intg), parameter gradient_physical_deriv
Gradient physical derivative i.e., grad u.
Definition: constants.f90:229
integer(intg), parameter character_type
Character data type.
Definition: constants.f90:91
integer(intg), dimension(2, 6), parameter voigt_to_tensor3
Definition: constants.f90:287
integer(intg), parameter single_real_type
Single precision real data type.
Definition: constants.f90:88
integer(intg), parameter part_deriv_s2_s4_s4
Cross derivative in the s2, s4 and s4 direction i.e., d^3u/ds2ds4^2.
Definition: constants.f90:201
integer(intg), parameter library_superlu_type
SuperLU library type.
Definition: constants.f90:162
integer(intg), parameter little_endian_number
Little endian number type.
Definition: constants.f90:104
integer(intg), parameter aix_os
AIX operating system type.
Definition: constants.f90:151
integer(intg), parameter dec_computer
Digital computer system type.
Definition: constants.f90:135
integer(intg), parameter global_deriv_s1_s3
Global Cross derivative in the s1 and s3 direction i.e., d^2u/ds1ds3.
Definition: constants.f90:218
integer(intg), parameter spieee_number
Single precision IEEE real type.
Definition: constants.f90:127
integer(intg), dimension(23, 4) partial_derivative_index
Partial derivative index map. PARTIAL_DERIVATIVE_INDEX(idx,nic) gives the order of the partial deriva...
Definition: constants.f90:232
integer(intg), parameter library_pastix_type
PaStiX library type.
Definition: constants.f90:170
integer(intg), parameter integer_type
Integer data type.
Definition: constants.f90:85
integer(intg), parameter big_endian_number
Big endian number type.
Definition: constants.f90:103
real(dp), parameter zero_tolerance
Definition: constants.f90:70
integer(intg), parameter library_tao_type
TAO library type.
Definition: constants.f90:168
integer(intg), parameter quadruple_complex_type
Quadruple precision complex data type.
Definition: constants.f90:95
This module contains all kind definitions.
Definition: kinds.f90:45
integer(intg), parameter part_deriv_s1_s2_s3
Cross derivative in the s1, s2 and s3 direction i.e., d^3u/ds1ds2ds3.
Definition: constants.f90:190
integer(intg), parameter part_deriv_s1_s2_s4
Cross derivative in the s1, s2 and s4 direction i.e., d^3u/ds1ds2ds4.
Definition: constants.f90:196