Changeset 714 for codes/icosagcm/devel/src/time
- Timestamp:
- 08/03/18 16:53:37 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/time/timeloop_gcm.f90
r609 r714 1 1 MODULE timeloop_gcm_mod 2 USE profiling_mod 2 3 USE icosa 3 4 USE disvert_mod … … 13 14 TYPE(t_message),SAVE :: req_ps0, req_mass0, req_theta_rhodz0, req_u0, req_q0, req_W0, req_geopot0 14 15 LOGICAL, SAVE :: positive_theta 15 16 INTEGER :: itau_prof, id_timeloop, id_dyn, id_phys, id_dissip, id_adv, id_diags 16 17 PUBLIC :: init_timeloop, timeloop 17 18 … … 32 33 CHARACTER(len=255) :: def 33 34 35 CALL register_id('timeloop',id_timeloop) 36 CALL register_id('dyn',id_dyn) 37 CALL register_id('dissip',id_dissip) 38 CALL register_id('phys',id_phys) 39 CALL register_id('adv',id_adv) 40 CALL register_id('diags',id_diags) 41 34 42 CALL init_caldyn 35 43 36 44 ! IF (xios_output) itau_out=1 37 45 IF (.NOT. enable_io) itau_out=HUGE(itau_out) 46 47 itau_prof=100 48 CALL getin('itau_profiling',itau_prof) 38 49 39 50 positive_theta=.FALSE. … … 231 242 232 243 !$OMP MASTER 233 CALL SYSTEM_CLOCK(start_clock) 234 CALL SYSTEM_CLOCK(count_rate=rate_clock) 244 CALL SYSTEM_CLOCK(start_clock, rate_clock) 235 245 !$OMP END MASTER 236 246 237 247 DO it=itau0+1,itau0+itaumax 238 239 248 IF (is_master) CALL print_iteration(it, itau0, itaumax, start_clock, rate_clock) 249 250 CALL enter_profile(id_timeloop) 240 251 241 252 IF (xios_output) THEN … … 267 278 CALL guided(it*dt,f_ps,f_theta_rhodz,f_u,f_q) 268 279 280 CALL enter_profile(id_dyn) 269 281 SELECT CASE(scheme_family) 270 282 CASE(explicit) … … 273 285 CALL HEVI_scheme(it, fluxt_zero) 274 286 END SELECT 275 287 CALL exit_profile(id_dyn) 288 289 CALL enter_profile(id_dissip) 276 290 IF (MOD(it,itau_dissip)==0) THEN 277 291 … … 288 302 ENDIF 289 303 304 CALL enter_profile(id_diags) 290 305 CALL check_conserve_detailed(it, AAM_dyn, & 291 306 f_ps,f_dps,f_u,f_theta_rhodz,f_phis) 307 CALL exit_profile(id_diags) 292 308 293 309 CALL dissip(f_ps,f_mass,f_phis,f_geopot,f_theta_rhodz,f_u, f_dtheta_rhodz,f_du) … … 299 315 END IF 300 316 317 CALL enter_profile(id_diags) 301 318 CALL check_conserve_detailed(it, AAM_dissip, & 302 319 f_ps,f_dps,f_u,f_theta_rhodz,f_phis) 320 CALL exit_profile(id_diags) 303 321 END IF 322 CALL exit_profile(id_dissip) 304 323 324 CALL enter_profile(id_adv) 305 325 IF(MOD(it,itau_adv)==0) THEN 306 326 CALL advect_tracer(f_hfluxt,f_wfluxt,f_u, f_q,f_rhodz, & ! update q and rhodz after RK step … … 322 342 IF(positive_theta) CALL copy_q_to_theta(f_theta_rhodz,f_rhodz,f_q) 323 343 END IF 344 CALL exit_profile(id_adv) 324 345 346 CALL enter_profile(id_diags) 325 347 IF (MOD(it,itau_physics)==0) THEN 326 348 CALL check_conserve_detailed(it, AAM_dyn, & 327 349 f_ps,f_dps,f_u,f_theta_rhodz,f_phis) 350 CALL enter_profile(id_phys) 328 351 CALL physics(it,f_phis, f_ps, f_theta_rhodz, f_u, f_wflux, f_q) 352 CALL exit_profile(id_phys) 329 353 CALL check_conserve_detailed(it, AAM_phys, & 330 354 f_ps,f_dps,f_u,f_theta_rhodz,f_phis) … … 345 369 CALL write_output_fields_basic(.FALSE.,f_phis, f_ps, f_mass, f_geopot, f_theta_rhodz, f_u, f_W, f_q) 346 370 ENDIF 347 371 CALL exit_profile(id_diags) 372 373 CALL exit_profile(id_timeloop) 348 374 END DO 349 375 … … 382 408 ' -- Completion in (min) : ', INT((total-elapsed)/60.) 383 409 END IF 410 IF(MOD(it,itau_prof)==0) CALL print_profile 411 384 412 END SUBROUTINE print_iteration 385 413
Note: See TracChangeset
for help on using the changeset viewer.