Create initial cut of cam_comp
Ideal engineering time: 3 days
Start Sep/1st
First checkin: cam3_2_22 – Sep/20/2005 4000 lines of code
Branch checkin: cam3_2_22_brnchT_chghilev_9 Sep/22/2005
Final checkin: cam3_2_24 Oct/3/2005
I had 2.5 days of vacation
Load factor: 4.2
This was significantly underestimated, there really was more work and difficulties with getting SCAM to work here.
200lpd
Create an initial cut of cam_comp. Put dynamics specific stuff inside a layer to hide it from cam_comp.F90 in control (stepon module)
Also put timers inside routines rather than in the main drivers.
Some of the following details are taken from the subrtize branch.
- Make stepon a module with an initial, run1, run2, and final methods
- Make stepon local data module data with a save statement
- Move stepon initialization to stepon_init
- Create cam_comp module with cam_init1, cam_init2, cam_init3, cam_run1, cam_run2, and cam_final methods
- Create phys_final method for physpkg.
- Move phys_state allocate and deallocs to phys_init, and phys_final
- Move do-loop in stepon up to cam.F90 driver level.
The initialization in cam.F90 looks like...SCAM initialization then can look similar to the above without.... gptl initialization stuff call seq_ccsm_printlogheader() call cam_init1( surface_state2d, srfflx_state2d ) ... CCSM and surface restart stuff call clm_camInit( srfflx_parm2d_lnd, srfflx_state2d ) call ocn_init( srfflx_parm2d_ocn, srfflx_state2d ) call ice_init( surface_state2d, srfflx_parm2d_ice, srfflx_state2d ) call camhub_init( srfflx_state2d, srfflx_parm2d_lnd, & srfflx_parm2d_ocn, srfflx_parm2d_ice ) call cam_init2()
the cam_init2 and print header calls. scam_inital is changed to
an inital module like the inital modules in each dynamics. The
Filepath will choose to compile the inital module in scm_init.
The time loop in cam.F90 replacing stepon looks like...cam_comp is in control and dynamics specific information is hidden in the dynamics directory because:do while ( .not. nlend ) call atm_run1( srfflx_state2d, surface_state2d ) #ifndef COUP_CSM call camhub_run1( surface_state2d, srfflx_state2d, & srfflx_parm2d_ocn, srfflx_parm2d_ice, & srfflx_parm2d_lnd) call lnd_run( surface_state2d, srfflx_parm2d_lnd ) call ocn_run( surface_state2d, srfflx_parm2d_ocn, srfflx_state2d ) call ice_run( surface_state2d, srfflx_parm2d_ice, srfflx_state2d ) call hub_merge( surface_state2d, srfflx_state2d, & srfflx_parm2d_ocn, srfflx_parm2d_ice, & srfflx_parm2d_lnd) #else call ccsm_run( surface_state2d, srfflx_state2d ) #endif call atm_run2( surface_state2d, srfflx_state22 ) end do
- stepon_init method replaces dynamics specific initialization currently in stepon.
- stepon module is in each dycore as is currently