source: XIOS/xios_training/hands-on-2/answer/test_tp2.f90_4 @ 2046

Last change on this file since 2046 was 2046, checked in by ymipsl, 3 years ago
File size: 2.1 KB
Line 
1PROGRAM test_tp2
2
3  USE XIOS
4  IMPLICIT NONE
5  INCLUDE "mpif.h"
6  INTEGER :: rank
7  INTEGER :: size
8  INTEGER :: ierr
9
10  INTEGER :: comm
11  TYPE(xios_duration) :: dtime
12
13  TYPE(xios_date) :: dorigin
14  CHARACTER(len=20) :: dorigin_str
15
16  TYPE(xios_date) :: dstart
17  CHARACTER(len=20) :: dstart_str
18
19  INTEGER :: axis_size
20  DOUBLE PRECISION, ALLOCATABLE :: axis_value(:)
21
22  CHARACTER(len=20) :: domain_type
23  INTEGER :: ni_glo, nj_glo
24  DOUBLE PRECISION, ALLOCATABLE :: lonvalue(:), latvalue(:)
25 
26  INTEGER :: i, j
27 
28  CALL MPI_INIT(ierr)
29
30  CALL xios_initialize("client",return_comm=comm)
31
32  CALL MPI_COMM_RANK(comm,rank,ierr)
33  CALL MPI_COMM_SIZE(comm,size,ierr)
34 
35  print*, "Hello XIOS from proc", rank
36 
37  CALL xios_context_initialize("test",comm)
38
39  !CALL xios_define_calendar(type="Gregorian")
40  !We define the calendar type in xml
41
42  CALL xios_get_time_origin(dorigin)
43  CALL xios_date_convert_to_string(dorigin, dorigin_str)
44  if (rank .EQ. 0) print*, "calendar time_origin = ", dorigin_str
45
46  CALL xios_get_start_date(dstart)
47  CALL xios_date_convert_to_string(dstart, dstart_str)
48  if (rank .EQ. 0) print*, "calendar start_date = ", dstart_str
49
50  dtime%second = 3600
51  CALL xios_set_timestep(dtime)
52
53  CALL xios_get_axis_attr("axis_A", n_glo = axis_size)
54  ALLOCATE(axis_value(axis_size))
55  CALL xios_get_axis_attr("axis_A", value = axis_value)
56  if (rank .EQ. 0) print*, "axis value = ", axis_value(:)
57
58  CALL xios_get_domain_attr("domain_A", type = domain_type)
59  CALL xios_get_domain_attr("domain_A", ni_glo = ni_glo, nj_glo=nj_glo)
60  if(rank.EQ.0) print*, "domain type = ", domain_type
61  if(rank.EQ.0) print*, "domain size = ", ni_glo, "*", nj_glo
62
63  ALLOCATE(lonvalue(ni_glo))
64  ALLOCATE(latvalue(nj_glo))
65
66  DO i=1,ni_glo
67    lonvalue(i) = -180 + i * 360/ni_glo
68  ENDDO
69
70  DO j=1,nj_glo
71    latvalue(j) = -90 + j * 180/nj_glo
72  ENDDO
73
74  CALL xios_set_domain_attr("domain_A", lonvalue_1d=lonvalue,latvalue_1d=latvalue)
75
76  CALL xios_close_context_definition()
77
78  CALL xios_context_finalize()
79
80  DEALLOCATE(axis_value)
81  DEALLOCATE(lonvalue, latvalue)
82
83  CALL MPI_COMM_FREE(comm, ierr)
84
85  CALL xios_finalize()
86
87  CALL MPI_FINALIZE(ierr)
88
89END PROGRAM test_tp2
90
Note: See TracBrowser for help on using the repository browser.