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...
      .... 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()
    
    SCAM initialization then can look similar to the above without
    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...
    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
    
    cam_comp is in control and dynamics specific information is hidden in the dynamics directory because:
  • stepon_init method replaces dynamics specific initialization currently in stepon.
  • stepon module is in each dycore as is currently
  • No labels