0.6.2-dev0
FORCES
FORtran lib for Comp. Env. Sys.
Loading...
Searching...
No Matches
mo_kind.F90
Go to the documentation of this file.
1!> \file mo_kind.f90
2!> \brief \copybrief mo_kind
3!> \details \copydetails mo_kind
4
5!> \brief Define number representations
6!> \details This module declares the desired ranges and precisions of the number representations,
7!! such as single precision or double precision, 32-bit or 64-bit integer, etc.
8!> \copyright GNU Lesser General Public License http://www.gnu.org/licenses/
9!> \changelog
10!> - Sebastian Mueller, Jan 2022
11!! - added option for ISO_FORTRAN ENV
12!! - added quad precision for real and complex
13!> \authors Juliane Mai, Matthias Cuntz
14!> \date 2011-2014
15!> \copyright Copyright 2005-\today, the CHS Developers, Sabine Attinger: All rights reserved.
16!! FORCES is released under the LGPLv3+ license \license_note
17MODULE mo_kind
18
19#ifdef FORCES_WITH_ISO_FORTRAN_ENV
20 use, intrinsic :: iso_fortran_env, only: &
21 int8, int16, int32, int64, real32, real64, real128
22#else
23 use, intrinsic :: iso_c_binding, only: &
24 int8 => c_int8_t, &
25 int16 => c_short, & ! c_int16_t
26 int32 => c_int, & ! c_int32_t
27 int64 => c_long_long, & ! c_int64_t
28 real32 => c_float, &
29 real64 => c_double, &
30 real128 => c_long_double
31#endif
32
33 IMPLICIT NONE
34
35 !> 1 Byte Integer Kind
36 INTEGER, PARAMETER :: i1 = int8
37 !> 2 Byte Integer Kind
38 INTEGER, PARAMETER :: i2 = int16
39 !> 4 Byte Integer Kind
40 INTEGER, PARAMETER :: i4 = int32
41 !> 8 Byte Integer Kind
42 INTEGER, PARAMETER :: i8 = int64
43 !> Single Precision Real Kind
44 INTEGER, PARAMETER :: sp = real32
45 !> Double Precision Real Kind
46 INTEGER, PARAMETER :: dp = real64
47 !> Quad Precision Real Kind
48 INTEGER, PARAMETER :: qp = real128
49 !> Single Precision Complex Kind
50 INTEGER, PARAMETER :: spc = real32
51 !> Double Precision Complex Kind
52 INTEGER, PARAMETER :: dpc = real64
53 !> Quad Precision Complex Kind
54 INTEGER, PARAMETER :: qpc = real128
55 !> Logical Kind
56 INTEGER, PARAMETER :: lgt = kind(.true.)
57
58END MODULE mo_kind
Define number representations.
Definition mo_kind.F90:17
integer, parameter lgt
Logical Kind.
Definition mo_kind.F90:56
integer, parameter sp
Single Precision Real Kind.
Definition mo_kind.F90:44
integer, parameter i4
4 Byte Integer Kind
Definition mo_kind.F90:40
integer, parameter i8
8 Byte Integer Kind
Definition mo_kind.F90:42
integer, parameter i2
2 Byte Integer Kind
Definition mo_kind.F90:38
integer, parameter qp
Quad Precision Real Kind.
Definition mo_kind.F90:48
integer, parameter i1
1 Byte Integer Kind
Definition mo_kind.F90:36
integer, parameter qpc
Quad Precision Complex Kind.
Definition mo_kind.F90:54
integer, parameter dpc
Double Precision Complex Kind.
Definition mo_kind.F90:52
integer, parameter dp
Double Precision Real Kind.
Definition mo_kind.F90:46
integer, parameter spc
Single Precision Complex Kind.
Definition mo_kind.F90:50