Changeset 3976


Ignore:
Timestamp:
Aug 6, 2021, 4:30:26 PM (3 years ago)
Author:
fhourdin
Message:

Options supplementaires pour iniacademic

Location:
LMDZ6/trunk/libf
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3d/iniacademic.F90

    r2622 r3976  
    6767  LOGICAL ok_geost             ! Initialisation vent geost. ou nul
    6868  LOGICAL ok_pv                ! Polar Vortex
    69   REAL phi_pv,dphi_pv,gam_pv   ! Constantes pour polar vortex
     69  REAL phi_pv,dphi_pv,gam_pv,tetanoise   ! Constantes pour polar vortex
    7070
    7171  real zz,ran1
     
    117117  CALL inigeom
    118118  CALL inifilr
     119
     120  ! Initialize pressure and mass field if read_start=.false.
     121  IF (.NOT. read_start) THEN
     122     ! surface pressure
     123     if (iflag_phys>2) then
     124        ! specific value for CMIP5 aqua/terra planets
     125        ! "Specify the initial dry mass to be equivalent to
     126        !  a global mean surface pressure (101325 minus 245) Pa."
     127        ps(:)=101080. 
     128     else
     129        ! use reference surface pressure
     130        ps(:)=preff
     131     endif
     132     ! ground geopotential
     133     phis(:)=0.
     134     CALL pression ( ip1jmp1, ap, bp, ps, p       )
     135     if (pressure_exner) then
     136       CALL exner_hyb( ip1jmp1, ps, p, pks, pk)
     137     else
     138       call exner_milieu(ip1jmp1,ps,p,pks,pk)
     139     endif
     140     CALL massdair(p,masse)
     141  ENDIF
    119142
    120143  if (llm == 1) then
     
    167190     gam_pv=4.              ! -dT/dz vortex (in K/km)
    168191     CALL getin('gam_pv',gam_pv)
     192     tetanoise=0.005
     193     CALL getin('tetanoise',tetanoise)
     194
    169195
    170196     ! 2. Initialize fields towards which to relax
     
    219245     ! 3. Initialize fields (if necessary)
    220246     IF (.NOT. read_start) THEN
    221         ! surface pressure
    222         if (iflag_phys>2) then
    223            ! specific value for CMIP5 aqua/terra planets
    224            ! "Specify the initial dry mass to be equivalent to
    225            !  a global mean surface pressure (101325 minus 245) Pa."
    226            ps(:)=101080. 
    227         else
    228            ! use reference surface pressure
    229            ps(:)=preff
    230         endif
    231        
    232         ! ground geopotential
    233         phis(:)=0.
    234 
    235         CALL pression ( ip1jmp1, ap, bp, ps, p       )
    236         if (pressure_exner) then
    237           CALL exner_hyb( ip1jmp1, ps, p, pks, pk)
    238         else
    239           call exner_milieu(ip1jmp1,ps,p,pks,pk)
    240         endif
    241         CALL massdair(p,masse)
    242 
    243247        ! bulk initialization of temperature
    244         teta(:,:)=tetarappel(:,:)
     248
     249        IF (iflag_phys>10000) THEN
     250        ! Particular case to impose a constant temperature T0=0.01*iflag_physx
     251           teta(:,:)= 0.01*iflag_phys/(pk(:,:)/cpp)
     252        ELSE
     253           teta(:,:)=tetarappel(:,:)
     254        ENDIF
    245255
    246256        ! geopotential
    247257        CALL geopot(ip1jmp1,teta,pk,pks,phis,phi)
     258
     259        DO l=1,llm
     260          print*,'presnivs,play,l',presnivs(l),(pk(1,l)/cpp)**(1./kappa)*preff
     261         !pks(ij) = (cpp/preff) * ps(ij)
     262         !pk(ij,1) = .5*pks(ij)
     263         ! pk = cpp * (p/preff)^kappa
     264        ENDDO
    248265
    249266        ! winds
     
    292309        do l=1,llm
    293310           do ij=iip2,ip1jm
    294               teta(ij,l)=teta(ij,l)*(1.+0.005*ran1(idum))
     311              teta(ij,l)=teta(ij,l)*(1.+tetanoise*ran1(idum))
    295312           enddo
    296313        enddo
  • LMDZ6/trunk/libf/dyn3dmem/iniacademic_loc.F90

    r3435 r3976  
    7373  LOGICAL ok_geost             ! Initialisation vent geost. ou nul
    7474  LOGICAL ok_pv                ! Polar Vortex
    75   REAL phi_pv,dphi_pv,gam_pv   ! Constantes pour polar vortex
     75  REAL phi_pv,dphi_pv,gam_pv,tetanoise   ! Constantes pour polar vortex
    7676
    7777  real zz,ran1
     
    122122  CALL inigeom
    123123  CALL inifilr
     124
     125  ! Initialize pressure and mass field if read_start=.false.
     126  IF (.NOT. read_start) THEN
     127    ! allocate global fields:
     128!    allocate(vcov_glo(ip1jm,llm))
     129    allocate(ucov_glo(ip1jmp1,llm))
     130    allocate(teta_glo(ip1jmp1,llm))
     131    allocate(ps_glo(ip1jmp1))
     132    allocate(masse_glo(ip1jmp1,llm))
     133    allocate(phis_glo(ip1jmp1))
     134
     135     ! surface pressure
     136     if (iflag_phys>2) then
     137        ! specific value for CMIP5 aqua/terra planets
     138        ! "Specify the initial dry mass to be equivalent to
     139        !  a global mean surface pressure (101325 minus 245) Pa."
     140        ps_glo(:)=101080. 
     141     else
     142        ! use reference surface pressure
     143        ps_glo(:)=preff
     144     endif
     145     
     146     ! ground geopotential
     147     phis_glo(:)=0.
     148
     149     CALL pression ( ip1jmp1, ap, bp, ps_glo, p       )
     150     if (pressure_exner) then
     151       CALL exner_hyb( ip1jmp1, ps_glo, p, pks, pk )
     152     else
     153       call exner_milieu(ip1jmp1,ps_glo,p,pks,pk)
     154     endif
     155     CALL massdair(p,masse_glo)
     156  ENDIF
     157
    124158
    125159  if (llm == 1) then
     
    172206     gam_pv=4.              ! -dT/dz vortex (in K/km)
    173207     CALL getin('gam_pv',gam_pv)
     208     tetanoise=0.005
     209     CALL getin('tetanoise',tetanoise)
    174210
    175211     ! 2. Initialize fields towards which to relax
     
    224260     ! 3. Initialize fields (if necessary)
    225261     IF (.NOT. read_start) THEN
    226        ! allocate global fields:
    227 !       allocate(vcov_glo(ip1jm,llm))
    228        allocate(ucov_glo(ip1jmp1,llm))
    229        allocate(teta_glo(ip1jmp1,llm))
    230        allocate(ps_glo(ip1jmp1))
    231        allocate(masse_glo(ip1jmp1,llm))
    232        allocate(phis_glo(ip1jmp1))
    233 
    234         ! surface pressure
    235         if (iflag_phys>2) then
    236            ! specific value for CMIP5 aqua/terra planets
    237            ! "Specify the initial dry mass to be equivalent to
    238            !  a global mean surface pressure (101325 minus 245) Pa."
    239            ps_glo(:)=101080. 
    240         else
    241            ! use reference surface pressure
    242            ps_glo(:)=preff
    243         endif
    244        
    245         ! ground geopotential
    246         phis_glo(:)=0.
    247 
    248         CALL pression ( ip1jmp1, ap, bp, ps_glo, p       )
    249         if (pressure_exner) then
    250           CALL exner_hyb( ip1jmp1, ps_glo, p, pks, pk )
    251         else
    252           call exner_milieu(ip1jmp1,ps_glo,p,pks,pk)
    253         endif
    254         CALL massdair(p,masse_glo)
    255 
    256262        ! bulk initialization of temperature
    257         teta_glo(:,:)=tetarappel(:,:)
    258 
     263        IF (iflag_phys>10000) THEN
     264        ! Particular case to impose a constant temperature T0=0.01*iflag_phys
     265           teta_glo(:,:)= 0.01*iflag_phys/(pk(:,:)/cpp)
     266        ELSE
     267           teta_glo(:,:)=tetarappel(:,:)
     268        ENDIF
    259269        ! geopotential
    260270        CALL geopot(ip1jmp1,teta_glo,pk,pks,phis_glo,phi)
     
    306316        do l=1,llm
    307317           do ij=iip2,ip1jm
    308               teta_glo(ij,l)=teta_glo(ij,l)*(1.+0.005*ran1(idum))
     318              teta_glo(ij,l)=teta_glo(ij,l)*(1.+tetanoise*ran1(idum))
    309319           enddo
    310320        enddo
Note: See TracChangeset for help on using the changeset viewer.