Changeset 3027


Ignore:
Timestamp:
Aug 14, 2023, 11:41:45 AM (17 months ago)
Author:
jbclement
Message:

Mars PCM 1D:
Related to commit r3026: improvement of error message in initracer.F (now it gives correctly the only identified tracers) + one small correction to run PCM 1D without water.
JBC

Location:
trunk/LMDZ.MARS/libf/phymars
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/phymars/dyn1d/testphys1d.F

    r3026 r3027  
    445445      paleomars=.false. ! Default: no water ice reservoir
    446446      call getin("paleomars",paleomars)
    447       if (paleomars.eqv..true.) then
     447      if (paleomars) then
    448448        write(*,*) "paleomars=", paleomars
    449449        write(*,*) "Orbital parameters from callphys.def"
  • trunk/LMDZ.MARS/libf/phymars/initracer.F

    r3026 r3027  
    3939      real, parameter :: popratio = 25.
    4040      character(len=30) :: txt ! to store some text
     41      character(len=30), dimension(nq) :: idtracers
    4142
    4243c-----------------------------------------------------------------------
     
    133134          if (noms(iq).eq.txt) then
    134135            count=count+1
     136            idtracers(count) = txt
    135137            igcm_dustbin(count)=iq
    136138            mmol(iq)=100.
     
    143145            igcm_dust_mass=iq
    144146            count=count+1
     147            idtracers(count) = "dust_mass"
    145148          endif
    146149          if (noms(iq).eq."dust_number") then
    147150            igcm_dust_number=iq
    148151            count=count+1
     152            idtracers(count) = "dust_number"
    149153          endif
    150154        enddo
     
    155159            igcm_ccn_mass=iq
    156160            count=count+1
     161            idtracers(count) = "ccn_mass"
    157162          endif
    158163          if (noms(iq).eq."ccn_number") then
    159164            igcm_ccn_number=iq
    160165            count=count+1
     166            idtracers(count) = "ccn_number"
    161167          endif
    162168        enddo
     
    168174            mmol(iq)=100.
    169175            count=count+1
     176            idtracers(count) = "dust_submicron"
    170177          endif
    171178        enddo
     
    176183            igcm_stormdust_mass=iq
    177184            count=count+1
     185            idtracers(count) = "stormdust_mass"
    178186          endif
    179187          if (noms(iq).eq."stormdust_number") then
    180188            igcm_stormdust_number=iq
    181189            count=count+1
     190            idtracers(count) = "stormdust_number"
    182191          endif
    183192        enddo
     
    188197            igcm_topdust_mass=iq
    189198            count=count+1
     199            idtracers(count) = "topdust_mass"
    190200          endif
    191201          if (noms(iq).eq."topdust_number") then
    192202            igcm_topdust_number=iq
    193203            count=count+1
     204            idtracers(count) = "topdust_number"
    194205          endif
    195206        enddo
     
    201212          mmol(igcm_co2)=44.
    202213          count=count+1
     214          idtracers(count) = "co2"
    203215        endif
    204216        if (noms(iq).eq."co") then
     
    206218          mmol(igcm_co)=28.
    207219          count=count+1
     220          idtracers(count) = "co"
    208221        endif
    209222        if (noms(iq).eq."o") then
     
    211224          mmol(igcm_o)=16.
    212225          count=count+1
     226          idtracers(count) = "o"
    213227        endif
    214228        if (noms(iq).eq."o1d") then
     
    216230          mmol(igcm_o1d)=16.
    217231          count=count+1
     232          idtracers(count) = "o1d"
    218233        endif
    219234        if (noms(iq).eq."o2") then
     
    221236          mmol(igcm_o2)=32.
    222237          count=count+1
     238          idtracers(count) = "o2"
    223239        endif
    224240        if (noms(iq).eq."o3") then
     
    226242          mmol(igcm_o3)=48.
    227243          count=count+1
     244          idtracers(count) = "o3"
    228245        endif
    229246        if (noms(iq).eq."h") then
     
    231248          mmol(igcm_h)=1.
    232249          count=count+1
     250          idtracers(count) = "h"
    233251        endif
    234252        if (noms(iq).eq."h2") then
     
    236254          mmol(igcm_h2)=2.
    237255          count=count+1
     256          idtracers(count) = "h2"
    238257        endif
    239258        if (noms(iq).eq."oh") then
     
    241260          mmol(igcm_oh)=17.
    242261          count=count+1
     262          idtracers(count) = "oh"
    243263        endif
    244264        if (noms(iq).eq."ho2") then
     
    246266          mmol(igcm_ho2)=33.
    247267          count=count+1
     268          idtracers(count) = "ho2"
    248269        endif
    249270        if (noms(iq).eq."h2o2") then
     
    251272          mmol(igcm_h2o2)=34.
    252273          count=count+1
     274          idtracers(count) = "h2o2"
    253275        endif
    254276        if (noms(iq).eq."n2") then
     
    256278          mmol(igcm_n2)=28.
    257279          count=count+1
     280          idtracers(count) = "n2"
    258281        endif
    259282        if (noms(iq).eq."ch4") then
     
    261284          mmol(igcm_ch4)=16.
    262285          count=count+1
     286          idtracers(count) = "ch4"
    263287        endif
    264288        if (noms(iq).eq."ar") then
     
    266290          mmol(igcm_ar)=40.
    267291          count=count+1
     292          idtracers(count) = "ar"
    268293        endif
    269294        if (noms(iq).eq."n") then
     
    271296          mmol(igcm_n)=14.
    272297          count=count+1
     298          idtracers(count) = "n"
    273299        endif
    274300        if (noms(iq).eq."no") then
     
    276302          mmol(igcm_no)=30.
    277303          count=count+1
     304          idtracers(count) = "no"
    278305        endif
    279306        if (noms(iq).eq."no2") then
     
    281308          mmol(igcm_no2)=46.
    282309          count=count+1
     310          idtracers(count) = "no2"
    283311        endif
    284312        if (noms(iq).eq."n2d") then
     
    286314          mmol(igcm_n2d)=28.
    287315          count=count+1
     316          idtracers(count) = "n2d"
    288317        endif
    289318        if (noms(iq).eq."he") then
     
    291320          mmol(igcm_he)=4.
    292321          count=count+1
     322          idtracers(count) = "he"
    293323        endif
    294324        if (noms(iq).eq."co2plus") then
     
    296326          mmol(igcm_co2plus)=44.
    297327          count=count+1
     328          idtracers(count) = "co2plus"
    298329        endif
    299330        if (noms(iq).eq."oplus") then
     
    301332          mmol(igcm_oplus)=16.
    302333          count=count+1
     334          idtracers(count) = "oplus"
    303335        endif
    304336        if (noms(iq).eq."o2plus") then
     
    306338          mmol(igcm_o2plus)=32.
    307339          count=count+1
     340          idtracers(count) = "o2plus"
    308341        endif
    309342        if (noms(iq).eq."coplus") then
     
    311344          mmol(igcm_coplus)=28.
    312345          count=count+1
     346          idtracers(count) = "coplus"
    313347        endif
    314348        if (noms(iq).eq."cplus") then
     
    316350          mmol(igcm_cplus)=12.
    317351          count=count+1
     352          idtracers(count) = "cplus"
    318353        endif
    319354        if (noms(iq).eq."nplus") then
     
    321356          mmol(igcm_nplus)=14.
    322357          count=count+1
     358          idtracers(count) = "nplus"
    323359        endif
    324360        if (noms(iq).eq."noplus") then
     
    326362          mmol(igcm_noplus)=30.
    327363          count=count+1
     364          idtracers(count) = "noplus"
    328365        endif
    329366        if (noms(iq).eq."n2plus") then
     
    331368          mmol(igcm_n2plus)=28.
    332369          count=count+1
     370          idtracers(count) = "n2plus"
    333371        endif
    334372        if (noms(iq).eq."hplus") then
     
    336374          mmol(igcm_hplus)=1.
    337375          count=count+1
     376          idtracers(count) = "hplus"
    338377        endif
    339378        if (noms(iq).eq."hco2plus") then
     
    341380          mmol(igcm_hco2plus)=45.
    342381          count=count+1
     382          idtracers(count) = "hco2plus"
    343383        endif
    344384        if (noms(iq).eq."hcoplus") then
     
    346386          mmol(igcm_hcoplus)=29.
    347387          count=count+1
     388          idtracers(count) = "hcoplus"
    348389        endif
    349390        if (noms(iq).eq."h2oplus") then
     
    351392          mmol(igcm_h2oplus)=18.
    352393          count=count+1
     394          idtracers(count) = "h2oplus"
    353395        endif
    354396        if (noms(iq).eq."h3oplus") then
     
    356398          mmol(igcm_h3oplus)=19.
    357399          count=count+1
     400          idtracers(count) = "h3oplus"
    358401        endif
    359402        if (noms(iq).eq."ohplus") then
     
    361404          mmol(igcm_ohplus)=17.
    362405          count=count+1
     406          idtracers(count) = "ohplus"
    363407        endif
    364408        if (noms(iq).eq."elec") then
     
    366410          mmol(igcm_elec)=1./1822.89
    367411          count=count+1
     412          idtracers(count) = "elec"
    368413        endif
    369414        if (noms(iq).eq."h2o_vap") then
     
    371416          mmol(igcm_h2o_vap)=18.
    372417          count=count+1
     418          idtracers(count) = "h2o_vap"
    373419        endif
    374420        if (noms(iq).eq."hdo_vap") then
     
    376422          mmol(igcm_hdo_vap)=19.
    377423          count=count+1
     424          idtracers(count) = "hdo_vap"
    378425        endif
    379426        if (noms(iq).eq."od") then
     
    381428          mmol(igcm_od)=18.
    382429          count=count+1
     430          idtracers(count) = "od"
    383431        endif
    384432        if (noms(iq).eq."d") then
     
    386434           mmol(igcm_d)=2.
    387435           count=count+1
     436           idtracers(count) = "d"
    388437        endif
    389438        if (noms(iq).eq."hd") then
     
    391440           mmol(igcm_hd)=3.
    392441           count=count+1
     442           idtracers(count) = "hd"
    393443        endif
    394444        if (noms(iq).eq."do2") then
     
    396446           mmol(igcm_do2)=34.
    397447           count=count+1
     448           idtracers(count) = "do2"
    398449        endif
    399450        if (noms(iq).eq."hdo2") then
     
    401452           mmol(igcm_hdo2)=35.
    402453           count=count+1
     454           idtracers(count) = "hdo2"
    403455        endif
    404456        if (noms(iq).eq."co2_ice") then
     
    406458          mmol(igcm_co2_ice)=44.
    407459          count=count+1
     460          idtracers(count) = "co2_ice"
    408461        endif
    409462        if (noms(iq).eq."h2o_ice") then
     
    411464          mmol(igcm_h2o_ice)=18.
    412465          count=count+1
     466          idtracers(count) = "h2o_ice"
    413467        endif
    414468        if (noms(iq).eq."hdo_ice") then
     
    416470          mmol(igcm_hdo_ice)=19.
    417471          count=count+1
     472          idtracers(count) = "hdo_ice"
    418473        endif
    419474        ! Other stuff: e.g. for simulations using co2 + neutral gaz
     
    422477          mmol(igcm_ar_n2)=30.
    423478          count=count+1
     479          idtracers(count) = "Ar_N2"
    424480        endif
    425481        if (co2clouds) then
     
    427483              igcm_ccnco2_mass=iq
    428484              count=count+1
     485              idtracers(count) = "ccnco2_mass"
    429486           endif
    430487           if (noms(iq).eq."ccnco2_number") then
    431488              igcm_ccnco2_number=iq
    432489              count=count+1
     490              idtracers(count) = "ccnco2_number"
    433491           endif
    434492           if (meteo_flux) then
     
    436494                igcm_ccnco2_meteor_mass=iq
    437495                count=count+1
     496                idtracers(count) = "ccnco2_meteor_mass"
    438497             endif
    439498             if (noms(iq).eq."ccnco2_meteor_number") then
    440499                igcm_ccnco2_meteor_number=iq
    441500                count=count+1
     501                idtracers(count) = "ccnco2_meteor_number"
    442502             endif
    443503           end if
     
    446506              igcm_ccnco2_h2o_number=iq
    447507              count=count+1
     508              idtracers(count) = "ccnco2_h2o_number"
    448509           endif
    449510           if (noms(iq).eq."ccnco2_h2o_mass_ice") then
    450511              igcm_ccnco2_h2o_mass_ice=iq
    451512              count=count+1
     513              idtracers(count) = "ccnco2_h2o_mass_ice"
    452514           endif
    453515           if (noms(iq).eq."ccnco2_h2o_mass_ccn") then
    454516              igcm_ccnco2_h2o_mass_ccn=iq
    455517              count=count+1
     518              idtracers(count) = "ccnco2_h2o_mass_ccn"
    456519           endif
    457520           end if
     
    460523     
    461524      ! check that we identified all tracers:
    462       if (count.ne.nq) then
    463         write(*,*) "initracer: found only ",count," tracers"
    464         write(*,*) "               expected ",nq
     525      if (count /= nq) then
     526        write(*,*) "initracer: found only",count,"tracers but",
     527     &nq,"are expected according to traceur.def!"
     528        write(*,*) "initracer: the only identified tracers are:"
     529        do iq = 1,count
     530          write(*,*) '      ',iq,trim(idtracers(iq))
     531        enddo
    465532        call abort_physic("initracer","tracer mismatch",1)
    466533      else
    467534        write(*,*) "initracer: found all expected tracers, namely:"
    468         do iq=1,nq
    469           write(*,*)'      ',iq,' ',trim(noms(iq))
     535        do iq = 1,nq
     536          write(*,*) '      ',iq,' ',trim(noms(iq))
    470537        enddo
    471538      endif
  • trunk/LMDZ.MARS/libf/phymars/physiq_mod.F

    r3026 r3027  
    38453845        ENDIF ! hdo
    38463846           endif !not.scavenging
    3847         ENDIF ! of IF (water)
    38483847
    38493848! Output needed by the PEM
     
    38933892      CALL write_output("co2_layer1","co2 mass mr in the first layer",
    38943893     &     'kg/kg',zq(:,1,igcm_co2))
     3894        ENDIF ! of IF (water)
    38953895
    38963896!PREVIOUSLY IN 1D ONLY
Note: See TracChangeset for help on using the changeset viewer.