Changeset 1629


Ignore:
Timestamp:
Nov 22, 2016, 12:08:15 PM (8 years ago)
Author:
jaudouard
Message:

Bug fix concerning riceco2 declaration and some cleaning concerning the CO2 clouds scheme

Location:
trunk/LMDZ.MARS
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/README

    r1627 r1629  
    23642364Bug fix in 1D in physiq, missing "if (co2clouds)" around some operations to
    23652365be done only when that option is set.
     2366
     2367== 22/11/2016 == JA
     2368-  Bug fix concerning the "riceco2" variable which was declared as a double or as areal in different routines. riceco2 is now correctly declared as a double evrywhere (updaterad.F and co2cloud.F)
     2369-  Moved CO2 clouds outuputs from physiq_mod.F to co2cloud.F
     2370-  Removed some CO2 clouds properties computation in physiq_mod.F (now done in post-treatment)
  • trunk/LMDZ.MARS/libf/phymars/co2cloud.F

    r1617 r1629  
    8383                                   ! a la chaleur latente
    8484
    85       REAL riceco2(ngrid,nlay)    ! Ice mass mean radius (m)
     85      DOUBLE PRECISION riceco2(ngrid,nlay)    ! Ice mass mean radius (m)
    8686                               ! (r_c in montmessin_2004)
    8787      REAL nuice(ngrid,nlay)   ! Estimated effective variance
     
    755755            enddo
    756756         enddo
    757 c       call WRITEDIAGFI(ngrid,"satuco2","vap in satu","kg/kg",1,
    758 c     &        satuco2)
    759        call WRITEdiagfi(ngrid,"riceco2","ice radius","m"
    760 c     &        ,1,riceco2)
     757       call WRITEDIAGFI(ngrid,"satuco2","vap in satu","kg/kg",1,
     758     &        satuco2)
     759       call WRITEdiagfi(ngrid,"riceco2","ice radius","m"
     760     &        ,1,riceco2)
    761761! or output in diagfi.nc (for testphys1d)
    762762c         call WRITEDIAGFI(ngrid,'ps','Surface pressure','Pa',0,ps)
  • trunk/LMDZ.MARS/libf/phymars/physiq_mod.F

    r1627 r1629  
    18511851
    18521852           if (co2clouds) then
    1853               mtotco2(:)=0
    1854               icetotco2(:)=0
    1855               raveco2(:)=0
    1856               do ig=1,ngrid
    1857                  do l=1,nlayer
    1858                     mtotco2(ig) = mtotco2(ig) +
    1859      &                   zq(ig,l,igcm_co2) *
    1860      &                   (zplev(ig,l) - zplev(ig,l+1)) / g
    1861                     icetotco2(ig) = icetotco2(ig) +
    1862      &                   zq(ig,l,igcm_co2_ice) *
    1863      &                    (zplev(ig,l) - zplev(ig,l+1)) / g
    1864 
    1865 c      Computing abs optical depth at 825 cm-1 in each   ! for now commented for CO2 - listo  layer to simulate NEW TES retrieval
    1866                     Qabsice = min( max(0.4e6*riceco2(ig,l)*
    1867      &                   (1.+nuiceco2_ref)-0.05 ,0.),1.2)
    1868 c                    opTESco2(ig,l)= 0.75 * Qabsice *
     1853c     mtotco2(:)=0
     1854c     icetotco2(:)=0
     1855c     raveco2(:)=0
     1856c     do ig=1,ngrid
     1857c     do l=1,nlayer
     1858c     mtotco2(ig) = mtotco2(ig) +
     1859c     &                   zq(ig,l,igcm_co2) *
     1860c     &                   (zplev(ig,l) - zplev(ig,l+1)) / g
     1861c     icetotco2(ig) = icetotco2(ig) +
     1862c     &                   zq(ig,l,igcm_co2_ice) *
     1863c     &                    (zplev(ig,l) - zplev(ig,l+1)) / g
     1864             
     1865c     Computing abs optical depth at 825 cm-1 in each   ! for now commented for CO2 - listo  layer to simulate NEW TES retrieval
     1866c     Qabsice = min( max(0.4e6*riceco2(ig,l)*
     1867c     &                   (1.+nuiceco2_ref)-0.05 ,0.),1.2)
     1868c     opTESco2(ig,l)= 0.75 * Qabsice *
    18691869c     &                   zq(ig,l,igcm_co2_ice) *
    18701870c     &                   (zplev(ig,l) - zplev(ig,l+1)) / g
    18711871c     &                   / (rho_ice_co2 * riceco2(ig,l)
    18721872c     &                   * (1.+nuiceco2_ref))
    1873 c                    tauTESco2(ig)=tauTESco2(ig)+ opTESco2(ig,l)
    1874                  enddo
    1875               enddo
     1873c     tauTESco2(ig)=tauTESco2(ig)+ opTESco2(ig,l)
     1874c     enddo
     1875c     enddo
    18761876              call co2sat(ngrid*nlayer,zt,zplay,zqsatco2)
    18771877              do ig=1,ngrid
     
    18811881                 enddo
    18821882              enddo
    1883 
     1883             
    18841884              if (scavenging) then
    18851885                 Nccntot(:)= 0
     
    18901890                    do l=1,nlayer
    18911891                       icetotco2(ig) = icetotco2(ig) +
    1892      &                   zq(ig,l,igcm_co2_ice) *
    1893      &                    (zplev(ig,l) - zplev(ig,l+1)) / g
     1892     &                      zq(ig,l,igcm_co2_ice) *
     1893     &                      (zplev(ig,l) - zplev(ig,l+1)) / g
    18941894                       Nccntot(ig) = Nccntot(ig) +
    18951895     &                      zq(ig,l,igcm_ccnco2_number)*tauscaling(ig)
     
    18991899     &                      *(zplev(ig,l) - zplev(ig,l+1)) / g
    19001900cccc  Column integrated effective ice radius
    1901 cccc is weighted by total ice surface area (BETTER than total ice mass)
     1901cccc  is weighted by total ice surface area (BETTER than total ice mass)
    19021902                       raveco2(ig) = raveco2(ig) +
    19031903     &                      tauscaling(ig) *
     
    19241924     &                   max(icetotco2(ig),1.e-30),1.e-30) ! mass weight
    19251925                 enddo
    1926               endif   ! of if (scavenging)
    1927            endif    ! of if (co2clouds)
    1928          endif ! of if (tracer)
     1926              endif             ! of if (scavenging)
     1927           endif                ! of if (co2clouds)
     1928        endif                  ! of if (tracer)
    19291929
    19301930#ifndef MESOSCALE
     
    26822682         
    26832683         
    2684          call WRITEDIAGFI(ngrid,"satuco2","vap in satu","kg/kg",1,
    2685      &        satuco2(1,:))
    2686          call WRITEdiagfi(ngrid,"riceco2","ice radius","m"
    2687      &        ,1,riceco2(1,:))
     2684c         call WRITEDIAGFI(ngrid,"satuco2","vap in satu","kg/kg",1,
     2685c     &        satuco2)
     2686c         call WRITEdiagfi(ngrid,"riceco2","ice radius","m"
     2687c     &        ,1,riceco2)
    26882688! or output in diagfi.nc (for testphys1d)
    26892689         call WRITEDIAGFI(ngrid,'ps','Surface pressure','Pa',0,ps)
    26902690         call WRITEDIAGFI(ngrid,'temp','Temperature ',
    2691      &                       'K JA',1,zt(1,:))
     2691     &                       'K JA',1,zt)
    26922692c         call WRITEDIAGFI(ngrid,'temp2','Temperature ',
    26932693c     &        'K JA2',1,pt)
  • trunk/LMDZ.MARS/libf/phymars/updaterad.F90

    r1619 r1629  
    2323real, parameter :: ricemax  = 500.e-6
    2424
    25 real, parameter :: r3iceco2min = 1.e-30
    26 real, parameter :: riceco2min  = 1.e-10
    27 
    28 real, parameter :: r3iceco2max = 125.e-12
    29 real, parameter :: riceco2max  = 500.e-6
     25double precision, parameter :: r3iceco2min = 1.e-30
     26double precision, parameter :: riceco2min  = 1.e-10
     27
     28double precision, parameter :: r3iceco2max = 125.e-12
     29double precision, parameter :: riceco2max  = 500.e-6
    3030
    3131
     
    112112real, intent(in)  :: qice,qccn,nccn
    113113real, intent(in)  :: coeff         ! this coeff is tauscaling if microphy = T (possibly ccn_factor^-1 otherwise)
    114 real, intent(out) :: rice,rhocloudco2 ! rhocloud is needed for sedimentation and is also a good diagnostic variable
     114real, intent(out) :: rhocloudco2 ! rhocloud is needed for sedimentation and is also a good diagnostic variable
     115double precision, intent(out) :: rice
    115116real nccn_true,qccn_true ! nombre et masse de CCN
    116117   
  • trunk/LMDZ.MARS/makegcm_ifort

    r1540 r1629  
    66########################################################################
    77set dim="64x48x32"
     8set dim="32"
    89set physique=mars
    910set phys="PHYS=$physique"
     
    4041if ( $? == 0 ) then
    4142   echo "*** NETCDF preset *** GNOME cluster"
    42    setenv NCDFLIB /usr/local/lib
    43    setenv NCDFINC /usr/local/include
     43   setenv NCDFLIB /usr/lib64
     44   setenv NCDFINC /usr/include
    4445endif
    4546hostname | grep 'ciclad' > /dev/null
     
    5556   setenv NCDFINC /smplocal/pub/NetCDF/4.1.3/seq/include
    5657endif
     58#### LATMOS
     59hostname | grep 'latmos.ipsl.fr' > /dev/null
     60if ( $? == 0 ) then
     61   echo "*** NETCDF preset *** LATMOS"
     62   setenv NCDFLIB /net/nfs/exoclim/audouard/GCM_MARS/netcdf-4.0.1/lib
     63   setenv NCDFINC /net/nfs/exoclim/audouard/GCM_MARS/netcdf-4.0.1/include
     64endif
     65
     66
     67    setenv NCDFLIB /opt/netcdf43/ifort/lib
     68    setenv NCDFINC /opt/netcdf43/ifort/include
     69
     70
    5771### end NetCDF presets
    5872
     
    189203if $CRAY then
    190204   set optim90="-Wp'-P' -DCRAY "'-p$(LIBO) -eiv '
    191    set oplink="-Wl'-DSTACK=128 -f indef' -L$NCDFLIB -lnetcdf "
     205   set oplink="-Wl'-DSTACK=128 -f indef' -L$NCDFLIB -lnetcdff "
    192206   set mod_loc_dir=" "
    193207   set mod_suffix=" "
     
    195209   set optim90=" -fast"
    196210   set optimtru90=" -fast -free"
    197    set opt_link="-L$NCDFLIB -lnetcdf"
     211   set opt_link="-L$NCDFLIB -lnetcdff"
    198212   set mod_loc_dir=$localdir
    199213   set mod_suffix=mod
     
    420434        else if $LINUX then
    421435           ## for ifort
    422              set optim=" -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug"
    423              set optim90=" -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug"
    424              set optimtru90=" -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug"
     436             set optim=" -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug -DNC_DOUBLE -real-size 64 "
     437             set optim90=" -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug -DNC_DOUBLE -real-size 64  "
     438             set optimtru90=" -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug -DNC_DOUBLE -real-size 64  "
    425439        else
    426440           echo "pas d option debug predefinie pour cette machine"
     
    721735   set f77=ifort
    722736   set f90=ifort
    723    set opt_link=" -L$LIBOGCM -L$NCDFLIB -lnetcdf "
     737   set opt_link=" -L$LIBOGCM -L$NCDFLIB -lnetcdff "
    724738else if $SUN then
    725739   set f77=f90
     
    773787else if $LINUX then
    774788# Ehouarn : adapt to gfortran
    775  set optim="$optim -I${libo} $cpp_def"
    776  set optim90="$optim90 -I${libo} $cpp_def"
    777  set optimtru90="$optimtru90 -I${libo} $cpp_def"
     789 set optim="$optim -I${libo} $cpp_def  -DNC_DOUBLE -real-size 64"
     790 set optim90="$optim90 -I${libo} $cpp_def -DNC_DOUBLE -real-size 64 "
     791 set optimtru90="$optimtru90 -I${libo} $cpp_def  -DNC_DOUBLE -real-size 64"
    778792# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
    779793# set mod_loc_dir=$libo
Note: See TracChangeset for help on using the changeset viewer.