source: codes/icosagcm/trunk/src/output/output_field.f90 @ 667

Last change on this file since 667 was 667, checked in by dubos, 6 years ago

trunk : basic coarse-grain profiling

File size: 1.4 KB
Line 
1MODULE output_field_mod
2  USE genmod
3  USE xios_mod
4  USE profiling_mod
5  IMPLICIT NONE
6  SAVE
7  PRIVATE
8
9  LOGICAL,SAVE :: xios_output 
10!$OMP THREADPRIVATE(xios_output)     
11  LOGICAL,SAVE :: enable_io   
12!$OMP THREADPRIVATE(enable_io)     
13
14  INTEGER :: id_output
15
16  PUBLIC enable_io,xios_output,output_field_init,output_field,output_field_finalize
17
18CONTAINS
19 
20  SUBROUTINE output_field_init
21  USE getin_mod
22  IMPLICIT NONE
23
24    CALL register_id('output',id_output)
25
26    enable_io=.TRUE.
27    CALL getin('enable_io',enable_io)
28
29    IF (using_xios) THEN
30      xios_output=.TRUE.
31      CALL getin('xios_output',xios_output)
32    ELSE
33      xios_output=.FALSE.
34    ENDIF
35   
36    IF (xios_output) THEN
37      CALL xios_init_write_field
38    ENDIF
39  END SUBROUTINE output_field_init
40
41  SUBROUTINE output_field(name_in,field)
42    USE field_mod
43    USE write_field_mod
44    IMPLICIT NONE 
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
52       CALL writeField(name_in,field)
53    ENDIF
54    CALL exit_profile(id_output)
55
56  END SUBROUTINE output_field
57
58  SUBROUTINE output_field_finalize
59    USE ioipsl
60    IMPLICIT NONE
61   
62    IF (xios_output) THEN
63       CALL xios_write_field_finalize
64    ENDIF
65   
66  END SUBROUTINE output_field_finalize
67
68END MODULE output_field_mod
69 
Note: See TracBrowser for help on using the repository browser.