source: codes/icosagcm/trunk/src/output_field.f90 @ 186

Last change on this file since 186 was 186, checked in by ymipsl, 10 years ago

Add new openMP parallelism based on distribution of domains on threads. There is no more limitation of number of threads by MPI process.

YM

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