Changeset 667
- Timestamp:
- 01/24/18 18:49:49 (6 years ago)
- Location:
- codes/icosagcm/trunk/src
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/icosa_init.f90
r599 r667 21 21 USE etat0_mod 22 22 USE diagflux_mod 23 USE profiling_mod 23 24 IMPLICIT NONE 24 25 26 CALL init_profiling 25 27 CALL init_mpipara 26 28 CALL trace_off -
codes/icosagcm/trunk/src/output/output_field.f90
r548 r667 1 1 MODULE output_field_mod 2 USE genmod 2 USE genmod 3 USE xios_mod 4 USE profiling_mod 5 IMPLICIT NONE 6 SAVE 3 7 PRIVATE 8 4 9 LOGICAL,SAVE :: xios_output 5 10 !$OMP THREADPRIVATE(xios_output) 6 11 LOGICAL,SAVE :: enable_io 7 12 !$OMP THREADPRIVATE(enable_io) 13 14 INTEGER :: id_output 8 15 9 16 PUBLIC enable_io,xios_output,output_field_init,output_field,output_field_finalize … … 13 20 SUBROUTINE output_field_init 14 21 USE getin_mod 15 USE xios_mod16 USE write_field_mod17 22 IMPLICIT NONE 23 24 CALL register_id('output',id_output) 18 25 19 26 enable_io=.TRUE. … … 30 37 CALL xios_init_write_field 31 38 ENDIF 32 33 34 39 END SUBROUTINE output_field_init 35 40 36 41 SUBROUTINE output_field(name_in,field) 37 42 USE field_mod 38 USE xios_mod39 43 USE write_field_mod 40 44 IMPLICIT NONE 41 CHARACTER(LEN=*),INTENT(IN) :: name_in 42 TYPE(t_field),POINTER :: field(:) 43 44 IF (xios_output) THEN 45 CALL xios_write_field(name_in,field) 46 ELSE 45 CHARACTER(LEN=*),INTENT(IN) :: name_in 46 TYPE(t_field),POINTER :: field(:) 47 48 CALL enter_profile(id_output) 49 IF (xios_output) THEN 50 CALL xios_write_field(name_in,field) 51 ELSE 47 52 CALL writeField(name_in,field) 48 ENDIF 53 ENDIF 54 CALL exit_profile(id_output) 49 55 50 56 END SUBROUTINE output_field 51 57 52 58 SUBROUTINE output_field_finalize 53 USE ioipsl 54 USE xios_mod 55 IMPLICIT NONE 59 USE ioipsl 60 IMPLICIT NONE 56 61 57 62 IF (xios_output) THEN 58 CALL xios_write_field_finalize63 CALL xios_write_field_finalize 59 64 ENDIF 60 65 -
codes/icosagcm/trunk/src/parallel/mpipara.F90
r548 r667 12 12 INTEGER,SAVE :: mpi_master 13 13 14 14 INTEGER,SAVE :: id_mpi ! id for profiling 15 15 16 INTERFACE allocate_mpi_buffer 16 17 MODULE PROCEDURE allocate_mpi_buffer_r2, allocate_mpi_buffer_r3,allocate_mpi_buffer_r4 -
codes/icosagcm/trunk/src/parallel/transfert_mpi.f90
r604 r667 2 2 USE genmod 3 3 USE field_mod 4 IMPLICIT NONE 4 5 5 6 TYPE array … … 85 86 END INTERFACE 86 87 87 88 89 88 CONTAINS 90 89 91 90 92 91 SUBROUTINE init_transfert 92 USE profiling_mod 93 93 USE domain_mod 94 94 USE dimensions … … 100 100 INTEGER :: ind,i,j 101 101 LOGICAL ::ok 102 102 103 CALL register_id('MPI', id_mpi) 104 103 105 CALL create_request(field_t,req_i1) 104 106 … … 1094 1096 1095 1097 SUBROUTINE send_message_mpi(field,message) 1098 USE profiling_mod 1096 1099 USE field_mod 1097 1100 USE domain_mod … … 1124 1127 1125 1128 ! CALL trace_start("send_message_mpi") 1129 1130 CALL enter_profile(id_mpi) 1126 1131 1127 1132 !$OMP BARRIER … … 1482 1487 !$OMP BARRIER 1483 1488 ! CALL trace_end("send_message_mpi") 1489 1490 CALL exit_profile(id_mpi) 1484 1491 1485 1492 END SUBROUTINE send_message_mpi … … 1499 1506 1500 1507 SUBROUTINE wait_message_mpi(message) 1508 USE profiling_mod 1501 1509 USE field_mod 1502 1510 USE domain_mod … … 1527 1535 message%open=.FALSE. 1528 1536 IF (.NOT. message%pending) RETURN 1537 1538 CALL enter_profile(id_mpi) 1529 1539 1530 1540 ! CALL trace_start("wait_message_mpi") … … 1667 1677 !$OMP BARRIER 1668 1678 1679 CALL exit_profile(id_mpi) 1680 1669 1681 END SUBROUTINE wait_message_mpi 1670 1682 -
codes/icosagcm/trunk/src/time/timeloop_gcm.f90
r607 r667 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.