- Files:
-
- 9 added
- 33 edited
Legend:
- Unmodified
- Added
- Removed
-
/CONFIG/NEMO_XMLIO_SERVER/EXP00/job_server_mercure
r20 r30 19 19 setenv JOB_REQUEST NEMO 20 20 21 export MPIPROGINF=ALL_DETAIL22 exportF_ERRCNT=023 exportF_FMTBUF=024 exportF_SYSLEN=25621 setenv MPIPROGINF ALL_DETAIL 22 setenv F_ERRCNT=0 23 setenv F_FMTBUF=0 24 setenv F_SYSLEN=256 25 25 26 26 cd $PBS_O_WORKDIR 27 27 28 exportMPISUSPEND=OFF28 setenv MPISUSPEND=OFF 29 29 30 30 echo "NB_CPU->${NB_CPU} NB_CPU_SERVER->${NB_CPU_SERVER} NB_CPU_CLIENT->${NB_CPU_CLIENT}" -
/XMLF90/arch/arch-SX8_BRODIE.fcm
r20 r30 11 11 %MPI_FFLAGS 12 12 %OMP_FFLAGS -P openmp 13 %BASE_LD -size_t6413 %BASE_LD 14 14 %MPI_LD 15 15 %OMP_LD -P openmp -
/XMLF90/configure
r20 r30 105 105 echo "%CPP_KEY $CPP_KEY" >> $config_fcm 106 106 echo "%LD_FFLAGS $LD_FFLAGS" >> $config_fcm 107 echo "%INCDIR -I$NETCDF_INCDIR -I$IOIPSL_INCDIR" >> $config_fcm108 echo "%LIBDIR -L$NETCDF_LIBDIR -L$IOIPSL_LIBDIR" >> $config_fcm -
/XMLIO_SERVER/trunk/arch/arch-IA64_PLATINE.path
r20 r30 6 6 set IOIPSL_LIB="-lioipsl" 7 7 8 set XMLF90_INCDIR="-I$PWD/../ ../lib"9 set XMLF90_LIBDIR="-L$PWD/../ ../lib"8 set XMLF90_INCDIR="-I$PWD/../XMLF90/inc" 9 set XMLF90_LIBDIR="-L$PWD/../XMLF90/lib" 10 10 set XMLF90_LIB="-lxmlf90" 11 11 -
/XMLIO_SERVER/trunk/arch/arch-SX8_BRODIE.fcm
r20 r30 11 11 %MPI_FFLAGS 12 12 %OMP_FFLAGS -P openmp 13 %BASE_LD -size_t6413 %BASE_LD 14 14 %MPI_LD 15 15 %OMP_LD -P openmp -
/XMLIO_SERVER/trunk/bld.cfg
r20 r30 39 39 bld::excl_dep inc::mpif.h 40 40 bld::excl_dep use::mpi 41 bld::excl_dep use::mod_prism_get_comm 42 bld::excl_dep use::mod_prism_proto 41 43 42 44 # Don't generate interface files -
/XMLIO_SERVER/trunk/configure
r20 r30 5 5 set default_compile_flags = "%PROD_FFLAGS" 6 6 set has_use_vt = FALSE 7 set has_oasis = FALSE 7 8 8 9 top: … … 47 48 set compile_flags="%DEBUG_FFLAGS" 48 49 shift ; goto top 50 49 51 case -use_vt 50 52 set has_use_vt = TRUE 51 53 shift ; goto top 52 54 55 case -oasis 56 set has_oasis = TRUE 57 shift ; goto top 58 53 59 default 54 60 echo "unknown option "$1" , exiting..." … … 117 123 set LIB="$LIB $NETCDF_LIBDIR $NETCDF_LIB" 118 124 125 if ( $has_oasis == TRUE ) then 126 set INCDIR="$INCDIR $OASIS_INCDIR" 127 set LIB="$LIB $OASIS_LIBDIR $OASIS_LIB" 128 set CPP_KEY="$CPP_KEY USE_OASIS" 129 endif 130 119 131 if ( $has_use_vt == TRUE ) then 120 set INCDIR="$INCDIR $VAMPIR_INCDIR"121 set LIB="$LIB $VAMPIR_LIBDIR $VAMPIR_LIB"122 set CPP_KEY="$CPP_KEY USE_VT"132 set INCDIR="$INCDIR $VAMPIR_INCDIR" 133 set LIB="$LIB $VAMPIR_LIBDIR $VAMPIR_LIB" 134 set CPP_KEY="$CPP_KEY USE_VT" 123 135 endif 136 124 137 125 138 -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_event_client.f90
r20 r30 3 3 USE mod_mpi_buffer_client, ONLY : create_request, finalize_request 4 4 USE mod_event_parameters 5 6 LOGICAL, SAVE :: using_server 5 USE mod_ioserver_namelist 7 6 8 7 CONTAINS 9 8 9 SUBROUTINE event__swap_context(id) 10 USE iomanager 11 IMPLICIT NONE 12 CHARACTER(LEN=*),INTENT(IN) :: id 13 14 IF (using_server) THEN 15 CALL create_request(event_id_swap_context) 16 CALL pack(LEN(TRIM(id))) 17 CALL pack(TRIM(id)) 18 CALL Finalize_request 19 ELSE 20 CALL iom__swap_context(TRIM(id)) 21 ENDIF 22 23 END SUBROUTINE event__swap_context 24 25 10 26 SUBROUTINE event__parse_xml_file(filename) 11 27 USE iomanager … … 109 125 END SUBROUTINE event__set_grid_type_nemo 110 126 127 SUBROUTINE event__set_grid_type_lmdz(name,nbp,offset) 128 USE iomanager 129 IMPLICIT NONE 130 CHARACTER(LEN=*),INTENT(IN) :: name 131 INTEGER,INTENT(IN) :: nbp 132 INTEGER,INTENT(IN) :: offset 133 134 IF (using_server) THEN 135 CALL create_request(event_id_set_grid_type_lmdz) 136 CALL pack(LEN(TRIM(name))) 137 CALL pack(TRIM(name)) 138 CALL pack(nbp) 139 CALL pack(offset) 140 CALL Finalize_request 141 ELSE 142 CALL iom__set_grid_type_lmdz(name,nbp,offset) 143 ENDIF 144 145 END SUBROUTINE event__set_grid_type_lmdz 111 146 112 147 SUBROUTINE event__set_time_parameters(itau0,zjulian,zdt) … … 162 197 END SUBROUTINE event__disable_field 163 198 199 SUBROUTINE event__write_field1d(varname,var) 200 USE iomanager 201 IMPLICIT NONE 202 CHARACTER(len=*),INTENT(IN) :: varname 203 REAL, DIMENSION(:),INTENT(IN) :: var 204 205 IF (using_server) THEN 206 CALL create_request(event_id_write_field1d) 207 CALL pack(len(varname)) 208 CALL pack(size(var,1)) 209 CALL pack(varname) 210 CALL pack_field(var) 211 CALL Finalize_request 212 ELSE 213 CALL iom__write_field1d(varname,var) 214 ENDIF 215 216 END SUBROUTINE event__write_field1d 217 164 218 SUBROUTINE event__write_field2d(varname,var) 165 219 USE iomanager -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_event_parameters.f90
r20 r30 13 13 INTEGER, PARAMETER :: event_id_enable_field = 111 14 14 INTEGER, PARAMETER :: event_id_disable_field = 112 15 INTEGER, PARAMETER :: event_id_swap_context = 113 16 INTEGER, PARAMETER :: event_id_set_grid_type_lmdz = 114 17 INTEGER, PARAMETER :: event_id_write_field1d = 115 15 18 INTEGER, PARAMETER :: event_id_stop_ioserver = 999 16 19 END MODULE mod_event_parameters -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_event_server.f90
r20 r30 20 20 SELECT CASE (event_id) 21 21 22 CASE (event_id_swap_context) 23 CALL event__swap_context 24 22 25 CASE (event_id_parse_xml_file) 23 26 CALL event__parse_xml_file … … 35 38 CALL event__set_grid_type_nemo 36 39 40 CASE (event_id_set_grid_type_lmdz) 41 CALL event__set_grid_type_lmdz 42 37 43 CASE (event_id_set_time_parameters) 38 44 CALL event__set_time_parameters … … 49 55 CASE (event_id_disable_field) 50 56 CALL event__disable_field 57 58 CASE (event_id_write_Field1d) 59 CALL event__write_Field1d 51 60 52 61 CASE (event_id_write_Field2d) … … 67 76 END SUBROUTINE Process_event 68 77 78 SUBROUTINE event__swap_context 79 IMPLICIT NONE 80 INTEGER :: id_size 81 82 CALL unpack(id_size) 83 CALL sub_internal(id_size) 84 85 CONTAINS 86 87 SUBROUTINE sub_internal(id_size) 88 INTEGER :: id_size 89 CHARACTER(LEN=id_size) :: id 90 91 CALL unpack(id) 92 93 CALL iom__swap_context(id) 94 95 END SUBROUTINE sub_internal 96 97 END SUBROUTINE event__swap_context 98 69 99 70 100 SUBROUTINE event__parse_xml_file … … 172 202 END SUBROUTINE event__set_grid_type_nemo 173 203 204 SUBROUTINE event__set_grid_type_lmdz 205 IMPLICIT NONE 206 INTEGER :: name_size 207 208 CALL unpack(name_size) 209 CALL sub_internal(name_size) 210 211 CONTAINS 212 213 SUBROUTINE sub_internal(name_size) 214 INTEGER :: name_size 215 CHARACTER(LEN=name_size) :: name 216 INTEGER :: nbp 217 INTEGER :: offset 218 219 CALL unpack(name) 220 CALL unpack(nbp) 221 CALL unpack(offset) 222 CALL iom__set_grid_type_lmdz(name,nbp,offset) 223 224 END SUBROUTINE sub_internal 225 226 END SUBROUTINE event__set_grid_type_lmdz 174 227 175 228 SUBROUTINE event__set_vert_axis … … 256 309 257 310 311 SUBROUTINE event__write_field1D 312 IMPLICIT NONE 313 INTEGER :: lenc 314 INTEGER :: dim1 315 316 CALL unpack(lenc) 317 CALL unpack(dim1) 318 CALL sub_internal(lenc,dim1) 319 320 CONTAINS 321 SUBROUTINE sub_internal(lenc,dim1) 322 IMPLICIT NONE 323 INTEGER :: lenc 324 INTEGER :: dim1 325 CHARACTER(len=lenc) :: varname 326 REAL :: var(dim1) 327 328 CALL unpack(varname) 329 CALL unpack_field(var) 330 331 CALL iom__write_Field1d(varname,var) 332 333 END SUBROUTINE sub_internal 334 END SUBROUTINE event__write_field1d 335 258 336 SUBROUTINE event__write_field2D 259 337 IMPLICIT NONE -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_interface_ioipsl.f90
r20 r30 1 1 MODULE mod_interface_ioipsl 2 2 3 INTEGER,SAVE,PRIVATE :: ini_timestep 4 REAL,SAVE,PRIVATE :: zjulian 5 REAL,SAVE,PRIVATE :: timestep 6 INTEGER,SAVE,PRIVATE :: timestep_nb 3 4 INTEGER,PARAMETER :: id_file=1 5 6 7 CONTAINS 8 9 SUBROUTINE init_interface_ioipsl 10 USE xmlio 11 IMPLICIT NONE 7 12 8 INTEGER,PARAMETER :: id_file=19 10 11 CONTAINS12 13 SUBROUTINE init_interface_ioipsl14 USE xmlio15 IMPLICIT NONE16 17 13 18 14 END SUBROUTINE init_interface_ioipsl … … 20 16 21 17 SUBROUTINE set_time_parameters(ini_timestep0,zjulian0,timestep0) 18 USE xmlio 22 19 IMPLICIT NONE 23 20 INTEGER :: ini_timestep0 24 21 REAL :: zjulian0, timestep0 25 22 26 timestep =timestep027 ini _timestep=ini_timestep028 zjulian=zjulian023 timestep_value=timestep0 24 initial_timestep=ini_timestep0 25 initial_date=zjulian0 29 26 30 27 END SUBROUTINE set_time_parameters … … 41 38 TYPE(field),POINTER :: pt_field 42 39 TYPE(grid),POINTER :: pt_grid 40 TYPE(zoom),POINTER :: pt_zoom 43 41 TYPE(axis),POINTER :: pt_axis 44 42 TYPE(domain),POINTER :: pt_domain … … 51 49 INTEGER :: ioipsl_domain_id 52 50 INTEGER :: i,j 51 CHARACTER(LEN=20) :: direction 53 52 54 53 CALL xmlio__close_definition … … 64 63 pt_grid=>pt_file_dep%grids%at(1)%pt 65 64 pt_domain=>pt_grid%domain 66 CALL set_ioipsl_domain_id(pt_grid,nb_server,server_rank,ioipsl_domain_id) 67 CALL histbeg(TRIM(pt_file%name),pt_domain%ni,pt_domain%lon, pt_domain%nj, pt_domain%lat, & 68 1, pt_domain%ni, 1, pt_domain%nj,ini_timestep, zjulian, timestep, & 69 ioipsl_hori_id, ioipsl_file_id,domain_id=ioipsl_domain_id) 70 71 DO j=1,pt_file_dep%axis%size 72 pt_axis=>pt_file_dep%axis%at(j)%pt 73 CALL sorted_list__find(axis_id,hash(Pt_axis%name),ioipsl_axis_id,found) 74 IF (.NOT. found) THEN 75 IF (TRIM(pt_axis%name) /= "none") THEN 76 CALL histvert(ioipsl_file_id, TRIM(pt_axis%name),TRIM(pt_axis%description), & 77 TRIM(pt_axis%unit), pt_axis%size,pt_axis%values, ioipsl_axis_id) 78 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 79 110 ENDIF 80 END IF81 ENDDO82 83 DO j=1,pt_file_dep%fields%size84 pt_field=>pt_file_dep%fields%at(j)%pt85 IF (pt_field%axis%name=="none") THEN86 pt_field%internal(id_file)=ioipsl_file_id87 CALL histdef(ioipsl_file_id, TRIM(pt_field%name), pt_field%description,&88 & pt_field%unit, pt_field%grid%domain%ni, pt_field%grid%domain%nj,&89 & ioipsl_hori_id, 1, 1, 1, -99, 32, pt_field%operation, &90 & real(pt_field%freq_op), real(pt_file%output_freq) )91 ELSE92 pt_field%internal(id_file)=ioipsl_file_id93 CALL sorted_list__find(axis_id,hash(Pt_field%axis%name),ioipsl_axis_id,found)94 CALL histdef(ioipsl_file_id, TRIM(pt_field%name), pt_field%description,&95 & pt_field%unit, pt_field%grid%domain%ni, pt_field%grid%domain%nj,&96 & ioipsl_hori_id, pt_field%axis%size, 1, pt_field%axis%size,&97 & ioipsl_axis_id, 32, pt_field%operation, real(pt_field%freq_op), &98 & real(pt_file%output_freq) )99 END IF100 ENDDO101 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 102 133 CALL sorted_list__delete(axis_id) 103 134 ENDDO … … 131 162 DO i=1,pt_field_base%field_out%size 132 163 pt_field=>pt_field_base%field_out%at(i)%pt%field 133 ioipsl_file_id=pt_field%internal(id_file) 134 CALL histwrite(ioipsl_file_id, TRIM(pt_field%name), timestep_nb, 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 135 168 ENDDO 136 169 ENDIF … … 161 194 DO i=1,pt_field_base%field_out%size 162 195 pt_field=>pt_field_base%field_out%at(i)%pt%field 163 ioipsl_file_id=pt_field%internal(id_file) 164 CALL histwrite(ioipsl_file_id, TRIM(pt_field%name), timestep_nb, 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 165 200 ENDDO 166 201 ENDIF … … 169 204 170 205 SUBROUTINE set_timestep(timestep_nb0) 206 USE xmlio 171 207 IMPLICIT NONE 172 208 INTEGER,INTENT(IN) :: timestep_nb0 173 209 174 timestep_n b=timestep_nb0210 timestep_number=timestep_nb0 175 211 176 212 END SUBROUTINE set_timestep -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_ioclient.f90
r20 r30 8 8 USE mod_mpi_buffer_client 9 9 USE mod_wait 10 USE mod_ioserver_namelist 11 USE mod_event_client 12 USE iomanager 10 13 IMPLICIT NONE 11 INTEGER, INTENT(OUT) :: NEW_COMM 12 13 CALL Init_parallel 14 CALL Init_mpi_buffer 15 CALL Init_wait 16 17 NEW_COMM=intracomm 14 INTEGER, INTENT(INOUT),OPTIONAL :: NEW_COMM 15 16 INTEGER :: Comm 17 INTEGER :: nb_server 18 INTEGER :: rank 19 INTEGER :: ierr 20 LOGICAL :: init 21 INCLUDE 'mpif.h' 22 23 CALL read_namelist 24 25 IF (using_server) THEN 26 CALL Init_parallel 27 CALL Init_mpi_buffer 28 CALL Init_wait 29 IF (PRESENT(NEW_COMM)) THEN 30 NEW_COMM=intracomm 31 ENDIF 32 ELSE 33 CALL MPI_INITIALIZED(init,ierr) 34 IF (init) THEN 35 IF (.NOT. PRESENT(NEW_COMM)) THEN 36 Comm=MPI_COMM_WORLD 37 ELSE 38 Comm=New_Comm 39 ENDIF 40 ELSE 41 CALL MPI_INIT(ierr) 42 Comm=MPI_COMM_WORLD 43 44 IF (PRESENT(NEW_COMM)) THEN 45 New_Comm=MPI_COMM_WORLD 46 ENDIF 47 ENDIF 48 CALL MPI_COMM_SIZE(Comm,nb_server,ierr) 49 CALL MPI_COMM_RANK(Comm,rank,ierr) 50 CALL iom__init(1,nb_server,rank) 51 CALL iom__set_current_rank(1) 52 ENDIF 18 53 19 54 END SUBROUTINE init_ioclient -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_ioclient_para.f90
r20 r30 12 12 SUBROUTINE Init_parallel 13 13 USE mpitrace 14 USE mod_ioserver_namelist 15 #ifdef USE_OASIS 16 USE mod_prism_get_comm 17 #endif 14 18 IMPLICIT NONE 15 19 INCLUDE 'mpif.h' … … 25 29 INTEGER :: div,remain 26 30 INTEGER :: group_color 31 INTEGER :: Comm_client_server 32 CHARACTER(LEN=6) :: oasis_server_id 27 33 28 ! PRINT *, "on rentre dans MPI_INIT" 29 CALL MPI_INIT(ierr) 30 CALL MPI_COMM_RANK(MPI_COMM_WORLD,global_rank,ierr) 31 CALL MPI_COMM_SIZE(MPI_COMM_WORLD,global_size,ierr) 32 33 PRINT *,"MPI_init Ok, --> mpi_comm_split" 34 CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,color_client,global_rank,intracomm,ierr) 34 IF (using_oasis) THEN 35 oasis_server_id=server_id 36 PRINT *,'prism_get_intracomm' 37 #ifdef USE_OASIS 38 CALL prism_get_intracomm(Comm_client_server,oasis_server_id,ierr) 39 #endif 40 ELSE 41 CALL MPI_INIT(ierr) 42 Comm_client_server=MPI_COMM_WORLD 43 ENDIF 44 45 CALL MPI_COMM_RANK(Comm_client_server,global_rank,ierr) 46 CALL MPI_COMM_SIZE(Comm_client_server,global_size,ierr) 47 48 CALL MPI_COMM_SPLIT(Comm_client_server,color_client,global_rank,intracomm,ierr) 35 49 CALL MPI_COMM_SIZE(intracomm,mpi_size,ierr) 36 50 CALL MPI_COMM_RANK(intracomm,mpi_rank,ierr) 37 PRINT *,"MPI_mpi_comm_split ok --> intracomm" 51 38 52 nb_server_io=global_size-mpi_size 39 53 div=mpi_size/nb_server_io … … 45 59 group_color=(nb_server_io-1)-(mpi_size-1-mpi_rank)/div 46 60 ENDIF 47 PRINT *,'group_color',group_color48 61 49 CALL MPI_COMM_SPLIT( MPI_COMM_WORLD,group_color,global_rank,iocomm,ierr)62 CALL MPI_COMM_SPLIT(Comm_client_server,group_color,global_rank,iocomm,ierr) 50 63 51 64 CALL MPI_COMM_SIZE(iocomm,iosize,ierr) 52 65 CALL MPI_COMM_RANK(iocomm,iorank,ierr) 53 PRINT *,"io_size-> ",iosize,"iorank-> ",iorank 66 54 67 ALLOCATE(proc_color(0:iosize-1)) 55 68 CALL MPI_ALLGATHER(color_client,1,MPI_INTEGER,proc_color,1,MPI_INTEGER,iocomm,ierr) 56 print *,"proc_color -> ",proc_color57 69 58 70 DO i=0,iosize-1 -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_iomanager.f90
r20 r30 28 28 END SUBROUTINE iom__parse_xml_file 29 29 30 SUBROUTINE iom__swap_context(id) 31 USE xmlio 32 IMPLICIT NONE 33 CHARACTER(LEN=*) :: id 34 35 IF (current_rank==nb_client) CALL context__swap(id) 36 37 END SUBROUTINE iom__swap_context 38 30 39 SUBROUTINE iom__set_current_rank(rank) 31 40 IMPLICIT NONE … … 99 108 100 109 END SUBROUTINE iom__set_grid_type_nemo 110 111 SUBROUTINE iom__set_grid_type_lmdz(name,nbp,offset) 112 USE xmlio 113 IMPLICIT NONE 114 CHARACTER(LEN=*),INTENT(IN) :: name 115 INTEGER,INTENT(IN) :: nbp 116 INTEGER,INTENT(IN) :: offset 117 118 TYPE(grid), POINTER :: pt_grid 119 TYPE(domain), POINTER :: pt_domain 120 LOGICAL,ALLOCATABLE :: mask(:,:) 121 122 CALL grid__get(name,pt_grid) 123 CALL grid__get_subdomain(pt_grid,current_rank,pt_domain) 124 ALLOCATE(mask(pt_domain%ni,pt_domain%nj)) 125 mask(:,:)=.TRUE. 126 mask(1:offset,1)=.FALSE. 127 mask(MOD(offset+nbp-1,pt_domain%ni)+2:pt_domain%ni,pt_domain%nj)=.FALSE. 128 CALL domain__set_type_box(pt_domain,mask) 129 130 END SUBROUTINE iom__set_grid_type_lmdz 101 131 102 132 SUBROUTINE iom__set_time_parameters(itau0,zjulian,zdt) … … 273 303 nj=local_domain%nj 274 304 275 IF (pt_field%axis%name /="none") THEN305 IF (pt_field%axis%name=="none") THEN 276 306 CALL write_ioipsl_3d(varname,Field_buffer(1:ni,1:nj,1:nk)) 277 307 ELSE -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_ioserver_para.f90
r20 r30 20 20 SUBROUTINE Init_parallel 21 21 USE mpitrace 22 USE mod_ioserver_namelist 23 #ifdef USE_OASIS 24 USE mod_prism_get_comm 25 #endif 22 26 IMPLICIT NONE 23 27 INCLUDE 'mpif.h' … … 28 32 INTEGER :: i 29 33 INTEGER :: group_color 30 31 CALL MPI_INIT(ierr) 32 CALL MPI_COMM_RANK(MPI_COMM_WORLD,global_rank,ierr) 33 CALL MPI_COMM_SIZE(MPI_COMM_WORLD,global_size,ierr) 34 35 CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,color_server,global_rank,intracomm,ierr) 34 INTEGER :: Comm_client_server 35 INTEGER :: comp_id 36 CHARACTER(LEN=6) :: oasis_server_id, oasis_client_id 37 38 IF (using_oasis) THEN 39 oasis_server_id=server_id 40 oasis_client_id=client_id 41 #ifdef USE_OASIS 42 CALL prism_init_comp_proto (comp_id, oasis_server_id, ierr) 43 CALL prism_get_intracomm(Comm_client_server,oasis_client_id,ierr) 44 #endif 45 ELSE 46 CALL MPI_INIT(ierr) 47 Comm_client_server=MPI_COMM_WORLD 48 ENDIF 49 50 CALL MPI_COMM_RANK(Comm_client_server,global_rank,ierr) 51 CALL MPI_COMM_SIZE(Comm_client_server,global_size,ierr) 52 53 CALL MPI_COMM_SPLIT(Comm_client_server,color_server,global_rank,intracomm,ierr) 36 54 CALL MPI_COMM_SIZE(intracomm,mpi_size,ierr) 37 55 CALL MPI_COMM_RANK(intracomm,mpi_rank,ierr) … … 40 58 PRINT *,'group_color',group_color 41 59 42 CALL MPI_COMM_SPLIT( MPI_COMM_WORLD,group_color,global_rank,iocomm,ierr)60 CALL MPI_COMM_SPLIT(Comm_client_server,group_color,global_rank,iocomm,ierr) 43 61 44 62 CALL MPI_COMM_SIZE(iocomm,iosize,ierr) … … 64 82 65 83 SUBROUTINE Finalize_parallel 84 USE mod_ioserver_namelist 85 #ifdef USE_OASIS 86 USE mod_prism_proto 87 #endif 66 88 IMPLICIT NONE 67 89 include 'mpif.h' 68 90 INTEGER :: ierr 69 91 70 CALL MPI_FINALIZE(ierr) 71 92 IF (using_oasis) THEN 93 #ifdef USE_OASIS 94 CALL prism_terminate_proto(ierr) 95 #endif 96 ELSE 97 CALL MPI_FINALIZE(ierr) 98 ENDIF 99 72 100 END SUBROUTINE Finalize_parallel 73 101 -
/XMLIO_SERVER/trunk/src/IOSERVER/server.f90
r20 r30 7 7 USE iomanager 8 8 USE mod_interface_ioipsl 9 USE mod_ioserver_namelist 9 10 IMPLICIT NONE 10 11 INCLUDE 'mpif.h' … … 15 16 ! CALL SLEEP(60) 16 17 PRINT *,'je suis un serveur' 18 CALL read_namelist 17 19 CALL init_parallel 18 20 CALL init_mpi_buffer -
/XMLIO_SERVER/trunk/src/XMLIO/create_template
r20 r30 1 sed "s/#TYPE#/field/g" vector_def.template > vector_field_def.inc 2 sed "s/#TYPE#/field/g" vector_contains.template > vector_field_contains.inc 1 #! /bin/bash 3 2 4 sed "s/#TYPE#/field_group/g" vector_def.template > vector_field_group_def.inc 5 sed "s/#TYPE#/field_group/g" vector_contains.template > vector_field_group_contains.inc 3 function template() 4 { 5 echo ${1} 6 sed "s/#TYPE#/${1}/g" vector_def.template > vector_${1}_def.inc 7 sed "s/#TYPE#/${1}/g" vector_contains.template > vector_${1}_contains.inc 8 } 6 9 7 sed "s/#TYPE#/axis/g" vector_def.template > vector_axis_def.inc8 sed "s/#TYPE#/axis/g" vector_contains.template > vector_axis_contains.inc9 10 10 sed "s/#TYPE#/axis_group/g" vector_def.template > vector_axis_group_def.inc 11 sed "s/#TYPE#/axis_group/g" vector_contains.template > vector_axis_group_contains.inc 12 13 sed "s/#TYPE#/node/g" vector_def.template > vector_node_def.inc 14 sed "s/#TYPE#/node/g" vector_contains.template > vector_node_contains.inc 15 16 sed "s/#TYPE#/domain/g" vector_def.template > vector_domain_def.inc 17 sed "s/#TYPE#/domain/g" vector_contains.template > vector_domain_contains.inc 18 19 sed "s/#TYPE#/grid/g" vector_def.template > vector_grid_def.inc 20 sed "s/#TYPE#/grid/g" vector_contains.template > vector_grid_contains.inc 21 22 sed "s/#TYPE#/grid_group/g" vector_def.template > vector_grid_group_def.inc 23 sed "s/#TYPE#/grid_group/g" vector_contains.template > vector_grid_group_contains.inc 24 25 sed "s/#TYPE#/file/g" vector_def.template > vector_file_def.inc 26 sed "s/#TYPE#/file/g" vector_contains.template > vector_file_contains.inc 27 28 sed "s/#TYPE#/file_group/g" vector_def.template > vector_file_group_def.inc 29 sed "s/#TYPE#/file_group/g" vector_contains.template > vector_file_group_contains.inc 30 31 sed "s/#TYPE#/file_dep/g" vector_def.template > vector_file_dep_def.inc 32 sed "s/#TYPE#/file_dep/g" vector_contains.template > vector_file_dep_contains.inc 33 34 sed "s/#TYPE#/field_dep/g" vector_def.template > vector_field_dep_def.inc 35 sed "s/#TYPE#/field_dep/g" vector_contains.template > vector_field_dep_contains.inc 36 37 sed "s/#TYPE#/field_out/g" vector_def.template > vector_field_out_def.inc 38 sed "s/#TYPE#/field_out/g" vector_contains.template > vector_field_out_contains.inc 11 template field 12 template field_group 13 template axis 14 template axis_group 15 template node 16 template domain 17 template grid 18 template grid_group 19 template file 20 template file_group 21 template field_dep 22 template file_dep 23 template field_out 24 template context 25 template zoom -
/XMLIO_SERVER/trunk/src/XMLIO/mod_axis.f90
r20 r30 18 18 CHARACTER(len=str_len) :: unit 19 19 LOGICAL :: has_unit 20 LOGICAL :: positive 21 LOGICAL :: has_positive 20 22 REAL, DIMENSION(:), POINTER :: values 21 23 LOGICAL :: has_values … … 31 33 INCLUDE 'vector_axis_contains.inc' 32 34 35 SUBROUTINE axis__swap_context(saved_axis_Ids,saved_Ids) 36 IMPLICIT NONE 37 TYPE(vector_axis),POINTER :: saved_axis_Ids 38 TYPE(sorted_list),POINTER :: saved_Ids 39 40 axis_ids=>saved_axis_ids 41 ids=>saved_ids 42 43 END SUBROUTINE axis__swap_context 44 33 45 SUBROUTINE axis__init 34 46 IMPLICIT NONE 35 36 ALLOCATE(axis_Ids)37 ALLOCATE(Ids)38 47 39 48 CALL vector_axis__new(axis_Ids) … … 67 76 INTEGER :: Pos 68 77 69 pt_axis%has_id = .FALSE.78 pt_axis%has_id = .FALSE. 70 79 pt_axis%has_name = .FALSE. 71 80 pt_axis%has_size = .FALSE. … … 73 82 pt_axis%has_unit = .FALSE. 74 83 pt_axis%has_values = .FALSE. 75 84 pt_axis%has_positive = .FALSE. 85 76 86 IF (PRESENT(Id)) THEN 77 87 Pt_axis%id=TRIM(ADJUSTL(Id)) … … 83 93 END SUBROUTINE axis__new 84 94 85 SUBROUTINE axis__set(pt_axis, name, description, unit, a_size, values )95 SUBROUTINE axis__set(pt_axis, name, description, unit, a_size, values, positive) 86 96 IMPLICIT NONE 87 97 TYPE(axis), POINTER :: pt_axis … … 91 101 INTEGER ,OPTIONAL :: a_size 92 102 REAL, DIMENSION(:),OPTIONAL :: values 103 LOGICAL ,OPTIONAL :: positive 93 104 94 105 IF (PRESENT(name)) THEN … … 119 130 ENDIF 120 131 132 IF (PRESENT(positive)) then 133 pt_axis%positive=positive 134 pt_axis%has_positive = .TRUE. 135 ENDIF 136 121 137 END SUBROUTINE axis__set 122 138 … … 160 176 ELSE 161 177 PRINT *,"values undefined" 178 ENDIF 179 180 IF (pt_axis%has_positive) THEN 181 PRINT *,"positive = ",pt_axis%positive 182 ELSE 183 PRINT *,"positive undefined" 162 184 ENDIF 163 185 … … 217 239 ELSE 218 240 pt_axis_out%has_values=.FALSE. 241 ENDIF 242 243 IF (pt_axis_in%has_positive) THEN 244 pt_axis_out%positive=pt_axis_in%positive 245 pt_axis_out%has_positive=.TRUE. 246 ELSE IF ( pt_axis_default%has_positive ) THEN 247 pt_axis_out%positive=pt_axis_default%positive 248 pt_axis_out%has_positive=.TRUE. 249 ELSE 250 pt_axis_out%has_positive=.FALSE. 219 251 ENDIF 220 252 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_axis_definition.f90
r20 r30 6 6 CONTAINS 7 7 8 SUBROUTINE axis_definition__swap_context(saved_axis_definition) 9 IMPLICIT NONE 10 TYPE(axis_group),POINTER :: saved_axis_definition 11 12 axis_definition=>saved_axis_definition 13 14 END SUBROUTINE axis_definition__swap_context 15 8 16 SUBROUTINE axis_definition__Init 9 17 USE mod_axis_group 10 18 IMPLICIT NONE 11 19 12 ALLOCATE(axis_definition)13 20 CALL axis_group__new(axis_definition,"axis_definition") 14 21 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_axis_group.f90
r20 r30 22 22 INCLUDE "vector_axis_group_contains.inc" 23 23 24 SUBROUTINE axis_group__swap_context(saved_axis_group_Ids,saved_ids) 25 IMPLICIT NONE 26 TYPE(vector_axis_group),POINTER :: saved_axis_group_Ids 27 TYPE(sorted_list),POINTER :: saved_Ids 28 29 axis_group_ids=>saved_axis_group_ids 30 ids=>saved_ids 31 32 END SUBROUTINE axis_group__swap_context 33 24 34 SUBROUTINE axis_group__init 25 35 IMPLICIT NONE 26 27 ALLOCATE(axis_group_Ids)28 ALLOCATE(Ids)29 36 30 37 CALL vector_axis_group__new(axis_group_Ids) -
/XMLIO_SERVER/trunk/src/XMLIO/mod_dependency.f90
r20 r30 5 5 USE mod_axis 6 6 USE mod_sorted_list 7 USE mod_zoom 7 8 8 9 TYPE file_dep … … 11 12 TYPE(vector_field),POINTER :: fields 12 13 TYPE(vector_grid),POINTER :: grids 14 TYPE(vector_zoom),POINTER :: zooms 13 15 TYPE(vector_axis),POINTER :: axis 14 16 END TYPE file_dep … … 26 28 TYPE(axis), POINTER :: axis 27 29 TYPE(grid), POINTER :: grid 30 TYPE(zoom), POINTER :: zoom 28 31 END TYPE field_out 29 32 … … 32 35 INCLUDE 'vector_field_out_def.inc' 33 36 34 TYPE(vector_file_dep),POINTER :: file_enabled35 TYPE(vector_field_out),POINTER :: field_enabled36 TYPE(vector_field_dep),POINTER :: field_id37 TYPE(vector_file_dep),POINTER,SAVE :: file_enabled 38 TYPE(vector_field_out),POINTER,SAVE :: field_enabled 39 TYPE(vector_field_dep),POINTER,SAVE :: field_id 37 40 38 41 39 TYPE(sorted_list),POINTER :: sorted_id42 TYPE(sorted_list),POINTER,SAVE :: sorted_id 40 43 41 44 CONTAINS … … 45 48 INCLUDE 'vector_field_out_contains.inc' 46 49 50 51 SUBROUTINE dependency__swap_context(saved_file_enabled,saved_field_enabled,save_field_id,saved_sorted_id) 52 IMPLICIT NONE 53 TYPE(vector_file_dep),POINTER :: saved_file_enabled 54 TYPE(vector_field_out),POINTER :: saved_field_enabled 55 TYPE(vector_field_dep),POINTER :: save_field_id 56 TYPE(sorted_list),POINTER :: saved_sorted_id 57 58 file_enabled=>saved_file_enabled 59 field_enabled=>saved_field_enabled 60 field_id=>save_field_id 61 sorted_id=>saved_sorted_id 62 63 END SUBROUTINE dependency__swap_context 64 47 65 SUBROUTINE set_dependency 48 66 IMPLICIT NONE … … 67 85 TYPE (sorted_list),POINTER :: sorted_axis 68 86 TYPE (sorted_list),POINTER :: sorted_grid 87 TYPE (sorted_list),POINTER :: sorted_zoom 69 88 INTEGER :: i 70 89 INTEGER :: j … … 72 91 ALLOCATE(sorted_axis) 73 92 ALLOCATE(sorted_grid) 93 ALLOCATE(sorted_zoom) 74 94 75 95 IF (PRESENT(Pt_file_group)) THEN 76 96 Pt_fg=>Pt_file_group 77 97 ELSE 78 ALLOCATE(file_enabled)79 98 CALL vector_file_dep__new(file_enabled) 80 99 Pt_fg=>file_definition … … 92 111 ALLOCATE(Pt_file_dep%fields) 93 112 ALLOCATE(Pt_file_dep%grids) 113 ALLOCATE(Pt_file_dep%zooms) 94 114 ALLOCATE(Pt_file_dep%axis) 95 115 pt_file_dep%file=>pt_file … … 97 117 CALL vector_field__new(Pt_file_dep%fields) 98 118 CALL vector_grid__new(Pt_file_dep%grids) 119 CALL vector_zoom__new(Pt_file_dep%zooms) 99 120 CALL vector_axis__new(Pt_file_dep%axis) 100 121 CALL sorted_list__new(sorted_axis) 101 122 CALL sorted_list__new(sorted_grid) 123 CALL sorted_list__new(sorted_zoom) 102 124 103 125 CALL Treat_field_group(pt_file%field_list) … … 105 127 CALL sorted_list__delete(sorted_axis) 106 128 CALL sorted_list__delete(sorted_grid) 129 CALL sorted_list__delete(sorted_zoom) 107 130 ENDIF 108 131 ENDDO … … 138 161 CALL vector_grid__set_new(pt_file_dep%grids,Pt_field%grid,pos) 139 162 CALL sorted_list__add(sorted_grid,hash(Pt_field%grid%id),pos) 163 ENDIF 164 ENDIF 165 166 IF (Pt_field%has_zoom) THEN 167 CALL sorted_list__find(sorted_zoom,hash(Pt_field%zoom%id),pos,found) 168 IF (.NOT. found) THEN 169 CALL vector_zoom__set_new(pt_file_dep%zooms,Pt_field%zoom,pos) 170 CALL sorted_list__add(sorted_zoom,hash(Pt_field%zoom%id),pos) 140 171 ENDIF 141 172 ENDIF … … 161 192 INTEGER :: j 162 193 163 ALLOCATE(field_enabled)164 194 CALL vector_field_out__new(field_enabled) 165 195 … … 172 202 pt_field_out%axis=>pt_field_out%field%axis 173 203 pt_field_out%grid=>pt_field_out%field%grid 204 pt_field_out%zoom=>pt_field_out%field%zoom 174 205 ENDDO 175 206 ENDDO … … 189 220 INTEGER :: i 190 221 191 ALLOCATE(field_id)192 222 CALL vector_field_dep__new(field_id) 193 194 ALLOCATE(sorted_id)195 223 CALL sorted_list__new(sorted_id) 196 224 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_domain.f90
r20 r30 1 1 MODULE mod_domain 2 2 USE mod_xmlio_parameters 3 4 3 INTEGER, PARAMETER :: box=1 5 4 INTEGER, PARAMETER :: orange=2 … … 123 122 ENDIF 124 123 124 pt_domain%nbp=nbp 125 125 ALLOCATE(pt_domain%i_index(nbp)) 126 126 ALLOCATE(pt_domain%j_index(nbp)) 127 ALLOCATE(pt_domain%mask(nbp)) 127 128 128 129 DO i=1,nbp 129 Pt_domain%i_index(i)=(index(i)+offset)/pt_domain%nj+1+pt_domain%ibegin-1 130 Pt_domain%j_index(i)=MOD(index(i)+offset,pt_domain%nj)+1+pt_domain%jbegin-1 130 ! Pt_domain%i_index(i)=(index(i)+offset)/pt_domain%ni+1+pt_domain%ibegin-1 131 ! Pt_domain%j_index(i)=MOD(index(i)+offset,pt_domain%ni)+1+pt_domain%jbegin-1 132 Pt_domain%i_index(i)=MOD(index(i)+offset-1,pt_domain%ni)+1 133 Pt_domain%j_index(i)=(index(i)+offset-1)/pt_domain%ni+1 134 131 135 ENDDO 132 136 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_field.f90
r20 r30 5 5 USE mod_axis 6 6 USE mod_grid 7 7 USE mod_zoom 8 8 9 IMPLICIT NONE 9 10 … … 25 26 CHARACTER(len=str_len) :: grid_ref 26 27 LOGICAL :: has_grid_ref 28 CHARACTER(len=str_len) :: zoom_ref 29 LOGICAL :: has_zoom_ref 27 30 INTEGER :: level 28 31 LOGICAL :: has_level … … 40 43 TYPE(grid),POINTER :: grid 41 44 LOGICAL :: has_grid 45 TYPE(zoom),POINTER :: zoom 46 LOGICAL :: has_zoom 42 47 INTEGER :: internal(internal_field) 43 48 … … 47 52 INCLUDE 'vector_field_def.inc' 48 53 49 TYPE(vector_field),POINTER :: field_Ids 50 TYPE(sorted_list),POINTER,PRIVATE :: Ids 54 TYPE(vector_field),POINTER,SAVE :: field_Ids 55 TYPE(sorted_list),POINTER,SAVE,PRIVATE :: Ids 56 51 57 52 58 CONTAINS 53 59 INCLUDE 'vector_field_contains.inc' 54 60 61 SUBROUTINE field__swap_context(saved_field_ids,saved_ids) 62 IMPLICIT NONE 63 TYPE(vector_field),POINTER :: saved_field_ids 64 TYPE(sorted_list),POINTER :: saved_ids 65 66 field_Ids=>saved_field_ids 67 Ids=>saved_Ids 68 69 END SUBROUTINE field__swap_context 70 55 71 SUBROUTINE field__init 56 72 IMPLICIT NONE 57 58 ALLOCATE(field_Ids)59 ALLOCATE(Ids)60 73 61 74 CALL vector_field__new(field_Ids) … … 99 112 pt_field%has_axis_ref = .FALSE. 100 113 pt_field%has_grid_ref = .FALSE. 114 pt_field%has_zoom_ref = .FALSE. 101 115 pt_field%has_prec = .FALSE. 102 116 pt_field%has_level = .FALSE. … … 107 121 Pt_field%has_axis=.FALSE. 108 122 Pt_field%has_grid=.FALSE. 123 Pt_field%has_zoom=.FALSE. 109 124 110 125 IF (PRESENT(Id)) THEN … … 118 133 119 134 120 SUBROUTINE field__set(p_field, name, ref, description, unit, operation, freq_op, axis_ref, grid_ref, prec, level, enabled)135 SUBROUTINE field__set(p_field, name, ref, description, unit, operation, freq_op, axis_ref, grid_ref, zoom_ref, prec, level, enabled) 121 136 122 137 TYPE(field), pointer :: p_field … … 129 144 CHARACTER(len=*),OPTIONAL :: axis_ref 130 145 CHARACTER(len=*),OPTIONAL :: grid_ref 146 CHARACTER(len=*),OPTIONAL :: zoom_ref 131 147 INTEGER, OPTIONAL :: prec 132 148 INTEGER, OPTIONAL :: level … … 166 182 p_field%has_grid_ref = .TRUE. 167 183 ENDIF 184 185 IF (PRESENT(zoom_ref)) THEN 186 p_field%zoom_ref=TRIM(ADJUSTL(zoom_ref)) 187 p_field%has_zoom_ref = .TRUE. 188 ENDIF 189 168 190 IF (PRESENT(prec)) then 169 191 p_field%prec=prec … … 232 254 ELSE 233 255 PRINT *, 'grid_ref undefined ' 256 ENDIF 257 258 IF (pt_field%has_zoom_ref) THEN 259 PRINT *, 'zoom_ref : ',TRIM(pt_field%zoom_ref) 260 ELSE 261 PRINT *, 'zoom_ref undefined ' 234 262 ENDIF 235 263 … … 370 398 ELSE 371 399 pt_field_out%has_grid_ref=.FALSE. 400 ENDIF 401 402 IF (pt_field_in%has_zoom_ref) THEN 403 pt_field_out%zoom_ref=pt_field_in%zoom_ref 404 pt_field_out%has_zoom_ref=.TRUE. 405 ELSE IF ( pt_field_default%has_zoom_ref ) THEN 406 pt_field_out%zoom_ref=pt_field_default%zoom_ref 407 pt_field_out%has_zoom_ref=.TRUE. 408 ELSE 409 pt_field_out%has_zoom_ref=.FALSE. 372 410 ENDIF 373 411 … … 518 556 END SUBROUTINE field__solve_grid_ref 519 557 558 SUBROUTINE field__solve_zoom_ref(pt_field) 559 USE error_msg 560 IMPLICIT NONE 561 TYPE(field), POINTER :: pt_field 562 563 IF (.NOT. pt_field%has_zoom_ref) THEN 564 IF (pt_field%has_grid_ref) THEN 565 pt_field%has_zoom_ref=.TRUE. 566 pt_field%zoom_ref=pt_field%grid_ref 567 ENDIF 568 ENDIF 569 570 IF (pt_field%has_zoom_ref) THEN 571 CALL zoom__get(pt_field%zoom_ref,pt_field%zoom) 572 IF (ASSOCIATED(pt_field%zoom)) THEN 573 pt_field%has_zoom=.TRUE. 574 ELSE 575 WRITE (message,*) "The field : id = ",pt_field%id," name = ",Pt_field%name, & 576 " has a unknown reference to zoom : id =",pt_field%zoom_ref 577 CALL error("mod_field::field__solve_zoom_ref") 578 ENDIF 579 ENDIF 580 581 END SUBROUTINE field__solve_zoom_ref 520 582 521 583 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_field_definition.f90
r20 r30 6 6 CONTAINS 7 7 8 SUBROUTINE field_definition__swap_context(saved_field_definition) 9 IMPLICIT NONE 10 TYPE(field_group),POINTER :: saved_field_definition 11 12 field_definition=>saved_field_definition 13 14 END SUBROUTINE field_definition__swap_context 15 16 8 17 SUBROUTINE field_definition__Init 9 USE mod_field_group10 18 IMPLICIT NONE 11 19 12 ALLOCATE(field_definition) 13 CALL field_group__new(field_definition,"field_definition") 14 20 CALL field_group__new(field_definition,"field_definition") 21 15 22 END SUBROUTINE field_definition__Init 23 16 24 17 25 END MODULE mod_field_definition -
/XMLIO_SERVER/trunk/src/XMLIO/mod_field_group.f90
r20 r30 16 16 INCLUDE "vector_field_group_def.inc" 17 17 18 TYPE(vector_field_group), POINTER :: field_group_Ids19 TYPE(sorted_list),POINTER, PRIVATE :: Ids18 TYPE(vector_field_group),SAVE,POINTER :: field_group_Ids 19 TYPE(sorted_list),POINTER,SAVE,PRIVATE :: Ids 20 20 21 21 CONTAINS … … 23 23 INCLUDE "vector_field_group_contains.inc" 24 24 25 26 SUBROUTINE field_group__swap_context(saved_field_group_ids, saved_ids) 27 IMPLICIT NONE 28 TYPE(vector_field_group),POINTER :: saved_field_group_Ids 29 TYPE(sorted_list),POINTER :: saved_Ids 30 31 field_group_ids=>saved_field_group_ids 32 ids=>saved_ids 33 34 END SUBROUTINE field_group__swap_context 35 25 36 SUBROUTINE field_group__init 26 37 IMPLICIT NONE 27 28 ALLOCATE(field_group_Ids)29 ALLOCATE(Ids)30 38 31 39 CALL vector_field_group__new(field_group_Ids) … … 150 158 CALL field_group__solve_axis_ref(Pt_fg) 151 159 CALL field_group__solve_grid_ref(Pt_fg) 160 CALL field_group__solve_zoom_ref(Pt_fg) 152 161 153 162 END SUBROUTINE field_group__solve_ref … … 200 209 201 210 END SUBROUTINE field_group__solve_grid_ref 211 212 RECURSIVE SUBROUTINE field_group__solve_zoom_ref(Pt_fg) 213 IMPLICIT NONE 214 TYPE(field_group),POINTER :: Pt_fg 215 216 INTEGER :: i 217 218 DO i=1,Pt_fg%groups%size 219 CALL field_group__solve_zoom_ref(Pt_fg%groups%at(i)%pt) 220 ENDDO 221 222 DO i=1,Pt_fg%fields%size 223 CALL field__solve_zoom_ref(Pt_fg%fields%at(i)%pt) 224 ENDDO 225 226 END SUBROUTINE field_group__solve_zoom_ref 202 227 203 228 RECURSIVE SUBROUTINE field_group__print(Pt_fg) -
/XMLIO_SERVER/trunk/src/XMLIO/mod_file.f90
r20 r30 30 30 INCLUDE 'vector_file_contains.inc' 31 31 32 SUBROUTINE file__swap_context(saved_file_ids,saved_ids) 33 IMPLICIT NONE 34 TYPE(vector_file),POINTER :: saved_file_Ids 35 TYPE(sorted_list),POINTER :: saved_Ids 36 37 file_ids=>saved_file_ids 38 ids=>saved_ids 39 40 END SUBROUTINE file__swap_context 41 42 32 43 SUBROUTINE file__init 33 44 IMPLICIT NONE 34 35 ALLOCATE(file_Ids)36 ALLOCATE(Ids)37 45 38 46 CALL vector_file__new(file_Ids) -
/XMLIO_SERVER/trunk/src/XMLIO/mod_file_definition.f90
r20 r30 6 6 CONTAINS 7 7 8 SUBROUTINE file_definition__swap_context(saved_file_definition) 9 IMPLICIT NONE 10 TYPE(file_group),POINTER :: saved_file_definition 11 12 file_definition=>saved_file_definition 13 14 END SUBROUTINE file_definition__swap_context 15 8 16 SUBROUTINE file_definition__Init 9 17 USE mod_file_group 10 18 IMPLICIT NONE 11 19 12 ALLOCATE(file_definition)13 20 CALL file_group__new(file_definition,"file_definition") 14 21 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_file_group.f90
r20 r30 15 15 INCLUDE "vector_file_group_def.inc" 16 16 17 TYPE(vector_file_group),POINTER :: file_group_Ids18 TYPE(sorted_list),POINTER,PRIVATE :: Ids17 TYPE(vector_file_group),POINTER,SAVE :: file_group_Ids 18 TYPE(sorted_list),POINTER,PRIVATE,SAVE :: Ids 19 19 20 20 CONTAINS … … 22 22 INCLUDE "vector_file_group_contains.inc" 23 23 24 SUBROUTINE file_group__swap_context(saved_file_group_ids,saved_ids) 25 IMPLICIT NONE 26 TYPE(vector_file_group),POINTER :: saved_file_group_Ids 27 TYPE(sorted_list),POINTER :: saved_Ids 28 29 file_group_ids=>saved_file_group_ids 30 ids=>saved_ids 31 32 END SUBROUTINE file_group__swap_context 33 24 34 SUBROUTINE file_group__init 25 35 IMPLICIT NONE 26 27 ALLOCATE(file_group_Ids)28 ALLOCATE(Ids)29 36 30 37 CALL vector_file_group__new(file_group_Ids) -
/XMLIO_SERVER/trunk/src/XMLIO/mod_grid.f90
r20 r30 3 3 USE mod_sorted_list 4 4 USE mod_domain 5 USE mod_zoom 6 5 7 IMPLICIT NONE 6 8 … … 19 21 INTEGER :: nj 20 22 LOGICAL :: has_dimension 23 TYPE(vector_zoom),POINTER :: associated_zoom 24 TYPE(zoom),POINTER :: global_zoom 21 25 END TYPE grid 22 26 … … 29 33 INCLUDE 'vector_grid_contains.inc' 30 34 35 SUBROUTINE grid__swap_context(saved_grid_Ids,saved_Ids) 36 IMPLICIT NONE 37 TYPE(vector_grid),POINTER :: saved_grid_Ids 38 TYPE(sorted_list),POINTER :: saved_Ids 39 40 grid_ids=>saved_grid_ids 41 ids=>saved_ids 42 END SUBROUTINE grid__swap_context 43 44 31 45 SUBROUTINE grid__init 32 46 IMPLICIT NONE 33 34 ALLOCATE(grid_Ids)35 ALLOCATE(Ids)36 47 37 48 CALL vector_grid__new(grid_Ids) … … 68 79 ALLOCATE(pt_grid%subdomain) 69 80 ALLOCATE(pt_grid%rank_ids) 81 ALLOCATE(pt_grid%associated_zoom) 82 70 83 CALL domain__new(pt_grid%domain) 71 84 CALL vector_domain__new(pt_grid%subdomain) 72 85 CALL sorted_list__new(pt_grid%rank_ids) 86 CALL vector_zoom__new(pt_grid%associated_zoom) 73 87 74 88 pt_grid%has_id = .FALSE. … … 83 97 CALL sorted_list__Add(Ids,hash(id),Pos) 84 98 ENDIF 99 100 CALL grid__get_new_zoom(pt_grid,pt_grid%global_zoom,id) 85 101 86 102 END SUBROUTINE grid__new … … 153 169 TYPE(grid), POINTER :: pt_grid 154 170 TYPE(domain),POINTER :: subdomain 171 TYPE(zoom),POINTER :: pt_zoom 155 172 156 173 REAL,ALLOCATABLE :: lon(:,:) 157 174 REAL,ALLOCATABLE :: lat(:,:) 158 INTEGER :: ib,ie,jb,je,ni,nj,ibegin,jbegin 175 INTEGER :: ib,ie,jb,je,ni,nj,ibegin,jbegin,iend,jend 159 176 INTEGER :: i 160 177 … … 196 213 197 214 CALL domain__set(pt_grid%domain,0,ni,nj,ibegin,jbegin,lon,lat) 198 199 215 iend=ibegin+ni-1 216 jend=jbegin+nj-1 217 218 219 pt_grid%global_zoom%ni_glo=pt_grid%ni 220 pt_grid%global_zoom%nj_glo=pt_grid%nj 221 pt_grid%global_zoom%ibegin_glo=1 222 pt_grid%global_zoom%jbegin_glo=1 223 224 DO i=1,pt_grid%associated_zoom%size 225 pt_zoom=>pt_grid%associated_zoom%at(i)%pt 226 227 ib=MAX(pt_zoom%ibegin_glo-ibegin+1,1) 228 ie=MIN(pt_zoom%ibegin_glo+pt_zoom%ni_glo-ibegin,ni) 229 pt_zoom%ni_loc=MAX(ie-ib+1,0) 230 pt_zoom%ibegin_loc=ib 231 232 jb=MAX(pt_zoom%jbegin_glo-jbegin+1,1) 233 je=MIN(pt_zoom%jbegin_glo+pt_zoom%nj_glo-jbegin,nj) 234 pt_zoom%nj_loc=MAX(je-jb+1,0) 235 pt_zoom%jbegin_loc=jb 236 ENDDO 237 238 200 239 DEALLOCATE(lon) 201 240 DEALLOCATE(lat) … … 204 243 205 244 206 245 SUBROUTINE grid__get_new_zoom(pt_grid,pt_zoom,zoom_id) 246 USE string_function 247 IMPLICIT NONE 248 TYPE(grid), POINTER :: pt_grid 249 TYPE(zoom),POINTER :: pt_zoom 250 CHARACTER(LEN=*),INTENT(IN),OPTIONAL :: zoom_id 251 LOGICAL :: success 252 253 CALL vector_zoom__get_new(pt_grid%associated_zoom,Pt_zoom) 254 CALL zoom__new(Pt_zoom,zoom_id) 255 256 END SUBROUTINE grid__get_new_zoom 257 207 258 SUBROUTINE grid__print(pt_grid) 208 259 IMPLICIT NONE -
/XMLIO_SERVER/trunk/src/XMLIO/mod_grid_definition.f90
r20 r30 6 6 CONTAINS 7 7 8 SUBROUTINE grid_definition__swap_context(saved_grid_definition) 9 IMPLICIT NONE 10 TYPE(grid_group),POINTER :: saved_grid_definition 11 12 grid_definition=>saved_grid_definition 13 14 END SUBROUTINE grid_definition__swap_context 15 8 16 SUBROUTINE grid_definition__Init 9 17 USE mod_grid_group 10 18 IMPLICIT NONE 11 19 12 ALLOCATE(grid_definition)13 20 CALL grid_group__new(grid_definition,"grid_definition") 14 21 15 22 END SUBROUTINE grid_definition__Init 16 23 17 24 END MODULE mod_grid_definition -
/XMLIO_SERVER/trunk/src/XMLIO/mod_grid_group.f90
r20 r30 15 15 INCLUDE "vector_grid_group_def.inc" 16 16 17 TYPE(vector_grid_group),POINTER :: grid_group_Ids18 TYPE(sorted_list),POINTER, PRIVATE :: Ids17 TYPE(vector_grid_group),POINTER,SAVE :: grid_group_Ids 18 TYPE(sorted_list),POINTER,SAVE,PRIVATE :: Ids 19 19 20 20 CONTAINS … … 22 22 INCLUDE "vector_grid_group_contains.inc" 23 23 24 SUBROUTINE grid_group__swap_context(saved_grid_group_Ids,saved_ids) 25 IMPLICIT NONE 26 TYPE(vector_grid_group),POINTER :: saved_grid_group_Ids 27 TYPE(sorted_list),POINTER :: saved_Ids 28 29 grid_group_ids=>saved_grid_group_ids 30 ids=>saved_ids 31 32 END SUBROUTINE grid_group__swap_context 33 24 34 SUBROUTINE grid_group__init 25 35 IMPLICIT NONE 26 27 ALLOCATE(grid_group_Ids)28 ALLOCATE(Ids)29 36 30 37 CALL vector_grid_group__new(grid_group_Ids) -
/XMLIO_SERVER/trunk/src/XMLIO/mod_parse_xml.f90
r20 r30 28 28 CHARACTER(len=100) :: node_name 29 29 30 30 IF (hasChildNodes(root)) THEN 31 31 child_list => getChildnodes(root) 32 32 … … 38 38 39 39 CASE ('simulation') 40 CALL parsing_ definition(child_node)40 CALL parsing_simulation(child_node) 41 41 42 42 CASE DEFAULT … … 45 45 CALL Warning("mod_parse_xml:parsing_root") 46 46 ENDIF 47 END SELECT 48 ENDDO 49 ENDIF 50 51 END SUBROUTINE parsing_root 52 53 SUBROUTINE parsing_simulation(root) 54 IMPLICIT NONE 55 TYPE(fnode), POINTER :: root 56 TYPE(fnode), POINTER :: child_node 57 TYPE(fnodeList), POINTER :: child_list 58 59 INTEGER :: il 60 CHARACTER(len=100) :: node_name 61 62 IF (hasChildNodes(root)) THEN 63 child_list => getChildnodes(root) 64 65 DO il=0,getLength(child_list)-1 66 child_node => item(child_list,il) 67 node_name=getNodename(child_node) 68 69 SELECT CASE (TRIM(node_name)) 70 71 CASE ('context') 72 CALL parsing_context(child_node) 73 74 CASE DEFAULT 75 IF (is_bad_node(node_name)) THEN 76 WRITE(message,*) 'Unknown node <<',TRIM(node_name),'>> while parsing simulation' 77 CALL Warning("mod_parse_xml:parsing_simulationt") 78 ENDIF 47 79 END SELECT 48 80 … … 50 82 ENDIF 51 83 52 END SUBROUTINE parsing_ root53 54 55 SUBROUTINE parsing_definition(root)84 END SUBROUTINE parsing_simulation 85 86 SUBROUTINE parsing_context(node) 87 USE mod_context 56 88 USE mod_axis_definition 57 89 USE mod_grid_definition 58 90 USE mod_field_definition 59 91 USE mod_file_definition 60 61 IMPLICIT NONE62 TYPE(fnode), POINTER :: root63 TYPE(fnode), POINTER :: child_node92 IMPLICIT NONE 93 TYPE(fnode), POINTER :: node 94 95 TYPE(fnode), POINTER :: child_node 64 96 TYPE(fnodeList), POINTER :: child_list 65 66 INTEGER :: il 67 CHARACTER(len=100) :: node_name 68 69 IF (hasChildNodes(root)) THEN 70 child_list => getChildnodes(root) 97 TYPE(axis),POINTER :: attribute 98 LOGICAL :: is_root 99 INTEGER :: il 100 CHARACTER(len=100) :: node_name 101 CHARACTER(len=100) :: value 102 103 IF (is_attribute_exist(node,"id")) THEN 104 value=getAttribute(node,"id") 105 CALL context__create(TRIM(value)) 106 CALL context__swap(TRIM(value)) 107 ENDIF 108 109 IF (hasChildNodes(node)) THEN 110 child_list => getChildnodes(node) 111 71 112 DO il=0,getLength(child_list)-1 72 113 child_node => item(child_list,il) 73 114 node_name=getNodename(child_node) 74 115 75 116 SELECT CASE (TRIM(node_name)) 76 117 … … 89 130 CASE DEFAULT 90 131 IF (is_bad_node(node_name)) THEN 91 WRITE(message,*) 'Unknown node <<',TRIM(node_name),'>> while parsing definition'92 CALL Warning("mod_parse_xml:parsing_ definition")132 WRITE(message,*) 'Unknown node <<',TRIM(node_name),'>> while parsing context' 133 CALL Warning("mod_parse_xml:parsing_context") 93 134 ENDIF 94 END SELECT 95 96 ENDDO 97 ENDIF 98 99 END SUBROUTINE parsing_definition 100 101 102 103 104 105 135 END SELECT 136 ENDDO 137 138 ENDIF 139 140 END SUBROUTINE parsing_context 141 142 106 143 RECURSIVE SUBROUTINE parsing_axis_group(node,parent,root) 107 144 USE mod_axis_definition … … 218 255 CALL axis__set(pt_axis,a_size=string_to_integer(value)) 219 256 ENDIF 257 258 IF (is_attribute_exist(node,"positive")) THEN 259 value = getAttribute(node,"positive") 260 CALL axis__set(pt_axis,positive=string_to_logical(value)) 261 ENDIF 220 262 221 263 END SUBROUTINE parsing_axis_attribute … … 296 338 TYPE(grid_group),POINTER :: parent 297 339 298 TYPE(grid),POINTER :: pt_grid 299 TYPE(grid),POINTER :: attribute 340 TYPE(grid),POINTER :: pt_grid 341 TYPE(fnode), POINTER :: child_node 342 TYPE(fnodeList), POINTER :: child_list 300 343 INTEGER :: il 301 344 CHARACTER(len=100) :: node_name … … 311 354 312 355 CALL parsing_grid_attribute(node,pt_grid) 356 357 358 IF (hasChildNodes(node)) THEN 359 child_list => getChildnodes(node) 360 361 DO il=0,getLength(child_list)-1 362 child_node => item(child_list,il) 363 node_name=getNodename(child_node) 364 365 SELECT CASE (TRIM(node_name)) 366 367 CASE ('zoom') 368 CALL parsing_zoom(child_node,pt_grid) 369 370 CASE DEFAULT 371 IF (is_bad_node(node_name)) THEN 372 WRITE(message,*) 'Unknown node <<',TRIM(node_name),'>> while parsing grid' 373 CALL Warning("mod_parse_xml:parsing_grid") 374 ENDIF 375 END SELECT 376 ENDDO 377 ENDIF 313 378 314 379 END SUBROUTINE parsing_grid 315 380 316 317 381 SUBROUTINE parsing_grid_attribute(node,pt_grid) 318 382 USE mod_grid … … 335 399 END SUBROUTINE parsing_grid_attribute 336 400 337 338 339 401 SUBROUTINE parsing_zoom(node,parent) 402 USE mod_zoom 403 USE mod_grid 404 IMPLICIT NONE 405 TYPE(fnode), POINTER :: node 406 TYPE(grid),POINTER :: parent 407 408 TYPE(zoom),POINTER :: pt_zoom 409 INTEGER :: il 410 CHARACTER(len=100) :: node_name 411 CHARACTER(len=100) :: value 412 413 414 IF (is_attribute_exist(node,"id")) THEN 415 value=getAttribute(node,"id") 416 CALL grid__get_new_zoom(parent,pt_zoom,TRIM(value)) 417 ELSE 418 CALL grid__get_new_zoom(parent,pt_zoom) 419 ENDIF 420 421 CALL parsing_zoom_attribute(node,pt_zoom) 422 423 END SUBROUTINE parsing_zoom 424 425 426 SUBROUTINE parsing_zoom_attribute(node,pt_zoom) 427 USE mod_zoom 428 IMPLICIT NONE 429 TYPE(fnode), POINTER :: node 430 TYPE(zoom),POINTER :: pt_zoom 431 432 CHARACTER(len=100) :: value 433 434 IF (is_attribute_exist(node,"name")) THEN 435 value = getAttribute(node,"name") 436 CALL zoom__set(pt_zoom,name=TRIM(value)) 437 ENDIF 438 439 IF (is_attribute_exist(node,"description")) THEN 440 value = getAttribute(node,"description") 441 CALL zoom__set(pt_zoom,description=TRIM(value)) 442 ENDIF 443 444 IF (is_attribute_exist(node,"ni")) THEN 445 value = getAttribute(node,"ni") 446 CALL zoom__set(pt_zoom,ni_glo=string_to_integer(value)) 447 ENDIF 448 449 IF (is_attribute_exist(node,"nj")) THEN 450 value = getAttribute(node,"nj") 451 CALL zoom__set(pt_zoom,nj_glo=string_to_integer(value)) 452 ENDIF 453 454 IF (is_attribute_exist(node,"ibegin")) THEN 455 value = getAttribute(node,"ibegin") 456 CALL zoom__set(pt_zoom,ibegin_glo=string_to_integer(value)) 457 ENDIF 458 459 IF (is_attribute_exist(node,"jbegin")) THEN 460 value = getAttribute(node,"jbegin") 461 CALL zoom__set(pt_zoom,jbegin_glo=string_to_integer(value)) 462 ENDIF 463 464 END SUBROUTINE parsing_zoom_attribute 340 465 341 466 … … 471 596 ENDIF 472 597 598 IF (is_attribute_exist(node,"zoom_ref")) THEN 599 value = getAttribute(node,"zoom_ref") 600 CALL field__set(pt_field,zoom_ref=TRIM(value)) 601 ENDIF 602 473 603 IF (is_attribute_exist(node,"level")) THEN 474 604 value = getAttribute(node,"level") … … 493 623 494 624 END SUBROUTINE parsing_field_attribute 495 496 497 498 625 499 626 -
/XMLIO_SERVER/trunk/src/XMLIO/xmlio.f90
r20 r30 16 16 USE string_function 17 17 USE error_msg 18 USE mod_context 19 USE mod_time_parameters 18 20 19 21 CONTAINS … … 24 26 CHARACTER(LEN=*),INTENT(IN) :: xml_file 25 27 26 CALL field__init 27 CALL field_group__Init 28 CALL field_definition__Init 29 30 CALL axis__init 31 CALL axis_group__Init 32 CALL axis_definition__Init 33 34 CALL grid__init 35 CALL grid_group__Init 36 CALL grid_definition__Init 37 38 CALL file__init 39 CALL file_group__Init 40 CALL file_definition__Init 41 28 CALL context__init 42 29 CALL parsing_xml_file(xml_file) 43 30 44 31 END SUBROUTINE xmlio__init 32 45 33 46 34 SUBROUTINE xmlio__close_definition
Note: See TracChangeset
for help on using the changeset viewer.