Skip to content

Commit 826c40d

Browse files
committed
Merge remote-tracking branch 'origin/feature/wmputman/LM_v12rc19_WMP' into feature/sdrabenh/gcm_v12
2 parents 18b5563 + e7a81d7 commit 826c40d

12 files changed

+1269
-279
lines changed

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90

Lines changed: 590 additions & 9 deletions
Large diffs are not rendered by default.

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/GEOS_GwdGridComp.F90

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,13 +466,14 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC )
466466
type (ESMF_Alarm ) :: ALARM
467467
type (ESMF_Grid ) :: ESMFGRID
468468

469+
integer :: I, J, L
469470
integer :: IM, JM, LM
470471
!integer :: pgwv
471472
real :: tcrib
472473
!real :: effgworo, effgwbkg
473474
!real :: CDMBGWD1, CDMBGWD2
474475
!real :: bgstressmax
475-
real, pointer, dimension(:,:) :: LATS
476+
real, pointer, dimension(:,:) :: LONS, LATS
476477

477478
! Rayleigh friction parameters
478479

@@ -520,7 +521,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC )
520521

521522
call MAPL_Get(MAPL, &
522523
IM=IM, JM=JM, LM=LM, &
523-
RUNALARM=ALARM, LATS=LATS, &
524+
RUNALARM=ALARM, LONS=LONS, LATS=LATS, &
524525
_RC )
525526

526527
! If its time, recalculate the GWD tendency
@@ -832,6 +833,30 @@ subroutine Gwd_Driver(RC)
832833

833834
if (allocated(scratch_ridge)) deallocate(scratch_ridge)
834835

836+
if(associated( T_EXP )) then
837+
do L=1,LM
838+
do J=1,JM
839+
do I=1,IM
840+
if (T_EXP(I,J,L) > 333.0) then
841+
print *, "Temperature spike detected : ", T_EXP(I,J,L)
842+
print *, " GWD TOT Temp Increment : ", DTDT_TOT(I,J,L)*DT
843+
print *, " GWD BKG Temp Increment : ", DTDT_BKG(I,J,L)*DT
844+
print *, " GWD ORO Temp Increment : ", DTDT_ORO(I,J,L)*DT
845+
print *, " GWD RAH Temp Increment : ", DTDT_RAH(I,J,L)*DT
846+
print *, " AFTER GWD Parameterization"
847+
print *, " Latitude =", LATS(I,J)*180.0/MAPL_PI
848+
print *, " Longitude =", LONS(I,J)*180.0/MAPL_PI
849+
print *, " Pressure (mb) =", PMID(I,J,L)/100.0
850+
if (associated(U_EXP) .AND. associated(V_EXP)) then
851+
print *, " UWND =", U_EXP(I,J,L)
852+
print *, " VWND =", V_EXP(I,J,L)
853+
endif
854+
endif
855+
end do ! IM loop
856+
end do ! JM loop
857+
end do ! LM loop
858+
endif
859+
835860
! All done
836861
!-----------
837862
RETURN_(ESMF_SUCCESS)

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_BACM_1M_InterfaceMod.F90

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -716,13 +716,13 @@ subroutine BACM_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC)
716716
endwhere
717717
RAD_CF = TMP3D
718718
endif
719-
call FILLQ2ZERO(RAD_QV, MASS, TMP2D)
720-
call FILLQ2ZERO(RAD_QL, MASS, TMP2D)
721-
call FILLQ2ZERO(RAD_QI, MASS, TMP2D)
722-
call FILLQ2ZERO(RAD_QR, MASS, TMP2D)
723-
call FILLQ2ZERO(RAD_QS, MASS, TMP2D)
724-
call FILLQ2ZERO(RAD_QG, MASS, TMP2D)
725-
call FILLQ2ZERO(RAD_CF, MASS, TMP2D)
719+
call FILLQ2ZERO(RAD_QV, MASS, RC=STATUS); VERIFY_(STATUS)
720+
call FILLQ2ZERO(RAD_QL, MASS, RC=STATUS); VERIFY_(STATUS)
721+
call FILLQ2ZERO(RAD_QI, MASS, RC=STATUS); VERIFY_(STATUS)
722+
call FILLQ2ZERO(RAD_QR, MASS, RC=STATUS); VERIFY_(STATUS)
723+
call FILLQ2ZERO(RAD_QS, MASS, RC=STATUS); VERIFY_(STATUS)
724+
call FILLQ2ZERO(RAD_QG, MASS, RC=STATUS); VERIFY_(STATUS)
725+
call FILLQ2ZERO(RAD_CF, MASS, RC=STATUS); VERIFY_(STATUS)
726726
RAD_QL = MIN( RAD_QL , 0.001 ) ! Still a ridiculously large
727727
RAD_QI = MIN( RAD_QI , 0.001 ) ! value.
728728
RAD_QR = MIN( RAD_QR , 0.01 ) ! value.

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90

Lines changed: 110 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ subroutine GFDL_1M_Initialize (MAPL, CLOCK, RC)
239239
call ESMF_AlarmGet(ALARM, RingInterval=TINT, RC=STATUS); VERIFY_(STATUS)
240240
call ESMF_TimeIntervalGet(TINT, S_R8=DT_R8,RC=STATUS); VERIFY_(STATUS)
241241
DT_MOIST = DT_R8
242-
DBZ_DT = max(DT_MOIST,300.0)
242+
DBZ_DT = max(DT_MOIST,900.0)
243243
call MAPL_GetResource(MAPL, DBZ_DT, 'DBZ_DT:', default=DBZ_DT, RC=STATUS); VERIFY_(STATUS)
244244
call ESMF_ClockGet(CLOCK, calendar=calendar, RC=STATUS); VERIFY_(STATUS)
245245
call ESMF_TimeIntervalSet(ringInterval, S=nint(DBZ_DT), calendar=calendar, RC=STATUS); VERIFY_(STATUS)
@@ -267,7 +267,7 @@ subroutine GFDL_1M_Initialize (MAPL, CLOCK, RC)
267267
call MAPL_GetPointer(INTERNAL, QICN, 'QICN' , RC=STATUS); VERIFY_(STATUS)
268268

269269
call MAPL_GetResource( MAPL, GFDL_MP3, Label="GFDL_MP3:", default=.TRUE., RC=STATUS); VERIFY_(STATUS)
270-
if (DT_R8 < 300.0) then
270+
if (DT_R8 <= 150.0) then
271271
do_hail = .true.
272272
ifflag = 1
273273
endif
@@ -393,6 +393,14 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC)
393393
real, pointer, dimension(:,:) :: EIS, LTS
394394
real, pointer, dimension(:,:) :: DBZ_MAX, DBZ_1KM, DBZ_TOP, DBZ_M10C
395395
real, pointer, dimension(:,:) :: DBZ_MAX_R, DBZ_MAX_S, DBZ_MAX_G
396+
real, pointer, dimension(:,:,:) :: DQVDT_FILL
397+
real, pointer, dimension(:,:,:) :: DQLLSDT_FILL
398+
real, pointer, dimension(:,:,:) :: DQLCNDT_FILL
399+
real, pointer, dimension(:,:,:) :: DQILSDT_FILL
400+
real, pointer, dimension(:,:,:) :: DQICNDT_FILL
401+
real, pointer, dimension(:,:,:) :: DQRDT_FILL
402+
real, pointer, dimension(:,:,:) :: DQSDT_FILL
403+
real, pointer, dimension(:,:,:) :: DQGDT_FILL
396404
real, pointer, dimension(:,:,:) :: PTR3D
397405
real, pointer, dimension(:,: ) :: PTR2D
398406

@@ -401,8 +409,9 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC)
401409
real :: minrhcrit, turnrhcrit, ALPHA, RHCRIT
402410
integer :: IM,JM,LM
403411
integer :: I, J, L
412+
type( ESMF_VM ) :: VMG
404413

405-
call ESMF_GridCompGet( GC, CONFIG=CF, RC=STATUS )
414+
call ESMF_GridCompGet( GC, VM=VMG, CONFIG=CF, RC=STATUS )
406415
VERIFY_(STATUS)
407416

408417
! Get my internal MAPL_Generic state
@@ -619,6 +628,21 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC)
619628
do L=1,LM
620629
do J=1,JM
621630
do I=1,IM
631+
! cleanup clouds
632+
call FIX_UP_CLOUDS( Q(I,J,L), T(I,J,L), QLLS(I,J,L), QILS(I,J,L), CLLS(I,J,L), &
633+
QLCN(I,J,L), QICN(I,J,L), CLCN(I,J,L), &
634+
REMOVE_CLOUDS=(L < KLID) )
635+
! Debug large temperature values
636+
if ( DEBUG_TQ_ERRORS .AND. (T(I,J,L) > 333.0) ) then
637+
print *, "Temperature spike detected : ", T(I,J,L)
638+
print *, " BEFORE any GFDL Procsess "
639+
print *, " Latitude =", LATS(I,J)*180.0/MAPL_PI
640+
print *, " Longitude =", LONS(I,J)*180.0/MAPL_PI
641+
print *, " Pressure (mb) =", PLmb(I,J,L)
642+
print *, " CLLS=", CLLS(I,J,L), "CLCN=", CLCN(I,J,L)
643+
print *, " QV=", Q(I,J,L), " QL=", QLLS(I,J,L)+QLCN(I,J,L), " QI=", QILS(I,J,L)+QICN(I,J,L)
644+
print *, " QR=", QRAIN(I,J,L), " QS=", QSNOW(I,J,L), " QG=", QGRAUPEL(I,J,L)
645+
endif
622646
! Send the condensates through the pdf after convection [0:1 , unstable:stable]
623647
facEIS = MAX(0.0,MIN(1.0,EIS(I,J)/10.0))**2
624648
! determine combined minrhcrit in unstable/stable regimes
@@ -737,10 +761,42 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC)
737761
call FIX_UP_CLOUDS( Q(I,J,L), T(I,J,L), QLLS(I,J,L), QILS(I,J,L), CLLS(I,J,L), &
738762
QLCN(I,J,L), QICN(I,J,L), CLCN(I,J,L), &
739763
REMOVE_CLOUDS=(L < KLID) )
764+
if ( DEBUG_TQ_ERRORS .AND. (T(I,J,L) > 333.0) ) then
765+
print *, "Temperature spike detected : ", T(I,J,L)
766+
print *, " AFTER cldmacro in GFDL-MP "
767+
print *, " Latitude =", LATS(I,J)*180.0/MAPL_PI
768+
print *, " Longitude =", LONS(I,J)*180.0/MAPL_PI
769+
print *, " Pressure (mb) =", PLmb(I,J,L)
770+
print *, " CLLS=", CLLS(I,J,L), "CLCN=", CLCN(I,J,L)
771+
print *, " QV=", Q(I,J,L), " QL=", QLLS(I,J,L)+QLCN(I,J,L), " QI=", QLLS(I,J,L)+QLCN(I,J,L)
772+
print *, " QR=", QRAIN(I,J,L), " QS=", QSNOW(I,J,L), " QG=", QGRAUPEL(I,J,L)
773+
endif
740774
end do ! IM loop
741775
end do ! JM loop
742776
end do ! LM loop
743777

778+
779+
! Get fill negative export pointers if requested
780+
! ----------------------------------------------
781+
call MAPL_GetPointer(EXPORT, DQVDT_FILL, 'DQVDT_FILL_CLDMACRO', RC=STATUS); VERIFY_(STATUS)
782+
call MAPL_GetPointer(EXPORT, DQLLSDT_FILL, 'DQLLSDT_FILL_CLDMACRO', RC=STATUS); VERIFY_(STATUS)
783+
call MAPL_GetPointer(EXPORT, DQLCNDT_FILL, 'DQLCNDT_FILL_CLDMACRO', RC=STATUS); VERIFY_(STATUS)
784+
call MAPL_GetPointer(EXPORT, DQILSDT_FILL, 'DQILSDT_FILL_CLDMACRO', RC=STATUS); VERIFY_(STATUS)
785+
call MAPL_GetPointer(EXPORT, DQICNDT_FILL, 'DQICNDT_FILL_CLDMACRO', RC=STATUS); VERIFY_(STATUS)
786+
call MAPL_GetPointer(EXPORT, DQRDT_FILL, 'DQRDT_FILL_CLDMACRO', RC=STATUS); VERIFY_(STATUS)
787+
call MAPL_GetPointer(EXPORT, DQSDT_FILL, 'DQSDT_FILL_CLDMACRO', RC=STATUS); VERIFY_(STATUS)
788+
call MAPL_GetPointer(EXPORT, DQGDT_FILL, 'DQGDT_FILL_CLDMACRO', RC=STATUS); VERIFY_(STATUS)
789+
! Cleanup negative water species
790+
! ------------------------------
791+
call FILLQ2ZERO( Q , MASS, DT=DT_MOIST, DQDT= DQVDT_FILL, WARNING_LABEL="QV After GFDL Cloud Macrophysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
792+
call FILLQ2ZERO( QLLS , MASS, DT=DT_MOIST, DQDT=DQLLSDT_FILL, WARNING_LABEL="QLLS After GFDL Cloud Macrophysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
793+
call FILLQ2ZERO( QLCN , MASS, DT=DT_MOIST, DQDT=DQLCNDT_FILL, WARNING_LABEL="QLCN After GFDL Cloud Macrophysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
794+
call FILLQ2ZERO( QILS , MASS, DT=DT_MOIST, DQDT=DQILSDT_FILL, WARNING_LABEL="QILS After GFDL Cloud Macrophysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
795+
call FILLQ2ZERO( QICN , MASS, DT=DT_MOIST, DQDT=DQICNDT_FILL, WARNING_LABEL="QICN After GFDL Cloud Macrophysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
796+
call FILLQ2ZERO( QRAIN , MASS, DT=DT_MOIST, DQDT= DQRDT_FILL, WARNING_LABEL="QR After GFDL Cloud Macrophysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
797+
call FILLQ2ZERO( QSNOW , MASS, DT=DT_MOIST, DQDT= DQSDT_FILL, WARNING_LABEL="QS After GFDL Cloud Macrophysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
798+
call FILLQ2ZERO( QGRAUPEL, MASS, DT=DT_MOIST, DQDT= DQGDT_FILL, WARNING_LABEL="QG After GFDL Cloud Macrophysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
799+
744800
! Update macrophysics tendencies
745801
DUDT_macro=( U - DUDT_macro)/DT_MOIST
746802
DVDT_macro=( V - DVDT_macro)/DT_MOIST
@@ -868,27 +924,48 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC)
868924
U = U + DUDTmic * DT_MOIST
869925
V = V + DVDTmic * DT_MOIST
870926
! Apply moist/cloud species tendencies
871-
RAD_QV = RAD_QV + DQVDTmic * DT_MOIST
872-
RAD_QL = RAD_QL + DQLDTmic * DT_MOIST
873-
RAD_QR = RAD_QR + DQRDTmic * DT_MOIST
874-
RAD_QI = RAD_QI + DQIDTmic * DT_MOIST
875-
RAD_QS = RAD_QS + DQSDTmic * DT_MOIST
876-
RAD_QG = RAD_QG + DQGDTmic * DT_MOIST
927+
RAD_QV = MAX(RAD_QV + DQVDTmic * DT_MOIST, 1.e-12)
928+
RAD_QL = MAX(RAD_QL + DQLDTmic * DT_MOIST, 0.0)
929+
RAD_QR = MAX(RAD_QR + DQRDTmic * DT_MOIST, 0.0)
930+
RAD_QI = MAX(RAD_QI + DQIDTmic * DT_MOIST, 0.0)
931+
RAD_QS = MAX(RAD_QS + DQSDTmic * DT_MOIST, 0.0)
932+
RAD_QG = MAX(RAD_QG + DQGDTmic * DT_MOIST, 0.0)
877933
RAD_CF = MIN(1.0,MAX(0.0,RAD_CF + DQADTmic * DT_MOIST))
878934
! CleanUp Negative Water Vapor, cloud liquid/ice, and condensates
879-
call FILLQ2ZERO(RAD_QV, MASS, TMP2D)
880-
call FILLQ2ZERO(RAD_QL, MASS, TMP2D)
881-
call FILLQ2ZERO(RAD_QI, MASS, TMP2D)
882-
call FILLQ2ZERO(RAD_QR, MASS, TMP2D)
883-
call FILLQ2ZERO(RAD_QS, MASS, TMP2D)
884-
call FILLQ2ZERO(RAD_QG, MASS, TMP2D)
935+
call FILLQ2ZERO(RAD_QV, MASS, WARNING_LABEL="QV After GFDL Driver", VM=VMG, RC=STATUS); VERIFY_(STATUS)
936+
call FILLQ2ZERO(RAD_QL, MASS, WARNING_LABEL="QL After GFDL Driver", VM=VMG, RC=STATUS); VERIFY_(STATUS)
937+
call FILLQ2ZERO(RAD_QI, MASS, WARNING_LABEL="QI After GFDL Driver", VM=VMG, RC=STATUS); VERIFY_(STATUS)
938+
call FILLQ2ZERO(RAD_QR, MASS, WARNING_LABEL="QR After GFDL Driver", VM=VMG, RC=STATUS); VERIFY_(STATUS)
939+
call FILLQ2ZERO(RAD_QS, MASS, WARNING_LABEL="QS After GFDL Driver", VM=VMG, RC=STATUS); VERIFY_(STATUS)
940+
call FILLQ2ZERO(RAD_QG, MASS, WARNING_LABEL="QG After GFDL Driver", VM=VMG, RC=STATUS); VERIFY_(STATUS)
941+
call FILLQ2ZERO(RAD_CF, MASS, WARNING_LABEL="QA After GFDL Driver", VM=VMG, RC=STATUS); VERIFY_(STATUS)
885942
! Redistribute CN/LS CF/QL/QI
886943
call REDISTRIBUTE_CLOUDS(RAD_CF, RAD_QL, RAD_QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, RAD_QV, T)
887944
! Fill vapor/rain/snow/graupel state
888945
Q = RAD_QV
889946
QRAIN = RAD_QR
890947
QSNOW = RAD_QS
891948
QGRAUPEL = RAD_QG
949+
! Get fill negative export pointers if requested
950+
! ----------------------------------------------
951+
call MAPL_GetPointer(EXPORT, DQVDT_FILL, 'DQVDT_FILL_CLDMICRO', RC=STATUS); VERIFY_(STATUS)
952+
call MAPL_GetPointer(EXPORT, DQLLSDT_FILL, 'DQLLSDT_FILL_CLDMICRO', RC=STATUS); VERIFY_(STATUS)
953+
call MAPL_GetPointer(EXPORT, DQLCNDT_FILL, 'DQLCNDT_FILL_CLDMICRO', RC=STATUS); VERIFY_(STATUS)
954+
call MAPL_GetPointer(EXPORT, DQILSDT_FILL, 'DQILSDT_FILL_CLDMICRO', RC=STATUS); VERIFY_(STATUS)
955+
call MAPL_GetPointer(EXPORT, DQICNDT_FILL, 'DQICNDT_FILL_CLDMICRO', RC=STATUS); VERIFY_(STATUS)
956+
call MAPL_GetPointer(EXPORT, DQRDT_FILL, 'DQRDT_FILL_CLDMICRO', RC=STATUS); VERIFY_(STATUS)
957+
call MAPL_GetPointer(EXPORT, DQSDT_FILL, 'DQSDT_FILL_CLDMICRO', RC=STATUS); VERIFY_(STATUS)
958+
call MAPL_GetPointer(EXPORT, DQGDT_FILL, 'DQGDT_FILL_CLDMICRO', RC=STATUS); VERIFY_(STATUS)
959+
! Cleanup negative water species
960+
! ------------------------------
961+
call FILLQ2ZERO( Q , MASS, DT=DT_MOIST, DQDT= DQVDT_FILL, WARNING_LABEL="QV After GFDL Cloud Microphysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
962+
call FILLQ2ZERO( QLLS , MASS, DT=DT_MOIST, DQDT=DQLLSDT_FILL, WARNING_LABEL="QLLS After GFDL Cloud Microphysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
963+
call FILLQ2ZERO( QLCN , MASS, DT=DT_MOIST, DQDT=DQLCNDT_FILL, WARNING_LABEL="QLCN After GFDL Cloud Microphysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
964+
call FILLQ2ZERO( QILS , MASS, DT=DT_MOIST, DQDT=DQILSDT_FILL, WARNING_LABEL="QILS After GFDL Cloud Microphysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
965+
call FILLQ2ZERO( QICN , MASS, DT=DT_MOIST, DQDT=DQICNDT_FILL, WARNING_LABEL="QICN After GFDL Cloud Microphysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
966+
call FILLQ2ZERO( QRAIN , MASS, DT=DT_MOIST, DQDT= DQRDT_FILL, WARNING_LABEL="QR After GFDL Cloud Microphysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
967+
call FILLQ2ZERO( QSNOW , MASS, DT=DT_MOIST, DQDT= DQSDT_FILL, WARNING_LABEL="QS After GFDL Cloud Microphysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
968+
call FILLQ2ZERO( QGRAUPEL, MASS, DT=DT_MOIST, DQDT= DQGDT_FILL, WARNING_LABEL="QG After GFDL Cloud Microphysics", VM=VMG, RC=STATUS); VERIFY_(STATUS)
892969
! Convert precip diagnostics from mm/day to kg m-2 s-1
893970
PRCP_WATER = MAX(PRCP_WATER / 86400.0, 0.0)
894971
PRCP_RAIN = MAX(PRCP_RAIN / 86400.0, 0.0)
@@ -931,32 +1008,33 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC)
9311008
call FIX_UP_CLOUDS( Q(I,J,L), T(I,J,L), QLLS(I,J,L), QILS(I,J,L), CLLS(I,J,L), &
9321009
QLCN(I,J,L), QICN(I,J,L), CLCN(I,J,L), &
9331010
REMOVE_CLOUDS=(L < KLID) )
934-
! Debug large temperature values
935-
if (T(I,J,L) > 330.0) then
936-
print *, "Temperature spike detected: ", T(I,J,L)
937-
print *, " Latitude =", LATS(I,J)*180.0/MAPL_PI
938-
print *, " Longitude =", LONS(I,J)*180.0/MAPL_PI
939-
print *, " Pressure (mb) =", PLmb(I,J,L)
940-
print *, " CLLS=", CLLS(I,J,L), "CLCN=", CLCN(I,J,L)
941-
print *, " QV=", Q(I,J,L), " QL=", QLLS(I,J,L)+QLCN(I,J,L), " QI=", QLLS(I,J,L)+QLCN(I,J,L)
942-
print *, " QR=", QRAIN(I,J,L), " QS=", QSNOW(I,J,L), " QG=", QGRAUPEL(I,J,L)
943-
endif
9441011
! get radiative properties
9451012
call RADCOUPLE ( T(I,J,L), PLmb(I,J,L), CLLS(I,J,L), CLCN(I,J,L), &
9461013
Q(I,J,L), QLLS(I,J,L), QILS(I,J,L), QLCN(I,J,L), QICN(I,J,L), QRAIN(I,J,L), QSNOW(I,J,L), QGRAUPEL(I,J,L), NACTL(I,J,L), NACTI(I,J,L), &
9471014
RAD_QV(I,J,L), RAD_QL(I,J,L), RAD_QI(I,J,L), RAD_QR(I,J,L), RAD_QS(I,J,L), RAD_QG(I,J,L), RAD_CF(I,J,L), &
9481015
CLDREFFL(I,J,L), CLDREFFI(I,J,L), &
9491016
FAC_RL, MIN_RL, MAX_RL, FAC_RI, MIN_RI, MAX_RI)
1017+
! Debug large temperature values
1018+
if ( DEBUG_TQ_ERRORS .AND. (T(I,J,L) > 333.0) ) then
1019+
print *, "Temperature spike detected : ", T(I,J,L)
1020+
print *, " GFDL-MP Temp Increment : ", DTDTmic(I,J,L) * DT_MOIST
1021+
print *, " Latitude =", LATS(I,J)*180.0/MAPL_PI
1022+
print *, " Longitude =", LONS(I,J)*180.0/MAPL_PI
1023+
print *, " Pressure (mb) =", PLmb(I,J,L)
1024+
print *, " CLLS=", CLLS(I,J,L), "CLCN=", CLCN(I,J,L)
1025+
print *, " QV=", Q(I,J,L), " QL=", QLLS(I,J,L)+QLCN(I,J,L), " QI=", QILS(I,J,L)+QICN(I,J,L)
1026+
print *, " QR=", QRAIN(I,J,L), " QS=", QSNOW(I,J,L), " QG=", QGRAUPEL(I,J,L)
1027+
endif
9501028
enddo
9511029
enddo
9521030
enddo
953-
call FILLQ2ZERO(RAD_QV, MASS, TMP2D)
954-
call FILLQ2ZERO(RAD_QL, MASS, TMP2D)
955-
call FILLQ2ZERO(RAD_QI, MASS, TMP2D)
956-
call FILLQ2ZERO(RAD_QR, MASS, TMP2D)
957-
call FILLQ2ZERO(RAD_QS, MASS, TMP2D)
958-
call FILLQ2ZERO(RAD_QG, MASS, TMP2D)
959-
call FILLQ2ZERO(RAD_CF, MASS, TMP2D)
1031+
call FILLQ2ZERO(RAD_QV, MASS, RC=STATUS); VERIFY_(STATUS)
1032+
call FILLQ2ZERO(RAD_QL, MASS, RC=STATUS); VERIFY_(STATUS)
1033+
call FILLQ2ZERO(RAD_QI, MASS, RC=STATUS); VERIFY_(STATUS)
1034+
call FILLQ2ZERO(RAD_QR, MASS, RC=STATUS); VERIFY_(STATUS)
1035+
call FILLQ2ZERO(RAD_QS, MASS, RC=STATUS); VERIFY_(STATUS)
1036+
call FILLQ2ZERO(RAD_QG, MASS, RC=STATUS); VERIFY_(STATUS)
1037+
call FILLQ2ZERO(RAD_CF, MASS, RC=STATUS); VERIFY_(STATUS)
9601038
RAD_QL = MIN( RAD_QL , 0.001 ) ! Still a ridiculously large
9611039
RAD_QI = MIN( RAD_QI , 0.001 ) ! value.
9621040
RAD_QR = MIN( RAD_QR , 0.01 ) ! value.

0 commit comments

Comments
 (0)