- Timestamp:
- 2012-04-30T12:50:36+02:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3337_NOCS10_ICB/NEMOGCM/NEMO/OPA_SRC/ICB/icbrun.F90
r3370 r3372 77 77 78 78 ! anything that needs to be reset to zero each timestep for budgets is dealt with here 79 CALL icb_ budget_step()79 CALL icb_dia_step() 80 80 81 81 ! Manage time … … 89 89 isec = nsec_day - ihr*3600 - imin*60 90 90 current_year = iyr 91 current_yearday = yearday(imon, iday, ihr, imin, isec)91 current_yearday = icb_utl_yearday(imon, iday, ihr, imin, isec) 92 92 93 93 ll_verbose = .FALSE. … … 100 100 ! copy nemo forcing arrays into iceberg versions with extra halo 101 101 ! only necessary for variables not on T points 102 CALL copy_flds()102 CALL icb_utl_copy() 103 103 104 104 !!---------------------------------------------------------------------- 105 105 !! process icebergs 106 106 107 CALL accumulate_calving( kt ) ! Accumulate ice from calving108 109 CALL calve_icebergs() ! Calve excess stored ice into icebergs110 111 112 113 ! 114 IF( ASSOCIATED(first_berg) ) CALL evolve_icebergs()! ice berg dynamics115 116 IF( lk_mpp ) THEN ; CALL mpp_send_bergs ()! Send bergs to other PEs117 ELSE ; CALL lbc_send_bergs() ! Deal with any cyclic boundaries in non-mpp case107 CALL icb_clv_flx( kt ) ! Accumulate ice from calving 108 109 CALL icb_clv() ! Calve excess stored ice into icebergs 110 111 112 ! !== For each berg, evolve ==! 113 ! 114 IF( ASSOCIATED(first_berg) ) CALL icb_dyn() ! ice berg dynamics 115 116 IF( lk_mpp ) THEN ; CALL icb_lbc_mpp() ! Send bergs to other PEs 117 ELSE ; CALL icb_lbc() ! Deal with any cyclic boundaries in non-mpp case 118 118 ENDIF 119 119 120 IF( ASSOCIATED(first_berg) ) CALL thermodynamics ( kt )! Ice berg thermodynamics (melting) + rolling120 IF( ASSOCIATED(first_berg) ) CALL icb_thm( kt ) ! Ice berg thermodynamics (melting) + rolling 121 121 122 122 !!---------------------------------------------------------------------- … … 126 126 IF( nn_sample_rate > 0 .AND. MOD(kt-1,nn_sample_rate) == 0 ) ll_sample_traj = .TRUE. 127 127 IF( ll_sample_traj .AND. & 128 ASSOCIATED(first_berg) ) CALL traj_write( kt ) ! For each berg, record trajectory128 ASSOCIATED(first_berg) ) CALL icb_trj_write( kt ) ! For each berg, record trajectory 129 129 130 130 ! Gridded diagnostics … … 136 136 CALL iom_put( "berg_stored_ice" , berg_grid%stored_ice (:,:,:) ) ! 'Accumulated ice mass by class', 'kg' 137 137 138 ! write outmean budgets139 CALL icb_ budget_put()138 ! store mean budgets 139 CALL icb_dia_put() 140 140 141 141 ! Dump icebergs to screen 142 if ( nn_verbose_level >= 2 ) CALL print_bergs( 'icb_stp, status', kt )142 if ( nn_verbose_level >= 2 ) CALL icb_utl_print( 'icb_stp, status', kt ) 143 143 144 144 ! Diagnose budgets 145 145 ll_budget = .FALSE. 146 146 IF( nn_verbose_write > 0 .AND. MOD(kt-1,nn_verbose_write) == 0 ) ll_budget = ln_bergdia 147 CALL icb_ budget( ll_budget )147 CALL icb_dia( ll_budget ) 148 148 149 149 IF( MOD(kt,nn_stock) == 0 ) THEN 150 CALL ic ebergs_write_restart( kt )151 IF( nn_sample_rate > 0 ) CALL traj_sync()150 CALL icb_rst_write( kt ) 151 IF( nn_sample_rate > 0 ) CALL icb_trj_sync() 152 152 ENDIF 153 153 … … 160 160 !! *** ROUTINE icb_end *** 161 161 !! 162 !! ** Purpose : deallocate icebergs arrays and162 !! ** Purpose : close iceberg files 163 163 !! 164 164 !!---------------------------------------------------------------------- … … 184 184 DEALLOCATE( nicbfldproc ) 185 185 186 IF( lk_mpp ) CALL dealloc_buffers()187 188 186 IF (.NOT.ASSOCIATED(berg_grid)) RETURN 189 187 190 188 ! only write a restart if not done in icb_stp 191 IF( MOD(kt,nn_stock) .NE. 0 ) CALL ic ebergs_write_restart( kt )189 IF( MOD(kt,nn_stock) .NE. 0 ) CALL icb_rst_write( kt ) 192 190 193 191 ! finish with trajectories if they were written 194 IF( nn_sample_rate .GT. 0 ) CALL traj_end()192 IF( nn_sample_rate .GT. 0 ) CALL icb_trj_end() 195 193 196 194 ! Delete bergs and structures … … 198 196 DO WHILE (ASSOCIATED(this)) 199 197 next=>this%next 200 CALL destroy_iceberg(this)198 CALL icb_utl_destroy(this) 201 199 this=>next 202 200 END DO 203 201 204 CALL icb_ budget_end()202 CALL icb_dia_end() 205 203 206 204 DEALLOCATE(berg_grid%calving)
Note: See TracChangeset
for help on using the changeset viewer.