source: codes/icosagcm/trunk/src/xios_mod.F90 @ 426

Last change on this file since 426 was 394, checked in by ymipsl, 8 years ago

Switching to XIOS2

YM

File size: 16.9 KB
Line 
1MODULE xios_mod
2
3#ifdef CPP_USING_XIOS
4   USE xios
5#endif
6
7  PUBLIC
8  LOGICAL,SAVE :: using_xios
9
10  INTEGER,SAVE :: ncell_i
11!$OMP THREADPRIVATE(ncell_i)
12  INTEGER,SAVE :: ncell_v
13!$OMP THREADPRIVATE(ncell_v)
14
15  PRIVATE ncell_i,ncell_v
16 
17CONTAINS
18
19#ifdef CPP_USING_XIOS
20 
21 SUBROUTINE xios_init
22   USE getin_mod
23   USE xios
24   USE mpipara
25   IMPLICIT NONE
26    TYPE(xios_context) :: ctx_hdl
27
28     using_xios=.TRUE.
29     CALL xios_context_initialize("icosagcm",comm_icosa)
30     CALL xios_get_handle("icosagcm",ctx_hdl)
31     CALL xios_set_current_context(ctx_hdl)
32   
33 END SUBROUTINE xios_init 
34 
35 SUBROUTINE xios_init_write_field
36 USE genmod
37 USE mpipara
38 USE xios
39 USE grid_param
40 USE domain_mod
41 USE dimensions
42 USE spherical_geom_mod
43 USE geometry
44 USE mpi_mod
45 USE time_mod
46 USE metric, ONLY : vup,vdown
47 IMPLICIT NONE
48  TYPE(xios_context) :: ctx_hdl
49  TYPE(xios_duration)      :: dtime
50  REAL(rstd) :: lev_value(llm)
51  REAL(rstd) :: lev_valuep1(llm+1)
52  INTEGER :: ncell, ncell_tot, ncell_glo(0:mpi_size-1), displ
53  INTEGER :: ind, i,j,k,l
54  REAL(rstd),ALLOCATABLE    :: lon(:), lat(:), bounds_lon(:,:), bounds_lat(:,:)
55  TYPE(t_domain),POINTER :: d
56
57!$OMP BARRIER
58!$OMP MASTER
59!   CALL xios_context_initialize("icosagcm",comm_icosa)
60   CALL xios_get_handle("icosagcm",ctx_hdl)
61   CALL xios_set_current_context(ctx_hdl)
62   lev_value(:) = (/ (l,l=1,llm) /)     
63   lev_valuep1(:) = (/ (l,l=1,llm+1) /)     
64   CALL xios_set_axis_attr("lev",n_glo=llm ,value=lev_value) ;
65   CALL xios_set_axis_attr("levp1",n_glo=llm+1 ,value=lev_valuep1) ;
66   
67   ncell=0
68   DO ind=1,ndomain
69     d=>domain(ind)
70       
71     DO j=d%jj_begin,d%jj_end
72       DO i=d%ii_begin,d%ii_end
73         IF (domain(ind)%own(i,j)) ncell=ncell+1
74       ENDDO
75     ENDDO
76   ENDDO     
77   ncell_i=ncell
78   
79   CALL MPI_ALLGATHER(ncell,1,MPI_INTEGER,ncell_glo,1,MPI_INTEGER,comm_icosa,ierr)
80
81   displ=0
82   DO i=1,mpi_rank
83     displ=displ+ncell_glo(i-1)
84   ENDDO
85
86   ncell_tot=sum(ncell_glo(:))
87   
88   ALLOCATE(lon(ncell), lat(ncell), bounds_lon(0:5,ncell), bounds_lat(0:5,ncell)) 
89   
90   ncell=0
91   DO ind=1,ndomain
92     d=>domain(ind)
93       
94     DO j=d%jj_begin,d%jj_end
95       DO i=d%ii_begin,d%ii_end
96         IF (domain(ind)%own(i,j)) THEN
97           ncell=ncell+1
98           CALL xyz2lonlat(d%xyz(:,i,j),lon(ncell),lat(ncell))
99           lon(ncell)=lon(ncell)*180/Pi
100           lat(ncell)=lat(ncell)*180/Pi
101           DO k=0,5
102             CALL xyz2lonlat(d%vertex(:,k,i,j),bounds_lon(k,ncell), bounds_lat(k,ncell))
103             bounds_lat(k,ncell)=bounds_lat(k,ncell)*180/Pi
104             bounds_lon(k,ncell)=bounds_lon(k,ncell)*180/Pi
105           ENDDO
106         ENDIF
107       ENDDO
108     ENDDO
109   ENDDO         
110
111 
112   CALL xios_set_domaingroup_attr("i",ni_glo=ncell_tot, ibegin=displ, ni=ncell)
113   CALL xios_set_domaingroup_attr("i", data_dim=1, type='unstructured' , nvertex=6)
114   CALL xios_set_domaingroup_attr("i",lonvalue_1d=lon, latvalue_1d=lat, bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat)
115   
116   DEALLOCATE(lon, lat, bounds_lon, bounds_lat) 
117   
118   ncell=0
119   DO ind=1,ndomain
120     d=>domain(ind)
121       
122     DO j=d%jj_begin+1,d%jj_end
123       DO i=d%ii_begin,d%ii_end-1
124         ncell=ncell+1
125       ENDDO
126     ENDDO
127
128     DO j=d%jj_begin,d%jj_end-1
129       DO i=d%ii_begin+1,d%ii_end
130          ncell=ncell+1
131        ENDDO
132     ENDDO
133
134   ENDDO     
135   
136   ncell_v=ncell
137   
138   CALL MPI_ALLGATHER(ncell,1,MPI_INTEGER,ncell_glo,1,MPI_INTEGER,comm_icosa,ierr)
139
140   displ=0
141   DO i=1,mpi_rank
142     displ=displ+ncell_glo(i-1)
143   ENDDO
144
145   ncell_tot=sum(ncell_glo(:))
146   
147   ALLOCATE(lon(ncell), lat(ncell), bounds_lon(0:2,ncell), bounds_lat(0:2,ncell)) 
148   
149   ncell=0
150   DO ind=1,ndomain
151     d=>domain(ind)
152 
153     DO j=d%jj_begin+1,d%jj_end
154       DO i=d%ii_begin,d%ii_end-1
155           ncell=ncell+1
156           CALL xyz2lonlat(d%vertex(:,vdown,i,j),lon(ncell),lat(ncell))
157           lon(ncell)=lon(ncell)*180/Pi
158           lat(ncell)=lat(ncell)*180/Pi
159
160           CALL xyz2lonlat(d%xyz(:,i,j),bounds_lon(0,ncell), bounds_lat(0,ncell))
161           CALL xyz2lonlat(d%xyz(:,i,j-1),bounds_lon(1,ncell), bounds_lat(1,ncell))
162           CALL xyz2lonlat(d%xyz(:,i+1,j-1),bounds_lon(2,ncell), bounds_lat(2,ncell))
163
164           DO k=0,2
165             bounds_lat(k,ncell)=bounds_lat(k,ncell)*180/Pi
166             bounds_lon(k,ncell)=bounds_lon(k,ncell)*180/Pi
167           ENDDO
168         ENDDO
169       ENDDO 
170 
171       DO j=d%jj_begin,d%jj_end-1
172         DO i=d%ii_begin+1,d%ii_end
173           ncell=ncell+1
174           CALL xyz2lonlat(d%vertex(:,vup,i,j),lon(ncell),lat(ncell))
175           lon(ncell)=lon(ncell)*180/Pi
176           lat(ncell)=lat(ncell)*180/Pi
177           CALL xyz2lonlat(d%xyz(:,i,j),bounds_lon(0,ncell), bounds_lat(0,ncell))
178           CALL xyz2lonlat(d%xyz(:,i,j+1),bounds_lon(1,ncell), bounds_lat(1,ncell))
179           CALL xyz2lonlat(d%xyz(:,i-1,j+1),bounds_lon(2,ncell), bounds_lat(2,ncell))
180
181           DO k=0,2
182             bounds_lat(k,ncell)=bounds_lat(k,ncell)*180/Pi
183             bounds_lon(k,ncell)=bounds_lon(k,ncell)*180/Pi
184           ENDDO
185         ENDDO
186       ENDDO 
187       
188   ENDDO         
189
190 
191   CALL xios_set_domain_attr("v",ni_glo=ncell_tot, ibegin=displ, ni=ncell)
192   CALL xios_set_domain_attr("v", data_dim=1, type='unstructured' , nvertex=3)
193   CALL xios_set_domain_attr("v",lonvalue_1d=lon, latvalue_1d=lat, bounds_lon_1d=bounds_lon, bounds_lat_1d=bounds_lat)
194
195
196   dtime%second=dt
197   CALL xios_set_timestep(dtime) 
198   CALL xios_close_context_definition()
199!$OMP END MASTER
200!$OMP BARRIER
201   
202 END SUBROUTINE xios_init_write_field
203 
204 
205 SUBROUTINE xios_write_field(name,field)
206 USE field_mod
207 IMPLICIT NONE
208   CHARACTER(LEN=*),INTENT(IN) :: name
209   TYPE(t_field), POINTER :: field(:)
210   CHARACTER(LEN=10) :: str_number
211   INTEGER :: iq
212
213!$OMP BARRIER
214!$OMP MASTER
215   
216   IF (Field(1)%field_type==field_T) THEN
217     IF (field(1)%ndim==2) THEN
218        CALL xios_write_field_scalar(name,field,1)
219      ELSE IF (field(1)%ndim==3) THEN
220        CALL xios_write_field_scalar(name,field,size(field(1)%rval3d,2))
221      ELSE IF (field(1)%ndim==4) THEN
222        DO iq=1,size(field(1)%rval4d,3)
223          WRITE(str_number,'(i10)') iq
224          CALL xios_write_field_scalar(name//TRIM(ADJUSTL(str_number)),field,size(field(1)%rval4d,2),iq)
225        ENDDO
226      ELSE
227        PRINT *, "xios_write_field : dimension > 4 are not supported for now"
228      ENDIF
229    ELSE IF (Field(1)%field_type==field_Z) THEN
230     IF (field(1)%ndim==2) THEN
231        CALL xios_write_field_vort(name,field,1)
232      ELSE IF (field(1)%ndim==3) THEN
233        CALL xios_write_field_vort(name,field,size(field(1)%rval3d,2))
234      ELSE IF (field(1)%ndim==4) THEN
235        DO iq=1,size(field(1)%rval4d,3)
236          WRITE(str_number,'(i10)') iq
237          CALL xios_write_field_vort(name//TRIM(ADJUSTL(str_number)),field,size(field(1)%rval4d,2),iq)
238        ENDDO
239      ELSE
240        PRINT *, "xios_write_field : dimension > 4 are not supported for now"
241      ENDIF
242    ENDIF
243!$OMP END MASTER
244!$OMP BARRIER
245     
246 END SUBROUTINE xios_write_field
247
248 SUBROUTINE xios_read_field(name,field)
249 USE field_mod
250 IMPLICIT NONE
251   CHARACTER(LEN=*),INTENT(IN) :: name
252   TYPE(t_field), POINTER :: field(:)
253   CHARACTER(LEN=10) :: str_number
254   INTEGER :: iq
255
256!$OMP BARRIER
257!$OMP MASTER
258   
259   IF (Field(1)%field_type==field_T) THEN
260     IF (field(1)%ndim==2) THEN
261        CALL xios_read_field_scalar(name,field,1)
262      ELSE IF (field(1)%ndim==3) THEN
263        CALL xios_read_field_scalar(name,field,size(field(1)%rval3d,2))
264      ELSE IF (field(1)%ndim==4) THEN
265        DO iq=1,size(field(1)%rval4d,3)
266          WRITE(str_number,'(i10)') iq
267          CALL xios_read_field_scalar(name//TRIM(ADJUSTL(str_number)),field,size(field(1)%rval4d,2),iq)
268        ENDDO
269      ELSE
270        PRINT *, "xios_write_field : dimension > 4 are not supported for now"
271      ENDIF
272    ELSE IF (Field(1)%field_type==field_Z) THEN
273     IF (field(1)%ndim==2) THEN
274        CALL xios_read_field_vort(name,field,1)
275      ELSE IF (field(1)%ndim==3) THEN
276        CALL xios_read_field_vort(name,field,size(field(1)%rval3d,2))
277      ELSE IF (field(1)%ndim==4) THEN
278        DO iq=1,size(field(1)%rval4d,3)
279          WRITE(str_number,'(i10)') iq
280          CALL xios_read_field_vort(name//TRIM(ADJUSTL(str_number)),field,size(field(1)%rval4d,2),iq)
281        ENDDO
282      ELSE
283        PRINT *, "xios_write_field : dimension > 4 are not supported for now"
284      ENDIF
285    ENDIF
286!$OMP END MASTER
287!$OMP BARRIER
288     
289 END SUBROUTINE xios_read_field
290
291
292 
293 SUBROUTINE xios_write_field_scalar(name,field,nlev,iq)
294 USE genmod
295 USE mpipara
296 USE xios
297 USE grid_param
298 USE domain_mod
299 USE dimensions
300 USE spherical_geom_mod
301 USE geometry
302 USE mpi_mod
303 IMPLICIT NONE
304   CHARACTER(LEN=*),INTENT(IN) :: name
305   TYPE(t_field), POINTER :: field(:)
306   INTEGER,INTENT(IN) :: nlev
307   INTEGER,INTENT(IN),OPTIONAL :: iq
308   
309   REAL(rstd) :: field_tmp(ncell_i,nlev)
310   TYPE(t_domain),POINTER :: d
311   INTEGER :: n,i,j,ij,ind
312   
313   IF (field(1)%ndim==2) THEN
314     n=0
315     DO ind=1,ndomain
316       
317       d=>domain(ind)
318       
319       DO j=d%jj_begin,d%jj_end
320         DO i=d%ii_begin,d%ii_end
321           IF (d%own(i,j)) THEN
322             n=n+1
323             ij=d%iim*(j-1)+i
324             field_tmp(n,1)=field(ind)%rval2d(ij)
325           ENDIF
326         ENDDO
327       ENDDO
328     ENDDO
329   ELSE IF (field(1)%ndim==3) THEN
330     n=0
331     DO ind=1,ndomain
332       d=>domain(ind)
333       
334       DO j=d%jj_begin,d%jj_end
335         DO i=d%ii_begin,d%ii_end
336           IF (d%own(i,j)) THEN
337             n=n+1
338             ij=d%iim*(j-1)+i
339             field_tmp(n,:)=field(ind)%rval3d(ij,:)
340           ENDIF
341         ENDDO
342       ENDDO
343     ENDDO
344   ELSE IF (field(1)%ndim==4) THEN
345     n=0
346     DO ind=1,ndomain
347       d=>domain(ind)
348       
349       DO j=d%jj_begin,d%jj_end
350         DO i=d%ii_begin,d%ii_end
351           IF (d%own(i,j)) THEN
352             n=n+1
353             ij=d%iim*(j-1)+i
354             field_tmp(n,:)=field(ind)%rval4d(ij,:,iq)
355           ENDIF
356         ENDDO
357       ENDDO
358     ENDDO     
359   ENDIF
360   
361   CALL xios_send_field(name,field_tmp)
362 
363 END SUBROUTINE xios_write_field_scalar 
364
365
366 SUBROUTINE xios_read_field_scalar(name,field,nlev,iq)
367 USE genmod
368 USE mpipara
369 USE xios
370 USE grid_param
371 USE domain_mod
372 USE dimensions
373 USE spherical_geom_mod
374 USE geometry
375 USE mpi_mod
376 IMPLICIT NONE
377   CHARACTER(LEN=*),INTENT(IN) :: name
378   TYPE(t_field), POINTER :: field(:)
379   INTEGER,INTENT(IN) :: nlev
380   INTEGER,INTENT(IN),OPTIONAL :: iq
381   
382   REAL(rstd) :: field_tmp(ncell_i,nlev)
383   TYPE(t_domain),POINTER :: d
384   INTEGER :: n,i,j,ij,ind
385
386   CALL xios_recv_field(name,field_tmp)
387   
388   IF (field(1)%ndim==2) THEN
389     n=0
390     DO ind=1,ndomain
391       
392       d=>domain(ind)
393       
394       DO j=d%jj_begin,d%jj_end
395         DO i=d%ii_begin,d%ii_end
396           IF (d%own(i,j)) THEN
397             n=n+1
398             ij=d%iim*(j-1)+i
399             field(ind)%rval2d(ij)=field_tmp(n,1)
400           ENDIF
401         ENDDO
402       ENDDO
403     ENDDO
404   ELSE IF (field(1)%ndim==3) THEN
405     n=0
406     DO ind=1,ndomain
407       d=>domain(ind)
408       
409       DO j=d%jj_begin,d%jj_end
410         DO i=d%ii_begin,d%ii_end
411           IF (d%own(i,j)) THEN
412             n=n+1
413             ij=d%iim*(j-1)+i
414             field(ind)%rval3d(ij,:)=field_tmp(n,:)
415           ENDIF
416         ENDDO
417       ENDDO
418     ENDDO
419   ELSE IF (field(1)%ndim==4) THEN
420     n=0
421     DO ind=1,ndomain
422       d=>domain(ind)
423       
424       DO j=d%jj_begin,d%jj_end
425         DO i=d%ii_begin,d%ii_end
426           IF (d%own(i,j)) THEN
427             n=n+1
428             ij=d%iim*(j-1)+i
429             field(ind)%rval4d(ij,:,iq)=field_tmp(n,:)
430           ENDIF
431         ENDDO
432       ENDDO
433     ENDDO     
434   ENDIF
435 
436 END SUBROUTINE xios_read_field_scalar
437
438
439     
440 SUBROUTINE xios_write_field_vort(name,field,nlev,iq)
441 USE genmod
442 USE mpipara
443 USE xios
444 USE grid_param
445 USE domain_mod
446 USE dimensions
447 USE spherical_geom_mod
448 USE geometry
449 USE mpi_mod
450 IMPLICIT NONE
451   CHARACTER(LEN=*),INTENT(IN) :: name
452   TYPE(t_field), POINTER :: field(:)
453   INTEGER,INTENT(IN) :: nlev
454   INTEGER,INTENT(IN),OPTIONAL :: iq
455   
456   REAL(rstd) :: field_tmp(ncell_v,nlev)
457   TYPE(t_domain),POINTER :: d
458   INTEGER :: n,i,j,ij,ind
459   
460   IF (field(1)%ndim==2) THEN
461     n=0
462     DO ind=1,ndomain
463       d=>domain(ind)
464       CALL swap_dimensions(ind) 
465       
466       DO j=d%jj_begin+1,d%jj_end
467         DO i=d%ii_begin,d%ii_end-1
468           n=n+1
469           ij=iim*(j-1)+i
470           Field_tmp(n,1)=field(ind)%rval2d(ij+z_down)
471         ENDDO
472       ENDDO
473
474       DO j=d%jj_begin,d%jj_end-1
475         DO i=d%ii_begin+1,d%ii_end
476           n=n+1
477           ij=iim*(j-1)+i
478           Field_tmp(n,1)=field(ind)%rval2d(ij+z_up)
479          ENDDO
480       ENDDO
481         
482     ENDDO
483
484   ELSE IF (field(1)%ndim==3) THEN
485     n=0
486     DO ind=1,ndomain
487       d=>domain(ind)
488       CALL swap_dimensions(ind)   
489             
490       DO j=d%jj_begin+1,d%jj_end
491         DO i=d%ii_begin,d%ii_end-1
492           n=n+1
493           ij=iim*(j-1)+i
494           Field_tmp(n,:)=field(ind)%rval3d(ij+z_down,:)
495         ENDDO
496       ENDDO
497
498       DO j=d%jj_begin,d%jj_end-1
499         DO i=d%ii_begin+1,d%ii_end
500           n=n+1
501           ij=iim*(j-1)+i
502           Field_tmp(n,:)=field(ind)%rval3d(ij+z_up,:)
503          ENDDO
504       ENDDO
505         
506     ENDDO
507
508   ELSE IF (field(1)%ndim==4) THEN
509     n=0
510     DO ind=1,ndomain
511       d=>domain(ind)
512       CALL swap_dimensions(ind) 
513               
514       DO j=d%jj_begin+1,d%jj_end
515         DO i=d%ii_begin,d%ii_end-1
516           n=n+1
517           ij=iim*(j-1)+i
518           Field_tmp(n,:)=field(ind)%rval4d(ij+z_down,:,iq)
519         ENDDO
520       ENDDO
521
522       DO j=d%jj_begin,d%jj_end-1
523         DO i=d%ii_begin+1,d%ii_end
524           n=n+1
525           ij=iim*(j-1)+i
526           Field_tmp(n,:)=field(ind)%rval4d(ij+z_up,:,iq)
527          ENDDO
528       ENDDO
529         
530     ENDDO
531
532   ENDIF
533   
534   CALL xios_send_field(name,field_tmp)
535 
536 END SUBROUTINE xios_write_field_vort 
537
538 SUBROUTINE xios_read_field_vort(name,field,nlev,iq)
539 USE genmod
540 USE mpipara
541 USE xios
542 USE grid_param
543 USE domain_mod
544 USE dimensions
545 USE spherical_geom_mod
546 USE geometry
547 USE mpi_mod
548 IMPLICIT NONE
549   CHARACTER(LEN=*),INTENT(IN) :: name
550   TYPE(t_field), POINTER :: field(:)
551   INTEGER,INTENT(IN) :: nlev
552   INTEGER,INTENT(IN),OPTIONAL :: iq
553   
554   REAL(rstd) :: field_tmp(ncell_v,nlev)
555   TYPE(t_domain),POINTER :: d
556   INTEGER :: n,i,j,ij,ind
557
558   CALL xios_recv_field(name,field_tmp)
559
560   
561   IF (field(1)%ndim==2) THEN
562     n=0
563     DO ind=1,ndomain
564       d=>domain(ind)
565       CALL swap_dimensions(ind) 
566       
567       DO j=d%jj_begin+1,d%jj_end
568         DO i=d%ii_begin,d%ii_end-1
569           n=n+1
570           ij=iim*(j-1)+i
571           field(ind)%rval2d(ij+z_down)=Field_tmp(n,1)
572         ENDDO
573       ENDDO
574
575       DO j=d%jj_begin,d%jj_end-1
576         DO i=d%ii_begin+1,d%ii_end
577           n=n+1
578           ij=iim*(j-1)+i
579           Field_tmp(n,1)=field(ind)%rval2d(ij+z_up)
580           field(ind)%rval2d(ij+z_up)=Field_tmp(n,1)
581          ENDDO
582       ENDDO
583         
584     ENDDO
585
586   ELSE IF (field(1)%ndim==3) THEN
587     n=0
588     DO ind=1,ndomain
589       d=>domain(ind)
590       CALL swap_dimensions(ind)   
591             
592       DO j=d%jj_begin+1,d%jj_end
593         DO i=d%ii_begin,d%ii_end-1
594           n=n+1
595           ij=iim*(j-1)+i
596           field(ind)%rval3d(ij+z_down,:)=Field_tmp(n,:)
597         ENDDO
598       ENDDO
599
600       DO j=d%jj_begin,d%jj_end-1
601         DO i=d%ii_begin+1,d%ii_end
602           n=n+1
603           ij=iim*(j-1)+i
604           field(ind)%rval3d(ij+z_up,:)=Field_tmp(n,:)
605          ENDDO
606       ENDDO
607         
608     ENDDO
609
610   ELSE IF (field(1)%ndim==4) THEN
611     n=0
612     DO ind=1,ndomain
613       d=>domain(ind)
614       CALL swap_dimensions(ind) 
615               
616       DO j=d%jj_begin+1,d%jj_end
617         DO i=d%ii_begin,d%ii_end-1
618           n=n+1
619           ij=iim*(j-1)+i
620           field(ind)%rval4d(ij+z_down,:,iq)=Field_tmp(n,:)
621         ENDDO
622       ENDDO
623
624       DO j=d%jj_begin,d%jj_end-1
625         DO i=d%ii_begin+1,d%ii_end
626           n=n+1
627           ij=iim*(j-1)+i
628           field(ind)%rval4d(ij+z_up,:,iq)=Field_tmp(n,:)
629          ENDDO
630       ENDDO
631         
632     ENDDO
633
634   ENDIF
635 
636 END SUBROUTINE xios_read_field_vort 
637
638
639
640
641 
642 SUBROUTINE xios_write_field_finalize
643 IMPLICIT NONE
644
645!$OMP BARRIER
646!$OMP MASTER
647   CALL xios_context_finalize
648!$OMP END MASTER
649!$OMP BARRIER
650
651 END SUBROUTINE xios_write_field_finalize
652
653 SUBROUTINE xios_set_context
654 IMPLICIT NONE   
655  TYPE(xios_context) :: ctx_hdl
656
657!$OMP MASTER
658   CALL xios_get_handle("icosagcm",ctx_hdl)
659   CALL xios_set_current_context(ctx_hdl)
660!$OMP END MASTER
661
662  END SUBROUTINE xios_set_context
663#else
664 
665  SUBROUTINE xios_init
666   IMPLICIT NONE
667         
668    using_xios=.FALSE.
669   
670  END SUBROUTINE xios_init
671 
672  SUBROUTINE xios_write_field(name,field)
673  USE field_mod
674  IMPLICIT NONE
675   CHARACTER(LEN=*),INTENT(IN) :: name
676   TYPE(t_field), POINTER :: field(:)
677  END SUBROUTINE xios_write_field
678 
679  SUBROUTINE xios_update_calendar(step)
680  IMPLICIT NONE
681   INTEGER, INTENT(IN):: step 
682  END SUBROUTINE xios_update_calendar
683
684  SUBROUTINE xios_write_field_finalize
685  END SUBROUTINE xios_write_field_finalize
686 
687  SUBROUTINE xios_init_write_field
688  END SUBROUTINE xios_init_write_field 
689 
690  SUBROUTINE xios_set_context
691  END SUBROUTINE xios_set_context
692 
693
694#endif 
695 
696END MODULE xios_mod
Note: See TracBrowser for help on using the repository browser.