Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
MODULE model
! Module for diagnostic parameters
USE prec_const
IMPLICIT NONE
PRIVATE
REAL(dp), PUBLIC, PROTECTED :: nu = 1._dp ! Collision frequency
! (Numerical) diffusion coefficient
REAL(dp), PUBLIC, PROTECTED :: diff_theta = 1._dp
REAL(dp), PUBLIC, PROTECTED :: diff_temp = 1._dp
REAL(dp), PUBLIC, PROTECTED :: diff_vpar = 1._dp
REAL(dp), PUBLIC, PROTECTED :: diff_moments = 1._dp
! Fast Fourier Transform to filter out high frequence
LOGICAL, PUBLIC, PROTECTED :: fft_suppress_high_freq = .false.
REAL(dp), PUBLIC, PROTECTED :: fft_sigma = 2._dp
CHARACTER(len=3), PUBLIC, PROTECTED :: gradient_scheme='fd4'
LOGICAL, PUBLIC, PROTECTED :: freeze_theta = .false.
LOGICAL, PUBLIC, PROTECTED :: freeze_temp = .false.
LOGICAL, PUBLIC, PROTECTED :: freeze_vpar = .false.
LOGICAL, PUBLIC, PROTECTED :: freeze_moments = .false.
LOGICAL, PUBLIC, PROTECTED :: freeze_phi = .false.
PUBLIC :: model_readinputs, model_outputinputs
CONTAINS
SUBROUTINE model_readinputs
! Read the input parameters
USE basic, ONLY : lu_in
USE prec_const
IMPLICIT NONE
NAMELIST /MODEL_PAR/ nu
NAMELIST /MODEL_PAR/ diff_theta, diff_temp, diff_vpar, diff_moments
NAMELIST /MODEL_PAR/ gradient_scheme
NAMELIST /MODEL_PAR/ freeze_theta, freeze_temp, freeze_vpar, freeze_moments, freeze_phi
NAMELIST /MODEL_PAR/ fft_suppress_high_freq, fft_sigma
READ(lu_in,model_par)
WRITE(*,model_par)
! Collision Frequency Normalization ... to match fluid limit
nu = nu*0.532_dp
END SUBROUTINE model_readinputs
SUBROUTINE model_outputinputs(fidres, str)
! Write the input parameters to the results_xx.h5 file
USE futils, ONLY: attach
USE prec_const
IMPLICIT NONE
INTEGER, INTENT(in) :: fidres
CHARACTER(len=256), INTENT(in) :: str
CALL attach(fidres, TRIM(str), "nu", nu)
CALL attach(fidres, TRIM(str), "diff_theta", diff_theta)
CALL attach(fidres, TRIM(str), "diff_temp", diff_temp)
CALL attach(fidres, TRIM(str), "diff_vpar", diff_vpar)
CALL attach(fidres, TRIM(str), "diff_moments", diff_moments)
CALL attach(fidres, TRIM(str), "gradient_scheme", gradient_scheme)
CALL attach(fidres, TRIM(str), "freeze_theta", freeze_theta)
CALL attach(fidres, TRIM(str), "freeze_temp", freeze_temp)
CALL attach(fidres, TRIM(str), "freeze_vpar", freeze_vpar)
CALL attach(fidres, TRIM(str), "freeze_moments", freeze_moments)
CALL attach(fidres, TRIM(str), "freeze_phi", freeze_phi)
CALL attach(fidres, TRIM(str), "fft_suppress_high_freq", fft_suppress_high_freq)
CALL attach(fidres, TRIM(str), "fft_sigma", fft_sigma)
END SUBROUTINE model_outputinputs
END MODULE model