Ignore:
Timestamp:
Jan 15, 2010, 11:35:59 AM (15 years ago)
Author:
Laurent Fairhead
Message:
  • sauvegarde de variables des thermiques dans le restart physique
  • modification de iostart pour pouvoir sauvegarder des champs en klevp1
  • nettoyage sur physiq.F pour gfortran
  • variables from the new version of the thermics are saved to the restart file
  • iostart is modified to allow the writing of fields dimensionned in klevp1
  • some clean-up work on physiq.F for the gfortran compilation
Location:
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/iostart.F90

    r1001 r1298  
    55    INTEGER,SAVE :: nid_restart
    66   
    7     INTEGER,SAVE :: idim1,idim2,idim3
     7    INTEGER,SAVE :: idim1,idim2,idim3,idim4
    88    INTEGER,PARAMETER :: length=100
    99   
     
    317317      ierr = NF90_DEF_DIM (nid_restart, "points_physiques", klon_glo, idim2)
    318318      ierr = NF90_DEF_DIM (nid_restart, "horizon_vertical", klon_glo*klev, idim3)
     319      ierr = NF90_DEF_DIM (nid_restart, "horizon_klevp1", klon_glo*klevp1, idim4)
    319320
    320321      ierr = NF90_ENDDEF(nid_restart)
     
    386387   
    387388    IF (is_mpi_root .AND. is_omp_root) THEN
    388      
     389
    389390      IF (field_size==1) THEN
    390391        idim=idim2
    391392      ELSE IF (field_size==klev) THEN
    392393        idim=idim3
     394      ELSE IF (field_size==klevp1) THEN
     395        idim=idim4
    393396      ELSE
    394397        PRINT *, "erreur phyredem : probleme de dimension"
     
    467470         
    468471    IF (is_mpi_root .AND. is_omp_root) THEN
    469    
     472
    470473      IF (var_size/=length) THEN
    471474        PRINT *, "erreur phyredem : probleme de dimension"
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phyetat0.F

    r1279 r1298  
    999999      PRINT*,'(ecart-type) wake_fip:', xmin, xmax
    10001000c
     1001c  thermiques
     1002c
     1003
     1004      CALL get_field("FM_THERM",fm_therm,found)
     1005      IF (.NOT. found) THEN
     1006         PRINT*, "phyetat0: Le champ <fm_therm> est absent"
     1007         PRINT*, "Depart legerement fausse. Mais je continue"
     1008         fm_therm=0.
     1009      ENDIF
     1010      xmin = 1.0E+20
     1011      xmax = -1.0E+20
     1012      xmin = MINval(fm_therm)
     1013      xmax = MAXval(fm_therm)
     1014      PRINT*,'(ecart-type) fm_therm:', xmin, xmax
     1015
     1016      CALL get_field("ENTR_THERM",entr_therm,found)
     1017      IF (.NOT. found) THEN
     1018         PRINT*, "phyetat0: Le champ <entr_therm> est absent"
     1019         PRINT*, "Depart legerement fausse. Mais je continue"
     1020         entr_therm=0.
     1021      ENDIF
     1022      xmin = 1.0E+20
     1023      xmax = -1.0E+20
     1024      xmin = MINval(entr_therm)
     1025      xmax = MAXval(entr_therm)
     1026      PRINT*,'(ecart-type) entr_therm:', xmin, xmax
     1027
     1028      CALL get_field("DETR_THERM",detr_therm,found)
     1029      IF (.NOT. found) THEN
     1030         PRINT*, "phyetat0: Le champ <detr_therm> est absent"
     1031         PRINT*, "Depart legerement fausse. Mais je continue"
     1032         detr_therm=0.
     1033      ENDIF
     1034      xmin = 1.0E+20
     1035      xmax = -1.0E+20
     1036      xmin = MINval(detr_therm)
     1037      xmax = MAXval(detr_therm)
     1038      PRINT*,'(ecart-type) detr_therm:', xmin, xmax
     1039
     1040
     1041
     1042c
    10011043c Read and send field trs to traclmdz
    10021044c
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phyredem.F

    r1279 r1298  
    247247      ENDDO
    248248c
    249       CALL put_field("ZMEA","",zmea)
    250 c
    251       CALL put_field("ZSTD","",zstd)
    252      
    253       CALL put_field("ZSIG","",zsig)
    254      
    255       CALL put_field("ZGAM","",zgam)
    256      
    257       CALL put_field("ZTHE","",zthe)
    258      
    259       CALL put_field("ZPIC","",zpic)
    260      
    261       CALL put_field("ZVAL","",zval)
     249      CALL put_field("ZMEA","ZMEA",zmea)
     250c
     251      CALL put_field("ZSTD","ZSTD",zstd)
     252     
     253      CALL put_field("ZSIG","ZSIG",zsig)
     254     
     255      CALL put_field("ZGAM","ZGAM",zgam)
     256     
     257      CALL put_field("ZTHE","ZTHE",zthe)
     258     
     259      CALL put_field("ZPIC","ZPIC",zpic)
     260     
     261      CALL put_field("ZVAL","ZVAL",zval)
    262262     
    263263      CALL put_field("RUGSREL","RUGSREL",rugoro)
    264264     
    265       CALL put_field("TANCIEN","",t_ancien)
    266      
    267       CALL put_field("QANCIEN","",q_ancien)
     265      CALL put_field("TANCIEN","TANCIEN",t_ancien)
     266     
     267      CALL put_field("QANCIEN","QANCIEN",q_ancien)
    268268     
    269269      CALL put_field("RUGMER","Longueur de rugosite sur mer",
     
    300300cIM wake_deltat, wake_deltaq, wake_s, wake_cstar, wake_fip
    301301     
    302       CALL put_field("ZMAX0","",zmax0)
    303      
    304       CALL put_field("F0","",f0)
    305      
    306       CALL put_field("EMA_WORK1","",ema_work1)
    307      
    308       CALL put_field("EMA_WORK2","",ema_work2)
     302      CALL put_field("ZMAX0","ZMAX0",zmax0)
     303     
     304      CALL put_field("F0","F0",f0)
     305     
     306      CALL put_field("EMA_WORK1","EMA_WORK1",ema_work1)
     307     
     308      CALL put_field("EMA_WORK2","EMA_WORK2",ema_work2)
    309309     
    310310c wake_deltat
    311       CALL put_field("WAKE_DELTAT","",wake_deltat)
    312 
    313       CALL put_field("WAKE_DELTAQ","",wake_deltaq)
    314      
    315       CALL put_field("WAKE_S","",wake_s)
    316      
    317       CALL put_field("WAKE_CSTAR","",wake_cstar)
    318      
    319       CALL put_field("WAKE_FIP","",wake_fip)
    320 
     311      CALL put_field("WAKE_DELTAT","WAKE_DELTAT",wake_deltat)
     312
     313      CALL put_field("WAKE_DELTAQ","WAKE_DELTAQ",wake_deltaq)
     314     
     315      CALL put_field("WAKE_S","WAKE_S",wake_s)
     316     
     317      CALL put_field("WAKE_CSTAR","WAKE_CSTAR",wake_cstar)
     318     
     319      CALL put_field("WAKE_FIP","WAKE_FIP",wake_fip)
     320
     321c thermiques
     322
     323      CALL put_field("FM_THERM","FM_THERM",fm_therm)
     324
     325      CALL put_field("ENTR_THERM","ENTR_THERM",entr_therm)
     326
     327      CALL put_field("DETR_THERM","DETR_THERM",detr_therm)
    321328
    322329! trs from traclmdz_mod
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/physiq.F

    r1294 r1298  
    458458c
    459459c cnameisccp
    460       CHARACTER *27 cnameisccp(lmaxm1,kmaxm1)
     460      CHARACTER *29 cnameisccp(lmaxm1,kmaxm1)
    461461cIM bad 151205     DATA cnameisccp/'pc< 50hPa, tau< 0.3',
    462462      DATA cnameisccp/'pc= 50-180hPa, tau< 0.3',
     
    12021202c         pmflxr=0.
    12031203c         pmflxs=0.
    1204         first=.false.
     1204        first=.false.
    12051205
    12061206      endif  ! first
     
    18221822        call writefield_phy('v_seri',v_seri,llm)
    18231823        call writefield_phy('t_seri',t_seri,llm)
    1824         call writefield_phy('q_seri',q_seri,llm)
     1824        call writefield_phy('q_seri',q_seri,llm)
    18251825      endif
    18261826
     
    18791879        call writefield_phy('v_seri',v_seri,llm)
    18801880        call writefield_phy('t_seri',t_seri,llm)
    1881         call writefield_phy('q_seri',q_seri,llm)
     1881        call writefield_phy('q_seri',q_seri,llm)
    18821882      endif
    18831883
     
    21832183        call writefield_phy('v_seri',v_seri,llm)
    21842184        call writefield_phy('t_seri',t_seri,llm)
    2185         call writefield_phy('q_seri',q_seri,llm)
     2185        call writefield_phy('q_seri',q_seri,llm)
    21862186      endif
    21872187
     
    23062306      clwcon0th(:,:)=0.
    23072307c
    2308       fm_therm(:,:)=0.
    2309       entr_therm(:,:)=0.
    2310       detr_therm(:,:)=0.
     2308c      fm_therm(:,:)=0.
     2309c      entr_therm(:,:)=0.
     2310c      detr_therm(:,:)=0.
    23112311c
    23122312      IF(prt_level>9)WRITE(lunout,*)
     
    26232623        call writefield_phy('v_seri',v_seri,llm)
    26242624        call writefield_phy('t_seri',t_seri,llm)
    2625         call writefield_phy('q_seri',q_seri,llm)
     2625        call writefield_phy('q_seri',q_seri,llm)
    26262626      endif
    26272627
     
    28042804       IF (thermcep) THEN
    28052805        IF(zt2m(i).LT.RTT) then
    2806         Lheat=RLSTT
    2807         ELSE
    2808         Lheat=RLVTT
     2806        Lheat=RLSTT
     2807        ELSE
     2808        Lheat=RLVTT
    28092809        ENDIF
    28102810       ELSE
     
    28122812         Lheat=RLSTT
    28132813        ELSE
    2814         Lheat=RLVTT
     2814        Lheat=RLVTT
    28152815        ENDIF
    28162816       ENDIF
     
    28672867     $                          cdragm,
    28682868     $                          pctsrf,
    2869      $                          pdtphys,
    2870      $                          itap)
     2869     $                          pdtphys,
     2870     $                            itap)
    28712871
    28722872         CALL VTe(VTinca)
     
    29232923        call writefield_phy('v_seri',v_seri,llm)
    29242924        call writefield_phy('t_seri',t_seri,llm)
    2925         call writefield_phy('q_seri',q_seri,llm)
     2925       call writefield_phy('q_seri',q_seri,llm)
    29262926      endif
    29272927     
     
    30023002        call writefield_phy('v_seri',v_seri,llm)
    30033003        call writefield_phy('t_seri',t_seri,llm)
    3004         call writefield_phy('q_seri',q_seri,llm)
     3004        call writefield_phy('q_seri',q_seri,llm)
    30053005      endif
    30063006 
     
    30833083        call writefield_phy('v_seri',v_seri,llm)
    30843084        call writefield_phy('t_seri',t_seri,llm)
    3085         call writefield_phy('q_seri',q_seri,llm)
     3085        call writefield_phy('q_seri',q_seri,llm)
    30863086      endif
    30873087     
     
    31473147        call writefield_phy('v_seri',v_seri,llm)
    31483148        call writefield_phy('t_seri',t_seri,llm)
    3149         call writefield_phy('q_seri',q_seri,llm)
     3149        call writefield_phy('q_seri',q_seri,llm)
    31503150      endif
    31513151
     
    32503250
    32513251         print*,'Attention on met a 0 les thermiques pour phystoke'
    3252         call phystokenc (
     3252        call phystokenc (
    32533253     I                   nlon,klev,pdtphys,rlon,rlat,
    32543254     I                   t,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
     
    34033403        call writefield_phy('v_seri',v_seri,llm)
    34043404        call writefield_phy('t_seri',t_seri,llm)
    3405         call writefield_phy('q_seri',q_seri,llm)
     3405        call writefield_phy('q_seri',q_seri,llm)
    34063406      endif
    34073407
Note: See TracChangeset for help on using the changeset viewer.