Changeset 3016


Ignore:
Timestamp:
Jul 26, 2023, 8:08:48 AM (16 months ago)
Author:
emillour
Message:

Mars PCM:
Code cleanup: nltedata.h is only included in nltecool.F so turn this data
into module data there. Also convert lteparams.h into module nlteparams_h.F90.
And while at it also turn nlthermeq.F and blendrad.F into modules.
EM

Location:
trunk/LMDZ.MARS
Files:
1 deleted
5 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/changelog.txt

    r3015 r3016  
    41384138Also turn moldiffcoeff_red.F and thermosphere.F into modules.
    41394139
     4140== 26/07/2023 == EM
     4141Code cleanup: nltedata.h is only included in nltecool.F so turn this data
     4142into module data there. Also convert lteparams.h into module nlteparams_h.F90.
     4143And 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     
    17      subroutine blendrad(ngrid, nlayer, pplay,
    28     &                    zdtsw, zdtlw, zdtnirco2, zdtnlte, dtrad)
     
    1420c
    1521      use yomlw_h, only: nlaylte
     22      use nlteparams_h, only: ptrans, zwi
    1623      implicit none
    17 #include "nlteparams.h"
    1824
    1925c     Input:
     
    5460      enddo
    5561c
    56       return
    57       end
     62      end subroutine blendrad
     63
     64      END MODULE blendrad_mod
  • trunk/LMDZ.MARS/libf/phymars/nltecool.F

    r3012 r3016  
    22     
    33      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
    49     
     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
    5161      CONTAINS
    6162c**************************************************************************
     
    39195      implicit none
    40196
    41       include "nltedata.h"
    42197      include "callkeys.h"
    43198
     
    117272      real       k21xc, k21cp2
    118273
    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)
    125276
    126277c
  • 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-----------------------------------------------------------------------
     1MODULE nlteparams_h
    72
    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)
     3IMPLICIT NONE
    174
    18 c-----------------------------------------------------------------------
     5!-----------------------------------------------------------------------
     6!   Parameters which govern the transition from LTE to NLTE radiation
     7!   tendencies.
     8!-----------------------------------------------------------------------
     9
     10real,parameter :: ptrans = 0.1    ! central pressure for transition (Pa)
     11
     12real,parameter :: zw = 0.5    ! half-width for transition (scale heights)
     13
     14real,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
     18real,parameter :: zwi = 2./zw
     19
     20END MODULE nlteparams_h
  • trunk/LMDZ.MARS/libf/phymars/nlthermeq.F

    r2584 r3016  
     1      MODULE nlthermeq_mod
     2     
     3      IMPLICIT NONE
     4     
     5      CONTAINS
     6
    17      subroutine nlthermeq(ngrid, nlayer, pplev, pplay)
    28c
     
    915c  Modified Y. Wanherdrick/ F. Forget 09/2000
    1016      use yomlw_h, only: nlaylte
     17      use nlteparams_h, only: ptrans, pminte, zw
    1118      implicit none
    12 #include "nlteparams.h"
    13 #include "callkeys.h"
     19      include "callkeys.h"
    1420
    1521c
    1622c     Input:
    17       integer ngrid, nlayer
    18       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)
    2026c
    2127c     Local:
     
    3440c     needed for an estimate so any point would do in that case.
    3541!!    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...
    3646         igpmax = ismax(ngrid, pplev, 1)
    3747         write(*, 10) ptrans
     
    5666   20 format('               half-width (scale heights) ',f6.2)
    5767   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  
    2626      use nltecool_mod, only: nltecool
    2727      use nlte_tcool_mod, only: nlte_tcool
     28      use blendrad_mod, only: blendrad
     29      use nlthermeq_mod, only: nlthermeq
    2830      use thermosphere_mod, only: thermosphere
    2931      use tracer_mod, only: noms, mmol, igcm_co2, igcm_n2, igcm_co2_ice,
     
    217219
    218220      include "callkeys.h"
    219       include "nlteparams.h"
    220221      include "netcdf.inc"
    221222
Note: See TracChangeset for help on using the changeset viewer.