Changeset 3016
- Timestamp:
- Jul 26, 2023, 8:08:48 AM (16 months ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 1 deleted
- 5 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/changelog.txt
r3015 r3016 4138 4138 Also turn moldiffcoeff_red.F and thermosphere.F into modules. 4139 4139 4140 == 26/07/2023 == EM 4141 Code cleanup: nltedata.h is only included in nltecool.F so turn this data 4142 into module data there. Also convert lteparams.h into module nlteparams_h.F90. 4143 And while at it also turn nlthermeq.F and blendrad.F into modules. -
trunk/LMDZ.MARS/libf/phymars/blendrad.F
r1266 r3016 1 MODULE blendrad_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 6 1 7 subroutine blendrad(ngrid, nlayer, pplay, 2 8 & zdtsw, zdtlw, zdtnirco2, zdtnlte, dtrad) … … 14 20 c 15 21 use yomlw_h, only: nlaylte 22 use nlteparams_h, only: ptrans, zwi 16 23 implicit none 17 #include "nlteparams.h"18 24 19 25 c Input: … … 54 60 enddo 55 61 c 56 return 57 end 62 end subroutine blendrad 63 64 END MODULE blendrad_mod -
trunk/LMDZ.MARS/libf/phymars/nltecool.F
r3012 r3016 2 2 3 3 IMPLICIT NONE 4 5 ! Escape functions and VMRs from tabulated values. 6 ! Origin: nlte_escape.dat file form Miguel L. 7 ! (Y. Wanherdrick, 09/2000) 8 integer,parameter :: np=68 ! # data points in tabulation 4 9 10 real, save :: pnb(np) = [ ! Pressure (exponent) in tabulation 11 & 12.0000, 11.0000, 10.8000, 12 & 10.6000, 10.40000, 10.20000, 13 & 10.00000, 9.80000, 9.60000, 14 & 9.40000, 9.20000, 9.00000, 15 & 8.80000, 8.60000, 8.40000, 16 & 8.20000, 8.00000, 7.80000, 17 & 7.60000, 7.40000, 7.20000, 18 & 7.00000, 6.80000, 6.60000, 19 & 6.40000, 6.20000, 6.00000, 20 & 5.80000, 5.60000, 5.40000, 21 & 5.20000, 5.00000, 4.80000, 22 & 4.60000, 4.40000, 4.20000, 23 & 4.00000, 3.80000, 3.60000, 24 & 3.40000, 3.20000, 3.00000, 25 & 2.80000, 2.60000, 2.40000, 26 & 2.20000, 2.00000, 1.80000, 27 & 1.60000, 1.40000, 1.20000, 28 & 1.00000, 0.800000, 0.599999, 29 & 0.400000, 0.200000, 0., 30 & -0.200000, -0.400001, -0.600000, 31 & -0.800000, -1.00000, -1.20000, 32 & -1.40000, -1.60000, -1.80000, 33 & -2.00000, -3.00000 ] ! values modified in nltecool 34 !$OMP THREADPRIVATE(pnb) 35 36 real,parameter :: ef1(np) = [ ! Esc.funct.#1, tabulated 37 & 4.58112E-04, 4.58112E-04, 4.58112E-04, 38 & 4.58112E-04, 4.58112E-04, 4.58112E-04, 39 & 4.58112E-04, 4.58112E-04, 4.58112E-04, 40 & 4.58112E-04, 4.58112E-04, 4.58112E-04, 41 & 4.58112E-04, 4.58112E-04, 4.58112E-04, 42 & 4.58112E-04, 4.58112E-04, 4.58112E-04, 43 & 4.58112E-04, 4.58112E-04, 4.58112E-04, 44 & 4.58112E-04, 4.61707E-04, 4.76886E-04, 45 & 4.95638E-04, 5.20935E-04, 5.55511E-04, 46 & 6.01219E-04, 6.63734E-04, 7.50691E-04, 47 & 8.63474E-04, 1.00900E-03, 1.19642E-03, 48 & 1.42690E-03, 1.71398E-03, 2.06663E-03, 49 & 2.48974E-03, 3.01578E-03, 3.64350E-03, 50 & 4.40323E-03, 5.32066E-03, 6.40456E-03, 51 & 7.72069E-03, 9.25684E-03, 1.10905E-02, 52 & 1.32374E-02, 1.57643E-02, 1.87388E-02, 53 & 2.22072E-02, 2.63099E-02, 3.10614E-02, 54 & 3.66948E-02, 4.32373E-02, 5.15022E-02, 55 & 6.21455E-02, 7.77212E-02, 9.92027E-02, 56 & 0.131155, 0.179470, 0.258913, 57 & 0.380549, 0.530450, 0.643180, 58 & 0.741061, 0.826336, 0.922787, 59 & 0.997203, 1.00000 ] 60 61 real,parameter :: ef2(np) = [ ! Esc.funct.#2, tabulated 62 & 1.98992E-03, 1.98992E-03, 1.98992E-03, 63 & 1.98992E-03, 1.98992E-03, 1.98992E-03, 64 & 1.98992E-03, 1.98992E-03, 1.98992E-03, 65 & 1.98992E-03, 1.98992E-03, 2.01376E-03, 66 & 2.09450E-03, 2.22993E-03, 2.42056E-03, 67 & 2.68018E-03, 3.04398E-03, 3.43896E-03, 68 & 3.80282E-03, 4.20622E-03, 4.76121E-03, 69 & 8.01698E-03, 1.19947E-02, 1.69149E-02, 70 & 2.24497E-02, 2.85244E-02, 3.54813E-02, 71 & 4.39264E-02, 5.46248E-02, 6.75367E-02, 72 & 8.29931E-02, 1.01717E-01, 0.123422, 73 & 0.148468, 0.177096, 0.208816, 74 & 0.244003, 0.282013, 0.322559, 75 & 0.365542, 0.410518, 0.457384, 76 & 0.505358, 0.553627, 0.600472, 77 & 0.644807, 0.687185, 0.727429, 78 & 0.764734, 0.798562, 0.828699, 79 & 0.854797, 0.877717, 0.897874, 80 & 0.915258, 0.929904, 0.942381, 81 & 0.952906, 0.962173, 0.970191, 82 & 0.976437, 0.981501, 0.985406, 83 & 0.988560, 0.991111, 0.993653, 84 & 0.995561, 1.00000 ] 85 86 real,parameter :: co2vmr(np) = [ ! CO2 VMR tabulated 87 & 0.950000, 0.950000, 0.950000, 88 & 0.950000, 0.950000, 0.950000, 89 & 0.950000, 0.950000, 0.950000, 90 & 0.950000, 0.950000, 0.950000, 91 & 0.950000, 0.950000, 0.950000, 92 & 0.950000, 0.950000, 0.950000, 93 & 0.950000, 0.950000, 0.950000, 94 & 0.950000, 0.950000, 0.950000, 95 & 0.950000, 0.950000, 0.950000, 96 & 0.950000, 0.950000, 0.950000, 97 & 0.950000, 0.950000, 0.950000, 98 & 0.950000, 0.950000, 0.950000, 99 & 0.950000, 0.950000, 0.950000, 100 & 0.950000, 0.950000, 0.950000, 101 & 0.950000, 0.950000, 0.950000, 102 & 0.950000, 0.950000, 0.950000, 103 & 0.950000, 0.950000, 0.950000, 104 & 0.950000, 0.950000, 0.950000, 105 & 0.950000, 0.950000, 0.950000, 106 & 0.950000, 0.950000, 0.950000, 107 & 0.949619, 0.947694, 0.945830, 108 & 0.944016, 0.940557, 0.937068, 109 & 0.932366, 0.893661 ] 110 111 real,parameter :: o3pvmr(np) = [ ! O3p VMR tabulated 112 & 5.06756E-08, 9.16539E-07, 1.68217E-06, 113 & 3.00843E-06, 5.03151E-06, 8.07489E-06, 114 & 1.23137E-05, 1.79029E-05, 2.45308E-05, 115 & 3.27431E-05, 4.26692E-05, 5.44396E-05, 116 & 6.78865E-05, 8.33147E-05, 1.00148E-04, 117 & 1.18846E-04, 1.39681E-04, 1.64909E-04, 118 & 1.93617E-04, 2.25161E-04, 2.60834E-04, 119 & 3.01501E-04, 3.44953E-04, 3.91011E-04, 120 & 4.40377E-04, 4.90820E-04, 5.43200E-04, 121 & 5.95335E-04, 6.45420E-04, 6.93166E-04, 122 & 7.43729E-04, 7.93710E-04, 8.44394E-04, 123 & 8.94318E-04, 9.44732E-04, 9.94964E-04, 124 & 1.04901E-03, 1.10008E-03, 1.16302E-03, 125 & 1.22989E-03, 1.30026E-03, 1.37131E-03, 126 & 1.45556E-03, 1.55186E-03, 1.66328E-03, 127 & 1.77802E-03, 1.91546E-03, 2.07503E-03, 128 & 2.24903E-03, 2.47117E-03, 2.71728E-03, 129 & 2.99739E-03, 3.33582E-03, 3.73507E-03, 130 & 4.20819E-03, 4.76887E-03, 5.42558E-03, 131 & 6.20815E-03, 7.14473E-03, 8.28545E-03, 132 & 9.51779E-03, 1.08140E-02, 1.22359E-02, 133 & 1.36870E-02, 1.51495E-02, 1.67196E-02, 134 & 1.85485E-02, 3.36252E-02 ] 135 136 real, parameter :: n2covmr(np) = [ ! N2+CO VMR tabulated 137 & 2.71412E-02, 2.71464E-02, 2.71490E-02, 138 & 2.71523E-02, 2.71558E-02, 2.71617E-02, 139 & 2.71672E-02, 2.71749E-02, 2.71837E-02, 140 & 2.71943E-02, 2.72058E-02, 2.72189E-02, 141 & 2.72326E-02, 2.72483E-02, 2.72661E-02, 142 & 2.72848E-02, 2.73054E-02, 2.73279E-02, 143 & 2.73514E-02, 2.73775E-02, 2.74048E-02, 144 & 2.74345E-02, 2.74672E-02, 2.75021E-02, 145 & 2.75404E-02, 2.75826E-02, 2.76340E-02, 146 & 2.77013E-02, 2.78220E-02, 2.79707E-02, 147 & 2.81759E-02, 2.84339E-02, 2.87587E-02, 148 & 2.91600E-02, 2.96561E-02, 3.02558E-02, 149 & 3.09922E-02, 3.18062E-02, 3.27010E-02, 150 & 3.35635E-02, 3.44388E-02, 3.53327E-02, 151 & 3.62143E-02, 3.70941E-02, 3.79315E-02, 152 & 3.87626E-02, 3.95524E-02, 4.03071E-02, 153 & 4.10071E-02, 4.16229E-02, 4.21231E-02, 154 & 4.25167E-02, 4.27964E-02, 4.29773E-02, 155 & 4.30488E-02, 4.29638E-02, 4.28049E-02, 156 & 4.26788E-02, 4.26822E-02, 4.29426E-02, 157 & 4.34634E-02, 4.42559E-02, 4.53038E-02, 158 & 4.65879E-02, 4.80262E-02, 4.96303E-02, 159 & 5.14885E-02, 6.91651E-02 ] 160 5 161 CONTAINS 6 162 c************************************************************************** … … 39 195 implicit none 40 196 41 include "nltedata.h"42 197 include "callkeys.h" 43 198 … … 117 272 real k21xc, k21cp2 118 273 119 logical firstcall 120 121 !$OMP THREADPRIVATE(firstcall,ef1,ef2,co2vmr,n2covmr,o3pvmr,pnb) 122 123 data firstcall/.true./ 124 save firstcall,ef1,ef2,co2vmr,n2covmr,o3pvmr,pnb 274 logical,save :: firstcall=.true. 275 !$OMP THREADPRIVATE(firstcall) 125 276 126 277 c -
trunk/LMDZ.MARS/libf/phymars/nlteparams_h.F90
r3015 r3016 1 c----------------------------------------------------------------------- 2 c INCLUDE 'nlteparams.h' 3 c 4 c Parameters which govern the transition from LTE to NLTE radiation 5 c tendencies. 6 c----------------------------------------------------------------------- 1 MODULE nlteparams_h 7 2 8 real ptrans ! central pressure for transition (Pa) 9 parameter (ptrans = 0.1) 10 real zw ! half-width for transition (scale heights) 11 parameter (zw = 0.5) 12 real pminte ! pressure up to which LTE is calculated (Pa) 13 parameter (pminte = 0.4*ptrans) 14 c almost one scale height above transition in worst case is very safe 15 real zwi 16 parameter (zwi = 2./zw) 3 IMPLICIT NONE 17 4 18 c----------------------------------------------------------------------- 5 !----------------------------------------------------------------------- 6 ! Parameters which govern the transition from LTE to NLTE radiation 7 ! tendencies. 8 !----------------------------------------------------------------------- 9 10 real,parameter :: ptrans = 0.1 ! central pressure for transition (Pa) 11 12 real,parameter :: zw = 0.5 ! half-width for transition (scale heights) 13 14 real,parameter :: pminte = 0.4*ptrans ! pressure up to which LTE 15 ! is calculated (Pa) almost one scale height above transition in worst 16 ! case is very safe 17 18 real,parameter :: zwi = 2./zw 19 20 END MODULE nlteparams_h -
trunk/LMDZ.MARS/libf/phymars/nlthermeq.F
r2584 r3016 1 MODULE nlthermeq_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 6 1 7 subroutine nlthermeq(ngrid, nlayer, pplev, pplay) 2 8 c … … 9 15 c Modified Y. Wanherdrick/ F. Forget 09/2000 10 16 use yomlw_h, only: nlaylte 17 use nlteparams_h, only: ptrans, pminte, zw 11 18 implicit none 12 #include "nlteparams.h" 13 #include "callkeys.h" 19 include "callkeys.h" 14 20 15 21 c 16 22 c Input: 17 integer ngrid, nlayer18 real pplev(ngrid, nlayer+1)19 real pplay(ngrid, nlayer)23 integer,intent(in) :: ngrid, nlayer 24 real,intent(in) :: pplev(ngrid, nlayer+1) 25 real,intent(in) :: pplay(ngrid, nlayer) 20 26 c 21 27 c Local: … … 34 40 c needed for an estimate so any point would do in that case. 35 41 !! AS: can be problem w MESOSCALE nesting (ignored for the moment) 42 !! Ehouarn: this could also be a problem when in parallel with the GCM as well... 43 !! fortunately with current setup (pminte=0.04) and hybrid vertical coordinates 44 !! the transition point is in purely pressure layers and thus always the same. 45 !! To be cleaned and made more general and robust someday... 36 46 igpmax = ismax(ngrid, pplev, 1) 37 47 write(*, 10) ptrans … … 56 66 20 format(' half-width (scale heights) ',f6.2) 57 67 30 format(' suggested LTE coverage at least ',f6.2,'Pa') 58 end 68 end subroutine nlthermeq 69 70 END MODULE nlthermeq_mod -
trunk/LMDZ.MARS/libf/phymars/physiq_mod.F
r3015 r3016 26 26 use nltecool_mod, only: nltecool 27 27 use nlte_tcool_mod, only: nlte_tcool 28 use blendrad_mod, only: blendrad 29 use nlthermeq_mod, only: nlthermeq 28 30 use thermosphere_mod, only: thermosphere 29 31 use tracer_mod, only: noms, mmol, igcm_co2, igcm_n2, igcm_co2_ice, … … 217 219 218 220 include "callkeys.h" 219 include "nlteparams.h"220 221 include "netcdf.inc" 221 222
Note: See TracChangeset
for help on using the changeset viewer.