Changeset 285 for trunk/LMDZ.MARS/libf


Ignore:
Timestamp:
Sep 8, 2011, 1:59:47 AM (13 years ago)
Author:
aslmd
Message:

08/09/11 == AS

LMDZ.MARS + MESOSCALE.
---> Setting up a more realistic water ice source at the poles (notably outliers)

surfini.F ?
Main changes and bug fixes

  • reference to comcstfi.h was wrong. big problem because e.g. pi was not known.
  • commented about a problem to be fixed, due to surfini being called before initracer.
  • MESOSCALE: put the mesoscale north cap definition into a precompiling flag #MESOSCALE

for the moment: if [alb_mean_TES > 0.26 and lat > 70] then outliers
(previously done in meso_inc_caps.F)

inifis.F ?
Just changed a comment with wrong formatting

--> below, only MESOSCALE

soil.F ?
if somewhere IT > IT_outliers, then makes it = IT_outliers

physiq.F ?
meso_inc/meso_inc_caps.F ?
meso_inc/meso_inc_ini.F ?
meso_inc_caps no longer called. keep for reference for the moment.

meso_inc/meso_inc_var.F ?
deleted lines with *_lim variables, now useless

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

Legend:

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

    r284 r285  
    430430         
    431431         write(*,*) "frost thickness threshold for albedo ?"
    432          frost_albedo_threshold=0.005 ! 5.4 µm (i.e 0.005 kg/m²)
     432         frost_albedo_threshold=0.005 ! 5.4 mic (i.e 0.005 kg.m-2)
    433433         call getin("frost_albedo_threshold",
    434434     &    frost_albedo_threshold)
  • trunk/LMDZ.MARS/libf/phymars/meso_inc/meso_inc_caps.F

    r283 r285  
    1 
    2       !!!! see meso_inc_ini
    3       ! alb_lim = 0.26
    4       ! lat_lim = 70.
    5       ! inertie_lim = 800.
    6 
    71      !!! This has to go after initracer which change dryness and watercaptag
    82
     
    2317      !!!!
    2418      !IF ( caps .and. (igcm_h2o_ice .ne. 0) ) THEN
     19
    2520      IF ( caps .and. water ) THEN
    2621          PRINT *, 'OVERWRITING watercaptag DEFINITION in INITRACER'
     
    3126          do ig=1,ngridmx
    3227            qsurf(ig,igcm_h2o_ice)=0.  !! on jette les inputs GCM
    33             if ( ( lati(ig)*180./pi .gt. lat_lim ) .and.
    34      .           ( albedodat(ig) .ge. alb_lim    ) )  then
     28            if ( ( lati(ig)*180./pi .gt. 70. ) .and.
     29     .           ( albedodat(ig) .ge. 0.26   ) )  then
    3530                    watercaptag(ig)  = .true.
    3631                    dryness(ig)      = 1.
     
    4439          print *,'caps=T avec water=F ????'
    4540      ENDIF ! (caps)
    46       !!!!!! TEST TEST TEST TEST  AS+JBM 28/02/11
    47       !!!!!! TEST TEST TEST TEST  AS+JBM 28/02/11
    48       !!!!!! TEST TEST TEST TEST  AS+JBM 28/02/11
  • trunk/LMDZ.MARS/libf/phymars/meso_inc/meso_inc_ini.F

    r283 r285  
    6969ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    7070
    71       !!! see meso_inc_caps
    72       !!! this is a test to change outliers' albedo and thermal inertia
    73       alb_lim = 0.26
    74       lat_lim = 70.
    75       inertie_lim = 800.
    76       PRINT *, 'lat_lim ',lat_lim
    77       PRINT *, 'alb_lim ',alb_lim
    78       PRINT *, 'inertie_lim ',inertie_lim
    79       !!!
    80       !!!
    81       IF ( caps .and. water ) THEN
    82           do ig=1,ngridmx
    83             if ( lati(ig)*180./pi .gt. lat_lim ) then
    84                if ( albedodat(ig) .ge. alb_lim ) then
    85                     albedodat(ig) = alb_surfice
    86                     inertiedat(ig,1) = inertie_lim 
    87                endif
    88                if (inertiedat(ig,1) .ge. inertie_lim ) then
    89                     inertiedat(ig,1) = inertie_lim
    90                endif
    91             endif  ! (lati, albedodat)
    92           end do ! (ngridmx)
    93       ENDIF ! (caps)
     71      !!!! see meso_inc_caps
     72      !!!! this is a test to change outliers' albedo and thermal inertia
     73      !alb_lim = 0.26
     74      !lat_lim = 70.
     75      !inertie_lim = 800.
     76      !PRINT *, 'lat_lim ',lat_lim
     77      !PRINT *, 'alb_lim ',alb_lim
     78      !PRINT *, 'inertie_lim ',inertie_lim
     79      !!!!
     80      !!!!
     81      !IF ( caps .and. water ) THEN
     82      !    do ig=1,ngridmx
     83      !      if ( lati(ig)*180./pi .gt. lat_lim ) then
     84      !         if ( albedodat(ig) .ge. alb_lim ) then
     85      !              albedodat(ig) = alb_surfice
     86      !              inertiedat(ig,1) = inertie_lim 
     87      !         endif
     88      !         if (inertiedat(ig,1) .ge. inertie_lim ) then
     89      !              inertiedat(ig,1) = inertie_lim
     90      !         endif
     91      !      endif  ! (lati, albedodat)
     92      !    end do ! (ngridmx)
     93      !ENDIF ! (caps)
  • trunk/LMDZ.MARS/libf/phymars/meso_inc/meso_inc_var.F

    r283 r285  
    1818      INTEGER tracerset    !!! this corresponds to config%mars
    1919      CHARACTER (len=20) :: wtnom(nqmx) ! tracer name
    20 
    21       REAL alb_lim
    22       REAL lat_lim
    23       REAL inertie_lim
  • trunk/LMDZ.MARS/libf/phymars/physiq.F

    r284 r285  
    397397         ENDIF  ! end tracer
    398398
    399 #ifdef MESOSCALE
    400 #include "meso_inc/meso_inc_caps.F"
    401 #endif
     399!#ifdef MESOSCALE
     400!#include "meso_inc/meso_inc_caps.F"
     401!#endif
    402402
    403403#ifndef MESOSCALE
  • trunk/LMDZ.MARS/libf/phymars/soil.F

    r283 r285  
    6767        endif
    6868      enddo
     69
     70#ifdef MESOSCALE
     71      do ig=1,ngrid
     72        if ( therm_i(ig,1) .ge. inert_h2o_ice ) then
     73          print *, "limit max TI ", therm_i(ig,1), inert_h2o_ice
     74          do ik=0,nsoil-1
     75               mthermdiff(ig,ik)=inert_h2o_ice*inert_h2o_ice/volcapa
     76          enddo
     77        endif
     78      enddo
     79#endif
    6980
    7081! 0.2 Build thermdiff(:), the "interlayer" thermal diffusivities
  • trunk/LMDZ.MARS/libf/phymars/surfini.F

    r283 r285  
    1515#include "tracer.h"
    1616#include "comgeomfi.h"
    17 #include "comconst.h"
    18 
     17#include "comcstfi.h"
    1918c
    2019      INTEGER ngrid,ig,icap,iq,alternate
     
    2726c=======================================================================
    2827
    29 
    3028c     water ice outliers
    3129c     ------------------------------------------
    3230
    3331      IF ((water) .and. (caps)) THEN
    34       
     32     
    3533c Perennial H20 north cap defined by watercaptag=true (allows surface to be
    3634c hollowed by sublimation in vdifc).
     
    4846
    4947         alternate = 0
    50          
     48
    5149         do ig=1,ngridmx
    52          
     50       
     51#ifdef MESOSCALE
     52         do iq=1,nqmx
     53         write(*,*) "all qsurf to zero. dirty."
     54         qsurf(ig,iq)=0.  !! on jette les inputs GCM
     55                          !! on regle juste watercaptag
     56                          !! il faudrait garder les inputs GCM
     57                          !! si elles sont consequentes
     58         enddo
     59         if ( ( lati(ig)*180./pi .gt. 70. ) .and.
     60     .        ( albedodat(ig) .ge. 0.26   ) )  then
     61                 write(*,*)"outlier ",ig
     62                 watercaptag(ig)  = .true.
     63                 dryness(ig)      = 1.
     64                 albedodat(ig)    = albedo_h2o_ice  !! pour output
     65         else
     66                 watercaptag(ig)  = .false.
     67                 dryness(ig)      = 1.
     68         endif 
     69#else
     70
    5371         dryness (ig) = 1
    54          
    55 
    56 c Towards olympia planitia water caps ('relatively' low latitude ones)
    57 c---------------- proposition par AS --------------------
    58 c--------------------------------------------------------
    59 c          if ( ( lati(ig)*180./pi      .ge.  75 ) .and.
    60 c     .         ( lati(ig)*180./pi      .le.  77 ) .and.
    61 c     .         ( ( ( long(ig)*180./pi .ge. 000. ) .and.
    62 c     .             ( long(ig)*180./pi .le. 120. ) )
    63 c     .           .or.
    64 c     .           ( ( long(ig)*180./pi .ge. -130. ) .and.
    65 c     .             ( long(ig)*180./pi .le. -115. ) ) ) ) then
    66 c---------------- proposition par TN --------------------
    67 c---------------- HIGHLY EXPERIMENTAL -------------------
    68 c--------------------------------------------------------     
    69           if ( ( ( lati(ig)*180./pi .ge. 73.  ) .and. ! cap #1
    70      .           ( lati(ig)*180./pi .le. 75.1 ) .and.
    71      .           ( long(ig)*180./pi .ge. 95.  ) .and.
    72      .           ( long(ig)*180./pi .le. 110. ) )
    73      .          .or.
    74      .         ( ( lati(ig)*180./pi .ge. 77.  ) .and. ! cap #2
    75      .           ( lati(ig)*180./pi .le. 80.  ) .and.
    76      .           ( long(ig)*180./pi .ge. 110. ) .and.
    77      .           ( long(ig)*180./pi .le. 140. ) )
    78      .          .or.
    79      .         ( ( lati(ig)*180./pi .ge. 74.9 ) .and. ! cap #3
    80      .           ( lati(ig)*180./pi .le. 78.  ) .and.
    81      .           ( long(ig)*180./pi .ge. 155. ) .and.
    82      .           ( long(ig)*180./pi .le. 180. ) )
    83 c     .         .or.
    84 c     .         ( ( lati(ig)*180./pi .ge. 71.  ) .and. ! cap #4 (Korolev crater)
    85 c     .           ( lati(ig)*180./pi .le. 72.  ) .and.
    86 c     .           ( long(ig)*180./pi .ge. 163. ) .and.
    87 c     .           ( long(ig)*180./pi .le. 168. ) )
    88      .          .or.
    89      .         ( ( lati(ig)*180./pi .ge. 74.9 ) .and. ! cap #5
    90      .           ( lati(ig)*180./pi .le. 78.  ) .and.
    91      .           ( long(ig)*180./pi .ge. -160.) .and.
    92      .           ( long(ig)*180./pi .le. -120.) ) )
    93      .          then
    94      
    95              if (temptag) then
    96              
    97                if ((alternate .eq. 0)) then  !!! 1/2 en 64x48 sinon trop large en lat
    98                  if (ngridmx.ne.1) watercaptag(ig)=.true.
    99                   write(*,*) "outliers ", lati(ig)*180./pi,
    100      .              long(ig)*180./pi
    101                 !dryness(ig) = 1.
    102                  alternate = 1
    103                else
    104                  alternate = 0
    105                endif !end if alternate = 0
    106                
    107              else
    108              
    109                if (ngridmx.ne.1) watercaptag(ig)=.true.
    110                   write(*,*) "outliers ", lati(ig)*180./pi,
    111      .              long(ig)*180./pi
    112      
    113              endif ! end if temptag
    114              
    115            endif
    116 
    117 
    118 c Opposite olympia planitia water cap
    119 c---------------- proposition par AS --------------------
     72
     73!!c Towards olympia planitia water caps ('relatively' low latitude ones)
     74!!c---------------- proposition par AS --------------------
     75!!c--------------------------------------------------------
     76!!c          if ( ( lati(ig)*180./pi      .ge.  75 ) .and.
     77!!c     .         ( lati(ig)*180./pi      .le.  77 ) .and.
     78!!c     .         ( ( ( long(ig)*180./pi .ge. 000. ) .and.
     79!!c     .             ( long(ig)*180./pi .le. 120. ) )
     80!!c     .           .or.
     81!!c     .           ( ( long(ig)*180./pi .ge. -130. ) .and.
     82!!c     .             ( long(ig)*180./pi .le. -115. ) ) ) ) then
     83!!c---------------- proposition par TN --------------------
     84!!c---------------- HIGHLY EXPERIMENTAL -------------------
     85!!c--------------------------------------------------------     
     86!!       if ( ( ( lati(ig)*180./pi .ge. 73.  ) .and. ! cap #1
     87!!     .           ( lati(ig)*180./pi .le. 75.1 ) .and.
     88!!     .           ( long(ig)*180./pi .ge. 95.  ) .and.
     89!!     .           ( long(ig)*180./pi .le. 110. ) )
     90!!     .         .or.
     91!!     .         ( ( lati(ig)*180./pi .ge. 77.  ) .and. ! cap #2
     92!!     .           ( lati(ig)*180./pi .le. 80.  ) .and.
     93!!     .           ( long(ig)*180./pi .ge. 110. ) .and.
     94!!     .           ( long(ig)*180./pi .le. 140. ) )
     95!!     .         .or.
     96!!     .         ( ( lati(ig)*180./pi .ge. 74.9 ) .and. ! cap #3
     97!!     .           ( lati(ig)*180./pi .le. 78.  ) .and.
     98!!     .           ( long(ig)*180./pi .ge. 155. ) .and.
     99!!     .           ( long(ig)*180./pi .le. 180. ) )
     100!!c     .               .or.
     101!!c     .         ( ( lati(ig)*180./pi .ge. 71.  ) .and. ! cap #4 (Korolev crater)
     102!!c     .           ( lati(ig)*180./pi .le. 72.  ) .and.
     103!!c     .           ( long(ig)*180./pi .ge. 163. ) .and.
     104!!c     .           ( long(ig)*180./pi .le. 168. ) )
     105!!     .         .or.
     106!!     .         ( ( lati(ig)*180./pi .ge. 74.9 ) .and. ! cap #5
     107!!     .           ( lati(ig)*180./pi .le. 78.  ) .and.
     108!!     .           ( long(ig)*180./pi .ge. -160.) .and.
     109!!     .           ( long(ig)*180./pi .le. -120.) ) )
     110!!     .         then
     111!!     
     112!!             if (temptag) then
     113!!             
     114!!               if ((alternate .eq. 0)) then  !!! 1/2 en 64x48 sinon trop large en lat
     115!!                if (ngridmx.ne.1) watercaptag(ig)=.true.
     116!!                  write(*,*) "outliers ", lati(ig)*180./pi,
     117!!     .              long(ig)*180./pi
     118!!                  !dryness(ig) = 1.
     119!!                  alternate = 1
     120!!                else
     121!!                  alternate = 0
     122!!                endif !end if alternate = 0
     123!!               
     124!!             else
     125!!             
     126!!               if (ngridmx.ne.1) watercaptag(ig)=.true.
     127!!                  write(*,*) "outliers ", lati(ig)*180./pi,
     128!!     .              long(ig)*180./pi
     129!!     
     130!!             endif ! end if temptag
     131!!             
     132!!           endif
     133!!
     134!!
     135!!c Opposite olympia planitia water cap
     136!!c---------------- proposition par AS --------------------
     137!!c--------------------------------------------------------
     138!!c           if ( ( lati(ig)*180./pi      .ge.  82 ) .and.
     139!!c     .          ( lati(ig)*180./pi      .le.  84 ) .and.
     140!!c     .          ( ( long(ig)*180./pi .gt. -030. ) .and.
     141!!c     .          ( long(ig)*180./pi .lt.  090. ) ) ) then
     142!!c---------------- proposition par TN --------------------
     143!!c--------------------------------------------------------
     144!!           if ( ( lati(ig)*180./pi     .ge.  80 ) .and.
     145!!     .          ( lati(ig)*180./pi     .le.  84 ) .and.
     146!!     .          ( ( long(ig)*180./pi .gt. -030. ) .and.
     147!!     .            ( long(ig)*180./pi .lt.  090. ) ) ) then
     148!!              if (ngridmx.ne.1) then
     149!!                watercaptag(ig)=.true.
     150!!                write(*,*) "central cap add ", lati(ig)*180./pi,
     151!!     .            long(ig)*180./pi
     152!!              endif
     153!!              !dryness(ig) = 1.
     154!!           endif
     155
     156c Central cap
     157c---------------- anciens reglages FF -------------------
    120158c--------------------------------------------------------
    121 c           if ( ( lati(ig)*180./pi      .ge.  82 ) .and.
    122 c     .          ( lati(ig)*180./pi      .le.  84 ) .and.
    123 c     .          ( ( long(ig)*180./pi .gt. -030. ) .and.
    124 c     .          ( long(ig)*180./pi .lt.  090. ) ) ) then
    125 c---------------- proposition par TN --------------------
    126 c--------------------------------------------------------
    127            if ( ( lati(ig)*180./pi     .ge.  80 ) .and.
    128      .          ( lati(ig)*180./pi     .le.  84 ) .and.
    129      .          ( ( long(ig)*180./pi .gt. -030. ) .and.
    130      .            ( long(ig)*180./pi .lt.  090. ) ) ) then
    131               if (ngridmx.ne.1) then
    132                 watercaptag(ig)=.true.
    133                 write(*,*) "central cap add ", lati(ig)*180./pi,
    134      .            long(ig)*180./pi
    135               endif
    136               !dryness(ig) = 1.
    137            endif
    138 
    139 c Central cap
    140 c---------------- proposition par TN --------------------
    141 c--------------------------------------------------------
     159
    142160           if (lati(ig)*180./pi.gt.84) then
    143161             PRINT*,'central cap', lati(ig)*180./pi,
     
    146164             !dryness(ig) = 1.
    147165c Use the following cap definition for high spatial resolution (latitudinal bin <= 5 deg)
    148 c             if (lati(ig)*180./pi.lt.85.and.long(ig).ge.0) then
    149 c               if (ngridmx.ne.1) watercaptag(ig)=.true.
     166c             if (lati(ig)*180./pi.lt.85.and.long(ig).ge.0) then
     167c               if (ngridmx.ne.1) watercaptag(ig)=.true.
    150168c               dryness(ig) = 1.
    151 c             endif
     169c             endif
    152170c             if (lati(ig)*180./pi.ge.85) then
    153171c               if (ngridmx.ne.1) watercaptag(ig)=.true.
    154172c               dryness(ig) = 1.
    155 c             endif
    156            endif  ! (lati>84 deg)
    157           
     173c             endif
     174           endif  ! (lati>80 deg)
     175#endif     
    158176         end do ! (ngridmx)
    159177        ENDIF ! (caps & water)
     
    214232          do iq=1,nqmx
    215233c          if there is frost and surface albedo is set to albedo_h2o_ice
     234!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     235!!!! AS: problem initracer has not been called yet
     236!!!!      noms(iq) has no information
     237!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    216238           if(noms(iq).eq."h2o_ice") then
    217239             do ig=1,ngrid
Note: See TracChangeset for help on using the changeset viewer.