Line data Source code
1 : ! Include shortname defintions, so that the F77 code does not have to be modified to 2 : ! reference the CARMA structure. 3 : #include "carma_globaer.h" 4 : 5 : !! This routine performs all calculations necessary to take one timestep. 6 : !! 7 : !! @author McKie 8 : !! @version Oct-1995 9 1050624 : subroutine step(carma, cstate, rc) 10 : 11 : ! types 12 : use carma_precision_mod 13 : use carma_enums_mod 14 : use carma_constants_mod 15 : use carma_types_mod 16 : use carmastate_mod 17 : use carma_mod 18 : 19 : implicit none 20 : 21 : type(carma_type), intent(in) :: carma !! the carma object 22 : type(carmastate_type), intent(inout) :: cstate !! the carma state object 23 : integer, intent(inout) :: rc !! return code, negative indicates failure 24 : 25 : 26 : ! Iterate over each column. Each of these columns should be independent, so 27 : ! the work for each column could be done by a different thread. 28 : 29 : ! Do pre-timestep processing 30 1050624 : if (rc >= 0) call prestep(carma, cstate, rc) 31 : 32 : ! Update model state at new time 33 1050624 : if (rc >= 0) call newstate(carma, cstate, rc) 34 : 35 : ! Return to caller with one timestep taken 36 1050624 : return 37 1050624 : end