Changeset 6 in lmdz_wrf for WRFV3/phys


Ignore:
Timestamp:
Jul 18, 2014, 11:20:11 AM (11 years ago)
Author:
lfita
Message:

Fixing problem with the solar radiation:

1.- Correct values for the julian and the hour (0,1) to the LMDZ physiq

Adding NaN checking for 'PSFC' and 'T_2'

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WRFV3/phys/module_lmdz_phys.F

    r1 r6  
    9191         & wi_start,wi_end,wj_start,wj_end
    9292    INTEGER, INTENT(IN)                                  :: wparfirstscal, wnum3dm
    93     INTEGER, INTENT(IN)                                  :: wjulday
     93    REAL, INTENT(IN)                                     :: wjulday
    9494    REAL, INTENT(IN)                                     :: wtime_step
    9595    INTEGER, INTENT(IN)                                  :: wrf_qvid, wrf_qcid,      &
     
    235235! wnum_tiles: number of tiles
    236236! wjulday: WRF julian day
    237 ! wgmt: WRF gmt hour
     237! wgmt: WRF gmt hour (0, 1)
    238238! wtime_step: WRF time-step (in seconds)
    239239! wrf_dbg: level of debug from WRF
     
    375375      ' wrf_xtime: ',wrf_xtime,' wrf_rst: ', wrf_isrestart,' wrf_lwbdy: ',           &
    376376      wrf_islowbdyin
    377     PRINT *,'     '//TRIM(Spt)//': k p ph ___________'
    378     DO iz=1,dimz
    379       PRINT  *,iz,wrf_perP(ip,iz,jp),wrf_perGeopot(ip,iz,jp)
    380     END DO
    381     PRINT *,'dimx: ',dimx,' dimy: ',dimy,' dimz: ',dimz,' ddimx: ',ddimx,' ddimy: ',ddimy
    382377
    383378    phykeys=0.
     
    390385    lmdz_lafin = .FALSE.
    391386
    392 !    PRINT *,'Lluis: i j ij lon lat lonvals latvals_______'
    393387    DO iy=1,ddimy
    394388      DO ix=1,ddimx
     
    400394        LatValues(ddimx*(iy-1)+ix) = wrf_Lat(ix,iy)*Pi/180.
    401395        PsfctendValues(ddimx*(iy-1)+ix) = wrf_psfctend(ix,iy)
    402 !        PRINT *,ix,iy,(ddimx)*(iy-1)+ix,wrf_Lon(ix,iy),LonValues(ddimx*(iy-1)+ix),   &
    403 !          wrf_Lat(ix,iy),LatValues(ddimx*(iy-1)+ix)
    404396      END DO
    405397    END DO
     
    533525          wrf_grid%loce,wrf_grid%lsic)
    534526
    535         PRINT *,'    Lluis ltksoil. '// Spt //' ter: ',wrf_grid%lter(ip,jp),' lic: ',&
    536           wrf_grid%llic(ip,jp),' loce: ', wrf_grid%loce(ip,jp),' sic: ',             &
    537           wrf_grid%lsic(ip,jp)
    538 
    539527! LANDMASK in LMDZ as fractions
    540528        wrf_grid%lmsk = wrf_grid%lter + wrf_grid%llic
     
    565553! Value is given at the first time-step, not any more, since it will be continuously
    566554!   used by LMDZ
    567          PRINT *,'  Lluis before '//TRIM(Spt)//' SMOIS: ',wrf_grid%smois(ip,:,jp),   &
    568            ' dzs: ',wrf_grid%dzs,' lwsol: ',wrf_grid%lwsol(ip,jp)
    569555! l. Fita, LMD. January 2014
    570556! This should be in this way, but, because we can not use any scheme DZS=0., so
     
    574560!            wrf_grid%soil_layers(:,iz,:)/100.
    575561!        END DO
    576         PRINT *,'  Lluis after: '//TRIM(Spt)//' SMOIS: ',wrf_grid%smois(ip,:,jp),    &
    577            ' lwsol: ',wrf_grid%lwsol(ip,jp)     
    578562        DO iz=1,4
    579563          wrf_grid%ltksoil(:,iz,:)=wrf_grid%st(:,1,:)
     
    626610        ORCHIDEElevels = (/ 0.098, 0.1955, 0.5865, 1.3685, 2.9326, 6.0606, 12.3167,  &
    627611          24.8289, 49.8534, 99.9022, 200. /)
    628         PRINT *,'  Lluis interpolating:',SIZE(wrf_grid%soil_layers(ip,:,jp)),' : ',  &
    629           ' soil: ',                                                                 &
    630           wrf_grid%soil_layers(ip,SIZE(wrf_grid%soil_layers(ip,:,jp)):1:-1,jp),      &
    631           ' st: ',wrf_grid%st(ip,:,jp), 11, ' | ', ORCHIDEElevels,' soiltop: ',      &
    632           wrf_grid%soilctop(ip,:,jp),' soilbot: ',wrf_grid%soilcbot(ip,:,jp)
    633612
    634613        datasetname = soilcat
     
    671650!L. Fita, LMD. January 2014 Soil layers are in cm!
    672651
    673             IF ( (ix == ip) .AND. (iy == jp)) PRINT *,' Lluis '//TRIM(Spt)//         &
    674               ' soiltop: ', wrf_grid%soilctop(ix,:,iy),' soilbot: ',                 &
    675               wrf_grid%soilcbot(ix,:,iy),' layers: ',                                &
    676               wrf_grid%soil_layers(ix,Nsoillayers:1:-1,iy)/100.,' sm: ',             &
    677               wrf_grid%sm(ix,:,iy)
    678652
    679653! NOTE: wrf_dx, wrf_dy should be matrix !!!
     
    684658              soilTmass, wrf_grid%lwsol(ix,iy))
    685659
    686             IF ( (ix == ip) .AND. (iy == jp)) PRINT *,'TOTAL soil mass at '//        &
    687               TRIM(Spt)//': ', soilTmass,' [kg] water content: ',                    &
    688               wrf_grid%lwsol(ix,iy), ' [kg] equiv. water depth: ',                   &
    689               wrf_grid%lwsol(ix,iy)/(wrf_dx*wrf_dy*1000.)
    690 
    691660            wrf_grid%lwsol(ix,iy) =  wrf_grid%lwsol(ix,iy)/(wrf_dx*wrf_dy*1000.)
    692661
     
    694663              wrf_grid%soil_layers(ix,SIZE(wrf_grid%soil_layers(ix,:,iy)):1:-1,iy),  &
    695664              wrf_grid%st(ix,:,iy),11, ORCHIDEElevels,wrf_grid%lotter(ix,:,iy))
    696             IF ( (ix == ip) .AND. (iy == jp)) PRINT *,' Lluis orchidee temperature'//&
    697               ' at '// TRIM(Spt)//': ',wrf_grid%lotter(ix,:,iy)
    698 !            IF ( (ix == ip) .AND. (iy == jp)) STOP
    699665          END DO
    700666        END DO
     
    852818        wrf_grid%lzrugsrel = wrf_grid%lrugKsoil(:,1,:)
    853819
    854         PRINT *,'Lluis Topography values at',ip, jp, ' zmea: ',                      &
    855           wrf_grid%lzmea(ip,jp),' zstd: ',wrf_grid%lzstd(ip,jp),' zsig: ',           &
    856           wrf_grid%lzsig(ip,jp),' zgam: ',wrf_grid%lzgam(ip,jp),' zthe: ',           &
    857           wrf_grid%lzthe(ip,jp),' zpic: ',wrf_grid%lzpic(ip,jp),' zval: ',           &
    858           wrf_grid%lzval(ip,jp),' rugoro: ',wrf_grid%lzrugsrel(ip,jp)
    859 
    860820! R = 8.3144621 ([J mol/K] http://en.wikipedia.org/wiki/Gas_constant)
    861821! mu = 28.97 (Molecular Mass of Air [kg/kmol] from http://www.engineeringtoolbox.com/molecular-mass-air-d_679.html)
     
    867827
    868828!  Grids do not start/end at the same index
    869 !!      PRINT *,'  Lluis: Creating area/cu/cv...'
    870829      wrf_area = 0.
    871830      wrf_cu = 0.
     
    899858      CALL lmdz_vars_init(ddimxy)
    900859
    901 !      PRINT *,'  Lluis before loading 5 11 ltksoil: ',wrf_grid%ltksoil(5,:,11),      &
    902 !        ' ftsol: ',ftsol(315,:)
    903 !      PRINT *,'  Lluis before loading 5 11 qsurf: ',qsurf(315,:),' qsurf_rst: ',     &
    904 !        qsurf_rst(315,:),' smois :',wrf_grid%smois(5,:,11),' lqksoil: ',             &
    905 !        wrf_grid%lqksoil(5,:,11)
    906 
    907860      CALL load_lmdz(wrf_grid,ddimx,ddimy,dimz,wbdyw,ddimxy,4,11,rlon,rlat,zmasq,    &
    908861        pctsrf,ftsol,ftsoil_rst,qsurf_rst,qsol_rst,falb1,falb2,evap_rst,snow_rst,    &
     
    916869        rugos_rst, agesno_rst, ftsoil_rst)
    917870      CALL fonte_neige_init(restart_runoff)
    918 
    919       PRINT *,'  Lluis on module restart_runoff: ',UBOUND(restart_runoff)
    920       PRINT *,'    ffonte_global: ',ALLOCATED(ffonte_global)
    921       PRINT *,'    fqfonte_global: ',ALLOCATED(fqfonte_global)
    922       PRINT *,'    fqcalving_global: ',ALLOCATED(fqcalving_global)
    923 
    924       PRINT *,'  Lluis after loading '//TRIM(Spt)//':  qsurf_rst: ', qsurf_rst(lp,:),&
    925         ' smois :',wrf_grid%smois(ip,:,jp),' lqksoil: ', wrf_grid%lqksoil(ip,:,jp)
    926 
    927       PRINT *,'  Lluis after loading '//TRIM(Spt)//' ltksoil: ',                     &
    928         wrf_grid%ltksoil(ip,:,jp),' ftsol: ',ftsol(lp,:)
    929 
    930       PRINT *,'  Lluis after loading '//TRIM(Spt)//' lwsol: ',wrf_grid%lwsol(ip,jp), &
    931         ' qsol_rst: ',qsol_rst(lp)
    932 
    933       PRINT *,'  Lluis lmdz pt= ',lp,' k qsurf_rst qsol_rst evap_rst snow_rst ' //   &
    934         'fder_rst agesno_rst rugos_rst'
    935       DO iz=1,4
    936         PRINT *,'    * ',iz,qsurf_rst(lp,iz),qsol_rst(lp), evap_rst(lp,iz),          &
    937           snow_rst(lp,iz),fder_rst(lp), agesno_rst(lp,iz),rugos_rst(lp,iz)
    938         PRINT *,'      ftsoil: ',ftsoil_rst(lp,:,iz)
    939       END DO
    940871
    941872      DO ix=1,ddimx
     
    959890      CALL NOread_limit_init(ddimxy, klon_glo)
    960891
    961       PRINT *,'   Lluis klon_glo,', klon_glo,' klon: ',klon,'lp= ',lp,' sst: ',sst(lp)
    962892      sst_glo = sst(1:ddimxy)
    963893! In ocean_forced_mod is used as tsurf_limit = sst(knindex(1:knon))
    964894      tsurf_limit = ftsol(:,3)
    965       PRINT *,'   Lluis pt tsurf_limit_check_____'
    966       DO ix=-10,10
    967         PRINT *,lp+ix,tsurf_limit(lp+ix),sst(lp+ix)
    968       END DO
    969895
    970896! In surf_land_bucket_mod is used as z0_new=rugos(knindex(1:knon),1) [z0_new == z0_limit]
    971897      z0_limit = rugos_rst(:,1)
    972898      alb_limit = albedo
    973       PRINT *,'  Lluis pre-limit_values ftsol: ',ftsol(lp,:),' pctsrf: ',pctsrf(lp,:)
    974       PRINT *,'  Lluis limit_values lp= ',lp,' tsurf_limit: ',tsurf_limit(lp),       &
    975         ' z0_limit: ', z0_limit(lp),' alb_limit: ',alb_limit(lp)
    976899
    977900      rug_glo = rugos_rst(:,is_ter)
     
    981904!      temps=wjulday
    982905
    983 !!      PRINT *,'  Lluis: calling iniphysiq'
    984906      CALL iniphysiq(ddimx*ddimy, dimz, 86400., wjulday, wtime_step,                    &
    985907        & LatValues, LonValues, wrf_area, CUValues, CVValues, 1./reradius, g, r_d, cp,  &
     
    999921      PRINT *,'  Lluis: END of firststep !!!!!'
    1000922    END IF firststep
    1001 
    1002     ip = 12
    1003     jp = 7
    1004     PRINT *,'  ',wrf_grid%itimestep,' Lluis at 12 7: ',wrf_grid%lter(ip,jp), wrf_grid%llic(ip,jp), &
    1005       wrf_grid%loce(ip,jp), wrf_grid%lsic(ip,jp), ' rugksoil: ',                     &
    1006       wrf_grid%lrugksoil(ip,1,jp), wrf_grid%lrugksoil(ip,2,jp),                      &
    1007       wrf_grid%lrugksoil(ip,3,jp), wrf_grid%lrugksoil(ip,4,jp),' rug: ',             &
    1008       wrf_grid%lrug(ip,jp)
    1009     ip = 6
    1010     jp = 9
    1011     PRINT *,'  ',wrf_grid%itimestep,' Lluis at 6 9: ',wrf_grid%lter(ip,jp), wrf_grid%llic(ip,jp), &
    1012       wrf_grid%loce(ip,jp), wrf_grid%lsic(ip,jp), ' rugksoil: ',                     &
    1013       wrf_grid%lrugksoil(ip,1,jp), wrf_grid%lrugksoil(ip,2,jp),                      &
    1014       wrf_grid%lrugksoil(ip,3,jp), wrf_grid%lrugksoil(ip,4,jp),' rug: ',             &
    1015       wrf_grid%lrug(ip,jp)
    1016923
    1017924    ip=icheck_p
     
    1067974      PRINT *,'  ' // subname // ': Problem allocating WRF moisture array!', ierr
    1068975    END IF
    1069 
    1070 !!    PRINT *,'  Lluis wrf MOIST:',LBOUND(wrf_MOIST),' x ',UBOUND(wrf_MOIST)
    1071 !!    PRINT *,'Mix ratio: ',LBOUND(MixingRatioValues),' x ', UBOUND(MixingRatioValues)
    1072976
    1073977    IF (ALLOCATED(MixingRatiotendValues)) DEALLOCATE(MixingRatiotendValues)
     
    12301134    END IF
    12311135
    1232     PRINT *,'  Lluis before physiq '//TRIM(Spt)//' ltksoil: ',                       &
    1233       wrf_grid%ltksoil(ip,:,jp), ' ftsol: ',ftsol(lp,:)
    1234 
    1235     PRINT *,'  Lluis beofre physiq '//TRIM(Spt)//' qsurf: ',zxqsurf(lp),             &
    1236         ' qsurf_rst: ',qsurf_rst(lp,:),' smois :',wrf_grid%smois(ip,:,jp),           &
    1237         ' lqksoil: ', wrf_grid%lqksoil(ip,:,jp)
    1238 
    1239     PRINT *,'  Lluis before physiq: '//TRIM(Spt)//' FullPressValues HalfPressValues '&
    1240        // 'GeopotValues UValues VValues TValues: '
    1241     DO iz=1,dimz
    1242       PRINT *,FullPressValues(lp,iz), HalfPressValues(lp,iz), GeopotValues(lp,iz),   &
    1243         UValues(lp,iz), VValues(lp,iz), TValues(lp,iz)
    1244     END DO
    1245 
    1246     ip = 23
    1247     jp = 18
    1248     PRINT *,'  ',wrf_grid%itimestep,' Lluis before physiq at ',ip,', ', jp,' sst: ', &
    1249       wrf_grid%sst(ip,jp), sst((jp-1)*ddimx+ip),' ftsol 3: ',ftsol((jp-1)*ddimx+ip,is_oce)
    1250 
    12511136    ip=icheck_p
    12521137    jp=jcheck_p
     
    12811166       &  lmdz_dudyn, lmdz_PVtheta)
    12821167
    1283     PRINT *,'  Lluis after physiq '//TRIM(Spt)//' ltksoil: ',                        &
    1284       wrf_grid%ltksoil(ip,:,jp), ' ftsol: ',ftsol(315,:)
    1285     PRINT *,'  Lluis after physiq '//TRIM(Spt)//' qsurf: ',zxqsurf(lp),              &
    1286         ' qsurf_rst: ', qsurf_rst(lp,:),' smois :',wrf_grid%smois(ip,:,jp),          &
    1287         ' lqksoil: ', wrf_grid%lqksoil(ip,:,jp)
    1288     PRINT *,'  Lluis after physiq: '//TRIM(Spt)//' FullPressValues HalfPressValues ' &
    1289        // 'GeopotValuesUValues VValues TValues: '
    1290     DO iz=1,dimz
    1291       PRINT *,FullPressValues(lp,iz), HalfPressValues(lp,iz), GeopotValues(lp,iz),   &
    1292         UValues(lp,iz), VValues(lp,iz), TValues(lp,iz)
    1293     END DO
    1294 
    1295     ip = 23
    1296     jp = 18
    1297     PRINT *,'  ',wrf_grid%itimestep,' Lluis after physiq at ',ip,', ', jp,' sst: ', &
    1298       wrf_grid%sst(ip,jp), sst((jp-1)*ddimx+ip),' ftsol 3: ',ftsol((jp-1)*ddimx+ip,is_oce)
    1299 
    13001168    ip=icheck_p
    13011169    jp=jcheck_p
     
    13701238    wrf_Vtend(wime,:,wjme) = wrfVtenddestagg(wime-1,:,wjme-1)
    13711239
    1372     PRINT *,'  Lluis ' // TRIM(Spt) // ' wrf_Utend: ',wrf_Utend(ip,1,jp),            &
    1373       ' wrfUtenddestagg a: ', wrfUtenddestagg(ip-1,1,jp),' wrfUtenddestagg b: ',     &
    1374       wrfUtenddestagg(ip,1,jp), ' wrfUtenddestagg c: ',wrfUtenddestagg(ip+1,1,jp),   &
    1375       ' UtendValues: ', UtendValues(lp,1),' lp: ',lp
    1376     PRINT *,'dim UtendValues: ',1-wbdyw,':',dimx-1-wbdyw+1,', ',dimz+1,', ',1-wbdyw,':',dimy-1-wbdyw+1
    13771240!!    wrf_Ttend = wrf_Temptend
    13781241
     
    14671330    LMDZvarmethod = 'prod'
    14681331
    1469     PRINT *,'  AFTER physic and before recomputing!!!!!'
    1470     ip = 12
    1471     jp = 7
    1472     PRINT *,'  ',wrf_grid%itimestep,' Lluis at 12 7: ',wrf_grid%lter(ip,jp), wrf_grid%llic(ip,jp), &
    1473       wrf_grid%loce(ip,jp), wrf_grid%lsic(ip,jp), ' rugksoil: ',                   &
    1474       wrf_grid%lrugksoil(ip,1,jp), wrf_grid%lrugksoil(ip,2,jp),                    &
    1475       wrf_grid%lrugksoil(ip,3,jp), wrf_grid%lrugksoil(ip,4,jp),' rug: ',           &
    1476       wrf_grid%lrug(ip,jp)
    1477     ip = 6
    1478     jp = 9
    1479     PRINT *,'  ',wrf_grid%itimestep,' Lluis at 6 9: ',wrf_grid%lter(ip,jp), wrf_grid%llic(ip,jp), &
    1480       wrf_grid%loce(ip,jp), wrf_grid%lsic(ip,jp), ' rugksoil: ',                   &
    1481       wrf_grid%lrugksoil(ip,1,jp), wrf_grid%lrugksoil(ip,2,jp),                    &
    1482       wrf_grid%lrugksoil(ip,3,jp), wrf_grid%lrugksoil(ip,4,jp),' rug: ',           &
    1483       wrf_grid%lrug(ip,jp)
    1484 
    14851332    CALL wrf_varKsoil(wims,wime,wjms,wjme,dimx,dimy,wbdyw,LMDZvarmethod,             &
    14861333      wrf_grid%lter,wrf_grid%llic,wrf_grid%loce,wrf_grid%lsic,                       &
     
    14881335      wrf_grid%lrugksoil(:,4,:),wrf_grid%lrug)
    14891336
    1490     PRINT *,'  AFTER physic and recomputing!!!!!'
    1491     ip = 12
    1492     jp = 7
    1493     PRINT *,'  ',wrf_grid%itimestep,' Lluis at 12 7: ',wrf_grid%lter(ip,jp), wrf_grid%llic(ip,jp), &
    1494       wrf_grid%loce(ip,jp), wrf_grid%lsic(ip,jp), ' rugksoil: ',                   &
    1495       wrf_grid%lrugksoil(ip,1,jp), wrf_grid%lrugksoil(ip,2,jp),                    &
    1496       wrf_grid%lrugksoil(ip,3,jp), wrf_grid%lrugksoil(ip,4,jp),' rug: ',           &
    1497       wrf_grid%lrug(ip,jp)
    1498     ip = 6
    1499     jp = 9
    1500     PRINT *,'  ',wrf_grid%itimestep,' Lluis at 6 9: ',wrf_grid%lter(ip,jp), wrf_grid%llic(ip,jp), &
    1501       wrf_grid%loce(ip,jp), wrf_grid%lsic(ip,jp), ' rugksoil: ',                   &
    1502       wrf_grid%lrugksoil(ip,1,jp), wrf_grid%lrugksoil(ip,2,jp),                    &
    1503       wrf_grid%lrugksoil(ip,3,jp), wrf_grid%lrugksoil(ip,4,jp),' rug: ',           &
    1504       wrf_grid%lrug(ip,jp)
    1505 
    1506     ip = 23
    1507     jp = 18
    1508     PRINT *,'  ',wrf_grid%itimestep,' Lluis at ',ip,', ', jp,' sst : ',              &
    1509       wrf_grid%sst(ip,jp), sst((jp-1)*ddimx+ip),' ftsol 3: ',ftsol((jp-1)*ddimx+ip,is_oce)
    1510  
    15111337    CALL wrf_varKsoil(wims,wime,wjms,wjme,dimx,dimy,wbdyw,LMDZvarmethod,             &
    15121338      wrf_grid%lter,wrf_grid%llic,wrf_grid%loce,wrf_grid%lsic,                       &
     
    15531379!       & wrf_grid%seed2)
    15541380
    1555     ip = 23
    1556     jp = 18
    1557     PRINT *,'  ',wrf_grid%itimestep,' Lluis after put at ',ip,', ', jp,' sst: ',     &
    1558       wrf_grid%sst(ip,jp), sst((jp-1)*ddimx+ip),' ftsol 3: ',ftsol((jp-1)*ddimx+ip,is_oce)
    1559 
    15601381    ip=icheck_p
    15611382    jp=jcheck_p
     
    16541475!       & wrf_grid%lweakinv, wrf_grid%lwind10m, wrf_grid%lwind10max, wrf_grid%lzmax_th)
    16551476
    1656     PRINT *, '   Lluis: wrf_grid%la_th', UBOUND(wrf_grid%la_th),' fraca: ',UBOUND(fraca)
    16571477!    DO iz=wkms, wkme-2
    16581478!      CALL get_lmdz_out3D_z_i(wims, wime, wjms, wjme, iz, ddimx, ddimy, dimz, wbdyw, &
     
    18201640!    END DO
    18211641
    1822     PRINT *,'  Lluis Loading done! iz ldtlwr _______________'
    1823     DO iz=1,dimz
    1824       PRINT *,iz,wrf_grid%ldtlwr(ip,iz,jp)
    1825     END DO
    1826 
    18271642!    CALL get_lmdz_out3D_ii(wims, wime, wjms, wjme, wkms, wkme, ddimx, ddimy, dimz,   &
    18281643!      & wbdyw, ddimxy, nbsrf, nsoilmx, lmdzmixingratios, 1, 2, wrf_l_thermals,       &
Note: See TracChangeset for help on using the changeset viewer.