- Files:
-
- 9 deleted
- 33 edited
Legend:
- Unmodified
- Added
- Removed
-
/CONFIG/NEMO_XMLIO_SERVER/EXP00/job_server_mercure
r30 r20 19 19 setenv JOB_REQUEST NEMO 20 20 21 setenv MPIPROGINFALL_DETAIL22 setenvF_ERRCNT=023 setenvF_FMTBUF=024 setenvF_SYSLEN=25621 export MPIPROGINF=ALL_DETAIL 22 export F_ERRCNT=0 23 export F_FMTBUF=0 24 export F_SYSLEN=256 25 25 26 26 cd $PBS_O_WORKDIR 27 27 28 setenvMPISUSPEND=OFF28 export 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
r30 r20 11 11 %MPI_FFLAGS 12 12 %OMP_FFLAGS -P openmp 13 %BASE_LD 13 %BASE_LD -size_t64 14 14 %MPI_LD 15 15 %OMP_LD -P openmp -
/XMLF90/configure
r30 r20 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_fcm 108 echo "%LIBDIR -L$NETCDF_LIBDIR -L$IOIPSL_LIBDIR" >> $config_fcm -
/XMLIO_SERVER/trunk/arch/arch-IA64_PLATINE.path
r30 r20 6 6 set IOIPSL_LIB="-lioipsl" 7 7 8 set XMLF90_INCDIR="-I$PWD/../ XMLF90/inc"9 set XMLF90_LIBDIR="-L$PWD/../ XMLF90/lib"8 set XMLF90_INCDIR="-I$PWD/../../lib" 9 set XMLF90_LIBDIR="-L$PWD/../../lib" 10 10 set XMLF90_LIB="-lxmlf90" 11 11 -
/XMLIO_SERVER/trunk/arch/arch-SX8_BRODIE.fcm
r30 r20 11 11 %MPI_FFLAGS 12 12 %OMP_FFLAGS -P openmp 13 %BASE_LD 13 %BASE_LD -size_t64 14 14 %MPI_LD 15 15 %OMP_LD -P openmp -
/XMLIO_SERVER/trunk/bld.cfg
r30 r20 39 39 bld::excl_dep inc::mpif.h 40 40 bld::excl_dep use::mpi 41 bld::excl_dep use::mod_prism_get_comm42 bld::excl_dep use::mod_prism_proto43 41 44 42 # Don't generate interface files -
/XMLIO_SERVER/trunk/configure
r30 r20 5 5 set default_compile_flags = "%PROD_FFLAGS" 6 6 set has_use_vt = FALSE 7 set has_oasis = FALSE8 7 9 8 top: … … 48 47 set compile_flags="%DEBUG_FFLAGS" 49 48 shift ; goto top 50 51 49 case -use_vt 52 50 set has_use_vt = TRUE 53 51 shift ; goto top 54 52 55 case -oasis56 set has_oasis = TRUE57 shift ; goto top58 59 53 default 60 54 echo "unknown option "$1" , exiting..." … … 123 117 set LIB="$LIB $NETCDF_LIBDIR $NETCDF_LIB" 124 118 125 if ( $has_ oasis== TRUE ) then126 set INCDIR="$INCDIR $OASIS_INCDIR"127 set LIB="$LIB $OASIS_LIBDIR $OASIS_LIB"128 set CPP_KEY="$CPP_KEY USE_OASIS"119 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" 129 123 endif 130 131 if ( $has_use_vt == TRUE ) then132 set INCDIR="$INCDIR $VAMPIR_INCDIR"133 set LIB="$LIB $VAMPIR_LIBDIR $VAMPIR_LIB"134 set CPP_KEY="$CPP_KEY USE_VT"135 endif136 137 124 138 125 -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_event_client.f90
r30 r20 3 3 USE mod_mpi_buffer_client, ONLY : create_request, finalize_request 4 4 USE mod_event_parameters 5 USE mod_ioserver_namelist 5 6 LOGICAL, SAVE :: using_server 6 7 7 8 CONTAINS 8 9 9 SUBROUTINE event__swap_context(id)10 USE iomanager11 IMPLICIT NONE12 CHARACTER(LEN=*),INTENT(IN) :: id13 14 IF (using_server) THEN15 CALL create_request(event_id_swap_context)16 CALL pack(LEN(TRIM(id)))17 CALL pack(TRIM(id))18 CALL Finalize_request19 ELSE20 CALL iom__swap_context(TRIM(id))21 ENDIF22 23 END SUBROUTINE event__swap_context24 25 26 10 SUBROUTINE event__parse_xml_file(filename) 27 11 USE iomanager … … 125 109 END SUBROUTINE event__set_grid_type_nemo 126 110 127 SUBROUTINE event__set_grid_type_lmdz(name,nbp,offset)128 USE iomanager129 IMPLICIT NONE130 CHARACTER(LEN=*),INTENT(IN) :: name131 INTEGER,INTENT(IN) :: nbp132 INTEGER,INTENT(IN) :: offset133 134 IF (using_server) THEN135 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_request141 ELSE142 CALL iom__set_grid_type_lmdz(name,nbp,offset)143 ENDIF144 145 END SUBROUTINE event__set_grid_type_lmdz146 111 147 112 SUBROUTINE event__set_time_parameters(itau0,zjulian,zdt) … … 197 162 END SUBROUTINE event__disable_field 198 163 199 SUBROUTINE event__write_field1d(varname,var)200 USE iomanager201 IMPLICIT NONE202 CHARACTER(len=*),INTENT(IN) :: varname203 REAL, DIMENSION(:),INTENT(IN) :: var204 205 IF (using_server) THEN206 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_request212 ELSE213 CALL iom__write_field1d(varname,var)214 ENDIF215 216 END SUBROUTINE event__write_field1d217 218 164 SUBROUTINE event__write_field2d(varname,var) 219 165 USE iomanager -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_event_parameters.f90
r30 r20 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 = 11316 INTEGER, PARAMETER :: event_id_set_grid_type_lmdz = 11417 INTEGER, PARAMETER :: event_id_write_field1d = 11518 15 INTEGER, PARAMETER :: event_id_stop_ioserver = 999 19 16 END MODULE mod_event_parameters -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_event_server.f90
r30 r20 20 20 SELECT CASE (event_id) 21 21 22 CASE (event_id_swap_context)23 CALL event__swap_context24 25 22 CASE (event_id_parse_xml_file) 26 23 CALL event__parse_xml_file … … 38 35 CALL event__set_grid_type_nemo 39 36 40 CASE (event_id_set_grid_type_lmdz)41 CALL event__set_grid_type_lmdz42 43 37 CASE (event_id_set_time_parameters) 44 38 CALL event__set_time_parameters … … 55 49 CASE (event_id_disable_field) 56 50 CALL event__disable_field 57 58 CASE (event_id_write_Field1d)59 CALL event__write_Field1d60 51 61 52 CASE (event_id_write_Field2d) … … 76 67 END SUBROUTINE Process_event 77 68 78 SUBROUTINE event__swap_context79 IMPLICIT NONE80 INTEGER :: id_size81 82 CALL unpack(id_size)83 CALL sub_internal(id_size)84 85 CONTAINS86 87 SUBROUTINE sub_internal(id_size)88 INTEGER :: id_size89 CHARACTER(LEN=id_size) :: id90 91 CALL unpack(id)92 93 CALL iom__swap_context(id)94 95 END SUBROUTINE sub_internal96 97 END SUBROUTINE event__swap_context98 99 69 100 70 SUBROUTINE event__parse_xml_file … … 202 172 END SUBROUTINE event__set_grid_type_nemo 203 173 204 SUBROUTINE event__set_grid_type_lmdz205 IMPLICIT NONE206 INTEGER :: name_size207 208 CALL unpack(name_size)209 CALL sub_internal(name_size)210 211 CONTAINS212 213 SUBROUTINE sub_internal(name_size)214 INTEGER :: name_size215 CHARACTER(LEN=name_size) :: name216 INTEGER :: nbp217 INTEGER :: offset218 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_internal225 226 END SUBROUTINE event__set_grid_type_lmdz227 174 228 175 SUBROUTINE event__set_vert_axis … … 309 256 310 257 311 SUBROUTINE event__write_field1D312 IMPLICIT NONE313 INTEGER :: lenc314 INTEGER :: dim1315 316 CALL unpack(lenc)317 CALL unpack(dim1)318 CALL sub_internal(lenc,dim1)319 320 CONTAINS321 SUBROUTINE sub_internal(lenc,dim1)322 IMPLICIT NONE323 INTEGER :: lenc324 INTEGER :: dim1325 CHARACTER(len=lenc) :: varname326 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_internal334 END SUBROUTINE event__write_field1d335 336 258 SUBROUTINE event__write_field2D 337 259 IMPLICIT NONE -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_interface_ioipsl.f90
r30 r20 1 1 MODULE mod_interface_ioipsl 2 2 3 3 INTEGER,SAVE,PRIVATE :: ini_timestep 4 REAL,SAVE,PRIVATE :: zjulian 5 REAL,SAVE,PRIVATE :: timestep 6 INTEGER,SAVE,PRIVATE :: timestep_nb 7 4 8 INTEGER,PARAMETER :: id_file=1 5 9 … … 16 20 17 21 SUBROUTINE set_time_parameters(ini_timestep0,zjulian0,timestep0) 18 USE xmlio19 22 IMPLICIT NONE 20 23 INTEGER :: ini_timestep0 21 24 REAL :: zjulian0, timestep0 22 25 23 timestep _value=timestep024 ini tial_timestep=ini_timestep025 initial_date=zjulian026 timestep=timestep0 27 ini_timestep=ini_timestep0 28 zjulian=zjulian0 26 29 27 30 END SUBROUTINE set_time_parameters … … 38 41 TYPE(field),POINTER :: pt_field 39 42 TYPE(grid),POINTER :: pt_grid 40 TYPE(zoom),POINTER :: pt_zoom41 43 TYPE(axis),POINTER :: pt_axis 42 44 TYPE(domain),POINTER :: pt_domain … … 49 51 INTEGER :: ioipsl_domain_id 50 52 INTEGER :: i,j 51 CHARACTER(LEN=20) :: direction52 53 53 54 CALL xmlio__close_definition … … 63 64 pt_grid=>pt_file_dep%grids%at(1)%pt 64 65 pt_domain=>pt_grid%domain 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 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) 110 79 ENDIF 111 END DO112 113 DO j=1,pt_file_dep%fields%size114 pt_field=>pt_file_dep%fields%at(j)%pt115 IF (pt_field%axis%name=="none") THEN116 pt_field%internal(id_file)=ioipsl_file_id117 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 ELSE122 pt_field%internal(id_file)=ioipsl_file_id123 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 ENDIF130 END DO131 CALL histend(ioipsl_file_id)132 ENDIF80 ENDIF 81 ENDDO 82 83 DO j=1,pt_file_dep%fields%size 84 pt_field=>pt_file_dep%fields%at(j)%pt 85 IF (pt_field%axis%name=="none") THEN 86 pt_field%internal(id_file)=ioipsl_file_id 87 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 ELSE 92 pt_field%internal(id_file)=ioipsl_file_id 93 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 ENDIF 100 ENDDO 101 CALL histend(ioipsl_file_id) 133 102 CALL sorted_list__delete(axis_id) 134 103 ENDDO … … 162 131 DO i=1,pt_field_base%field_out%size 163 132 pt_field=>pt_field_base%field_out%at(i)%pt%field 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 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) 168 135 ENDDO 169 136 ENDIF … … 194 161 DO i=1,pt_field_base%field_out%size 195 162 pt_field=>pt_field_base%field_out%at(i)%pt%field 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 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) 200 165 ENDDO 201 166 ENDIF … … 204 169 205 170 SUBROUTINE set_timestep(timestep_nb0) 206 USE xmlio207 171 IMPLICIT NONE 208 172 INTEGER,INTENT(IN) :: timestep_nb0 209 173 210 timestep_n umber=timestep_nb0174 timestep_nb=timestep_nb0 211 175 212 176 END SUBROUTINE set_timestep -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_ioclient.f90
r30 r20 8 8 USE mod_mpi_buffer_client 9 9 USE mod_wait 10 USE mod_ioserver_namelist11 USE mod_event_client12 USE iomanager13 10 IMPLICIT NONE 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 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 53 18 54 19 END SUBROUTINE init_ioclient -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_ioclient_para.f90
r30 r20 12 12 SUBROUTINE Init_parallel 13 13 USE mpitrace 14 USE mod_ioserver_namelist15 #ifdef USE_OASIS16 USE mod_prism_get_comm17 #endif18 14 IMPLICIT NONE 19 15 INCLUDE 'mpif.h' … … 29 25 INTEGER :: div,remain 30 26 INTEGER :: group_color 31 INTEGER :: Comm_client_server32 CHARACTER(LEN=6) :: oasis_server_id33 27 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) 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) 49 35 CALL MPI_COMM_SIZE(intracomm,mpi_size,ierr) 50 36 CALL MPI_COMM_RANK(intracomm,mpi_rank,ierr) 51 37 PRINT *,"MPI_mpi_comm_split ok --> intracomm" 52 38 nb_server_io=global_size-mpi_size 53 39 div=mpi_size/nb_server_io … … 59 45 group_color=(nb_server_io-1)-(mpi_size-1-mpi_rank)/div 60 46 ENDIF 47 PRINT *,'group_color',group_color 61 48 62 CALL MPI_COMM_SPLIT( Comm_client_server,group_color,global_rank,iocomm,ierr)49 CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,group_color,global_rank,iocomm,ierr) 63 50 64 51 CALL MPI_COMM_SIZE(iocomm,iosize,ierr) 65 52 CALL MPI_COMM_RANK(iocomm,iorank,ierr) 66 53 PRINT *,"io_size-> ",iosize,"iorank-> ",iorank 67 54 ALLOCATE(proc_color(0:iosize-1)) 68 55 CALL MPI_ALLGATHER(color_client,1,MPI_INTEGER,proc_color,1,MPI_INTEGER,iocomm,ierr) 56 print *,"proc_color -> ",proc_color 69 57 70 58 DO i=0,iosize-1 -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_iomanager.f90
r30 r20 28 28 END SUBROUTINE iom__parse_xml_file 29 29 30 SUBROUTINE iom__swap_context(id)31 USE xmlio32 IMPLICIT NONE33 CHARACTER(LEN=*) :: id34 35 IF (current_rank==nb_client) CALL context__swap(id)36 37 END SUBROUTINE iom__swap_context38 39 30 SUBROUTINE iom__set_current_rank(rank) 40 31 IMPLICIT NONE … … 108 99 109 100 END SUBROUTINE iom__set_grid_type_nemo 110 111 SUBROUTINE iom__set_grid_type_lmdz(name,nbp,offset)112 USE xmlio113 IMPLICIT NONE114 CHARACTER(LEN=*),INTENT(IN) :: name115 INTEGER,INTENT(IN) :: nbp116 INTEGER,INTENT(IN) :: offset117 118 TYPE(grid), POINTER :: pt_grid119 TYPE(domain), POINTER :: pt_domain120 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_lmdz131 101 132 102 SUBROUTINE iom__set_time_parameters(itau0,zjulian,zdt) … … 303 273 nj=local_domain%nj 304 274 305 IF (pt_field%axis%name =="none") THEN275 IF (pt_field%axis%name/="none") THEN 306 276 CALL write_ioipsl_3d(varname,Field_buffer(1:ni,1:nj,1:nk)) 307 277 ELSE -
/XMLIO_SERVER/trunk/src/IOSERVER/mod_ioserver_para.f90
r30 r20 20 20 SUBROUTINE Init_parallel 21 21 USE mpitrace 22 USE mod_ioserver_namelist23 #ifdef USE_OASIS24 USE mod_prism_get_comm25 #endif26 22 IMPLICIT NONE 27 23 INCLUDE 'mpif.h' … … 32 28 INTEGER :: i 33 29 INTEGER :: group_color 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) 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) 54 36 CALL MPI_COMM_SIZE(intracomm,mpi_size,ierr) 55 37 CALL MPI_COMM_RANK(intracomm,mpi_rank,ierr) … … 58 40 PRINT *,'group_color',group_color 59 41 60 CALL MPI_COMM_SPLIT( Comm_client_server,group_color,global_rank,iocomm,ierr)42 CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,group_color,global_rank,iocomm,ierr) 61 43 62 44 CALL MPI_COMM_SIZE(iocomm,iosize,ierr) … … 82 64 83 65 SUBROUTINE Finalize_parallel 84 USE mod_ioserver_namelist85 #ifdef USE_OASIS86 USE mod_prism_proto87 #endif88 66 IMPLICIT NONE 89 67 include 'mpif.h' 90 68 INTEGER :: ierr 91 69 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 70 CALL MPI_FINALIZE(ierr) 71 100 72 END SUBROUTINE Finalize_parallel 101 73 -
/XMLIO_SERVER/trunk/src/IOSERVER/server.f90
r30 r20 7 7 USE iomanager 8 8 USE mod_interface_ioipsl 9 USE mod_ioserver_namelist10 9 IMPLICIT NONE 11 10 INCLUDE 'mpif.h' … … 16 15 ! CALL SLEEP(60) 17 16 PRINT *,'je suis un serveur' 18 CALL read_namelist19 17 CALL init_parallel 20 18 CALL init_mpi_buffer -
/XMLIO_SERVER/trunk/src/XMLIO/create_template
r30 r20 1 #! /bin/bash 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 2 3 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 } 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 9 6 7 sed "s/#TYPE#/axis/g" vector_def.template > vector_axis_def.inc 8 sed "s/#TYPE#/axis/g" vector_contains.template > vector_axis_contains.inc 10 9 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 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 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_axis.f90
r30 r20 18 18 CHARACTER(len=str_len) :: unit 19 19 LOGICAL :: has_unit 20 LOGICAL :: positive21 LOGICAL :: has_positive22 20 REAL, DIMENSION(:), POINTER :: values 23 21 LOGICAL :: has_values … … 33 31 INCLUDE 'vector_axis_contains.inc' 34 32 35 SUBROUTINE axis__swap_context(saved_axis_Ids,saved_Ids)36 IMPLICIT NONE37 TYPE(vector_axis),POINTER :: saved_axis_Ids38 TYPE(sorted_list),POINTER :: saved_Ids39 40 axis_ids=>saved_axis_ids41 ids=>saved_ids42 43 END SUBROUTINE axis__swap_context44 45 33 SUBROUTINE axis__init 46 34 IMPLICIT NONE 35 36 ALLOCATE(axis_Ids) 37 ALLOCATE(Ids) 47 38 48 39 CALL vector_axis__new(axis_Ids) … … 76 67 INTEGER :: Pos 77 68 78 pt_axis%has_id 69 pt_axis%has_id = .FALSE. 79 70 pt_axis%has_name = .FALSE. 80 71 pt_axis%has_size = .FALSE. … … 82 73 pt_axis%has_unit = .FALSE. 83 74 pt_axis%has_values = .FALSE. 84 pt_axis%has_positive = .FALSE. 85 75 86 76 IF (PRESENT(Id)) THEN 87 77 Pt_axis%id=TRIM(ADJUSTL(Id)) … … 93 83 END SUBROUTINE axis__new 94 84 95 SUBROUTINE axis__set(pt_axis, name, description, unit, a_size, values , positive)85 SUBROUTINE axis__set(pt_axis, name, description, unit, a_size, values) 96 86 IMPLICIT NONE 97 87 TYPE(axis), POINTER :: pt_axis … … 101 91 INTEGER ,OPTIONAL :: a_size 102 92 REAL, DIMENSION(:),OPTIONAL :: values 103 LOGICAL ,OPTIONAL :: positive104 93 105 94 IF (PRESENT(name)) THEN … … 130 119 ENDIF 131 120 132 IF (PRESENT(positive)) then133 pt_axis%positive=positive134 pt_axis%has_positive = .TRUE.135 ENDIF136 137 121 END SUBROUTINE axis__set 138 122 … … 176 160 ELSE 177 161 PRINT *,"values undefined" 178 ENDIF179 180 IF (pt_axis%has_positive) THEN181 PRINT *,"positive = ",pt_axis%positive182 ELSE183 PRINT *,"positive undefined"184 162 ENDIF 185 163 … … 239 217 ELSE 240 218 pt_axis_out%has_values=.FALSE. 241 ENDIF242 243 IF (pt_axis_in%has_positive) THEN244 pt_axis_out%positive=pt_axis_in%positive245 pt_axis_out%has_positive=.TRUE.246 ELSE IF ( pt_axis_default%has_positive ) THEN247 pt_axis_out%positive=pt_axis_default%positive248 pt_axis_out%has_positive=.TRUE.249 ELSE250 pt_axis_out%has_positive=.FALSE.251 219 ENDIF 252 220 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_axis_definition.f90
r30 r20 6 6 CONTAINS 7 7 8 SUBROUTINE axis_definition__swap_context(saved_axis_definition)9 IMPLICIT NONE10 TYPE(axis_group),POINTER :: saved_axis_definition11 12 axis_definition=>saved_axis_definition13 14 END SUBROUTINE axis_definition__swap_context15 16 8 SUBROUTINE axis_definition__Init 17 9 USE mod_axis_group 18 10 IMPLICIT NONE 19 11 12 ALLOCATE(axis_definition) 20 13 CALL axis_group__new(axis_definition,"axis_definition") 21 14 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_axis_group.f90
r30 r20 22 22 INCLUDE "vector_axis_group_contains.inc" 23 23 24 SUBROUTINE axis_group__swap_context(saved_axis_group_Ids,saved_ids)25 IMPLICIT NONE26 TYPE(vector_axis_group),POINTER :: saved_axis_group_Ids27 TYPE(sorted_list),POINTER :: saved_Ids28 29 axis_group_ids=>saved_axis_group_ids30 ids=>saved_ids31 32 END SUBROUTINE axis_group__swap_context33 34 24 SUBROUTINE axis_group__init 35 25 IMPLICIT NONE 26 27 ALLOCATE(axis_group_Ids) 28 ALLOCATE(Ids) 36 29 37 30 CALL vector_axis_group__new(axis_group_Ids) -
/XMLIO_SERVER/trunk/src/XMLIO/mod_dependency.f90
r30 r20 5 5 USE mod_axis 6 6 USE mod_sorted_list 7 USE mod_zoom8 7 9 8 TYPE file_dep … … 12 11 TYPE(vector_field),POINTER :: fields 13 12 TYPE(vector_grid),POINTER :: grids 14 TYPE(vector_zoom),POINTER :: zooms15 13 TYPE(vector_axis),POINTER :: axis 16 14 END TYPE file_dep … … 28 26 TYPE(axis), POINTER :: axis 29 27 TYPE(grid), POINTER :: grid 30 TYPE(zoom), POINTER :: zoom31 28 END TYPE field_out 32 29 … … 35 32 INCLUDE 'vector_field_out_def.inc' 36 33 37 TYPE(vector_file_dep),POINTER ,SAVE:: file_enabled38 TYPE(vector_field_out),POINTER ,SAVE:: field_enabled39 TYPE(vector_field_dep),POINTER ,SAVE:: field_id34 TYPE(vector_file_dep),POINTER :: file_enabled 35 TYPE(vector_field_out),POINTER :: field_enabled 36 TYPE(vector_field_dep),POINTER :: field_id 40 37 41 38 42 TYPE(sorted_list),POINTER ,SAVE:: sorted_id39 TYPE(sorted_list),POINTER :: sorted_id 43 40 44 41 CONTAINS … … 48 45 INCLUDE 'vector_field_out_contains.inc' 49 46 50 51 SUBROUTINE dependency__swap_context(saved_file_enabled,saved_field_enabled,save_field_id,saved_sorted_id)52 IMPLICIT NONE53 TYPE(vector_file_dep),POINTER :: saved_file_enabled54 TYPE(vector_field_out),POINTER :: saved_field_enabled55 TYPE(vector_field_dep),POINTER :: save_field_id56 TYPE(sorted_list),POINTER :: saved_sorted_id57 58 file_enabled=>saved_file_enabled59 field_enabled=>saved_field_enabled60 field_id=>save_field_id61 sorted_id=>saved_sorted_id62 63 END SUBROUTINE dependency__swap_context64 65 47 SUBROUTINE set_dependency 66 48 IMPLICIT NONE … … 85 67 TYPE (sorted_list),POINTER :: sorted_axis 86 68 TYPE (sorted_list),POINTER :: sorted_grid 87 TYPE (sorted_list),POINTER :: sorted_zoom88 69 INTEGER :: i 89 70 INTEGER :: j … … 91 72 ALLOCATE(sorted_axis) 92 73 ALLOCATE(sorted_grid) 93 ALLOCATE(sorted_zoom)94 74 95 75 IF (PRESENT(Pt_file_group)) THEN 96 76 Pt_fg=>Pt_file_group 97 77 ELSE 78 ALLOCATE(file_enabled) 98 79 CALL vector_file_dep__new(file_enabled) 99 80 Pt_fg=>file_definition … … 111 92 ALLOCATE(Pt_file_dep%fields) 112 93 ALLOCATE(Pt_file_dep%grids) 113 ALLOCATE(Pt_file_dep%zooms)114 94 ALLOCATE(Pt_file_dep%axis) 115 95 pt_file_dep%file=>pt_file … … 117 97 CALL vector_field__new(Pt_file_dep%fields) 118 98 CALL vector_grid__new(Pt_file_dep%grids) 119 CALL vector_zoom__new(Pt_file_dep%zooms)120 99 CALL vector_axis__new(Pt_file_dep%axis) 121 100 CALL sorted_list__new(sorted_axis) 122 101 CALL sorted_list__new(sorted_grid) 123 CALL sorted_list__new(sorted_zoom)124 102 125 103 CALL Treat_field_group(pt_file%field_list) … … 127 105 CALL sorted_list__delete(sorted_axis) 128 106 CALL sorted_list__delete(sorted_grid) 129 CALL sorted_list__delete(sorted_zoom)130 107 ENDIF 131 108 ENDDO … … 161 138 CALL vector_grid__set_new(pt_file_dep%grids,Pt_field%grid,pos) 162 139 CALL sorted_list__add(sorted_grid,hash(Pt_field%grid%id),pos) 163 ENDIF164 ENDIF165 166 IF (Pt_field%has_zoom) THEN167 CALL sorted_list__find(sorted_zoom,hash(Pt_field%zoom%id),pos,found)168 IF (.NOT. found) THEN169 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)171 140 ENDIF 172 141 ENDIF … … 192 161 INTEGER :: j 193 162 163 ALLOCATE(field_enabled) 194 164 CALL vector_field_out__new(field_enabled) 195 165 … … 202 172 pt_field_out%axis=>pt_field_out%field%axis 203 173 pt_field_out%grid=>pt_field_out%field%grid 204 pt_field_out%zoom=>pt_field_out%field%zoom205 174 ENDDO 206 175 ENDDO … … 220 189 INTEGER :: i 221 190 191 ALLOCATE(field_id) 222 192 CALL vector_field_dep__new(field_id) 193 194 ALLOCATE(sorted_id) 223 195 CALL sorted_list__new(sorted_id) 224 196 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_domain.f90
r30 r20 1 1 MODULE mod_domain 2 2 USE mod_xmlio_parameters 3 3 4 INTEGER, PARAMETER :: box=1 4 5 INTEGER, PARAMETER :: orange=2 … … 122 123 ENDIF 123 124 124 pt_domain%nbp=nbp125 125 ALLOCATE(pt_domain%i_index(nbp)) 126 126 ALLOCATE(pt_domain%j_index(nbp)) 127 ALLOCATE(pt_domain%mask(nbp))128 127 129 128 DO i=1,nbp 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 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 135 131 ENDDO 136 132 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_field.f90
r30 r20 5 5 USE mod_axis 6 6 USE mod_grid 7 USE mod_zoom 8 7 9 8 IMPLICIT NONE 10 9 … … 26 25 CHARACTER(len=str_len) :: grid_ref 27 26 LOGICAL :: has_grid_ref 28 CHARACTER(len=str_len) :: zoom_ref29 LOGICAL :: has_zoom_ref30 27 INTEGER :: level 31 28 LOGICAL :: has_level … … 43 40 TYPE(grid),POINTER :: grid 44 41 LOGICAL :: has_grid 45 TYPE(zoom),POINTER :: zoom46 LOGICAL :: has_zoom47 42 INTEGER :: internal(internal_field) 48 43 … … 52 47 INCLUDE 'vector_field_def.inc' 53 48 54 TYPE(vector_field),POINTER,SAVE :: field_Ids 55 TYPE(sorted_list),POINTER,SAVE,PRIVATE :: Ids 56 49 TYPE(vector_field),POINTER :: field_Ids 50 TYPE(sorted_list),POINTER,PRIVATE :: Ids 57 51 58 52 CONTAINS 59 53 INCLUDE 'vector_field_contains.inc' 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 54 71 55 SUBROUTINE field__init 72 56 IMPLICIT NONE 57 58 ALLOCATE(field_Ids) 59 ALLOCATE(Ids) 73 60 74 61 CALL vector_field__new(field_Ids) … … 112 99 pt_field%has_axis_ref = .FALSE. 113 100 pt_field%has_grid_ref = .FALSE. 114 pt_field%has_zoom_ref = .FALSE.115 101 pt_field%has_prec = .FALSE. 116 102 pt_field%has_level = .FALSE. … … 121 107 Pt_field%has_axis=.FALSE. 122 108 Pt_field%has_grid=.FALSE. 123 Pt_field%has_zoom=.FALSE.124 109 125 110 IF (PRESENT(Id)) THEN … … 133 118 134 119 135 SUBROUTINE field__set(p_field, name, ref, description, unit, operation, freq_op, axis_ref, grid_ref, zoom_ref,prec, level, enabled)120 SUBROUTINE field__set(p_field, name, ref, description, unit, operation, freq_op, axis_ref, grid_ref, prec, level, enabled) 136 121 137 122 TYPE(field), pointer :: p_field … … 144 129 CHARACTER(len=*),OPTIONAL :: axis_ref 145 130 CHARACTER(len=*),OPTIONAL :: grid_ref 146 CHARACTER(len=*),OPTIONAL :: zoom_ref147 131 INTEGER, OPTIONAL :: prec 148 132 INTEGER, OPTIONAL :: level … … 182 166 p_field%has_grid_ref = .TRUE. 183 167 ENDIF 184 185 IF (PRESENT(zoom_ref)) THEN186 p_field%zoom_ref=TRIM(ADJUSTL(zoom_ref))187 p_field%has_zoom_ref = .TRUE.188 ENDIF189 190 168 IF (PRESENT(prec)) then 191 169 p_field%prec=prec … … 254 232 ELSE 255 233 PRINT *, 'grid_ref undefined ' 256 ENDIF257 258 IF (pt_field%has_zoom_ref) THEN259 PRINT *, 'zoom_ref : ',TRIM(pt_field%zoom_ref)260 ELSE261 PRINT *, 'zoom_ref undefined '262 234 ENDIF 263 235 … … 398 370 ELSE 399 371 pt_field_out%has_grid_ref=.FALSE. 400 ENDIF401 402 IF (pt_field_in%has_zoom_ref) THEN403 pt_field_out%zoom_ref=pt_field_in%zoom_ref404 pt_field_out%has_zoom_ref=.TRUE.405 ELSE IF ( pt_field_default%has_zoom_ref ) THEN406 pt_field_out%zoom_ref=pt_field_default%zoom_ref407 pt_field_out%has_zoom_ref=.TRUE.408 ELSE409 pt_field_out%has_zoom_ref=.FALSE.410 372 ENDIF 411 373 … … 556 518 END SUBROUTINE field__solve_grid_ref 557 519 558 SUBROUTINE field__solve_zoom_ref(pt_field)559 USE error_msg560 IMPLICIT NONE561 TYPE(field), POINTER :: pt_field562 563 IF (.NOT. pt_field%has_zoom_ref) THEN564 IF (pt_field%has_grid_ref) THEN565 pt_field%has_zoom_ref=.TRUE.566 pt_field%zoom_ref=pt_field%grid_ref567 ENDIF568 ENDIF569 570 IF (pt_field%has_zoom_ref) THEN571 CALL zoom__get(pt_field%zoom_ref,pt_field%zoom)572 IF (ASSOCIATED(pt_field%zoom)) THEN573 pt_field%has_zoom=.TRUE.574 ELSE575 WRITE (message,*) "The field : id = ",pt_field%id," name = ",Pt_field%name, &576 " has a unknown reference to zoom : id =",pt_field%zoom_ref577 CALL error("mod_field::field__solve_zoom_ref")578 ENDIF579 ENDIF580 581 END SUBROUTINE field__solve_zoom_ref582 520 583 521 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_field_definition.f90
r30 r20 6 6 CONTAINS 7 7 8 SUBROUTINE field_definition__swap_context(saved_field_definition)9 IMPLICIT NONE10 TYPE(field_group),POINTER :: saved_field_definition11 12 field_definition=>saved_field_definition13 14 END SUBROUTINE field_definition__swap_context15 16 17 8 SUBROUTINE field_definition__Init 9 USE mod_field_group 18 10 IMPLICIT NONE 19 11 20 CALL field_group__new(field_definition,"field_definition") 21 12 ALLOCATE(field_definition) 13 CALL field_group__new(field_definition,"field_definition") 14 22 15 END SUBROUTINE field_definition__Init 23 24 16 25 17 END MODULE mod_field_definition -
/XMLIO_SERVER/trunk/src/XMLIO/mod_field_group.f90
r30 r20 16 16 INCLUDE "vector_field_group_def.inc" 17 17 18 TYPE(vector_field_group), SAVE,POINTER :: field_group_Ids19 TYPE(sorted_list),POINTER, SAVE,PRIVATE :: Ids18 TYPE(vector_field_group),POINTER :: field_group_Ids 19 TYPE(sorted_list),POINTER,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 NONE28 TYPE(vector_field_group),POINTER :: saved_field_group_Ids29 TYPE(sorted_list),POINTER :: saved_Ids30 31 field_group_ids=>saved_field_group_ids32 ids=>saved_ids33 34 END SUBROUTINE field_group__swap_context35 36 25 SUBROUTINE field_group__init 37 26 IMPLICIT NONE 27 28 ALLOCATE(field_group_Ids) 29 ALLOCATE(Ids) 38 30 39 31 CALL vector_field_group__new(field_group_Ids) … … 158 150 CALL field_group__solve_axis_ref(Pt_fg) 159 151 CALL field_group__solve_grid_ref(Pt_fg) 160 CALL field_group__solve_zoom_ref(Pt_fg)161 152 162 153 END SUBROUTINE field_group__solve_ref … … 209 200 210 201 END SUBROUTINE field_group__solve_grid_ref 211 212 RECURSIVE SUBROUTINE field_group__solve_zoom_ref(Pt_fg)213 IMPLICIT NONE214 TYPE(field_group),POINTER :: Pt_fg215 216 INTEGER :: i217 218 DO i=1,Pt_fg%groups%size219 CALL field_group__solve_zoom_ref(Pt_fg%groups%at(i)%pt)220 ENDDO221 222 DO i=1,Pt_fg%fields%size223 CALL field__solve_zoom_ref(Pt_fg%fields%at(i)%pt)224 ENDDO225 226 END SUBROUTINE field_group__solve_zoom_ref227 202 228 203 RECURSIVE SUBROUTINE field_group__print(Pt_fg) -
/XMLIO_SERVER/trunk/src/XMLIO/mod_file.f90
r30 r20 30 30 INCLUDE 'vector_file_contains.inc' 31 31 32 SUBROUTINE file__swap_context(saved_file_ids,saved_ids)33 IMPLICIT NONE34 TYPE(vector_file),POINTER :: saved_file_Ids35 TYPE(sorted_list),POINTER :: saved_Ids36 37 file_ids=>saved_file_ids38 ids=>saved_ids39 40 END SUBROUTINE file__swap_context41 42 43 32 SUBROUTINE file__init 44 33 IMPLICIT NONE 34 35 ALLOCATE(file_Ids) 36 ALLOCATE(Ids) 45 37 46 38 CALL vector_file__new(file_Ids) -
/XMLIO_SERVER/trunk/src/XMLIO/mod_file_definition.f90
r30 r20 6 6 CONTAINS 7 7 8 SUBROUTINE file_definition__swap_context(saved_file_definition)9 IMPLICIT NONE10 TYPE(file_group),POINTER :: saved_file_definition11 12 file_definition=>saved_file_definition13 14 END SUBROUTINE file_definition__swap_context15 16 8 SUBROUTINE file_definition__Init 17 9 USE mod_file_group 18 10 IMPLICIT NONE 19 11 12 ALLOCATE(file_definition) 20 13 CALL file_group__new(file_definition,"file_definition") 21 14 -
/XMLIO_SERVER/trunk/src/XMLIO/mod_file_group.f90
r30 r20 15 15 INCLUDE "vector_file_group_def.inc" 16 16 17 TYPE(vector_file_group),POINTER ,SAVE:: file_group_Ids18 TYPE(sorted_list),POINTER,PRIVATE ,SAVE:: Ids17 TYPE(vector_file_group),POINTER :: file_group_Ids 18 TYPE(sorted_list),POINTER,PRIVATE :: 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 NONE26 TYPE(vector_file_group),POINTER :: saved_file_group_Ids27 TYPE(sorted_list),POINTER :: saved_Ids28 29 file_group_ids=>saved_file_group_ids30 ids=>saved_ids31 32 END SUBROUTINE file_group__swap_context33 34 24 SUBROUTINE file_group__init 35 25 IMPLICIT NONE 26 27 ALLOCATE(file_group_Ids) 28 ALLOCATE(Ids) 36 29 37 30 CALL vector_file_group__new(file_group_Ids) -
/XMLIO_SERVER/trunk/src/XMLIO/mod_grid.f90
r30 r20 3 3 USE mod_sorted_list 4 4 USE mod_domain 5 USE mod_zoom6 7 5 IMPLICIT NONE 8 6 … … 21 19 INTEGER :: nj 22 20 LOGICAL :: has_dimension 23 TYPE(vector_zoom),POINTER :: associated_zoom24 TYPE(zoom),POINTER :: global_zoom25 21 END TYPE grid 26 22 … … 33 29 INCLUDE 'vector_grid_contains.inc' 34 30 35 SUBROUTINE grid__swap_context(saved_grid_Ids,saved_Ids)36 IMPLICIT NONE37 TYPE(vector_grid),POINTER :: saved_grid_Ids38 TYPE(sorted_list),POINTER :: saved_Ids39 40 grid_ids=>saved_grid_ids41 ids=>saved_ids42 END SUBROUTINE grid__swap_context43 44 45 31 SUBROUTINE grid__init 46 32 IMPLICIT NONE 33 34 ALLOCATE(grid_Ids) 35 ALLOCATE(Ids) 47 36 48 37 CALL vector_grid__new(grid_Ids) … … 79 68 ALLOCATE(pt_grid%subdomain) 80 69 ALLOCATE(pt_grid%rank_ids) 81 ALLOCATE(pt_grid%associated_zoom)82 83 70 CALL domain__new(pt_grid%domain) 84 71 CALL vector_domain__new(pt_grid%subdomain) 85 72 CALL sorted_list__new(pt_grid%rank_ids) 86 CALL vector_zoom__new(pt_grid%associated_zoom)87 73 88 74 pt_grid%has_id = .FALSE. … … 97 83 CALL sorted_list__Add(Ids,hash(id),Pos) 98 84 ENDIF 99 100 CALL grid__get_new_zoom(pt_grid,pt_grid%global_zoom,id)101 85 102 86 END SUBROUTINE grid__new … … 169 153 TYPE(grid), POINTER :: pt_grid 170 154 TYPE(domain),POINTER :: subdomain 171 TYPE(zoom),POINTER :: pt_zoom172 155 173 156 REAL,ALLOCATABLE :: lon(:,:) 174 157 REAL,ALLOCATABLE :: lat(:,:) 175 INTEGER :: ib,ie,jb,je,ni,nj,ibegin,jbegin ,iend,jend158 INTEGER :: ib,ie,jb,je,ni,nj,ibegin,jbegin 176 159 INTEGER :: i 177 160 … … 213 196 214 197 CALL domain__set(pt_grid%domain,0,ni,nj,ibegin,jbegin,lon,lat) 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 198 199 239 200 DEALLOCATE(lon) 240 201 DEALLOCATE(lat) … … 243 204 244 205 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 206 258 207 SUBROUTINE grid__print(pt_grid) 259 208 IMPLICIT NONE -
/XMLIO_SERVER/trunk/src/XMLIO/mod_grid_definition.f90
r30 r20 6 6 CONTAINS 7 7 8 SUBROUTINE grid_definition__swap_context(saved_grid_definition)9 IMPLICIT NONE10 TYPE(grid_group),POINTER :: saved_grid_definition11 12 grid_definition=>saved_grid_definition13 14 END SUBROUTINE grid_definition__swap_context15 16 8 SUBROUTINE grid_definition__Init 17 9 USE mod_grid_group 18 10 IMPLICIT NONE 19 11 12 ALLOCATE(grid_definition) 20 13 CALL grid_group__new(grid_definition,"grid_definition") 21 14 22 15 END SUBROUTINE grid_definition__Init 23 16 24 17 END MODULE mod_grid_definition -
/XMLIO_SERVER/trunk/src/XMLIO/mod_grid_group.f90
r30 r20 15 15 INCLUDE "vector_grid_group_def.inc" 16 16 17 TYPE(vector_grid_group),POINTER ,SAVE:: grid_group_Ids18 TYPE(sorted_list),POINTER, SAVE,PRIVATE :: Ids17 TYPE(vector_grid_group),POINTER :: grid_group_Ids 18 TYPE(sorted_list),POINTER,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 NONE26 TYPE(vector_grid_group),POINTER :: saved_grid_group_Ids27 TYPE(sorted_list),POINTER :: saved_Ids28 29 grid_group_ids=>saved_grid_group_ids30 ids=>saved_ids31 32 END SUBROUTINE grid_group__swap_context33 34 24 SUBROUTINE grid_group__init 35 25 IMPLICIT NONE 26 27 ALLOCATE(grid_group_Ids) 28 ALLOCATE(Ids) 36 29 37 30 CALL vector_grid_group__new(grid_group_Ids) -
/XMLIO_SERVER/trunk/src/XMLIO/mod_parse_xml.f90
r30 r20 28 28 CHARACTER(len=100) :: node_name 29 29 30 IF (hasChildNodes(root)) THEN30 IF (hasChildNodes(root)) THEN 31 31 child_list => getChildnodes(root) 32 32 … … 38 38 39 39 CASE ('simulation') 40 CALL parsing_ simulation(child_node)40 CALL parsing_definition(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 47 END SELECT 48 49 ENDDO 49 50 ENDIF 50 51 51 52 END SUBROUTINE parsing_root 52 53 53 SUBROUTINE parsing_simulation(root) 54 55 SUBROUTINE parsing_definition(root) 56 USE mod_axis_definition 57 USE mod_grid_definition 58 USE mod_field_definition 59 USE mod_file_definition 60 54 61 IMPLICIT NONE 55 62 TYPE(fnode), POINTER :: root … … 59 66 INTEGER :: il 60 67 CHARACTER(len=100) :: node_name 61 62 68 69 IF (hasChildNodes(root)) THEN 63 70 child_list => getChildnodes(root) 64 65 71 DO il=0,getLength(child_list)-1 66 72 child_node => item(child_list,il) 67 73 node_name=getNodename(child_node) 68 74 69 SELECT CASE (TRIM(node_name))70 71 CASE ('context')72 CALL parsing_context(child_node)73 74 CASE DEFAULT75 IF (is_bad_node(node_name)) THEN76 WRITE(message,*) 'Unknown node <<',TRIM(node_name),'>> while parsing simulation'77 CALL Warning("mod_parse_xml:parsing_simulationt")78 ENDIF79 END SELECT80 81 ENDDO82 ENDIF83 84 END SUBROUTINE parsing_simulation85 86 SUBROUTINE parsing_context(node)87 USE mod_context88 USE mod_axis_definition89 USE mod_grid_definition90 USE mod_field_definition91 USE mod_file_definition92 IMPLICIT NONE93 TYPE(fnode), POINTER :: node94 95 TYPE(fnode), POINTER :: child_node96 TYPE(fnodeList), POINTER :: child_list97 TYPE(axis),POINTER :: attribute98 LOGICAL :: is_root99 INTEGER :: il100 CHARACTER(len=100) :: node_name101 CHARACTER(len=100) :: value102 103 IF (is_attribute_exist(node,"id")) THEN104 value=getAttribute(node,"id")105 CALL context__create(TRIM(value))106 CALL context__swap(TRIM(value))107 ENDIF108 109 IF (hasChildNodes(node)) THEN110 child_list => getChildnodes(node)111 112 DO il=0,getLength(child_list)-1113 child_node => item(child_list,il)114 node_name=getNodename(child_node)115 116 75 SELECT CASE (TRIM(node_name)) 117 76 … … 130 89 CASE DEFAULT 131 90 IF (is_bad_node(node_name)) THEN 132 WRITE(message,*) 'Unknown node <<',TRIM(node_name),'>> while parsing context'133 CALL Warning("mod_parse_xml:parsing_ context")91 WRITE(message,*) 'Unknown node <<',TRIM(node_name),'>> while parsing definition' 92 CALL Warning("mod_parse_xml:parsing_definition") 134 93 ENDIF 135 END SELECT 136 ENDDO 137 138 ENDIF 139 140 END SUBROUTINE parsing_context 141 142 94 END SELECT 95 96 ENDDO 97 ENDIF 98 99 END SUBROUTINE parsing_definition 100 101 102 103 104 105 143 106 RECURSIVE SUBROUTINE parsing_axis_group(node,parent,root) 144 107 USE mod_axis_definition … … 255 218 CALL axis__set(pt_axis,a_size=string_to_integer(value)) 256 219 ENDIF 257 258 IF (is_attribute_exist(node,"positive")) THEN259 value = getAttribute(node,"positive")260 CALL axis__set(pt_axis,positive=string_to_logical(value))261 ENDIF262 220 263 221 END SUBROUTINE parsing_axis_attribute … … 338 296 TYPE(grid_group),POINTER :: parent 339 297 340 TYPE(grid),POINTER :: pt_grid 341 TYPE(fnode), POINTER :: child_node 342 TYPE(fnodeList), POINTER :: child_list 298 TYPE(grid),POINTER :: pt_grid 299 TYPE(grid),POINTER :: attribute 343 300 INTEGER :: il 344 301 CHARACTER(len=100) :: node_name … … 354 311 355 312 CALL parsing_grid_attribute(node,pt_grid) 356 357 358 IF (hasChildNodes(node)) THEN359 child_list => getChildnodes(node)360 361 DO il=0,getLength(child_list)-1362 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 DEFAULT371 IF (is_bad_node(node_name)) THEN372 WRITE(message,*) 'Unknown node <<',TRIM(node_name),'>> while parsing grid'373 CALL Warning("mod_parse_xml:parsing_grid")374 ENDIF375 END SELECT376 ENDDO377 ENDIF378 313 379 314 END SUBROUTINE parsing_grid 380 315 316 381 317 SUBROUTINE parsing_grid_attribute(node,pt_grid) 382 318 USE mod_grid … … 399 335 END SUBROUTINE parsing_grid_attribute 400 336 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 337 338 339 465 340 466 341 … … 596 471 ENDIF 597 472 598 IF (is_attribute_exist(node,"zoom_ref")) THEN599 value = getAttribute(node,"zoom_ref")600 CALL field__set(pt_field,zoom_ref=TRIM(value))601 ENDIF602 603 473 IF (is_attribute_exist(node,"level")) THEN 604 474 value = getAttribute(node,"level") … … 623 493 624 494 END SUBROUTINE parsing_field_attribute 495 496 497 625 498 626 499 -
/XMLIO_SERVER/trunk/src/XMLIO/xmlio.f90
r30 r20 16 16 USE string_function 17 17 USE error_msg 18 USE mod_context19 USE mod_time_parameters20 18 21 19 CONTAINS … … 26 24 CHARACTER(LEN=*),INTENT(IN) :: xml_file 27 25 28 CALL context__init 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 29 42 CALL parsing_xml_file(xml_file) 30 43 31 44 END SUBROUTINE xmlio__init 32 33 45 34 46 SUBROUTINE xmlio__close_definition
Note: See TracChangeset
for help on using the changeset viewer.