Changeset 1642 for trunk/LMDZ.VENUS/libf


Ignore:
Timestamp:
Dec 13, 2016, 11:38:35 AM (8 years ago)
Author:
slebonnois
Message:

SL: implementation of XIOS outputs + removal of deltatemp (chemistry) + bug correction in radlwsw

Location:
trunk/LMDZ.VENUS/libf/phyvenus
Files:
4 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.VENUS/libf/phyvenus/clesphys.h

    r1442 r1642  
    1212       LOGICAL ok_kzmin
    1313       LOGICAL callnlte,callnirco2,callthermos
    14        LOGICAL ok_cloud, ok_chem, reinit_trac, ok_sedim, ok_deltatemp
     14       LOGICAL ok_cloud, ok_chem, reinit_trac, ok_sedim
    1515       INTEGER nbapp_rad, nbapp_chim, iflag_con, iflag_ajs
    1616       INTEGER lev_histins, lev_histday, lev_histmth
     
    2727     &     ok_orodr, ok_orolf, ok_gw_nonoro, ok_kzmin,                  &
    2828     &     callnlte,callnirco2,callthermos,                             &
    29      &     ok_cloud, ok_chem, reinit_trac, ok_sedim, ok_deltatemp
     29     &     ok_cloud, ok_chem, reinit_trac, ok_sedim
    3030
    3131       COMMON/clesphys_i/ nbapp_rad, nbapp_chim,                        &
  • trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90

    r1442 r1642  
    116116!Config Key  = OK_mensuel
    117117!Config Desc = Pour des sorties mensuelles
    118 !Config Def  = .true.
     118!Config Def  = .false.
    119119!Config Help = Pour creer le fichier histmth contenant les sorties
    120120!              mensuelles
    121121!
    122   ok_mensuel = .true.
     122  ok_mensuel = .false.
    123123  call getin('OK_mensuel', ok_mensuel)
    124124!
     
    361361  ok_sedim = .FALSE.
    362362  call getin('ok_sedim',ok_sedim)
    363 
    364 !
    365 !Config Key  = ok_deltatemp
    366 !Config Desc = 
    367 !Config Def  = .FALSE.
    368 !Config Help =
    369 !
    370   ok_deltatemp = .FALSE.
    371   call getin('ok_deltatemp',ok_deltatemp)
    372363
    373364!
     
    502493  write(numout,*)' ok_chem = ',ok_chem
    503494  write(numout,*)' ok_sedim = ',ok_sedim
    504   write(numout,*)' ok_deltatemp = ',ok_deltatemp
    505495  write(numout,*)' nb_mode = ',nb_mode
    506496  write(numout,*)' callnlte = ',callnlte
  • trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F

    r1621 r1642  
    7979      use mod_grid_phy_lmdz, only: nbp_lon
    8080      use infotrac_phy, only: iflag_trac, tname, ttext
     81      use vertical_layers_mod, only: pseudoalt
     82#ifdef CPP_XIOS     
     83      use xios_output_mod, only: initialize_xios_output,
     84     &                           update_xios_timestep,
     85     &                           send_xios_field
     86#endif
    8187      IMPLICIT none
    8288c======================================================================
     
    333339      REAL :: d_tr(klon,klev,nqmax)
    334340
    335 c Champ de modification de la temperature par rapport a VIRAII
    336       REAL delta_temp(klon,klev)
    337 c      SAVE delta_temp
    338       REAL mat_dtemp(33,50)
    339       SAVE mat_dtemp
    340 
    341341c Variables tendance sedimentation
    342342
     
    469469
    470470         CALL printflag( ok_journe,ok_instan )
     471
     472#ifdef CPP_XIOS
     473
     474         write(*,*) "physiq: call initialize_xios_output"
     475         call initialize_xios_output(rjourvrai,gmtime,pdtphys,RDAY,
     476     &                               presnivs,pseudoalt)
     477#endif
     478
    471479c
    472480c---------
     
    654662      endif
    655663
    656 c======================================================================
    657 c      Lecture du fichier DeltaT
    658 c======================================================================
    659 
    660 c     ATTENTION tout ce qui suit est pour un 48*32*50
    661 
    662       if (ok_deltatemp) then
    663 
    664       print*,'lecture de VenusDeltaT.txt '
    665       open(99, form = 'formatted', status = 'old', file =
    666      &     'VenusDeltaT.dat')
    667       print*,'Ouverture de VenusDeltaT.txt '
    668 
    669       DO ilev = 1, klev
    670          read(99,'(33(1x,e13.6))') (mat_dtemp(ilat,ilev),ilat=1,33)
    671          print*,'lecture de VenusDeltaT.txt ligne:',ilev
    672       ENDDO
    673      
    674       close(99)
    675       print*,'FIN lecture de VenusDeltaT.txt ok.'
    676 
    677       DO k = 1, klev
    678       DO i = 1, klon     
    679          ilat=(latitude_deg(i)/5.625) + 17.
    680          delta_temp(i,k)=mat_dtemp(INT(ilat),k)
    681       ENDDO
    682       ENDDO
    683      
    684       endif
    685        
    686664      ENDIF ! debut
    687665c======================================================================
    688666c======================================================================
     667! ------------------------------------------------------
     668!   Initializations done at every physical timestep:
     669! ------------------------------------------------------
    689670
    690671c Mettre a zero des variables de sortie (pour securite)
     
    744725     s      , fs_bound, fq_bound )
    745726      END IF
     727
     728c====================================================================
     729c XIOS outputs
     730
     731#ifdef CPP_XIOS     
     732      ! update XIOS time/calendar
     733      call update_xios_timestep
     734#endif     
    746735
    747736c====================================================================
     
    878867! Case 3: Full chemistry and/or clouds
    879868
    880          if (ok_deltatemp) then
    881 !           PRINT*,'Def de delta_temp'
    882            DO k = 1, klev
    883            DO i = 1, klon     
    884              ilat=(latitude_deg(i)/5.625) + 17.
    885 !             PRINT*,INT(ilat),latitude_deg(i),mat_dtemp(INT(ilat),k)
    886              delta_temp(i,k)=mat_dtemp(INT(ilat),k)
    887            ENDDO
    888            ENDDO
    889      
    890          endif
    891 
    892 !         Pas appel concentrations car BUG ... comprend pas
    893 !         valeur de mmean trop hautes 5,25E+29
    894 !         call concentrations2(pplay,t_seri,d_t,tr_seri, nqmax)
    895 
    896          if (ok_deltatemp) then
    897 ! Utilisation du champ de temperature modifie         
    898            call phytrac_chimie(                             
    899      I             debut,
    900      I             gmtime,
    901      I             nqmax,
    902      I             klon,
    903      I             latitude_deg,
    904      I             longitude_deg,
    905      I             nlev,
    906      I             dtime,
    907      I             t_seri+delta_temp,
    908      I             pplay,
    909      O             tr_seri)
    910          else
    911          
    912869           call phytrac_chimie(                             
    913870     I             debut,
     
    922879     I             pplay,
    923880     O             tr_seri)
    924          endif
    925881
    926882c        CALL WriteField_phy('Pression',pplay,nlev)
     
    935891         if (ok_sedim) then
    936892
    937          if (ok_deltatemp) then
    938 ! Utilisation du champ de temperature modifie 
    939            CALL new_cloud_sedim(
    940      I                 klon,
    941      I                     nlev,
    942      I                     dtime,
    943      I                 pplay,
    944      I                     paprs,
    945      I                     t_seri+delta_temp,
    946      I                 tr_seri,
    947      O                     d_tr_sed,
    948      O                     d_tr_ssed,
    949      I                     nqmax,
    950      O                 Fsedim)
    951          else
    952          
    953893           CALL new_cloud_sedim(
    954894     I                 klon,
     
    963903     I                     nqmax,
    964904     O                 Fsedim)
    965 
    966          endif
    967905
    968906        DO k = 1, klev
     
    17421680#endif
    17431681
     1682#endif
     1683
     1684! XIOS outputs
     1685! This can be done ANYWHERE in the physics routines !
     1686
     1687#ifdef CPP_XIOS     
     1688! Send fields to XIOS: (NB these fields must also be defined as
     1689! <field id="..." /> in context_lmdz_physics.xml to be correctly used)
     1690     
     1691      CALL send_xios_field("phis",phis)
     1692      cell_area_out(:)=cell_area(:)
     1693      if (is_north_pole_phy) cell_area_out(1)=cell_area(1)/nbp_lon
     1694      if (is_south_pole_phy) cell_area_out(klon)=cell_area(klon)/nbp_lon
     1695      CALL send_xios_field("aire",cell_area_out)
     1696      CALL send_xios_field("tsol",ftsol)
     1697      CALL send_xios_field("psol",paprs(:,1))
     1698      CALL send_xios_field("ue",ue)
     1699c VENUS: regardee a l envers!!!!!!!!!!!!!!!
     1700      CALL send_xios_field("ve",-1.*ve)
     1701
     1702      CALL send_xios_field("temp",t_seri)
     1703      CALL send_xios_field("vitu",u_seri)
     1704c VENUS: regardee a l envers!!!!!!!!!!!!!!!
     1705      CALL send_xios_field("vitv",-1.*v_seri)
     1706     
    17441707#endif
    17451708
  • trunk/LMDZ.VENUS/libf/phyvenus/radlwsw.F

    r1639 r1642  
    401401       if (isza0.eq.-99) then
    402402         mat0  = indexve(lat) +ips0
    403          mat0A = indexve(latA)+ips0A
    404          mat0B = indexve(latB)+ips0B
     403         if (latA.gt.0) then
     404           mat0A = indexve(latA)+ips0A
     405           mat0B = indexve(latB)+ips0B
     406         endif
    405407       else
    406408         mat0  = indexve(lat) +(isza0 -1)*nbpsve(lat) +ips0
    407          mat0A = indexve(latA)+(isza0A-1)*nbpsve(latA)+ips0A
    408          mat0B = indexve(latB)+(isza0B-1)*nbpsve(latB)+ips0B
     409         if (latA.gt.0) then
     410           mat0A = indexve(latA)+(isza0A-1)*nbpsve(latA)+ips0A
     411           mat0B = indexve(latB)+(isza0B-1)*nbpsve(latB)+ips0B
     412         endif
    409413       endif
    410414
  • trunk/LMDZ.VENUS/libf/phyvenus/xios_output_mod.F90

    r1641 r1642  
    8080    endif
    8181
    82     ! Initialize the XIOS domain coreesponding to this process:
     82    ! Initialize the XIOS domain corresponding to this process:
    8383    if (prt_level>=10) write(lunout,*) "initialize_xios_output: call wxios_domain_param"
    8484    CALL wxios_domain_param("dom_glo", is_sequential, nbp_lon, jj_nb, nbp_lon, nbp_lat, &
    8585                            1, nbp_lon, ii_begin, ii_end, jj_begin, jj_end,             &
    8686                            klon_mpi+2*(nbp_lon-1), data_ibegin, data_iend,             &
    87                             lat_reg*(180./pi), lon_reg*(180./pi),                       &
     87! VENUS IS SEEN UPSIDE DOWN, SO CENTRAL SYMMETRY TO PUT NORTH UP AGAIN
     88                           -1.*lat_reg*(180./pi), -1.*lon_reg*(180./pi),                &
    8889                            is_south_pole_dyn,mpi_rank)
    8990
     
    100101                              start_date=start_date, &
    101102                              time_origin=time_origin, &
    102                               month_lengths=[30,30,30,30,30,30,30,30,30,30,30,30])
     103                              month_lengths=[2])
    103104   
    104105    ! 4. Finalize the context:
Note: See TracChangeset for help on using the changeset viewer.