Changeset 14
- Timestamp:
- 02/10/12 16:16:46 (13 years ago)
- Location:
- trunk/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r7 r14 32 32 USE phycst ! physical constants 33 33 USE dianam ! build name of file 34 USE mod_event_client 35 USE mod_attribut 34 USE xios 36 35 # endif 37 36 … … 51 50 PRIVATE iom_p1d, iom_p2d, iom_p3d 52 51 #if defined key_iomput 53 PRIVATE set_grid52 PRIVATE iom_set_domain_attr, iom_set_field_attr, iom_set_file_attr, set_grid, set_scalar, set_xmlatt, set_mooring 54 53 # endif 55 54 … … 68 67 #if defined key_iomput 69 68 INTERFACE iom_setkt 70 MODULE PROCEDURE event__set_timestep69 MODULE PROCEDURE xios_update_calendar 71 70 END INTERFACE 72 71 # endif … … 74 73 !!---------------------------------------------------------------------- 75 74 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 76 !! $Id: iom.F90 3 294 2012-01-28 16:44:18Z rblod $75 !! $Id: iom.F90 3104 2011-11-15 10:08:25Z cetlod $ 77 76 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 78 77 !!---------------------------------------------------------------------- … … 88 87 !!---------------------------------------------------------------------- 89 88 #if defined key_iomput 90 REAL(wp) :: ztmp 91 !!---------------------------------------------------------------------- 92 ! read the xml file 93 IF( Agrif_Root() ) CALL event__parse_xml_file( 'iodef.xml' ) ! <- to get from the nameliste (namrun)... 89 TYPE(xios_time) :: dtime = xios_time(0, 0, 0, 0, 0, 0) 90 !!---------------------------------------------------------------------- 91 94 92 CALL iom_swap 95 93 96 94 ! calendar parameters 97 95 SELECT CASE ( nleapy ) ! Choose calendar for IOIPSL 98 CASE ( 1) ; CALL event__set_calendar('gregorian')99 CASE ( 0) ; CALL event__set_calendar('noleap')100 CASE ( 30) ; CALL event__set_calendar('360d')96 CASE ( 1) ; CALL xios_set_context_attr("nemo", calendar_type= "Gregorian") 97 CASE ( 0) ; CALL xios_set_context_attr("nemo", calendar_type= "NoLeap") 98 CASE ( 30) ; CALL xios_set_context_attr("nemo", calendar_type= "D360") 101 99 END SELECT 102 ztmp = fjulday - adatrj103 IF( ABS(ztmp - REAL(NINT(ztmp),wp)) < 0.1 / rday ) ztmp = REAL(NINT(ztmp),wp) ! avoid truncation error104 CALL event__set_time_parameters( nit000 - 1, ztmp, rdt )105 100 106 101 ! horizontal grid definition 107 102 CALL set_scalar 108 CALL set_grid( "grid_T", glamt, gphit ) 103 CALL set_grid( "grid_T", glamt, gphit ) 109 104 CALL set_grid( "grid_U", glamu, gphiu ) 110 105 CALL set_grid( "grid_V", glamv, gphiv ) … … 112 107 113 108 ! vertical grid definition 114 CALL event__set_vert_axis( "deptht", gdept_0 ) 115 CALL event__set_vert_axis( "depthu", gdept_0 ) 116 CALL event__set_vert_axis( "depthv", gdept_0 ) 117 CALL event__set_vert_axis( "depthw", gdepw_0 ) 118 # if defined key_floats 119 CALL event__set_vert_axis( "nfloat", REAL(nfloat,wp) ) 120 # endif 109 CALL xios_set_axis_attr("deptht",size=size(gdept_0),value=gdept_0) 110 CALL xios_set_axis_attr("depthu",size=size(gdept_0),value=gdept_0) 111 CALL xios_set_axis_attr("depthv",size=size(gdept_0),value=gdept_0) 112 CALL xios_set_axis_attr("depthw",size=size(gdepw_0),value=gdepw_0) 121 113 122 114 ! automatic definitions of some of the xml attributs … … 124 116 125 117 ! end file definition 126 CALL event__close_io_definition 118 dtime%second=rdt 119 CALL xios_set_timestep(dtime) 120 CALL xios_close_context_definition() 121 122 CALL xios_update_calendar(nit000-1) 127 123 #endif 128 124 … … 137 133 !!--------------------------------------------------------------------- 138 134 #if defined key_iomput 135 TYPE(xios_context) :: nemo_hdl 139 136 140 137 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 141 CALL event__swap_context("nemo")138 CALL xios_get_handle("nemo",nemo_hdl) 142 139 ELSE 143 CALL event__swap_context(TRIM(Agrif_CFixed())//"_nemo")140 CALL xios_get_handle(TRIM(Agrif_CFixed())//"_nemo",nemo_hdl) 144 141 ENDIF 142 CALL xios_set_current_context(nemo_hdl) 145 143 146 144 #endif … … 339 337 INTEGER :: i_s, i_e ! temporary integer 340 338 CHARACTER(LEN=100) :: clinfo ! info character 339 INTEGER :: inb_period_initial, inb_period_final, inb_period_sec, inb_period_max, inb_period 341 340 !--------------------------------------------------------------------- 342 341 ! … … 349 348 i_e = jpmax_files 350 349 #if defined key_iomput 351 CALL event__stop_ioserver350 CALL xios_context_finalize() 352 351 #endif 353 352 ENDIF … … 960 959 REAL(wp) , INTENT(in) :: pfield0d 961 960 #if defined key_iomput 962 CALL event__write_field2D( cdname, RESHAPE( (/pfield0d/), (/1,1/) ))961 CALL xios_send_field(cdname, (/pfield0d/)) 963 962 #else 964 963 IF( .FALSE. ) WRITE(numout,*) cdname, pfield0d ! useless test to avoid compilation warnings … … 969 968 CHARACTER(LEN=*) , INTENT(in) :: cdname 970 969 REAL(wp), DIMENSION(:), INTENT(in) :: pfield1d 971 INTEGER :: jpz972 970 #if defined key_iomput 973 jpz=SIZE(pfield1d) 974 CALL event__write_field3D( cdname, RESHAPE( (/pfield1d/), (/1,1,jpz/) ) ) 971 CALL xios_send_field( cdname, RESHAPE( (/pfield1d/), (/1,1,SIZE(pfield1d)/) ) ) 975 972 #else 976 973 IF( .FALSE. ) WRITE(numout,*) cdname, pfield1d ! useless test to avoid compilation warnings … … 982 979 REAL(wp), DIMENSION(:,:), INTENT(in) :: pfield2d 983 980 #if defined key_iomput 984 CALL event__write_field2D( cdname, pfield2d(nldi:nlei, nldj:nlej))981 CALL xios_send_field(cdname, pfield2d) 985 982 #else 986 983 IF( .FALSE. ) WRITE(numout,*) cdname, pfield2d ! useless test to avoid compilation warnings … … 992 989 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: pfield3d 993 990 #if defined key_iomput 994 CALL event__write_field3D( cdname, pfield3d(nldi:nlei, nldj:nlej, :))991 CALL xios_send_field(cdname, pfield3d) 995 992 #else 996 993 IF( .FALSE. ) WRITE(numout,*) cdname, pfield3d ! useless test to avoid compilation warnings … … 1002 999 #if defined key_iomput 1003 1000 1001 SUBROUTINE iom_set_domain_attr( cdname, ni_glo, nj_glo, ibegin, jbegin, ni, nj, zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj, & 1002 & data_dim, data_ibegin, data_ni, data_jbegin, data_nj, lonvalue, latvalue ) 1003 CHARACTER(LEN=*) , INTENT(in) :: cdname 1004 INTEGER , OPTIONAL, INTENT(in) :: ni_glo, nj_glo, ibegin, jbegin, ni, nj 1005 INTEGER , OPTIONAL, INTENT(in) :: data_dim, data_ibegin, data_ni, data_jbegin, data_nj 1006 INTEGER , OPTIONAL, INTENT(in) :: zoom_ibegin, zoom_jbegin, zoom_ni, zoom_nj 1007 REAL(wp), DIMENSION(:), OPTIONAL, INTENT(in) :: lonvalue, latvalue 1008 1009 IF ( xios_is_valid_domain(TRIM(cdname)) ) THEN 1010 CALL xios_set_domain_attr( cdname, ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, jbegin=jbegin, ni=ni, nj=nj , & 1011 & data_dim=data_dim, data_ibegin=data_ibegin, data_ni=data_ni, data_jbegin=data_jbegin, data_nj=data_nj, & 1012 & zoom_ibegin=zoom_ibegin, zoom_jbegin=zoom_jbegin, zoom_ni=zoom_ni, zoom_nj=zoom_nj, & 1013 & lonvalue=lonvalue, latvalue=latvalue ) 1014 ENDIF 1015 1016 IF ( xios_is_valid_domaingroup(TRIM(cdname)) ) THEN 1017 CALL xios_set_domaingroup_attr( cdname, ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, jbegin=jbegin, ni=ni, nj=nj, & 1018 & data_dim=data_dim, data_ibegin=data_ibegin, data_ni=data_ni, data_jbegin=data_jbegin, data_nj=data_nj , & 1019 & zoom_ibegin=zoom_ibegin, zoom_jbegin=zoom_jbegin, zoom_ni=zoom_ni, zoom_nj=zoom_nj, & 1020 & lonvalue=lonvalue, latvalue=latvalue ) 1021 ENDIF 1022 1023 END SUBROUTINE iom_set_domain_attr 1024 1025 1026 SUBROUTINE iom_set_field_attr( cdname, freq_op) 1027 CHARACTER(LEN=*) , INTENT(in) :: cdname 1028 CHARACTER(LEN=*),OPTIONAL , INTENT(in) :: freq_op 1029 1030 IF ( xios_is_valid_field(TRIM(cdname)) ) THEN 1031 CALL xios_set_field_attr( cdname, freq_op=freq_op ) 1032 ENDIF 1033 IF ( xios_is_valid_fieldgroup(TRIM(cdname)) ) THEN 1034 CALL xios_set_fieldgroup_attr( cdname, freq_op=freq_op ) 1035 ENDIF 1036 1037 END SUBROUTINE iom_set_field_attr 1038 1039 1040 SUBROUTINE iom_set_file_attr( cdname, name, name_suffix ) 1041 CHARACTER(LEN=*) , INTENT(in) :: cdname 1042 CHARACTER(LEN=*),OPTIONAL , INTENT(in) :: name, name_suffix 1043 1044 IF ( xios_is_valid_file(TRIM(cdname)) ) THEN 1045 CALL xios_set_file_attr( cdname, name=name, name_suffix=name_suffix ) 1046 ENDIF 1047 IF ( xios_is_valid_filegroup(TRIM(cdname)) ) THEN 1048 CALL xios_set_filegroup_attr( cdname, name=name, name_suffix=name_suffix ) 1049 ENDIF 1050 1051 END SUBROUTINE iom_set_file_attr 1052 1053 1004 1054 SUBROUTINE set_grid( cdname, plon, plat ) 1005 1055 !!---------------------------------------------------------------------- … … 1012 1062 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: plon 1013 1063 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: plat 1014 1015 CALL event__set_grid_dimension( cdname, jpiglo, jpjglo) 1016 CALL event__set_grid_domain( cdname, nlei-nldi+1, nlej-nldj+1, nimpp+nldi-1, njmpp+nldj-1, & 1017 & plon(nldi:nlei, nldj:nlej), plat(nldi:nlei, nldj:nlej) ) 1018 CALL event__set_grid_type_nemo( cdname ) 1019 1064 INTEGER :: ni,nj 1065 1066 ni=nlei-nldi+1 ; nj=nlej-nldj+1 1067 1068 CALL iom_set_domain_attr(cdname, ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-1, jbegin=njmpp+nldj-1, ni=ni, nj=nj) 1069 CALL iom_set_domain_attr(cdname, data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 1070 CALL iom_set_domain_attr(cdname, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)), & 1071 & latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /))) 1072 1020 1073 END SUBROUTINE set_grid 1021 1074 … … 1030 1083 REAL(wp), DIMENSION(1,1) :: zz = 1. 1031 1084 !!---------------------------------------------------------------------- 1032 CALL event__set_grid_dimension( 'scalarpoint', jpnij,1)1033 CALL event__set_grid_domain ( 'scalarpoint', 1, 1, narea, 1, zz, zz)1034 CALL event__set_grid_type_nemo( 'scalarpoint')1085 CALL iom_set_domain_attr('scalarpoint', ni_glo=jpnij, nj_glo=1, ibegin=narea, jbegin=1, ni=1, nj=1) 1086 CALL iom_set_domain_attr('scalarpoint', data_dim=1) 1087 CALL iom_set_domain_attr('scalarpoint', lonvalue=(/ zz /), latvalue=(/ zz /)) 1035 1088 1036 1089 END SUBROUTINE set_scalar … … 1049 1102 CHARACTER(len=1) :: cl1 ! 1 character 1050 1103 CHARACTER(len=2) :: cl2 ! 1 character 1104 CHARACTER(len=255) :: tfo 1051 1105 INTEGER :: idt ! time-step in seconds 1052 1106 INTEGER :: iddss, ihhss ! number of seconds in 1 day, 1 hour and 1 year … … 1068 1122 1069 1123 ! frequency of the call of iom_put (attribut: freq_op) 1070 CALL event__set_attribut( 'field_definition', attr( field__freq_op, idt ) ) ! model time-step 1071 CALL event__set_attribut( 'SBC' , attr( field__freq_op, idt * nn_fsbc ) ) ! SBC time-step 1072 1124 tfo = TRIM(i2str(idt))//'s' 1125 CALL iom_set_field_attr('field_definition', freq_op=tfo) 1126 CALL iom_set_field_attr('SBC', freq_op=TRIM(i2str(idt* nn_fsbc))//'s') 1127 1073 1128 ! output file names (attribut: name) 1074 1129 clsuff(:) = (/ 'grid_T', 'grid_U', 'grid_V', 'grid_W', 'icemod', 'ptrc_T', 'diad_T', 'scalar' /) … … 1078 1133 WRITE(cl2,'(i2)') jh 1079 1134 CALL dia_nam( clname, jh * ihhss, clsuff(jg), ldfsec = .TRUE. ) 1080 CALL event__set_attribut( TRIM(ADJUSTL(cl2))//'h_'//clsuff(jg), attr( file__name, TRIM(clname) ))1135 CALL iom_set_file_attr(TRIM(ADJUSTL(cl2))//'h_'//clsuff(jg), name=TRIM(clname)) 1081 1136 ENDIF 1082 1137 END DO … … 1084 1139 WRITE(cl1,'(i1)') jd 1085 1140 CALL dia_nam( clname, jd * iddss, clsuff(jg), ldfsec = .TRUE. ) 1086 CALL event__set_attribut( cl1//'d_'//clsuff(jg), attr( file__name, TRIM(clname) ))1141 CALL iom_set_file_attr(cl1//'d_'//clsuff(jg), name=TRIM(clname)) 1087 1142 END DO 1088 1143 DO jm = 1, 6 ! 1, 2, 3, 4, 6 months … … 1090 1145 WRITE(cl1,'(i1)') jm 1091 1146 CALL dia_nam( clname, -jm, clsuff(jg) ) 1092 CALL event__set_attribut( cl1//'m_'//clsuff(jg), attr( file__name, TRIM(clname) ))1147 CALL iom_set_file_attr(cl1//'m_'//clsuff(jg), name=TRIM(clname)) 1093 1148 ENDIF 1094 1149 END DO … … 1097 1152 WRITE(cl2,'(i2)') jy 1098 1153 CALL dia_nam( clname, -jy * iyymo, clsuff(jg) ) 1099 CALL event__set_attribut( TRIM(ADJUSTL(cl2))//'y_'//clsuff(jg), attr( file__name, TRIM(clname) ))1154 CALL iom_set_file_attr(TRIM(ADJUSTL(cl2))//'y_'//clsuff(jg), name=TRIM(clname)) 1100 1155 ENDIF 1101 1156 END DO … … 1108 1163 ! Equatorial section (attributs: jbegin, ni, name_suffix) 1109 1164 CALL dom_ngb( 0., 0., ix, iy, cl1 ) 1110 CALL event__set_attribut( 'Eq'//cl1, attr( zoom__jbegin , iy ) ) 1111 CALL event__set_attribut( 'Eq'//cl1, attr( zoom__ni , jpiglo ) ) 1112 CALL event__set_attribut( 'Eq'//cl1, attr( file__name_suffix, '_Eq' ) ) 1165 CALL iom_set_domain_attr('Eq'//cl1, zoom_jbegin=iy, zoom_ni=jpiglo) 1166 CALL iom_set_file_attr('Eq'//cl1, name_suffix= '_Eq') 1113 1167 END DO 1114 1168 ! TAO moorings (attributs: ibegin, jbegin, name_suffix) … … 1185 1239 ENDIF 1186 1240 clname = TRIM(ADJUSTL(clat))//TRIM(ADJUSTL(clon)) 1187 CALL event__set_attribut( TRIM(clname)//cl1, attr( zoom__ibegin , ix ) ) 1188 CALL event__set_attribut( TRIM(clname)//cl1, attr( zoom__jbegin , iy ) ) 1189 CALL event__set_attribut( TRIM(clname)//cl1, attr( file__name_suffix, '_'//TRIM(clname) ) ) 1241 CALL iom_set_domain_attr(TRIM(clname)//cl1, zoom_ibegin= ix, zoom_jbegin= iy) 1242 CALL iom_set_file_attr(TRIM(clname)//cl1, name_suffix= '_'//TRIM(clname)) 1190 1243 END DO 1191 1244 END DO … … 1203 1256 #endif 1204 1257 1205 1258 FUNCTION i2str(int) 1259 IMPLICIT NONE 1260 INTEGER, INTENT(IN) :: int 1261 CHARACTER(LEN=255) :: i2str 1262 1263 WRITE(i2str,*) int 1264 1265 END FUNCTION i2str 1266 1206 1267 !!====================================================================== 1207 1268 END MODULE iom -
trunk/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r7 r14 73 73 USE lib_mpp ! distributed memory computing 74 74 #if defined key_iomput 75 USE mod_ioclient75 USE xios 76 76 #endif 77 77 … … 86 86 !!---------------------------------------------------------------------- 87 87 !! NEMO/OPA 4.0 , NEMO Consortium (2011) 88 !! $Id: nemogcm.F90 32 94 2012-01-28 16:44:18Z rblod $88 !! $Id: nemogcm.F90 3289 2012-01-27 14:37:34Z rblod $ 89 89 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 90 90 !!---------------------------------------------------------------------- … … 185 185 CALL cpl_prism_finalize ! end coupling and mpp communications with OASIS 186 186 #else 187 # if defined key_iomput 188 IF( Agrif_Root() ) THEN 189 CALL xios_finalize ! end mpp communications 190 ENDIF 191 # else 187 192 IF( lk_mpp ) CALL mppstop ! end mpp communications 193 # endif 188 194 #endif 189 195 ! … … 219 225 IF( Agrif_Root() ) THEN 220 226 # if defined key_oasis3 || defined key_oasis4 221 CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis 227 CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis 228 CALL xios_initialize( local_comm = ilocal_comm ) ! xios local communicator given by oasis 229 # else 230 CALL xios_initialize( return_comm = ilocal_comm ) ! nemo local communicator given by xios 222 231 # endif 223 CALL init_ioclient( ilocal_comm ) ! exchange io_server nemo local communicator with the io_server224 232 ENDIF 225 233 narea = mynode( cltxt, numnam, nstop, ilocal_comm ) ! Nodes selection
Note: See TracChangeset
for help on using the changeset viewer.