source: XMLIO_SERVER/trunk/src/XMLIO/mod_zoom.f90 @ 29

Last change on this file since 29 was 29, checked in by ymipsl, 15 years ago

New Features :

  • Les zoom sont maintenant utilisables.
  • Lorsqu'un serveur ne sort pas de données dans un fichier, le fichier n'est pas crée.
  • Lorsqu'un serveur est le seul a sortir un fichier, l'indexation par numero de process est supprimé.
  • Les axes verticaux ont maintenant un attribut << positive [TRUE/FALSE]>>
File size: 3.8 KB
Line 
1MODULE mod_zoom
2  USE mod_xmlio_parameters
3  USE mod_sorted_list
4
5  IMPLICIT NONE
6
7  TYPE,PUBLIC :: zoom
8    CHARACTER(len=str_len)      :: id
9    LOGICAL                     :: has_id
10    CHARACTER(len=str_len)      :: name
11    LOGICAL                     :: has_name
12    CHARACTER(len=str_len)      :: description
13    LOGICAL                     :: has_description
14    INTEGER                     :: ni_glo
15    LOGICAL                     :: has_ni_glo
16    INTEGER                     :: nj_glo
17    LOGICAL                     :: has_nj_glo
18    INTEGER                     :: ibegin_glo
19    LOGICAL                     :: has_ibegin_glo
20    INTEGER                     :: jbegin_glo
21    LOGICAL                     :: has_jbegin_glo
22    INTEGER                     :: ni_loc
23    INTEGER                     :: nj_loc
24    INTEGER                     :: ibegin_loc
25    INTEGER                     :: jbegin_loc
26  END TYPE zoom   
27
28  INCLUDE 'vector_zoom_def.inc'
29
30  TYPE(vector_zoom),POINTER,SAVE             :: zoom_Ids
31  TYPE(sorted_list),POINTER,SAVE,PRIVATE     :: Ids 
32 
33CONTAINS
34 
35  INCLUDE 'vector_zoom_contains.inc'
36
37  SUBROUTINE zoom__swap_context(saved_zoom_Ids,saved_Ids)
38  IMPLICIT NONE
39    TYPE(vector_zoom),POINTER          :: saved_zoom_Ids
40    TYPE(sorted_list),POINTER          :: saved_Ids 
41   
42    zoom_ids=>saved_zoom_ids
43    ids=>saved_ids
44  END SUBROUTINE zoom__swap_context
45
46
47  SUBROUTINE zoom__init
48  IMPLICIT NONE
49
50    CALL vector_zoom__new(zoom_Ids)
51    CALL sorted_list__new(Ids)
52   
53  END SUBROUTINE zoom__init
54 
55
56  SUBROUTINE zoom__new(pt_zoom,Id)
57  USE string_function
58  IMPLICIT NONE
59    TYPE(zoom),POINTER :: pt_zoom
60    CHARACTER(LEN=*),OPTIONAL     :: Id
61    INTEGER   :: Pos 
62     
63    pt_zoom%has_id=.FALSE.
64    pt_zoom%has_name=.FALSE.
65    pt_zoom%has_description=.FALSE.
66    pt_zoom%has_ni_glo=.FALSE.
67    pt_zoom%has_nj_glo=.FALSE.
68    pt_zoom%has_ibegin_glo=.FALSE.
69    pt_zoom%has_jbegin_glo=.FALSE.
70     
71    IF (PRESENT(Id)) THEN
72      Pt_zoom%id=TRIM(ADJUSTL(Id))
73      Pt_zoom%has_id=.TRUE.
74     CALL vector_zoom__set_new(zoom_Ids,Pt_zoom,Pos)
75     CALL sorted_list__Add(Ids,hash(id),Pos)
76    ENDIF
77   
78  END SUBROUTINE zoom__new
79   
80  SUBROUTINE zoom__set(pt_zoom,name,description,ni_glo,nj_glo,ibegin_glo,jbegin_glo)
81  IMPLICIT NONE
82    TYPE(zoom),POINTER                   :: pt_zoom
83    CHARACTER(len=*),OPTIONAL            :: name
84    CHARACTER(len=*),OPTIONAL            :: description
85    INTEGER,OPTIONAL                     :: ni_glo
86    INTEGER,OPTIONAL                     :: nj_glo
87    INTEGER,OPTIONAL                     :: ibegin_glo
88    INTEGER,OPTIONAL                     :: jbegin_glo
89   
90    IF (PRESENT(name)) THEN
91      pt_zoom%name=TRIM(ADJUSTL(name))
92      pt_zoom%has_name=.TRUE.
93    ENDIF
94   
95    IF (PRESENT(description)) THEN
96      pt_zoom%name=TRIM(ADJUSTL(description))
97      pt_zoom%has_description=.TRUE.
98    ENDIF
99   
100    IF (PRESENT(ni_glo)) THEN
101      pt_zoom%ni_glo=ni_glo
102      pt_zoom%has_ni_glo=.TRUE.
103    ENDIF
104
105    IF (PRESENT(nj_glo)) THEN
106      pt_zoom%nj_glo=nj_glo
107      pt_zoom%has_nj_glo=.TRUE.
108    ENDIF
109
110    IF (PRESENT(ibegin_glo)) THEN
111      pt_zoom%ibegin_glo=ibegin_glo
112      pt_zoom%has_ibegin_glo=.TRUE.
113    ENDIF
114   
115    IF (PRESENT(jbegin_glo)) THEN
116      pt_zoom%jbegin_glo=jbegin_glo
117      pt_zoom%has_ibegin_glo=.TRUE.
118    ENDIF
119               
120   END SUBROUTINE zoom__set   
121
122
123  SUBROUTINE zoom__get(Id,pt_zoom)
124  USE string_function
125  IMPLICIT NONE
126    CHARACTER(LEN=*),INTENT(IN)     :: Id
127    TYPE(zoom),POINTER              :: Pt_zoom
128
129    INTEGER                         :: Pos
130    LOGICAL                         :: success
131   
132    CALL sorted_list__find(Ids,hash(Id),Pos,success)
133    IF (success) THEN
134      Pt_zoom=>zoom_ids%at(Pos)%Pt
135    ELSE
136      Pt_zoom=>NULL()
137    ENDIF
138   
139  END SUBROUTINE zoom__get
140
141END MODULE mod_zoom
Note: See TracBrowser for help on using the repository browser.