Ignore:
Timestamp:
04/15/09 17:34:38 (15 years ago)
Author:
ymipsl
Message:

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:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_SERVER/trunk/src/IOSERVER/mod_interface_ioipsl.f90

    r28 r29  
    3838    TYPE(field),POINTER    :: pt_field 
    3939    TYPE(grid),POINTER     :: pt_grid 
     40    TYPE(zoom),POINTER     :: pt_zoom 
    4041    TYPE(axis),POINTER     :: pt_axis 
    4142    TYPE(domain),POINTER   :: pt_domain 
     
    4849    INTEGER :: ioipsl_domain_id 
    4950    INTEGER :: i,j 
     51    CHARACTER(LEN=20) :: direction 
    5052      
    5153    CALL xmlio__close_definition  
     
    6163      pt_grid=>pt_file_dep%grids%at(1)%pt 
    6264      pt_domain=>pt_grid%domain 
    63       CALL set_ioipsl_domain_id(pt_grid,nb_server,server_rank,ioipsl_domain_id) 
    64       CALL histbeg(TRIM(pt_file%name),pt_domain%ni,pt_domain%lon, pt_domain%nj, pt_domain%lat,  & 
    65                     1, pt_domain%ni, 1, pt_domain%nj,initial_timestep, initial_date, timestep_value,  & 
    66                    ioipsl_hori_id, ioipsl_file_id,domain_id=ioipsl_domain_id)                                               
    67        
    68       DO j=1,pt_file_dep%axis%size 
    69         pt_axis=>pt_file_dep%axis%at(j)%pt 
    70         CALL sorted_list__find(axis_id,hash(Pt_axis%name),ioipsl_axis_id,found) 
    71         IF (.NOT. found) THEN 
    72           IF (TRIM(pt_axis%name) /= "none") THEN 
    73             CALL histvert(ioipsl_file_id, TRIM(pt_axis%name),TRIM(pt_axis%description),    & 
    74                          TRIM(pt_axis%unit), pt_axis%size,pt_axis%values, ioipsl_axis_id) 
    75             CALL sorted_list__add(axis_id,hash(Pt_axis%name),ioipsl_axis_id) 
     65      pt_zoom=>pt_file_dep%zooms%at(1)%pt 
     66!      print *,TRIM(pt_file%name),' ',TRIM(pt_zoom%id) 
     67!      print*,'Global --->',pt_zoom%ni_glo,pt_zoom%nj_glo,pt_zoom%ibegin_glo,pt_zoom%jbegin_glo 
     68!      print*,'Local  --->',pt_zoom%ni_loc,pt_zoom%nj_loc,pt_zoom%ibegin_loc,pt_zoom%jbegin_loc 
     69       
     70      IF (pt_zoom%ni_loc*pt_zoom%nj_loc > 0) THEN 
     71         
     72        IF ( (pt_zoom%ni_loc == pt_zoom%ni_glo) .AND. (pt_zoom%nj_loc == pt_zoom%nj_glo) ) THEN  
     73 
     74          CALL histbeg(TRIM(pt_file%name),pt_domain%ni,pt_domain%lon, pt_domain%nj, pt_domain%lat,  & 
     75                     pt_zoom%ibegin_loc, pt_zoom%ni_loc,pt_zoom%jbegin_loc,pt_zoom%nj_loc,        &                                            & 
     76                     initial_timestep, initial_date, timestep_value,                              & 
     77                     ioipsl_hori_id, ioipsl_file_id) 
     78         ELSE                                               
     79 
     80          CALL set_ioipsl_domain_id(pt_grid,nb_server,server_rank,ioipsl_domain_id) 
     81          CALL histbeg(TRIM(pt_file%name),pt_domain%ni,pt_domain%lon, pt_domain%nj, pt_domain%lat,  & 
     82                     pt_zoom%ibegin_loc, pt_zoom%ni_loc,pt_zoom%jbegin_loc,pt_zoom%nj_loc,        &                                            & 
     83                     initial_timestep, initial_date, timestep_value,                              & 
     84                     ioipsl_hori_id, ioipsl_file_id,domain_id=ioipsl_domain_id)                                               
     85        
     86         ENDIF 
     87         
     88       
     89        DO j=1,pt_file_dep%axis%size 
     90          pt_axis=>pt_file_dep%axis%at(j)%pt 
     91          CALL sorted_list__find(axis_id,hash(Pt_axis%name),ioipsl_axis_id,found) 
     92          IF (.NOT. found) THEN 
     93            IF (TRIM(pt_axis%name) /= "none") THEN 
     94               
     95              IF (pt_axis%has_positive) THEN  
     96                IF (pt_axis%positive) THEN 
     97                  direction="up" 
     98                ELSE 
     99                  direction="down" 
     100                ENDIF 
     101              ELSE 
     102                direction='unknown' 
     103              ENDIF 
     104 
     105              CALL histvert(ioipsl_file_id, TRIM(pt_axis%name),TRIM(pt_axis%description),    & 
     106                           TRIM(pt_axis%unit), pt_axis%size,pt_axis%values, ioipsl_axis_id,  & 
     107                           pdirect=direction) 
     108              CALL sorted_list__add(axis_id,hash(Pt_axis%name),ioipsl_axis_id) 
     109            ENDIF 
    76110          ENDIF 
    77         ENDIF 
    78       ENDDO 
    79        
    80       DO j=1,pt_file_dep%fields%size 
    81         pt_field=>pt_file_dep%fields%at(j)%pt 
    82         IF (pt_field%axis%name=="none") THEN 
    83           pt_field%internal(id_file)=ioipsl_file_id 
    84           CALL histdef(ioipsl_file_id, TRIM(pt_field%name), pt_field%description,            & 
    85                     &  pt_field%unit, pt_field%grid%domain%ni, pt_field%grid%domain%nj,      & 
    86                     &  ioipsl_hori_id, 1, 1, 1, -99, 32, pt_field%operation,                 & 
    87                     &  real(pt_field%freq_op), real(pt_file%output_freq) ) 
    88         ELSE 
    89           pt_field%internal(id_file)=ioipsl_file_id 
    90           CALL sorted_list__find(axis_id,hash(Pt_field%axis%name),ioipsl_axis_id,found) 
    91           CALL histdef(ioipsl_file_id, TRIM(pt_field%name), pt_field%description,          & 
    92                      & pt_field%unit, pt_field%grid%domain%ni, pt_field%grid%domain%nj,    & 
    93                      & ioipsl_hori_id, pt_field%axis%size, 1, pt_field%axis%size,          & 
    94                      & ioipsl_axis_id, 32, pt_field%operation, real(pt_field%freq_op),     & 
    95                      & real(pt_file%output_freq) ) 
    96         ENDIF 
    97       ENDDO 
    98       CALL histend(ioipsl_file_id) 
     111        ENDDO 
     112         
     113        DO j=1,pt_file_dep%fields%size 
     114          pt_field=>pt_file_dep%fields%at(j)%pt 
     115          IF (pt_field%axis%name=="none") THEN 
     116            pt_field%internal(id_file)=ioipsl_file_id 
     117            CALL histdef(ioipsl_file_id, TRIM(pt_field%name), pt_field%description,            & 
     118                      &  pt_field%unit, pt_field%grid%domain%ni, pt_field%grid%domain%nj,      & 
     119                      &  ioipsl_hori_id, 1, 1, 1, -99, 32, pt_field%operation,                 & 
     120                      &  real(pt_field%freq_op), real(pt_file%output_freq) ) 
     121          ELSE 
     122            pt_field%internal(id_file)=ioipsl_file_id 
     123            CALL sorted_list__find(axis_id,hash(Pt_field%axis%name),ioipsl_axis_id,found) 
     124            CALL histdef(ioipsl_file_id, TRIM(pt_field%name), pt_field%description,          & 
     125                       & pt_field%unit, pt_field%grid%domain%ni, pt_field%grid%domain%nj,    & 
     126                       & ioipsl_hori_id, pt_field%axis%size, 1, pt_field%axis%size,          & 
     127                       & ioipsl_axis_id, 32, pt_field%operation, real(pt_field%freq_op),     & 
     128                       & real(pt_file%output_freq) ) 
     129          ENDIF 
     130        ENDDO 
     131        CALL histend(ioipsl_file_id) 
     132      ENDIF 
    99133      CALL sorted_list__delete(axis_id) 
    100134    ENDDO 
     
    128162       DO i=1,pt_field_base%field_out%size 
    129163         pt_field=>pt_field_base%field_out%at(i)%pt%field 
    130          ioipsl_file_id=pt_field%internal(id_file) 
    131          CALL histwrite(ioipsl_file_id, TRIM(pt_field%name), timestep_number, var, size(var), nindex) 
     164         IF ( pt_field%zoom%ni_loc * pt_field%zoom%nj_loc > 0) THEN            
     165           ioipsl_file_id=pt_field%internal(id_file) 
     166           CALL histwrite(ioipsl_file_id, TRIM(pt_field%name), timestep_number, var, size(var), nindex) 
     167         ENDIF 
    132168       ENDDO 
    133169     ENDIF 
     
    158194       DO i=1,pt_field_base%field_out%size 
    159195         pt_field=>pt_field_base%field_out%at(i)%pt%field 
    160          ioipsl_file_id=pt_field%internal(id_file) 
    161          CALL histwrite(ioipsl_file_id, TRIM(pt_field%name), timestep_number, var, size(var), nindex) 
     196         IF ( pt_field%zoom%ni_loc * pt_field%zoom%nj_loc > 0) THEN            
     197           ioipsl_file_id=pt_field%internal(id_file) 
     198           CALL histwrite(ioipsl_file_id, TRIM(pt_field%name), timestep_number, var, size(var), nindex) 
     199         ENDIF 
    162200       ENDDO 
    163201     ENDIF 
Note: See TracChangeset for help on using the changeset viewer.