-
Notifications
You must be signed in to change notification settings - Fork 64
CCPP Framework Meeting Minutes 2020 05 14
Dom Heinzeller edited this page May 14, 2020
·
7 revisions
- How to start testing the feature/capgen branch?
- Update on working with NRL
- How to detect out-of-bound errors with auto-generated code
- Related: How to handle conditionally allocated arrays with
cap_gen.py
?
- Example:
ccpp_FV3_GFS_v15p2_physics_cap.F90
write(0,'(a,2e16.7)') 'DH DEBUG:', minval(GFS_Data(cdata%blk_no)%Stateout%gq0(:,:,13)), maxval(GFS_Data(cdata%blk_no)%Stateout%gq0(:,:,13))
call gfdl_cloud_microphys_run(levs=GFS_Control%levs,im=GFS_Control%blksz(cdata%blk_no),con_g=con_g,con_fvirt=con_fvirt, &
con_rd=con_rd,frland=GFS_Interstitial(cdata%thrd_no)%frland,garea=GFS_Data(cdata%blk_no)%Grid%area, &
islmsk=GFS_Interstitial(cdata%thrd_no)%islmsk,gq0=GFS_Data(cdata%blk_no)%Stateout%gq0(:,:,GFS_Control%ntqv), &
gq0_ntcw=GFS_Data(cdata%blk_no)%Stateout%gq0(:,:,GFS_Control%ntcw),gq0_ntrw=GFS_Data(cdata%blk_no)%Stateout%gq0(:,:,GFS_Control%ntrw), &
gq0_ntiw=GFS_Data(cdata%blk_no)%Stateout%gq0(:,:,GFS_Control%ntiw),gq0_ntsw=GFS_Data(cdata%blk_no)%Stateout%gq0(:,:,GFS_Control%ntsw), &
gq0_ntgl=GFS_Data(cdata%blk_no)%Stateout%gq0(:,:,GFS_Control%ntgl),gq0_ntclamt=GFS_Data(cdata%blk_no)%Stateout%gq0(:,:,13), &
gt0=GFS_Data(cdata%blk_no)%Stateout%gt0,gu0=GFS_Data(cdata%blk_no)%Stateout%gu0, &
gv0=GFS_Data(cdata%blk_no)%Stateout%gv0,vvl=GFS_Data(cdata%blk_no)%Statein%vvl, &
prsl=GFS_Data(cdata%blk_no)%Statein%prsl,phii=GFS_Data(cdata%blk_no)%Statein%phii, &
del=GFS_Interstitial(cdata%thrd_no)%del,rain0=GFS_Interstitial(cdata%thrd_no)%rainmp, &
ice0=GFS_Interstitial(cdata%thrd_no)%icemp,snow0=GFS_Interstitial(cdata%thrd_no)%snowmp, &
graupel0=GFS_Interstitial(cdata%thrd_no)%graupelmp,prcp0=GFS_Interstitial(cdata%thrd_no)%prcpmp, &
sr=GFS_Data(cdata%blk_no)%Intdiag%sr,dtp=GFS_Control%dtp,hydrostatic=GFS_Control%hydrostatic, &
phys_hydrostatic=GFS_Interstitial(cdata%thrd_no)%phys_hydrostatic,lradar=GFS_Control%lradar, &
refl_10cm=GFS_Data(cdata%blk_no)%Intdiag%refl_10cm,reset=GFS_Interstitial(cdata%thrd_no)%reset, &
effr_in=GFS_Control%effr_in,rew=GFS_Data(cdata%blk_no)%Tbd%phy_f3d(:,:,GFS_Control%nleffr), &
rei=GFS_Data(cdata%blk_no)%Tbd%phy_f3d(:,:,GFS_Control%nieffr),rer=GFS_Data(cdata%blk_no)%Tbd%phy_f3d(:,:,GFS_Control%nreffr), &
res=GFS_Data(cdata%blk_no)%Tbd%phy_f3d(:,:,GFS_Control%nseffr),reg=GFS_Data(cdata%blk_no)%Tbd%phy_f3d(:,:,GFS_Control%ngeffr), &
errmsg=cdata%errmsg,errflg=cdata%errflg)
and gfdl_cloud_microphys.F90
:
subroutine gfdl_cloud_microphys_run( &
levs, im, con_g, con_fvirt, con_rd, frland, garea, islmsk, &
gq0, gq0_ntcw, gq0_ntrw, gq0_ntiw, gq0_ntsw, gq0_ntgl, gq0_ntclamt, &
gt0, gu0, gv0, vvl, prsl, phii, del, &
rain0, ice0, snow0, graupel0, prcp0, sr, &
dtp, hydrostatic, phys_hydrostatic, lradar, refl_10cm, &
reset, effr_in, rew, rei, rer, res, reg, errmsg, errflg)
...
real(kind=kind_phys), intent(inout), dimension(1:im,1:levs) :: gq0, gq0_ntcw, gq0_ntrw, gq0_ntiw, &
gq0_ntsw, gq0_ntgl, gq0_ntclamt
- Dom will create an issue to add a metadata entry like
debug_check = ...
where the default value is true, but can be a conditional expressed in terms of standard names. The debug check will check the bounds, if an array is allocated or not, etc. - see https://github.com/NCAR/ccpp-framework/issues/294
- Julie identified some errors in the capgen unit tests
- need better test coverage in particular for parsing Fortran code and comparing to metadata files
- also for checking suites and producing code
- this goes beyond basic unit tests, but will be useful
-
ccpp_prebuild.py
: if--suites
argument is not present, compile all suites inSUITES_DIR
(inccpp_prebuild_config.py
)