source: trunk/LMDZ.VENUS/libf/phyvenus/radinc_h.F90 @ 3803

Last change on this file since 3803 was 3794, checked in by slebonnois, 6 months ago

SL: VenusPCM - update of CIA in solar module (adapted from Generic PCM) + potential output of band-resolved net flux

File size: 4.3 KB
Line 
1module radinc_h
2
3  implicit none
4
5
6!-----------------------------------------------------------------------
7!   INCLUDE 'bands.h'
8!
9!   bands.h contains the visible & infrared bands in the model
10!
11!   NBinfrared = L_NSPECTI in the model
12!   NBvisible  = L_NSPECTV in the model
13!-----------------------------------------------------------------------
14
15      INTEGER, parameter :: NBinfrared=32
16      INTEGER, parameter :: NBvisible=36
17
18!-----------------------------------------------------------------------
19!   INCLUDE 'scatterers.h'
20!
21!======================================================================
22!
23!     RADINC.H
24!
25!     Includes for the radiation code; RADIATION LAYERS, LEVELS,
26!     number of spectral intervals. . .
27!
28!======================================================================
29
30!     RADIATION parameters
31
32!     In radiation code, layer 1 corresponds to the stratosphere.  Level
33!     1 is the top of the stratosphere.  The dummy layer is at the same
34!     temperature as the (vertically isothermal) stratosphere, and
35!     any time it is explicitly needed, the appropriate quantities will
36!     be dealt with (aka "top". . .)
37
38!     L_NLEVRAD corresponds to the surface - i.e., the GCM Level that
39!     is at the surface.  PLEV(L_NLEVRAD) = P(J,I)+PTROP,
40!     PLEV(2) = PTROP, PLEV(1) = ptop
41
42!     L_NLAYRAD is the number of radiation code layers
43!     L_NLEVRAD is the number of radiation code levels.  Level N is the
44!               top of layer N.
45!
46!     L_NSPECTI is the number of IR spectral intervals
47!     L_NSPECTV is the number of Visual(or Solar) spectral intervals
48!     L_NGAUSS  is the number of Gauss points for K-coefficients
49!               GAUSS POINT 17 (aka the last one) is the special case
50!
51!     L_NPREF   is the number of reference pressures that the
52!               k-coefficients are calculated on
53!     L_PINT    is the number of Lagrange interpolated reference
54!               pressures for the gas k-coefficients - now for a
55!               smaller p-grid than before
56!     L_NTREF   is the number of reference temperatures for the
57!               k-coefficients
58!     L_TAUMAX  is the largest optical depth - larger ones are set
59!               to this value
60!
61!     L_REFVAR  The number of different mixing ratio values for
62!               the k-coefficients. Variable component of the mixture
63!               can in princple be anything: currently it's H2O.
64!
65!     NAERKIND  The number of radiatively active aerosol types
66!
67!     NSIZEMAX  The maximum number of aerosol particle sizes
68!
69!----------------------------------------------------------------------
70
71      integer,save :: L_NLAYRAD  ! = nbp_lev ! set by ini_radinc_h
72      integer,save :: L_LEVELS   ! = 2*(nbp_lev-1)+3 ! set by ini_radinc_h
73      integer,save :: L_NLEVRAD  ! = nbp_lev+1 ! set by ini_radinc_h
74!$OMP THREADPRIVATE(L_NLAYRAD,L_LEVELS,L_NLEVRAD)
75
76      ! These are set in sugas_corrk
77      ! [uses allocatable arrays] -- AS 12/2011
78      integer :: L_NPREF, L_NTREF, L_REFVAR, L_PINT, L_NGAUSS  !L_NPREF, L_NTREF, L_REFVAR, L_PINT, L_NGAUSS read by master in sugas_corrk
79
80      integer, parameter :: L_NSPECTV = NBvisible
81      integer, parameter :: L_NSPECTI = NBinfrared
82
83      integer, parameter :: NAERKIND  = 5
84      real,    parameter :: L_TAUMAX  = 35
85
86      ! For Planck function integration:
87      ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88      ! Integration boundary temperatures are NTstart/NTfac and Ntstop/NTfac
89      ! -- JVO 20 : Now read boundary T and integration dT as inputs in callphys.def
90      !             NTstart, Nstop and NTfac then set by ini_radinc_h
91      !             Smart user can adjust values depending he's running hot or cold atm
92      !             Default is wide range : 30K-1500K, with 0.1K step
93      !             ->  NTstart=300, Nstop=15000, NTfac=10
94      integer :: NTstart, NTstop
95      real*8  :: NTfac
96
97      ! Maximum number of grain size classes for aerosol convolution:
98      ! This must correspond to size of largest dataset used for aerosol
99      ! optical properties in datagcm folder.
100      integer, parameter :: nsizemax = 60
101
102contains
103
104  subroutine ini_radinc_h(nbp_lev)
105  ! Initialize module variables
106  implicit none
107  integer,intent(in) :: nbp_lev
108 
109  L_NLAYRAD = nbp_lev
110  L_LEVELS  = 2*(nbp_lev-1)+3
111  L_NLEVRAD = nbp_lev+1
112
113  NTfac   = 10
114  NTstart = 300
115  NTstop  = 15000
116 
117  end subroutine
118
119end module radinc_h
Note: See TracBrowser for help on using the repository browser.