Changeset 13932
- Timestamp:
- 2020-12-01T09:21:09+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_12905_xios_restart
- Files:
-
- 44 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icedia.F90
r13871 r13932 221 221 IF( ln_rstart ) THEN !* Read the restart file 222 222 ! 223 IF(lrxios) CALL iom_swap(cr_icerst_cxt) 224 CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lrxios ) 223 CALL iom_get( numrir, 'kt_ice' , ziter ) 225 224 IF(lwp) WRITE(numout,*) 226 225 IF(lwp) WRITE(numout,*) 'ice_dia_rst read at time step = ', ziter 227 226 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 228 CALL iom_get( numrir, 'frc_voltop' , frc_voltop, ldxios = lrxios ) 229 CALL iom_get( numrir, 'frc_volbot' , frc_volbot, ldxios = lrxios ) 230 CALL iom_get( numrir, 'frc_temtop' , frc_temtop, ldxios = lrxios ) 231 CALL iom_get( numrir, 'frc_tembot' , frc_tembot, ldxios = lrxios ) 232 CALL iom_get( numrir, 'frc_sal' , frc_sal, ldxios = lrxios ) 233 CALL iom_get( numrir, jpdom_auto, 'vol_loc_ini', vol_loc_ini, ldxios = lrxios ) 234 CALL iom_get( numrir, jpdom_auto, 'tem_loc_ini', tem_loc_ini, ldxios = lrxios ) 235 CALL iom_get( numrir, jpdom_auto, 'sal_loc_ini', sal_loc_ini, ldxios = lrxios ) 236 IF(lrxios) CALL iom_swap(cxios_context) 227 CALL iom_get( numrir, 'frc_voltop' , frc_voltop ) 228 CALL iom_get( numrir, 'frc_volbot' , frc_volbot ) 229 CALL iom_get( numrir, 'frc_temtop' , frc_temtop ) 230 CALL iom_get( numrir, 'frc_tembot' , frc_tembot ) 231 CALL iom_get( numrir, 'frc_sal' , frc_sal ) 232 CALL iom_get( numrir, jpdom_auto, 'vol_loc_ini', vol_loc_ini ) 233 CALL iom_get( numrir, jpdom_auto, 'tem_loc_ini', tem_loc_ini ) 234 CALL iom_get( numrir, jpdom_auto, 'sal_loc_ini', sal_loc_ini ) 237 235 ELSE 238 236 IF(lwp) WRITE(numout,*) … … 263 261 ! Write in numriw (if iter == nitrst) 264 262 ! ------------------ 265 IF( lwxios ) CALL iom_swap( cw_icerst_cxt ) 266 CALL iom_rstput( iter, nitrst, numriw, 'frc_voltop' , frc_voltop, ldxios = lwxios ) 267 CALL iom_rstput( iter, nitrst, numriw, 'frc_volbot' , frc_volbot, ldxios = lwxios ) 268 CALL iom_rstput( iter, nitrst, numriw, 'frc_temtop' , frc_temtop, ldxios = lwxios ) 269 CALL iom_rstput( iter, nitrst, numriw, 'frc_tembot' , frc_tembot, ldxios = lwxios ) 270 CALL iom_rstput( iter, nitrst, numriw, 'frc_sal' , frc_sal, ldxios = lwxios ) 271 CALL iom_rstput( iter, nitrst, numriw, 'vol_loc_ini', vol_loc_ini, ldxios = lwxios ) 272 CALL iom_rstput( iter, nitrst, numriw, 'tem_loc_ini', tem_loc_ini, ldxios = lwxios ) 273 CALL iom_rstput( iter, nitrst, numriw, 'sal_loc_ini', sal_loc_ini, ldxios = lwxios ) 274 IF( lwxios ) CALL iom_swap( cxios_context ) 263 CALL iom_rstput( iter, nitrst, numriw, 'frc_voltop' , frc_voltop ) 264 CALL iom_rstput( iter, nitrst, numriw, 'frc_volbot' , frc_volbot ) 265 CALL iom_rstput( iter, nitrst, numriw, 'frc_temtop' , frc_temtop ) 266 CALL iom_rstput( iter, nitrst, numriw, 'frc_tembot' , frc_tembot ) 267 CALL iom_rstput( iter, nitrst, numriw, 'frc_sal' , frc_sal ) 268 CALL iom_rstput( iter, nitrst, numriw, 'vol_loc_ini', vol_loc_ini ) 269 CALL iom_rstput( iter, nitrst, numriw, 'tem_loc_ini', tem_loc_ini ) 270 CALL iom_rstput( iter, nitrst, numriw, 'sal_loc_ini', sal_loc_ini ) 275 271 ! 276 272 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icedyn_adv_pra.F90
r13871 r13932 955 955 ! 956 956 IF( id1 > 0 ) THEN !** Read the restart file **! 957 IF(lrxios) CALL iom_swap(cr_icerst_cxt)958 957 ! 959 958 ! ! ice thickness 960 CALL iom_get( numrir, jpdom_auto, 'sxice' , sxice , psgn = -1._wp , ldxios = lrxios)961 CALL iom_get( numrir, jpdom_auto, 'syice' , syice , psgn = -1._wp , ldxios = lrxios)962 CALL iom_get( numrir, jpdom_auto, 'sxxice', sxxice , ldxios = lrxios)963 CALL iom_get( numrir, jpdom_auto, 'syyice', syyice , ldxios = lrxios)964 CALL iom_get( numrir, jpdom_auto, 'sxyice', sxyice , ldxios = lrxios)959 CALL iom_get( numrir, jpdom_auto, 'sxice' , sxice , psgn = -1._wp ) 960 CALL iom_get( numrir, jpdom_auto, 'syice' , syice , psgn = -1._wp ) 961 CALL iom_get( numrir, jpdom_auto, 'sxxice', sxxice ) 962 CALL iom_get( numrir, jpdom_auto, 'syyice', syyice ) 963 CALL iom_get( numrir, jpdom_auto, 'sxyice', sxyice ) 965 964 ! ! snow thickness 966 CALL iom_get( numrir, jpdom_auto, 'sxsn' , sxsn , psgn = -1._wp , ldxios = lrxios)967 CALL iom_get( numrir, jpdom_auto, 'sysn' , sysn , psgn = -1._wp , ldxios = lrxios)968 CALL iom_get( numrir, jpdom_auto, 'sxxsn' , sxxsn , ldxios = lrxios)969 CALL iom_get( numrir, jpdom_auto, 'syysn' , syysn , ldxios = lrxios)970 CALL iom_get( numrir, jpdom_auto, 'sxysn' , sxysn , ldxios = lrxios)965 CALL iom_get( numrir, jpdom_auto, 'sxsn' , sxsn , psgn = -1._wp ) 966 CALL iom_get( numrir, jpdom_auto, 'sysn' , sysn , psgn = -1._wp ) 967 CALL iom_get( numrir, jpdom_auto, 'sxxsn' , sxxsn ) 968 CALL iom_get( numrir, jpdom_auto, 'syysn' , syysn ) 969 CALL iom_get( numrir, jpdom_auto, 'sxysn' , sxysn ) 971 970 ! ! ice concentration 972 CALL iom_get( numrir, jpdom_auto, 'sxa' , sxa , psgn = -1._wp , ldxios = lrxios)973 CALL iom_get( numrir, jpdom_auto, 'sya' , sya , psgn = -1._wp , ldxios = lrxios)974 CALL iom_get( numrir, jpdom_auto, 'sxxa' , sxxa , ldxios = lrxios)975 CALL iom_get( numrir, jpdom_auto, 'syya' , syya , ldxios = lrxios)976 CALL iom_get( numrir, jpdom_auto, 'sxya' , sxya , ldxios = lrxios)971 CALL iom_get( numrir, jpdom_auto, 'sxa' , sxa , psgn = -1._wp ) 972 CALL iom_get( numrir, jpdom_auto, 'sya' , sya , psgn = -1._wp ) 973 CALL iom_get( numrir, jpdom_auto, 'sxxa' , sxxa ) 974 CALL iom_get( numrir, jpdom_auto, 'syya' , syya ) 975 CALL iom_get( numrir, jpdom_auto, 'sxya' , sxya ) 977 976 ! ! ice salinity 978 CALL iom_get( numrir, jpdom_auto, 'sxsal' , sxsal , psgn = -1._wp , ldxios = lrxios)979 CALL iom_get( numrir, jpdom_auto, 'sysal' , sysal , psgn = -1._wp , ldxios = lrxios)980 CALL iom_get( numrir, jpdom_auto, 'sxxsal', sxxsal , ldxios = lrxios)981 CALL iom_get( numrir, jpdom_auto, 'syysal', syysal , ldxios = lrxios)982 CALL iom_get( numrir, jpdom_auto, 'sxysal', sxysal , ldxios = lrxios)977 CALL iom_get( numrir, jpdom_auto, 'sxsal' , sxsal , psgn = -1._wp ) 978 CALL iom_get( numrir, jpdom_auto, 'sysal' , sysal , psgn = -1._wp ) 979 CALL iom_get( numrir, jpdom_auto, 'sxxsal', sxxsal ) 980 CALL iom_get( numrir, jpdom_auto, 'syysal', syysal ) 981 CALL iom_get( numrir, jpdom_auto, 'sxysal', sxysal ) 983 982 ! ! ice age 984 CALL iom_get( numrir, jpdom_auto, 'sxage' , sxage , psgn = -1._wp , ldxios = lrxios)985 CALL iom_get( numrir, jpdom_auto, 'syage' , syage , psgn = -1._wp , ldxios = lrxios)986 CALL iom_get( numrir, jpdom_auto, 'sxxage', sxxage , ldxios = lrxios)987 CALL iom_get( numrir, jpdom_auto, 'syyage', syyage , ldxios = lrxios)988 CALL iom_get( numrir, jpdom_auto, 'sxyage', sxyage , ldxios = lrxios)983 CALL iom_get( numrir, jpdom_auto, 'sxage' , sxage , psgn = -1._wp ) 984 CALL iom_get( numrir, jpdom_auto, 'syage' , syage , psgn = -1._wp ) 985 CALL iom_get( numrir, jpdom_auto, 'sxxage', sxxage ) 986 CALL iom_get( numrir, jpdom_auto, 'syyage', syyage ) 987 CALL iom_get( numrir, jpdom_auto, 'sxyage', sxyage ) 989 988 ! ! snow layers heat content 990 989 DO jk = 1, nlay_s 991 990 WRITE(zchar1,'(I2.2)') jk 992 991 znam = 'sxc0'//'_l'//zchar1 993 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp , ldxios = lrxios) ; sxc0 (:,:,jk,:) = z3d(:,:,:)992 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp ) ; sxc0 (:,:,jk,:) = z3d(:,:,:) 994 993 znam = 'syc0'//'_l'//zchar1 995 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp , ldxios = lrxios) ; syc0 (:,:,jk,:) = z3d(:,:,:)994 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp ) ; syc0 (:,:,jk,:) = z3d(:,:,:) 996 995 znam = 'sxxc0'//'_l'//zchar1 997 CALL iom_get( numrir, jpdom_auto, znam , z3d , ldxios = lrxios) ; sxxc0(:,:,jk,:) = z3d(:,:,:)996 CALL iom_get( numrir, jpdom_auto, znam , z3d ) ; sxxc0(:,:,jk,:) = z3d(:,:,:) 998 997 znam = 'syyc0'//'_l'//zchar1 999 CALL iom_get( numrir, jpdom_auto, znam , z3d , ldxios = lrxios) ; syyc0(:,:,jk,:) = z3d(:,:,:)998 CALL iom_get( numrir, jpdom_auto, znam , z3d ) ; syyc0(:,:,jk,:) = z3d(:,:,:) 1000 999 znam = 'sxyc0'//'_l'//zchar1 1001 CALL iom_get( numrir, jpdom_auto, znam , z3d , ldxios = lrxios) ; sxyc0(:,:,jk,:) = z3d(:,:,:)1000 CALL iom_get( numrir, jpdom_auto, znam , z3d ) ; sxyc0(:,:,jk,:) = z3d(:,:,:) 1002 1001 END DO 1003 1002 ! ! ice layers heat content … … 1005 1004 WRITE(zchar1,'(I2.2)') jk 1006 1005 znam = 'sxe'//'_l'//zchar1 1007 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp , ldxios = lrxios) ; sxe (:,:,jk,:) = z3d(:,:,:)1006 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp ) ; sxe (:,:,jk,:) = z3d(:,:,:) 1008 1007 znam = 'sye'//'_l'//zchar1 1009 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp , ldxios = lrxios) ; sye (:,:,jk,:) = z3d(:,:,:)1008 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp ) ; sye (:,:,jk,:) = z3d(:,:,:) 1010 1009 znam = 'sxxe'//'_l'//zchar1 1011 CALL iom_get( numrir, jpdom_auto, znam , z3d , ldxios = lrxios) ; sxxe(:,:,jk,:) = z3d(:,:,:)1010 CALL iom_get( numrir, jpdom_auto, znam , z3d ) ; sxxe(:,:,jk,:) = z3d(:,:,:) 1012 1011 znam = 'syye'//'_l'//zchar1 1013 CALL iom_get( numrir, jpdom_auto, znam , z3d , ldxios = lrxios) ; syye(:,:,jk,:) = z3d(:,:,:)1012 CALL iom_get( numrir, jpdom_auto, znam , z3d ) ; syye(:,:,jk,:) = z3d(:,:,:) 1014 1013 znam = 'sxye'//'_l'//zchar1 1015 CALL iom_get( numrir, jpdom_auto, znam , z3d , ldxios = lrxios) ; sxye(:,:,jk,:) = z3d(:,:,:)1014 CALL iom_get( numrir, jpdom_auto, znam , z3d ) ; sxye(:,:,jk,:) = z3d(:,:,:) 1016 1015 END DO 1017 1016 ! 1018 1017 IF( ln_pnd_LEV ) THEN ! melt pond fraction 1019 1018 IF( iom_varid( numrir, 'sxap', ldstop = .FALSE. ) > 0 ) THEN 1020 CALL iom_get( numrir, jpdom_auto, 'sxap' , sxap , psgn = -1._wp , ldxios = lrxios)1021 CALL iom_get( numrir, jpdom_auto, 'syap' , syap , psgn = -1._wp , ldxios = lrxios)1022 CALL iom_get( numrir, jpdom_auto, 'sxxap', sxxap , ldxios = lrxios)1023 CALL iom_get( numrir, jpdom_auto, 'syyap', syyap , ldxios = lrxios)1024 CALL iom_get( numrir, jpdom_auto, 'sxyap', sxyap , ldxios = lrxios)1019 CALL iom_get( numrir, jpdom_auto, 'sxap' , sxap , psgn = -1._wp ) 1020 CALL iom_get( numrir, jpdom_auto, 'syap' , syap , psgn = -1._wp ) 1021 CALL iom_get( numrir, jpdom_auto, 'sxxap', sxxap ) 1022 CALL iom_get( numrir, jpdom_auto, 'syyap', syyap ) 1023 CALL iom_get( numrir, jpdom_auto, 'sxyap', sxyap ) 1025 1024 ! ! melt pond volume 1026 CALL iom_get( numrir, jpdom_auto, 'sxvp' , sxvp , psgn = -1._wp , ldxios = lrxios)1027 CALL iom_get( numrir, jpdom_auto, 'syvp' , syvp , psgn = -1._wp , ldxios = lrxios)1028 CALL iom_get( numrir, jpdom_auto, 'sxxvp', sxxvp , ldxios = lrxios)1029 CALL iom_get( numrir, jpdom_auto, 'syyvp', syyvp , ldxios = lrxios)1030 CALL iom_get( numrir, jpdom_auto, 'sxyvp', sxyvp , ldxios = lrxios)1025 CALL iom_get( numrir, jpdom_auto, 'sxvp' , sxvp , psgn = -1._wp ) 1026 CALL iom_get( numrir, jpdom_auto, 'syvp' , syvp , psgn = -1._wp ) 1027 CALL iom_get( numrir, jpdom_auto, 'sxxvp', sxxvp ) 1028 CALL iom_get( numrir, jpdom_auto, 'syyvp', syyvp ) 1029 CALL iom_get( numrir, jpdom_auto, 'sxyvp', sxyvp ) 1031 1030 ELSE 1032 1031 sxap = 0._wp ; syap = 0._wp ; sxxap = 0._wp ; syyap = 0._wp ; sxyap = 0._wp ! melt pond fraction … … 1036 1035 IF ( ln_pnd_lids ) THEN ! melt pond lid volume 1037 1036 IF( iom_varid( numrir, 'sxvl', ldstop = .FALSE. ) > 0 ) THEN 1038 CALL iom_get( numrir, jpdom_auto, 'sxvl' , sxvl , psgn = -1._wp , ldxios = lrxios)1039 CALL iom_get( numrir, jpdom_auto, 'syvl' , syvl , psgn = -1._wp , ldxios = lrxios)1040 CALL iom_get( numrir, jpdom_auto, 'sxxvl', sxxvl , ldxios = lrxios)1041 CALL iom_get( numrir, jpdom_auto, 'syyvl', syyvl , ldxios = lrxios)1042 CALL iom_get( numrir, jpdom_auto, 'sxyvl', sxyvl , ldxios = lrxios)1037 CALL iom_get( numrir, jpdom_auto, 'sxvl' , sxvl , psgn = -1._wp ) 1038 CALL iom_get( numrir, jpdom_auto, 'syvl' , syvl , psgn = -1._wp ) 1039 CALL iom_get( numrir, jpdom_auto, 'sxxvl', sxxvl ) 1040 CALL iom_get( numrir, jpdom_auto, 'syyvl', syyvl ) 1041 CALL iom_get( numrir, jpdom_auto, 'sxyvl', sxyvl ) 1043 1042 ELSE 1044 1043 sxvl = 0._wp; syvl = 0._wp ; sxxvl = 0._wp ; syyvl = 0._wp ; sxyvl = 0._wp ! melt pond lid volume … … 1046 1045 ENDIF 1047 1046 ENDIF 1048 IF(lrxios) CALL iom_swap(cxios_context)1049 1047 ! 1050 1048 ELSE !** start rheology from rest **! … … 1079 1077 ! 1080 1078 ! ! ice thickness 1081 IF( lwxios ) CALL iom_swap( cw_icerst_cxt ) 1082 CALL iom_rstput( iter, nitrst, numriw, 'sxice' , sxice, ldxios = lwxios) 1083 CALL iom_rstput( iter, nitrst, numriw, 'syice' , syice, ldxios = lwxios) 1084 CALL iom_rstput( iter, nitrst, numriw, 'sxxice', sxxice, ldxios = lwxios) 1085 CALL iom_rstput( iter, nitrst, numriw, 'syyice', syyice, ldxios = lwxios) 1086 CALL iom_rstput( iter, nitrst, numriw, 'sxyice', sxyice, ldxios = lwxios) 1079 CALL iom_rstput( iter, nitrst, numriw, 'sxice' , sxice) 1080 CALL iom_rstput( iter, nitrst, numriw, 'syice' , syice) 1081 CALL iom_rstput( iter, nitrst, numriw, 'sxxice', sxxice) 1082 CALL iom_rstput( iter, nitrst, numriw, 'syyice', syyice) 1083 CALL iom_rstput( iter, nitrst, numriw, 'sxyice', sxyice) 1087 1084 ! ! snow thickness 1088 CALL iom_rstput( iter, nitrst, numriw, 'sxsn' , sxsn , ldxios = lwxios)1089 CALL iom_rstput( iter, nitrst, numriw, 'sysn' , sysn , ldxios = lwxios)1090 CALL iom_rstput( iter, nitrst, numriw, 'sxxsn' , sxxsn , ldxios = lwxios)1091 CALL iom_rstput( iter, nitrst, numriw, 'syysn' , syysn , ldxios = lwxios)1092 CALL iom_rstput( iter, nitrst, numriw, 'sxysn' , sxysn , ldxios = lwxios)1085 CALL iom_rstput( iter, nitrst, numriw, 'sxsn' , sxsn ) 1086 CALL iom_rstput( iter, nitrst, numriw, 'sysn' , sysn ) 1087 CALL iom_rstput( iter, nitrst, numriw, 'sxxsn' , sxxsn ) 1088 CALL iom_rstput( iter, nitrst, numriw, 'syysn' , syysn ) 1089 CALL iom_rstput( iter, nitrst, numriw, 'sxysn' , sxysn ) 1093 1090 ! ! ice concentration 1094 CALL iom_rstput( iter, nitrst, numriw, 'sxa' , sxa , ldxios = lwxios)1095 CALL iom_rstput( iter, nitrst, numriw, 'sya' , sya , ldxios = lwxios)1096 CALL iom_rstput( iter, nitrst, numriw, 'sxxa' , sxxa , ldxios = lwxios)1097 CALL iom_rstput( iter, nitrst, numriw, 'syya' , syya , ldxios = lwxios)1098 CALL iom_rstput( iter, nitrst, numriw, 'sxya' , sxya , ldxios = lwxios)1091 CALL iom_rstput( iter, nitrst, numriw, 'sxa' , sxa ) 1092 CALL iom_rstput( iter, nitrst, numriw, 'sya' , sya ) 1093 CALL iom_rstput( iter, nitrst, numriw, 'sxxa' , sxxa ) 1094 CALL iom_rstput( iter, nitrst, numriw, 'syya' , syya ) 1095 CALL iom_rstput( iter, nitrst, numriw, 'sxya' , sxya ) 1099 1096 ! ! ice salinity 1100 CALL iom_rstput( iter, nitrst, numriw, 'sxsal' , sxsal , ldxios = lwxios)1101 CALL iom_rstput( iter, nitrst, numriw, 'sysal' , sysal , ldxios = lwxios)1102 CALL iom_rstput( iter, nitrst, numriw, 'sxxsal', sxxsal , ldxios = lwxios)1103 CALL iom_rstput( iter, nitrst, numriw, 'syysal', syysal , ldxios = lwxios)1104 CALL iom_rstput( iter, nitrst, numriw, 'sxysal', sxysal , ldxios = lwxios)1097 CALL iom_rstput( iter, nitrst, numriw, 'sxsal' , sxsal) 1098 CALL iom_rstput( iter, nitrst, numriw, 'sysal' , sysal) 1099 CALL iom_rstput( iter, nitrst, numriw, 'sxxsal', sxxsal) 1100 CALL iom_rstput( iter, nitrst, numriw, 'syysal', syysal) 1101 CALL iom_rstput( iter, nitrst, numriw, 'sxysal', sxysal) 1105 1102 ! ! ice age 1106 CALL iom_rstput( iter, nitrst, numriw, 'sxage' , sxage , ldxios = lwxios)1107 CALL iom_rstput( iter, nitrst, numriw, 'syage' , syage , ldxios = lwxios)1108 CALL iom_rstput( iter, nitrst, numriw, 'sxxage', sxxage , ldxios = lwxios)1109 CALL iom_rstput( iter, nitrst, numriw, 'syyage', syyage , ldxios = lwxios)1110 CALL iom_rstput( iter, nitrst, numriw, 'sxyage', sxyage , ldxios = lwxios)1103 CALL iom_rstput( iter, nitrst, numriw, 'sxage' , sxage) 1104 CALL iom_rstput( iter, nitrst, numriw, 'syage' , syage) 1105 CALL iom_rstput( iter, nitrst, numriw, 'sxxage', sxxage) 1106 CALL iom_rstput( iter, nitrst, numriw, 'syyage', syyage) 1107 CALL iom_rstput( iter, nitrst, numriw, 'sxyage', sxyage) 1111 1108 ! ! snow layers heat content 1112 1109 DO jk = 1, nlay_s 1113 1110 WRITE(zchar1,'(I2.2)') jk 1114 1111 znam = 'sxc0'//'_l'//zchar1 ; z3d(:,:,:) = sxc0 (:,:,jk,:) 1115 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)1112 CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 1116 1113 znam = 'syc0'//'_l'//zchar1 ; z3d(:,:,:) = syc0 (:,:,jk,:) 1117 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)1114 CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 1118 1115 znam = 'sxxc0'//'_l'//zchar1 ; z3d(:,:,:) = sxxc0(:,:,jk,:) 1119 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)1116 CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 1120 1117 znam = 'syyc0'//'_l'//zchar1 ; z3d(:,:,:) = syyc0(:,:,jk,:) 1121 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)1118 CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 1122 1119 znam = 'sxyc0'//'_l'//zchar1 ; z3d(:,:,:) = sxyc0(:,:,jk,:) 1123 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)1120 CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 1124 1121 END DO 1125 1122 ! ! ice layers heat content … … 1127 1124 WRITE(zchar1,'(I2.2)') jk 1128 1125 znam = 'sxe'//'_l'//zchar1 ; z3d(:,:,:) = sxe (:,:,jk,:) 1129 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)1126 CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 1130 1127 znam = 'sye'//'_l'//zchar1 ; z3d(:,:,:) = sye (:,:,jk,:) 1131 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)1128 CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 1132 1129 znam = 'sxxe'//'_l'//zchar1 ; z3d(:,:,:) = sxxe(:,:,jk,:) 1133 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)1130 CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 1134 1131 znam = 'syye'//'_l'//zchar1 ; z3d(:,:,:) = syye(:,:,jk,:) 1135 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)1132 CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 1136 1133 znam = 'sxye'//'_l'//zchar1 ; z3d(:,:,:) = sxye(:,:,jk,:) 1137 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)1134 CALL iom_rstput( iter, nitrst, numriw, znam , z3d) 1138 1135 END DO 1139 1136 ! 1140 1137 IF( ln_pnd_LEV ) THEN ! melt pond fraction 1141 CALL iom_rstput( iter, nitrst, numriw, 'sxap' , sxap , ldxios = lwxios)1142 CALL iom_rstput( iter, nitrst, numriw, 'syap' , syap , ldxios = lwxios)1143 CALL iom_rstput( iter, nitrst, numriw, 'sxxap', sxxap , ldxios = lwxios)1144 CALL iom_rstput( iter, nitrst, numriw, 'syyap', syyap , ldxios = lwxios)1145 CALL iom_rstput( iter, nitrst, numriw, 'sxyap', sxyap , ldxios = lwxios)1138 CALL iom_rstput( iter, nitrst, numriw, 'sxap' , sxap ) 1139 CALL iom_rstput( iter, nitrst, numriw, 'syap' , syap ) 1140 CALL iom_rstput( iter, nitrst, numriw, 'sxxap', sxxap ) 1141 CALL iom_rstput( iter, nitrst, numriw, 'syyap', syyap ) 1142 CALL iom_rstput( iter, nitrst, numriw, 'sxyap', sxyap ) 1146 1143 ! ! melt pond volume 1147 CALL iom_rstput( iter, nitrst, numriw, 'sxvp' , sxvp , ldxios = lwxios)1148 CALL iom_rstput( iter, nitrst, numriw, 'syvp' , syvp , ldxios = lwxios)1149 CALL iom_rstput( iter, nitrst, numriw, 'sxxvp', sxxvp , ldxios = lwxios)1150 CALL iom_rstput( iter, nitrst, numriw, 'syyvp', syyvp , ldxios = lwxios)1151 CALL iom_rstput( iter, nitrst, numriw, 'sxyvp', sxyvp , ldxios = lwxios)1144 CALL iom_rstput( iter, nitrst, numriw, 'sxvp' , sxvp ) 1145 CALL iom_rstput( iter, nitrst, numriw, 'syvp' , syvp ) 1146 CALL iom_rstput( iter, nitrst, numriw, 'sxxvp', sxxvp ) 1147 CALL iom_rstput( iter, nitrst, numriw, 'syyvp', syyvp ) 1148 CALL iom_rstput( iter, nitrst, numriw, 'sxyvp', sxyvp ) 1152 1149 ! 1153 1150 IF ( ln_pnd_lids ) THEN ! melt pond lid volume 1154 CALL iom_rstput( iter, nitrst, numriw, 'sxvl' , sxvl , ldxios = lwxios)1155 CALL iom_rstput( iter, nitrst, numriw, 'syvl' , syvl , ldxios = lwxios)1156 CALL iom_rstput( iter, nitrst, numriw, 'sxxvl', sxxvl , ldxios = lwxios)1157 CALL iom_rstput( iter, nitrst, numriw, 'syyvl', syyvl , ldxios = lwxios)1158 CALL iom_rstput( iter, nitrst, numriw, 'sxyvl', sxyvl , ldxios = lwxios)1151 CALL iom_rstput( iter, nitrst, numriw, 'sxvl' , sxvl ) 1152 CALL iom_rstput( iter, nitrst, numriw, 'syvl' , syvl ) 1153 CALL iom_rstput( iter, nitrst, numriw, 'sxxvl', sxxvl ) 1154 CALL iom_rstput( iter, nitrst, numriw, 'syyvl', syyvl ) 1155 CALL iom_rstput( iter, nitrst, numriw, 'sxyvl', sxyvl ) 1159 1156 ENDIF 1160 1157 ENDIF 1161 IF( lwxios ) CALL iom_swap( cxios_context )1162 1158 ! 1163 1159 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icedyn_rhg_evp.F90
r13871 r13932 1005 1005 IF( ln_rstart ) THEN !* Read the restart file 1006 1006 ! 1007 IF(lrxios) CALL iom_swap(cr_icerst_cxt)1008 1007 id1 = iom_varid( numrir, 'stress1_i' , ldstop = .FALSE. ) 1009 1008 id2 = iom_varid( numrir, 'stress2_i' , ldstop = .FALSE. ) … … 1011 1010 ! 1012 1011 IF( MIN( id1, id2, id3 ) > 0 ) THEN ! fields exist 1013 CALL iom_get( numrir, jpdom_auto, 'stress1_i' , stress1_i , cd_type = 'T' , ldxios = lrxios)1014 CALL iom_get( numrir, jpdom_auto, 'stress2_i' , stress2_i , cd_type = 'T' , ldxios = lrxios)1015 CALL iom_get( numrir, jpdom_auto, 'stress12_i', stress12_i, cd_type = 'F' , ldxios = lrxios)1012 CALL iom_get( numrir, jpdom_auto, 'stress1_i' , stress1_i , cd_type = 'T' ) 1013 CALL iom_get( numrir, jpdom_auto, 'stress2_i' , stress2_i , cd_type = 'T' ) 1014 CALL iom_get( numrir, jpdom_auto, 'stress12_i', stress12_i, cd_type = 'F' ) 1016 1015 ELSE ! start rheology from rest 1017 1016 IF(lwp) WRITE(numout,*) … … 1021 1020 stress12_i(:,:) = 0._wp 1022 1021 ENDIF 1023 IF(lrxios) CALL iom_swap(cxios_context)1024 1022 ELSE !* Start from rest 1025 1023 IF(lwp) WRITE(numout,*) … … 1035 1033 iter = kt + nn_fsbc - 1 ! ice restarts are written at kt == nitrst - nn_fsbc + 1 1036 1034 ! 1037 IF( lwxios ) CALL iom_swap( cw_icerst_cxt ) 1038 CALL iom_rstput( iter, nitrst, numriw, 'stress1_i' , stress1_i, ldxios = lwxios ) 1039 CALL iom_rstput( iter, nitrst, numriw, 'stress2_i' , stress2_i, ldxios = lwxios ) 1040 CALL iom_rstput( iter, nitrst, numriw, 'stress12_i', stress12_i, ldxios = lwxios ) 1041 IF( lwxios ) CALL iom_swap( cxios_context ) 1035 CALL iom_rstput( iter, nitrst, numriw, 'stress1_i' , stress1_i ) 1036 CALL iom_rstput( iter, nitrst, numriw, 'stress2_i' , stress2_i ) 1037 CALL iom_rstput( iter, nitrst, numriw, 'stress12_i', stress12_i ) 1042 1038 ! 1043 1039 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icerst.F90
r13871 r13932 95 95 clpname = TRIM(Agrif_CFixed())//"_"//clname 96 96 ENDIF 97 CALL iom_init( cw_icerst_cxt, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE. ) 98 CALL iom_swap( cxios_context ) 97 numriw = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 98 CALL iom_init( cw_icerst_cxt, kdid = numriw, ld_closedef = .FALSE. ) 99 CALL iom_swap( cxios_context ) 99 100 #else 100 101 clinfo = 'Can not use XIOS in rst_opn' … … 134 135 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~' 135 136 ENDIF 136 137 137 138 ! Write in numriw (if iter == nitrst) 138 139 ! ------------------ 139 140 ! ! calendar control 140 IF( lwxios ) CALL iom_swap( cw_icerst_cxt )141 CALL iom_rstput( iter, nitrst, numriw, ' nn_fsbc', REAL( nn_fsbc, wp ), ldxios = lwxios ) ! time-step142 CALL iom_rstput( iter, nitrst, numriw, 'kt_ice' , REAL( iter , wp ), ldxios = lwxios ) ! date143 CALL iom_delay_rst( 'WRITE', 'ICE', numriw ) ! save only ice delayed global communication variables141 CALL iom_rstput( iter, nitrst, numriw, 'nn_fsbc', REAL( nn_fsbc, wp ) ) ! time-step 142 CALL iom_rstput( iter, nitrst, numriw, 'kt_ice' , REAL( iter , wp ) ) ! date 143 144 IF(.NOT.lwxios) CALL iom_delay_rst( 'WRITE', 'ICE', numriw ) ! save only ice delayed global communication variables 144 145 145 146 ! Prognostic variables 146 CALL iom_rstput( iter, nitrst, numriw, 'v_i' , v_i , ldxios = lwxios)147 CALL iom_rstput( iter, nitrst, numriw, 'v_s' , v_s , ldxios = lwxios)148 CALL iom_rstput( iter, nitrst, numriw, 'sv_i' , sv_i , ldxios = lwxios)149 CALL iom_rstput( iter, nitrst, numriw, 'a_i' , a_i , ldxios = lwxios)150 CALL iom_rstput( iter, nitrst, numriw, 't_su' , t_su , ldxios = lwxios)151 CALL iom_rstput( iter, nitrst, numriw, 'u_ice', u_ice , ldxios = lwxios)152 CALL iom_rstput( iter, nitrst, numriw, 'v_ice', v_ice , ldxios = lwxios)153 CALL iom_rstput( iter, nitrst, numriw, 'oa_i' , oa_i , ldxios = lwxios)154 CALL iom_rstput( iter, nitrst, numriw, 'a_ip' , a_ip , ldxios = lwxios)155 CALL iom_rstput( iter, nitrst, numriw, 'v_ip' , v_ip , ldxios = lwxios)156 CALL iom_rstput( iter, nitrst, numriw, 'v_il' , v_il , ldxios = lwxios)147 CALL iom_rstput( iter, nitrst, numriw, 'v_i' , v_i ) 148 CALL iom_rstput( iter, nitrst, numriw, 'v_s' , v_s ) 149 CALL iom_rstput( iter, nitrst, numriw, 'sv_i' , sv_i ) 150 CALL iom_rstput( iter, nitrst, numriw, 'a_i' , a_i ) 151 CALL iom_rstput( iter, nitrst, numriw, 't_su' , t_su ) 152 CALL iom_rstput( iter, nitrst, numriw, 'u_ice', u_ice ) 153 CALL iom_rstput( iter, nitrst, numriw, 'v_ice', v_ice ) 154 CALL iom_rstput( iter, nitrst, numriw, 'oa_i' , oa_i ) 155 CALL iom_rstput( iter, nitrst, numriw, 'a_ip' , a_ip ) 156 CALL iom_rstput( iter, nitrst, numriw, 'v_ip' , v_ip ) 157 CALL iom_rstput( iter, nitrst, numriw, 'v_il' , v_il ) 157 158 ! Snow enthalpy 158 159 DO jk = 1, nlay_s … … 160 161 znam = 'e_s'//'_l'//zchar1 161 162 z3d(:,:,:) = e_s(:,:,jk,:) 162 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)163 CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 163 164 END DO 164 165 ! Ice enthalpy … … 167 168 znam = 'e_i'//'_l'//zchar1 168 169 z3d(:,:,:) = e_i(:,:,jk,:) 169 CALL iom_rstput( iter, nitrst, numriw, znam , z3d , ldxios = lwxios)170 CALL iom_rstput( iter, nitrst, numriw, znam , z3d ) 170 171 END DO 171 172 ! fields needed for Met Office (Jules) coupling 172 173 IF( ln_cpl ) THEN 173 CALL iom_rstput( iter, nitrst, numriw, 'cnd_ice', cnd_ice, ldxios = lwxios ) 174 CALL iom_rstput( iter, nitrst, numriw, 't1_ice' , t1_ice, ldxios = lwxios ) 175 ENDIF 176 IF( lwxios ) CALL iom_swap( cxios_context ) 174 CALL iom_rstput( iter, nitrst, numriw, 'cnd_ice', cnd_ice ) 175 CALL iom_rstput( iter, nitrst, numriw, 't1_ice' , t1_ice ) 176 ENDIF 177 177 ! 178 178 … … 184 184 ELSE 185 185 CALL iom_context_finalize( cw_icerst_cxt ) 186 iom_file(numriw)%nfid = 0 187 numriw = 0 186 188 ENDIF 187 189 lrst_ice = .FALSE. … … 220 222 cr_icerst_cxt = 'si3_rst' 221 223 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SI3' 222 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 223 clpname = cn_icerst_in 224 ELSE 225 clpname = TRIM(Agrif_CFixed())//"_"//cn_icerst_in 226 ENDIF 227 CALL iom_init( cr_icerst_cxt, fname = TRIM(cn_icerst_indir)//'/'//TRIM(clpname), & 228 idfp = iom_file(numrir)%nfid, ld_closedef = .TRUE. ) 224 ! IF( TRIM(Agrif_CFixed()) == '0' ) THEN 225 ! clpname = cn_icerst_in 226 ! ELSE 227 ! clpname = TRIM(Agrif_CFixed())//"_"//cn_icerst_in 228 ! ENDIF 229 CALL iom_init( cr_icerst_cxt, kdid = numrir, ld_closedef = .TRUE. ) 229 230 ENDIF 230 231 … … 235 236 IF( id0 > 0 ) THEN ! == case of a normal restart == ! 236 237 ! ! ------------------------------ ! 237 IF(lrxios) CALL iom_swap(cr_icerst_cxt)238 238 ! Time info 239 CALL iom_get( numrir, 'nn_fsbc', zfice , ldxios = lrxios)240 CALL iom_get( numrir, 'kt_ice' , ziter , ldxios = lrxios)239 CALL iom_get( numrir, 'nn_fsbc', zfice ) 240 CALL iom_get( numrir, 'kt_ice' , ziter ) 241 241 IF(lwp) WRITE(numout,*) ' read ice restart file at time step : ', ziter 242 242 IF(lwp) WRITE(numout,*) ' in any case we force it to nit000 - 1 : ', nit000 - 1 … … 253 253 254 254 ! --- mandatory fields --- ! 255 CALL iom_get( numrir, jpdom_auto, 'v_i' , v_i , ldxios = lrxios)256 CALL iom_get( numrir, jpdom_auto, 'v_s' , v_s , ldxios = lrxios)257 CALL iom_get( numrir, jpdom_auto, 'sv_i' , sv_i , ldxios = lrxios)258 CALL iom_get( numrir, jpdom_auto, 'a_i' , a_i , ldxios = lrxios)259 CALL iom_get( numrir, jpdom_auto, 't_su' , t_su , ldxios = lrxios)260 CALL iom_get( numrir, jpdom_auto, 'u_ice', u_ice, cd_type = 'U', psgn = -1._wp , ldxios = lrxios)261 CALL iom_get( numrir, jpdom_auto, 'v_ice', v_ice, cd_type = 'V', psgn = -1._wp , ldxios = lrxios)255 CALL iom_get( numrir, jpdom_auto, 'v_i' , v_i ) 256 CALL iom_get( numrir, jpdom_auto, 'v_s' , v_s ) 257 CALL iom_get( numrir, jpdom_auto, 'sv_i' , sv_i ) 258 CALL iom_get( numrir, jpdom_auto, 'a_i' , a_i ) 259 CALL iom_get( numrir, jpdom_auto, 't_su' , t_su ) 260 CALL iom_get( numrir, jpdom_auto, 'u_ice', u_ice, cd_type = 'U', psgn = -1._wp ) 261 CALL iom_get( numrir, jpdom_auto, 'v_ice', v_ice, cd_type = 'V', psgn = -1._wp ) 262 262 ! Snow enthalpy 263 263 DO jk = 1, nlay_s 264 264 WRITE(zchar1,'(I2.2)') jk 265 265 znam = 'e_s'//'_l'//zchar1 266 CALL iom_get( numrir, jpdom_auto, znam , z3d , ldxios = lrxios)266 CALL iom_get( numrir, jpdom_auto, znam , z3d ) 267 267 e_s(:,:,jk,:) = z3d(:,:,:) 268 268 END DO … … 271 271 WRITE(zchar1,'(I2.2)') jk 272 272 znam = 'e_i'//'_l'//zchar1 273 CALL iom_get( numrir, jpdom_auto, znam , z3d , ldxios = lrxios)273 CALL iom_get( numrir, jpdom_auto, znam , z3d ) 274 274 e_i(:,:,jk,:) = z3d(:,:,:) 275 275 END DO … … 278 278 id1 = iom_varid( numrir, 'oa_i' , ldstop = .FALSE. ) 279 279 IF( id1 > 0 ) THEN ! fields exist 280 CALL iom_get( numrir, jpdom_auto, 'oa_i', oa_i , ldxios = lrxios)280 CALL iom_get( numrir, jpdom_auto, 'oa_i', oa_i ) 281 281 ELSE ! start from rest 282 282 IF(lwp) WRITE(numout,*) ' ==>> previous run without ice age output then set it to zero' … … 286 286 id2 = iom_varid( numrir, 'a_ip' , ldstop = .FALSE. ) 287 287 IF( id2 > 0 ) THEN ! fields exist 288 CALL iom_get( numrir, jpdom_auto, 'a_ip' , a_ip , ldxios = lrxios)289 CALL iom_get( numrir, jpdom_auto, 'v_ip' , v_ip , ldxios = lrxios)288 CALL iom_get( numrir, jpdom_auto, 'a_ip' , a_ip ) 289 CALL iom_get( numrir, jpdom_auto, 'v_ip' , v_ip ) 290 290 ELSE ! start from rest 291 291 IF(lwp) WRITE(numout,*) ' ==>> previous run without melt ponds output then set it to zero' … … 296 296 id3 = iom_varid( numrir, 'v_il' , ldstop = .FALSE. ) 297 297 IF( id3 > 0 ) THEN 298 CALL iom_get( numrir, jpdom_auto, 'v_il', v_il , ldxios = lrxios)298 CALL iom_get( numrir, jpdom_auto, 'v_il', v_il) 299 299 ELSE 300 300 IF(lwp) WRITE(numout,*) ' ==>> previous run without melt ponds lids output then set it to zero' … … 306 306 id5 = iom_varid( numrir, 't1_ice' , ldstop = .FALSE. ) 307 307 IF( id4 > 0 .AND. id5 > 0 ) THEN ! fields exist 308 CALL iom_get( numrir, jpdom_auto, 'cnd_ice', cnd_ice , ldxios = lrxios)309 CALL iom_get( numrir, jpdom_auto, 't1_ice' , t1_ice , ldxios = lrxios)308 CALL iom_get( numrir, jpdom_auto, 'cnd_ice', cnd_ice ) 309 CALL iom_get( numrir, jpdom_auto, 't1_ice' , t1_ice ) 310 310 ELSE ! start from rest 311 311 IF(lwp) WRITE(numout,*) ' ==>> previous run without conductivity output then set it to zero' … … 315 315 ENDIF 316 316 317 CALL iom_delay_rst( 'READ', 'ICE', numrir ) ! read only ice delayed global communication variables 318 IF(lrxios) CALL iom_swap(cxios_context) 317 IF(.NOT.lrxios) CALL iom_delay_rst( 'READ', 'ICE', numrir ) ! read only ice delayed global communication variables 319 318 ! ! ---------------------------------- ! 320 319 ELSE ! == case of a simplified restart == ! -
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icestp.F90
r13871 r13932 292 292 ! 293 293 IF( ln_rstart ) THEN 294 295 294 CALL iom_close( numrir ) ! close input ice restart file 295 IF(lrxios) CALL iom_context_finalize( cr_icerst_cxt ) 296 296 ENDIF 297 297 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/iceupdate.F90
r13871 r13932 427 427 ! 428 428 IF( id1 > 0 ) THEN ! fields exist 429 IF(lrxios) CALL iom_swap(cr_icerst_cxt) 430 CALL iom_get( numrir, jpdom_auto, 'snwice_mass' , snwice_mass , ldxios = lrxios ) 431 CALL iom_get( numrir, jpdom_auto, 'snwice_mass_b', snwice_mass_b, ldxios = lrxios ) 432 IF(lrxios) CALL iom_swap(cxios_context) 429 CALL iom_get( numrir, jpdom_auto, 'snwice_mass' , snwice_mass ) 430 CALL iom_get( numrir, jpdom_auto, 'snwice_mass_b', snwice_mass_b ) 433 431 ELSE ! start from rest 434 432 IF(lwp) WRITE(numout,*) ' ==>> previous run without snow-ice mass output then set it' … … 447 445 iter = kt + nn_fsbc - 1 ! ice restarts are written at kt == nitrst - nn_fsbc + 1 448 446 ! 449 IF( lwxios ) CALL iom_swap( cw_icerst_cxt ) 450 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass' , snwice_mass, ldxios = lwxios ) 451 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass_b', snwice_mass_b, ldxios = lwxios ) 452 IF( lwxios ) CALL iom_swap( cxios_context ) 447 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass' , snwice_mass ) 448 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass_b', snwice_mass_b ) 453 449 ! 454 450 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/DIA/diahsb.F90
r13871 r13932 267 267 IF(lwp) WRITE(numout,*) ' dia_hsb_rst : read hsb restart at it= ', kt,' date= ', ndastp 268 268 IF(lwp) WRITE(numout,*) 269 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 270 CALL iom_get( numror, 'frc_v', frc_v, ldxios = lrxios ) 271 CALL iom_get( numror, 'frc_t', frc_t, ldxios = lrxios ) 272 CALL iom_get( numror, 'frc_s', frc_s, ldxios = lrxios ) 269 CALL iom_get( numror, 'frc_v', frc_v ) 270 CALL iom_get( numror, 'frc_t', frc_t ) 271 CALL iom_get( numror, 'frc_s', frc_s ) 273 272 IF( ln_linssh ) THEN 274 CALL iom_get( numror, 'frc_wn_t', frc_wn_t , ldxios = lrxios)275 CALL iom_get( numror, 'frc_wn_s', frc_wn_s , ldxios = lrxios)273 CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 274 CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 276 275 ENDIF 277 CALL iom_get( numror, jpdom_auto, 'surf_ini' , surf_ini , ldxios = lrxios) ! ice sheet coupling278 CALL iom_get( numror, jpdom_auto, 'ssh_ini' , ssh_ini , ldxios = lrxios)279 CALL iom_get( numror, jpdom_auto, 'e3t_ini' , e3t_ini , ldxios = lrxios)280 CALL iom_get( numror, jpdom_auto, 'tmask_ini' , tmask_ini , ldxios = lrxios)281 CALL iom_get( numror, jpdom_auto, 'hc_loc_ini', hc_loc_ini , ldxios = lrxios)282 CALL iom_get( numror, jpdom_auto, 'sc_loc_ini', sc_loc_ini , ldxios = lrxios)276 CALL iom_get( numror, jpdom_auto, 'surf_ini' , surf_ini ) ! ice sheet coupling 277 CALL iom_get( numror, jpdom_auto, 'ssh_ini' , ssh_ini ) 278 CALL iom_get( numror, jpdom_auto, 'e3t_ini' , e3t_ini ) 279 CALL iom_get( numror, jpdom_auto, 'tmask_ini' , tmask_ini ) 280 CALL iom_get( numror, jpdom_auto, 'hc_loc_ini', hc_loc_ini ) 281 CALL iom_get( numror, jpdom_auto, 'sc_loc_ini', sc_loc_ini ) 283 282 IF( ln_linssh ) THEN 284 CALL iom_get( numror, jpdom_auto, 'ssh_hc_loc_ini', ssh_hc_loc_ini , ldxios = lrxios)285 CALL iom_get( numror, jpdom_auto, 'ssh_sc_loc_ini', ssh_sc_loc_ini , ldxios = lrxios)283 CALL iom_get( numror, jpdom_auto, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 284 CALL iom_get( numror, jpdom_auto, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 286 285 ENDIF 287 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )288 286 ELSE 289 287 IF(lwp) WRITE(numout,*) … … 325 323 IF(lwp) WRITE(numout,*) 326 324 ! 327 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 328 CALL iom_rstput( kt, nitrst, numrow, 'frc_v', frc_v, ldxios = lwxios ) 329 CALL iom_rstput( kt, nitrst, numrow, 'frc_t', frc_t, ldxios = lwxios ) 330 CALL iom_rstput( kt, nitrst, numrow, 'frc_s', frc_s, ldxios = lwxios ) 325 CALL iom_rstput( kt, nitrst, numrow, 'frc_v', frc_v ) 326 CALL iom_rstput( kt, nitrst, numrow, 'frc_t', frc_t ) 327 CALL iom_rstput( kt, nitrst, numrow, 'frc_s', frc_s ) 331 328 IF( ln_linssh ) THEN 332 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t , ldxios = lwxios)333 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s , ldxios = lwxios)329 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 330 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 334 331 ENDIF 335 CALL iom_rstput( kt, nitrst, numrow, 'surf_ini' , surf_ini , ldxios = lwxios) ! ice sheet coupling336 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini' , ssh_ini , ldxios = lwxios)337 CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini' , e3t_ini , ldxios = lwxios)338 CALL iom_rstput( kt, nitrst, numrow, 'tmask_ini' , tmask_ini , ldxios = lwxios)339 CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini , ldxios = lwxios)340 CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini , ldxios = lwxios)332 CALL iom_rstput( kt, nitrst, numrow, 'surf_ini' , surf_ini ) ! ice sheet coupling 333 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini' , ssh_ini ) 334 CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini' , e3t_ini ) 335 CALL iom_rstput( kt, nitrst, numrow, 'tmask_ini' , tmask_ini ) 336 CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini ) 337 CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini ) 341 338 IF( ln_linssh ) THEN 342 CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini , ldxios = lwxios)343 CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini , ldxios = lwxios)339 CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 340 CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 344 341 ENDIF 345 IF( lwxios ) CALL iom_swap( cxios_context )346 342 ! 347 343 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/DOM/daymod.F90
r13871 r13932 316 316 317 317 IF( TRIM(cdrw) == 'READ' ) THEN 318 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )319 318 IF( iom_varid( numror, 'kt', ldstop = .FALSE. ) > 0 ) THEN 320 319 ! Get Calendar informations 321 CALL iom_get( numror, 'kt', zkt , ldxios = lrxios) ! last time-step of previous run320 CALL iom_get( numror, 'kt', zkt ) ! last time-step of previous run 322 321 IF(lwp) THEN 323 322 WRITE(numout,*) ' *** Info read in restart : ' … … 338 337 IF ( nrstdt == 2 ) THEN 339 338 ! read the parameters corresponding to nit000 - 1 (last time step of previous run) 340 CALL iom_get( numror, 'ndastp', zndastp , ldxios = lrxios)339 CALL iom_get( numror, 'ndastp', zndastp ) 341 340 ndastp = NINT( zndastp ) 342 CALL iom_get( numror, 'adatrj', adatrj , ldxios = lrxios)343 CALL iom_get( numror, 'ntime' , ktime , ldxios = lrxios)341 CALL iom_get( numror, 'adatrj', adatrj ) 342 CALL iom_get( numror, 'ntime' , ktime ) 344 343 nn_time0 = NINT(ktime) 345 344 ! calculate start time in hours and minutes … … 384 383 adatrj = ( REAL( nit000-1, wp ) * rn_Dt ) / rday 385 384 ENDIF 386 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )387 385 IF( ABS(adatrj - REAL(NINT(adatrj),wp)) < 0.1 / rday ) adatrj = REAL(NINT(adatrj),wp) ! avoid truncation error 388 386 ! … … 403 401 ENDIF 404 402 ! calendar control 405 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 406 CALL iom_rstput( kt, nitrst, numrow, 'kt' , REAL( kt , wp) , ldxios = lwxios ) ! time-step 407 CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp) , ldxios = lwxios ) ! date 408 CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj , ldxios = lwxios ) ! number of elapsed days since 403 CALL iom_rstput( kt, nitrst, numrow, 'kt' , REAL( kt , wp) ) ! time-step 404 CALL iom_rstput( kt, nitrst, numrow, 'ndastp' , REAL( ndastp, wp) ) ! date 405 CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj ) ! number of elapsed days since 409 406 ! ! the begining of the run [s] 410 CALL iom_rstput( kt, nitrst, numrow, 'ntime' , REAL( nn_time0, wp), ldxios = lwxios ) ! time 411 IF( lwxios ) CALL iom_swap( cxios_context ) 407 CALL iom_rstput( kt, nitrst, numrow, 'ntime' , REAL( nn_time0, wp) ) ! time 412 408 ENDIF 413 409 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/DOM/domqco.F90
r13750 r13932 212 212 ! 213 213 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 214 CALL iom_get( numror, jpdom_auto, 'sshb' , ssh(:,:,Kbb) , ldxios = lrxios)215 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) , ldxios = lrxios)214 CALL iom_get( numror, jpdom_auto, 'sshb' , ssh(:,:,Kbb) ) 215 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) ) 216 216 ! needed to restart if land processor not computed 217 217 IF(lwp) write(numout,*) 'qe_rst_read : ssh(:,:,Kbb) and ssh(:,:,Kmm) found in restart files' … … 227 227 IF(lwp) write(numout,*) 'sshn set equal to sshb.' 228 228 IF(lwp) write(numout,*) 'neuler is forced to 0' 229 CALL iom_get( numror, jpdom_auto, 'sshb', ssh(:,:,Kbb) , ldxios = lrxios)229 CALL iom_get( numror, jpdom_auto, 'sshb', ssh(:,:,Kbb) ) 230 230 ssh(:,:,Kmm) = ssh(:,:,Kbb) 231 231 l_1st_euler = .TRUE. … … 234 234 IF(lwp) write(numout,*) 'sshb set equal to sshn.' 235 235 IF(lwp) write(numout,*) 'neuler is forced to 0' 236 CALL iom_get( numror, jpdom_auto, 'sshn', ssh(:,:,Kmm) , ldxios = lrxios)236 CALL iom_get( numror, jpdom_auto, 'sshn', ssh(:,:,Kmm) ) 237 237 ssh(:,:,Kbb) = ssh(:,:,Kmm) 238 238 l_1st_euler = .TRUE. -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/DOM/domvvl.F90
r13871 r13932 785 785 IF( ln_rstart ) THEN !* Read the restart file 786 786 CALL rst_read_open ! open the restart file if necessary 787 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 788 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm), ldxios = lrxios ) 787 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) ) 789 788 ! 790 789 id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) … … 799 798 ! 800 799 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 801 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)802 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)800 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 801 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 803 802 ! needed to restart if land processor not computed 804 803 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' … … 814 813 IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 815 814 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 816 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)815 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 817 816 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 818 817 l_1st_euler = .true. … … 821 820 IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 822 821 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 823 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)822 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 824 823 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 825 824 l_1st_euler = .true. … … 846 845 ! ! ----------------------- ! 847 846 IF( MIN( id3, id4 ) > 0 ) THEN ! all required arrays exist 848 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lrxios)849 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lrxios)847 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 848 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 850 849 ELSE ! one at least array is missing 851 850 tilde_e3t_b(:,:,:) = 0.0_wp … … 856 855 ! ! ------------ ! 857 856 IF( id5 > 0 ) THEN ! required array exists 858 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lrxios)857 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) ) 859 858 ELSE ! array is missing 860 859 hdiv_lf(:,:,:) = 0.0_wp … … 862 861 ENDIF 863 862 ENDIF 864 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )865 863 ! 866 864 ELSE !* Initialize at "rest" … … 930 928 ! ! =================== 931 929 IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 932 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt )933 930 ! ! --------- ! 934 931 ! ! all cases ! 935 932 ! ! --------- ! 936 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lwxios)937 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lwxios)933 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) ) 934 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) ) 938 935 ! ! ----------------------- ! 939 936 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases ! 940 937 ! ! ----------------------- ! 941 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lwxios)942 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lwxios)938 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:)) 939 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:)) 943 940 END IF 944 941 ! ! -------------! 945 942 IF( ln_vvl_ztilde ) THEN ! z_tilde case ! 946 943 ! ! ------------ ! 947 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lwxios)944 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:)) 948 945 ENDIF 949 946 ! 950 IF( lwxios ) CALL iom_swap( cxios_context )951 947 ENDIF 952 948 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/DYN/dynspg_ts.F90
r13871 r13932 899 899 IF( TRIM(cdrw) == 'READ' ) THEN ! Read/initialise 900 900 ! ! --------------- 901 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )902 901 IF( ln_rstart .AND. ln_bt_fw .AND. (.NOT.l_1st_euler) ) THEN !* Read the restart file 903 CALL iom_get( numror, jpdom_auto, 'ub2_b' , ub2_b (:,:), cd_type = 'U', psgn = -1._wp , ldxios = lrxios)904 CALL iom_get( numror, jpdom_auto, 'vb2_b' , vb2_b (:,:), cd_type = 'V', psgn = -1._wp , ldxios = lrxios)905 CALL iom_get( numror, jpdom_auto, 'un_bf' , un_bf (:,:), cd_type = 'U', psgn = -1._wp , ldxios = lrxios)906 CALL iom_get( numror, jpdom_auto, 'vn_bf' , vn_bf (:,:), cd_type = 'V', psgn = -1._wp , ldxios = lrxios)902 CALL iom_get( numror, jpdom_auto, 'ub2_b' , ub2_b (:,:), cd_type = 'U', psgn = -1._wp ) 903 CALL iom_get( numror, jpdom_auto, 'vb2_b' , vb2_b (:,:), cd_type = 'V', psgn = -1._wp ) 904 CALL iom_get( numror, jpdom_auto, 'un_bf' , un_bf (:,:), cd_type = 'U', psgn = -1._wp ) 905 CALL iom_get( numror, jpdom_auto, 'vn_bf' , vn_bf (:,:), cd_type = 'V', psgn = -1._wp ) 907 906 IF( .NOT.ln_bt_av ) THEN 908 CALL iom_get( numror, jpdom_auto, 'sshbb_e' , sshbb_e(:,:), cd_type = 'T', psgn = 1._wp , ldxios = lrxios)909 CALL iom_get( numror, jpdom_auto, 'ubb_e' , ubb_e(:,:), cd_type = 'U', psgn = -1._wp , ldxios = lrxios)910 CALL iom_get( numror, jpdom_auto, 'vbb_e' , vbb_e(:,:), cd_type = 'V', psgn = -1._wp , ldxios = lrxios)911 CALL iom_get( numror, jpdom_auto, 'sshb_e' , sshb_e(:,:), cd_type = 'T', psgn = 1._wp , ldxios = lrxios)912 CALL iom_get( numror, jpdom_auto, 'ub_e' , ub_e(:,:), cd_type = 'U', psgn = -1._wp , ldxios = lrxios)913 CALL iom_get( numror, jpdom_auto, 'vb_e' , vb_e(:,:), cd_type = 'V', psgn = -1._wp , ldxios = lrxios)907 CALL iom_get( numror, jpdom_auto, 'sshbb_e' , sshbb_e(:,:), cd_type = 'T', psgn = 1._wp ) 908 CALL iom_get( numror, jpdom_auto, 'ubb_e' , ubb_e(:,:), cd_type = 'U', psgn = -1._wp ) 909 CALL iom_get( numror, jpdom_auto, 'vbb_e' , vbb_e(:,:), cd_type = 'V', psgn = -1._wp ) 910 CALL iom_get( numror, jpdom_auto, 'sshb_e' , sshb_e(:,:), cd_type = 'T', psgn = 1._wp ) 911 CALL iom_get( numror, jpdom_auto, 'ub_e' , ub_e(:,:), cd_type = 'U', psgn = -1._wp ) 912 CALL iom_get( numror, jpdom_auto, 'vb_e' , vb_e(:,:), cd_type = 'V', psgn = -1._wp ) 914 913 ENDIF 915 914 #if defined key_agrif 916 915 ! Read time integrated fluxes 917 916 IF ( .NOT.Agrif_Root() ) THEN 918 CALL iom_get( numror, jpdom_auto, 'ub2_i_b' , ub2_i_b(:,:), cd_type = 'U', psgn = -1._wp , ldxios = lrxios)919 CALL iom_get( numror, jpdom_auto, 'vb2_i_b' , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp , ldxios = lrxios)917 CALL iom_get( numror, jpdom_auto, 'ub2_i_b' , ub2_i_b(:,:), cd_type = 'U', psgn = -1._wp ) 918 CALL iom_get( numror, jpdom_auto, 'vb2_i_b' , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp ) 920 919 ELSE 921 920 ub2_i_b(:,:) = 0._wp ; vb2_i_b(:,:) = 0._wp ! used in the 1st update of agrif … … 932 931 #endif 933 932 ENDIF 934 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )935 933 ! 936 934 ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN ! Create restart file 937 935 ! ! ------------------- 938 936 IF(lwp) WRITE(numout,*) '---- ts_rst ----' 939 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 940 CALL iom_rstput( kt, nitrst, numrow, 'ub2_b' , ub2_b (:,:), ldxios = lwxios ) 941 CALL iom_rstput( kt, nitrst, numrow, 'vb2_b' , vb2_b (:,:), ldxios = lwxios ) 942 CALL iom_rstput( kt, nitrst, numrow, 'un_bf' , un_bf (:,:), ldxios = lwxios ) 943 CALL iom_rstput( kt, nitrst, numrow, 'vn_bf' , vn_bf (:,:), ldxios = lwxios ) 937 CALL iom_rstput( kt, nitrst, numrow, 'ub2_b' , ub2_b (:,:) ) 938 CALL iom_rstput( kt, nitrst, numrow, 'vb2_b' , vb2_b (:,:) ) 939 CALL iom_rstput( kt, nitrst, numrow, 'un_bf' , un_bf (:,:) ) 940 CALL iom_rstput( kt, nitrst, numrow, 'vn_bf' , vn_bf (:,:) ) 944 941 ! 945 942 IF (.NOT.ln_bt_av) THEN 946 CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e' , sshbb_e(:,:) , ldxios = lwxios)947 CALL iom_rstput( kt, nitrst, numrow, 'ubb_e' , ubb_e(:,:) , ldxios = lwxios)948 CALL iom_rstput( kt, nitrst, numrow, 'vbb_e' , vbb_e(:,:) , ldxios = lwxios)949 CALL iom_rstput( kt, nitrst, numrow, 'sshb_e' , sshb_e(:,:) , ldxios = lwxios)950 CALL iom_rstput( kt, nitrst, numrow, 'ub_e' , ub_e(:,:) , ldxios = lwxios)951 CALL iom_rstput( kt, nitrst, numrow, 'vb_e' , vb_e(:,:) , ldxios = lwxios)943 CALL iom_rstput( kt, nitrst, numrow, 'sshbb_e' , sshbb_e(:,:) ) 944 CALL iom_rstput( kt, nitrst, numrow, 'ubb_e' , ubb_e(:,:) ) 945 CALL iom_rstput( kt, nitrst, numrow, 'vbb_e' , vbb_e(:,:) ) 946 CALL iom_rstput( kt, nitrst, numrow, 'sshb_e' , sshb_e(:,:) ) 947 CALL iom_rstput( kt, nitrst, numrow, 'ub_e' , ub_e(:,:) ) 948 CALL iom_rstput( kt, nitrst, numrow, 'vb_e' , vb_e(:,:) ) 952 949 ENDIF 953 950 #if defined key_agrif 954 951 ! Save time integrated fluxes 955 952 IF ( .NOT.Agrif_Root() ) THEN 956 CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b' , ub2_i_b(:,:) , ldxios = lwxios)957 CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b' , vb2_i_b(:,:) , ldxios = lwxios)953 CALL iom_rstput( kt, nitrst, numrow, 'ub2_i_b' , ub2_i_b(:,:) ) 954 CALL iom_rstput( kt, nitrst, numrow, 'vb2_i_b' , vb2_i_b(:,:) ) 958 955 ENDIF 959 956 #endif 960 IF( lwxios ) CALL iom_swap( cxios_context )961 957 ENDIF 962 958 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/IOM/in_out_manager.F90
r13871 r13932 89 89 LOGICAL :: lrst_abl !: logical to control the abl restart write 90 90 INTEGER :: numror = 0 !: logical unit for ocean restart (read). Init to 0 is needed for SAS (in daymod.F90) 91 INTEGER :: numrir !: logical unit for ice restart (read) 92 INTEGER :: numrar !: logical unit for abl restart (read) 93 INTEGER :: numrow !: logical unit for ocean restart (write) 94 INTEGER :: numriw !: logical unit for ice restart (write) 95 INTEGER :: numraw !: logical unit for abl restart (write) 91 INTEGER :: numrir = 0 !: logical unit for ice restart (read) 92 INTEGER :: numrar = 0 !: logical unit for abl restart (read) 93 INTEGER :: numrow = 0 !: logical unit for ocean restart (write) 94 INTEGER :: numriw = 0 !: logical unit for ice restart (write) 95 INTEGER :: numraw = 0 !: logical unit for abl restart (write) 96 INTEGER :: numrtr = 0 !: trc restart (read ) 97 INTEGER :: numrtw = 0 !: trc restart (write ) 98 INTEGER :: numrsr = 0 !: logical unit for sed restart (read) 99 INTEGER :: numrsw = 0 !: logical unit for sed restart (write) 100 96 101 INTEGER :: nrst_lst !: number of restart to output next 97 102 … … 165 170 LOGICAL :: lwp = .FALSE. !: boolean : true on the 1st processor only .OR. sn_cfctl%l_oceout=T 166 171 LOGICAL :: lsp_area = .TRUE. !: to make a control print over a specific area 167 CHARACTER(LEN=lc) :: cxios_context 168 CHARACTER(LEN=lc) :: cr_ocerst_cxt 169 CHARACTER(LEN=lc) :: cw_ocerst_cxt 170 CHARACTER(LEN=lc) :: cr_icerst_cxt 171 CHARACTER(LEN=lc) :: cw_icerst_cxt 172 CHARACTER(LEN=lc) :: cr_toprst_cxt 173 CHARACTER(LEN=lc) :: cw_toprst_cxt 174 CHARACTER(LEN=lc) :: cr_sedrst_cxt 175 CHARACTER(LEN=lc) :: cw_sedrst_cxt 172 CHARACTER(LEN=lc) :: cxios_context !: context name used in xios 173 CHARACTER(LEN=lc) :: cr_ocerst_cxt !: context name used in xios to read OCE restart 174 CHARACTER(LEN=lc) :: cw_ocerst_cxt !: context name used in xios to write OCE restart file 175 CHARACTER(LEN=lc) :: cr_icerst_cxt !: context name used in xios to read SI3 restart 176 CHARACTER(LEN=lc) :: cw_icerst_cxt !: context name used in xios to write SI3 restart file 177 CHARACTER(LEN=lc) :: cr_toprst_cxt !: context name used in xios to read TOP restart 178 CHARACTER(LEN=lc) :: cw_toprst_cxt !: context name used in xios to write TOP restart file 179 CHARACTER(LEN=lc) :: cr_sedrst_cxt !: context name used in xios to read SEDIMENT restart 180 CHARACTER(LEN=lc) :: cw_sedrst_cxt !: context name used in xios to write SEDIMENT restart file 176 181 177 182 -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/IOM/iom.F90
r13871 r13932 60 60 PUBLIC iom_chkatt, iom_getatt, iom_putatt, iom_getszuld, iom_rstput, iom_delay_rst, iom_put 61 61 PUBLIC iom_use, iom_context_finalize, iom_update_file_name, iom_miss_val 62 PUBLIC iom_xios_setid 62 63 63 64 PRIVATE iom_rp0d_sp, iom_rp1d_sp, iom_rp2d_sp, iom_rp3d_sp … … 73 74 PRIVATE iom_set_rst_context, iom_set_vars_active 74 75 # endif 76 PRIVATE set_xios_context 75 77 PRIVATE iom_set_rstw_active 76 78 … … 103 105 CONTAINS 104 106 105 SUBROUTINE iom_init( cdname, fname, idfp, ld_closedef )107 SUBROUTINE iom_init( cdname, kdid, ld_closedef ) 106 108 !!---------------------------------------------------------------------- 107 109 !! *** ROUTINE *** … … 111 113 !!---------------------------------------------------------------------- 112 114 CHARACTER(len=*), INTENT(in) :: cdname 113 CHARACTER(len=*), OPTIONAL, INTENT(in) :: fname 114 INTEGER , OPTIONAL, INTENT(in) :: idfp ! pointer to netcdf file for restart reading with XIOS 115 INTEGER , OPTIONAL, INTENT(in) :: kdid 115 116 LOGICAL , OPTIONAL, INTENT(in) :: ld_closedef 116 117 #if defined key_iomput … … 267 268 ! automatic definitions of some of the xml attributs 268 269 IF(llrstr) THEN 269 IF(PRESENT( idfp)) THEN270 IF(PRESENT(kdid)) THEN 270 271 CALL iom_set_rst_context(.TRUE.) 271 272 !set which fields will be read from restart file 272 CALL iom_set_vars_active( fname, idfp)273 CALL iom_set_vars_active(kdid) 273 274 ELSE 274 275 CALL ctl_stop( 'iom_init:', 'restart read with XIOS: missing pointer to NETCDF file' ) 275 276 ENDIF 276 277 ELSE IF(llrstw) THEN 277 CALL iom_set_rstw_file( fname)278 CALL iom_set_rstw_file(iom_file(kdid)%name) 278 279 ELSE 279 280 CALL set_xmlatt … … 327 328 END SUBROUTINE iom_init_closedef 328 329 329 SUBROUTINE iom_set_vars_active( cdfname,idnum)330 SUBROUTINE iom_set_vars_active(idnum) 330 331 !!--------------------------------------------------------------------- 331 332 !! *** SUBROUTINE iom_set_vars_active *** … … 335 336 !! id of the file is assumed to be rrestart. 336 337 !!--------------------------------------------------------------------- 337 CHARACTER(len=*), INTENT(IN) :: cdfname338 INTEGER , INTENT(IN) :: idnum338 INTEGER, INTENT(IN) :: idnum 339 339 340 #if defined key_iomput 340 341 INTEGER :: ndims, nvars, natts, unlimitedDimId, dimlen, xtype,mdims … … 347 348 CHARACTER(LEN=nf90_max_name), ALLOCATABLE :: indimnames(:) 348 349 CHARACTER(LEN=nf90_max_name) :: dimname, varname 350 INTEGER :: iln 351 CHARACTER(LEN=lc) :: fname 349 352 LOGICAL :: lmeta 350 353 !metadata in restart file for restart read with XIOS 351 INTEGER, PARAMETER :: NMETA = 10352 CHARACTER(LEN=lc) :: meta(NMETA)354 INTEGER, PARAMETER :: NMETA = 10 355 CHARACTER(LEN=lc) :: meta(NMETA) 353 356 354 357 … … 364 367 meta(10) = "numcat" 365 368 366 clinfo = ' iom_set_vars_active, file: '//TRIM(cdfname) 369 clinfo = ' iom_set_vars_active, file: '//TRIM(iom_file(idnum)%name) 370 371 iln = INDEX( iom_file(idnum)%name, '.nc' ) 372 !XIOS doee not need .nc 373 IF(iln > 0) THEN 374 fname = iom_file(idnum)%name(1:iln-1) 375 ELSE 376 fname = iom_file(idnum)%name 377 ENDIF 367 378 368 379 !set name of the restart file and enable available fields 369 380 CALL xios_get_handle("file_definition", filegroup_hdl ) 370 381 CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart') 371 CALL xios_set_file_attr( "rrestart", name= trim(cdfname), type="one_file",&372 par_access="collective", enabled=.TRUE., mode="read", 373 output_freq=xios_timestep 374 375 CALL iom_nf90_check( nf90_inquire(i dnum, ndims, nvars, natts ), clinfo )382 CALL xios_set_file_attr( "rrestart", name=fname, type="one_file", & 383 par_access="collective", enabled=.TRUE., mode="read", & 384 output_freq=xios_timestep ) 385 386 CALL iom_nf90_check( nf90_inquire(iom_file(idnum)%nfid, ndims, nvars, natts ), clinfo ) 376 387 ALLOCATE(indimlens(ndims), indimnames(ndims)) 377 CALL iom_nf90_check( nf90_inquire(i dnum, unlimitedDimId = unlimitedDimId ), clinfo )388 CALL iom_nf90_check( nf90_inquire(iom_file(idnum)%nfid, unlimitedDimId = unlimitedDimId ), clinfo ) 378 389 379 390 DO idim = 1, ndims 380 CALL iom_nf90_check( nf90_inquire_dimension(i dnum, idim, dimname, dimlen ), clinfo )391 CALL iom_nf90_check( nf90_inquire_dimension(iom_file(idnum)%nfid, idim, dimname, dimlen ), clinfo ) 381 392 indimlens(idim) = dimlen 382 393 indimnames(idim) = dimname … … 385 396 DO jv =1, nvars 386 397 lmeta = .FALSE. 387 CALL iom_nf90_check( nf90_inquire_variable(i dnum, jv, varname, xtype, ndims, dimids, natts ), clinfo )398 CALL iom_nf90_check( nf90_inquire_variable(iom_file(idnum)%nfid, jv, varname, xtype, ndims, dimids, natts ), clinfo ) 388 399 DO i = 1, NMETA 389 400 IF(varname == meta(i)) THEN … … 438 449 439 450 !set name of the restart file and enable available fields 440 IF(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ', cdrst_file451 IF(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ', TRIM(cdrst_file) 441 452 CALL xios_get_handle("file_definition", filegroup_hdl ) 442 453 CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') … … 519 530 520 531 FUNCTION iom_axis(idlev) result(axis_ref) 521 !!---------------------------------------------------------------------532 !!--------------------------------------------------------------------- 522 533 !! *** FUNCTION iom_axis *** 523 534 !! … … 542 553 END FUNCTION iom_axis 543 554 555 FUNCTION iom_xios_setid(cdname) result(kid) 556 !!--------------------------------------------------------------------- 557 !! *** FUNCTION *** 558 !! 559 !! ** Purpose : this function returns first available id to keep information about file 560 !! sets filename in iom_file structure and sets name 561 !! of XIOS context depending on cdcomp 562 !! corresponds to iom_nf90_open 563 !!--------------------------------------------------------------------- 564 CHARACTER(len=*), INTENT(in ) :: cdname ! File name 565 INTEGER :: kid ! identifier of the opened file 566 INTEGER :: jl 567 568 kid = 0 569 DO jl = jpmax_files, 1, -1 570 IF( iom_file(jl)%nfid == 0 ) kid = jl 571 ENDDO 572 573 iom_file(kid)%name = TRIM(cdname) 574 iom_file(kid)%nfid = 1 575 iom_file(kid)%nvars = 0 576 iom_file(kid)%irec = -1 577 578 END FUNCTION iom_xios_setid 579 544 580 SUBROUTINE iom_set_rst_context(ld_rstr) 545 !!---------------------------------------------------------------------581 !!--------------------------------------------------------------------- 546 582 !! *** SUBROUTINE iom_set_rst_context *** 547 583 !! … … 578 614 #endif 579 615 END SUBROUTINE iom_set_rst_context 616 617 618 SUBROUTINE set_xios_context(kdid, cdcont) 619 !!--------------------------------------------------------------------- 620 !! *** SUBROUTINE iom_set_rst_context *** 621 !! 622 !! ** Purpose : set correct XIOS context based on kdid 623 !! 624 !!--------------------------------------------------------------------- 625 INTEGER, INTENT(IN) :: kdid ! Identifier of the file 626 CHARACTER(LEN=lc), INTENT(OUT) :: cdcont ! name of the context for XIOS read/write 627 628 cdcont = "NONE" 629 630 IF(lrxios) THEN 631 IF(kdid == numror) THEN 632 cdcont = cr_ocerst_cxt 633 ELSEIF(kdid == numrir) THEN 634 cdcont = cr_icerst_cxt 635 ELSEIF(kdid == numrtr) THEN 636 cdcont = cr_toprst_cxt 637 ELSEIF(kdid == numrsr) THEN 638 cdcont = cr_sedrst_cxt 639 ENDIF 640 ENDIF 641 642 IF(lwxios) THEN 643 IF(kdid == numrow) THEN 644 cdcont = cw_ocerst_cxt 645 ELSEIF(kdid == numriw) THEN 646 cdcont = cw_icerst_cxt 647 ELSEIF(kdid == numrtw) THEN 648 cdcont = cw_toprst_cxt 649 ELSEIF(kdid == numrsw) THEN 650 cdcont = cw_sedrst_cxt 651 ENDIF 652 ENDIF 653 END SUBROUTINE set_xios_context 654 580 655 581 656 SUBROUTINE iom_swap( cdname ) … … 837 912 !! INTERFACE iom_get 838 913 !!---------------------------------------------------------------------- 839 SUBROUTINE iom_g0d_sp( kiomid, cdvar, pvar, ktime , ldxios)914 SUBROUTINE iom_g0d_sp( kiomid, cdvar, pvar, ktime ) 840 915 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 841 916 CHARACTER(len=*), INTENT(in ) :: cdvar ! Name of the variable … … 843 918 REAL(dp) :: ztmp_pvar ! tmp var to read field 844 919 INTEGER , INTENT(in ), OPTIONAL :: ktime ! record number 845 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! use xios to read restart846 920 ! 847 921 INTEGER :: idvar ! variable id … … 851 925 CHARACTER(LEN=100) :: clname ! file name 852 926 CHARACTER(LEN=1) :: cldmspc ! 853 LOGICAL :: llxios 854 ! 855 llxios = .FALSE. 856 IF( PRESENT(ldxios) ) llxios = ldxios 857 858 IF(.NOT.llxios) THEN ! read data using default library 927 CHARACTER(LEN=lc) :: context 928 ! 929 CALL set_xios_context(kiomid, context) 930 931 IF(context == "NONE") THEN ! read data using default library 859 932 itime = 1 860 933 IF( PRESENT(ktime) ) itime = ktime … … 879 952 #if defined key_iomput 880 953 IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 954 CALL iom_swap(context) 881 955 CALL xios_recv_field( trim(cdvar), pvar) 956 CALL iom_swap(cxios_context) 882 957 #else 883 958 WRITE(ctmp1,*) 'Can not use XIOS in iom_g0d, file: '//trim(clname)//', var:'//trim(cdvar) … … 887 962 END SUBROUTINE iom_g0d_sp 888 963 889 SUBROUTINE iom_g0d_dp( kiomid, cdvar, pvar, ktime , ldxios)964 SUBROUTINE iom_g0d_dp( kiomid, cdvar, pvar, ktime ) 890 965 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 891 966 CHARACTER(len=*), INTENT(in ) :: cdvar ! Name of the variable 892 967 REAL(dp) , INTENT( out) :: pvar ! read field 893 968 INTEGER , INTENT(in ), OPTIONAL :: ktime ! record number 894 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! use xios to read restart895 969 ! 896 970 INTEGER :: idvar ! variable id … … 900 974 CHARACTER(LEN=100) :: clname ! file name 901 975 CHARACTER(LEN=1) :: cldmspc ! 902 LOGICAL :: llxios 903 ! 904 llxios = .FALSE. 905 IF( PRESENT(ldxios) ) llxios = ldxios 906 907 IF(.NOT.llxios) THEN ! read data using default library 976 CHARACTER(LEN=lc) :: context 977 ! 978 CALL set_xios_context(kiomid, context) 979 980 IF(context == "NONE") THEN ! read data using default library 908 981 itime = 1 909 982 IF( PRESENT(ktime) ) itime = ktime … … 927 1000 #if defined key_iomput 928 1001 IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 1002 CALL iom_swap(context) 929 1003 CALL xios_recv_field( trim(cdvar), pvar) 1004 CALL iom_swap(cxios_context) 930 1005 #else 931 1006 WRITE(ctmp1,*) 'Can not use XIOS in iom_g0d, file: '//trim(clname)//', var:'//trim(cdvar) … … 935 1010 END SUBROUTINE iom_g0d_dp 936 1011 937 SUBROUTINE iom_g1d_sp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount , ldxios)1012 SUBROUTINE iom_g1d_sp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount ) 938 1013 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 939 1014 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 944 1019 INTEGER , INTENT(in ), DIMENSION(1), OPTIONAL :: kstart ! start axis position of the reading 945 1020 INTEGER , INTENT(in ), DIMENSION(1), OPTIONAL :: kcount ! number of points in each axis 946 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS947 1021 ! 948 1022 IF( kiomid > 0 ) THEN … … 950 1024 ALLOCATE(ztmp_pvar(size(pvar,1))) 951 1025 CALL iom_get_123d( kiomid, kdom , cdvar , pv_r1d=ztmp_pvar, & 952 & ktime=ktime, kstart=kstart, kcount=kcount, & 953 & ldxios=ldxios ) 1026 & ktime=ktime, kstart=kstart, kcount=kcount ) 954 1027 pvar = ztmp_pvar 955 1028 DEALLOCATE(ztmp_pvar) … … 959 1032 960 1033 961 SUBROUTINE iom_g1d_dp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount , ldxios)1034 SUBROUTINE iom_g1d_dp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount ) 962 1035 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 963 1036 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 967 1040 INTEGER , INTENT(in ), DIMENSION(1), OPTIONAL :: kstart ! start axis position of the reading 968 1041 INTEGER , INTENT(in ), DIMENSION(1), OPTIONAL :: kcount ! number of points in each axis 969 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS970 1042 ! 971 1043 IF( kiomid > 0 ) THEN 972 1044 IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom , cdvar , pv_r1d=pvar, & 973 & ktime=ktime, kstart=kstart, kcount=kcount, & 974 & ldxios=ldxios ) 1045 & ktime=ktime, kstart=kstart, kcount=kcount) 975 1046 ENDIF 976 1047 END SUBROUTINE iom_g1d_dp 977 1048 978 SUBROUTINE iom_g2d_sp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount , ldxios)1049 SUBROUTINE iom_g2d_sp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount) 979 1050 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 980 1051 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 988 1059 INTEGER , INTENT(in ), DIMENSION(2), OPTIONAL :: kstart ! start axis position of the reading 989 1060 INTEGER , INTENT(in ), DIMENSION(2), OPTIONAL :: kcount ! number of points in each axis 990 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS991 1061 ! 992 1062 IF( kiomid > 0 ) THEN … … 995 1065 CALL iom_get_123d( kiomid, kdom, cdvar , pv_r2d = ztmp_pvar , ktime = ktime, & 996 1066 & cd_type = cd_type, psgn = psgn , kfill = kfill, & 997 & kstart = kstart , kcount = kcount , ldxios=ldxios)1067 & kstart = kstart , kcount = kcount ) 998 1068 pvar = ztmp_pvar 999 1069 DEALLOCATE(ztmp_pvar) … … 1002 1072 END SUBROUTINE iom_g2d_sp 1003 1073 1004 SUBROUTINE iom_g2d_dp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount , ldxios)1074 SUBROUTINE iom_g2d_dp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount) 1005 1075 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 1006 1076 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 1013 1083 INTEGER , INTENT(in ), DIMENSION(2), OPTIONAL :: kstart ! start axis position of the reading 1014 1084 INTEGER , INTENT(in ), DIMENSION(2), OPTIONAL :: kcount ! number of points in each axis 1015 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS1016 1085 ! 1017 1086 IF( kiomid > 0 ) THEN 1018 1087 IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom, cdvar , pv_r2d = pvar , ktime = ktime, & 1019 1088 & cd_type = cd_type, psgn = psgn , kfill = kfill, & 1020 & kstart = kstart , kcount = kcount , ldxios=ldxios)1089 & kstart = kstart , kcount = kcount ) 1021 1090 ENDIF 1022 1091 END SUBROUTINE iom_g2d_dp 1023 1092 1024 SUBROUTINE iom_g3d_sp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount , ldxios)1093 SUBROUTINE iom_g3d_sp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount ) 1025 1094 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 1026 1095 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 1034 1103 INTEGER , INTENT(in ), DIMENSION(3), OPTIONAL :: kstart ! start axis position of the reading 1035 1104 INTEGER , INTENT(in ), DIMENSION(3), OPTIONAL :: kcount ! number of points in each axis 1036 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS1037 1105 ! 1038 1106 IF( kiomid > 0 ) THEN … … 1041 1109 CALL iom_get_123d( kiomid, kdom, cdvar , pv_r3d = ztmp_pvar , ktime = ktime, & 1042 1110 & cd_type = cd_type, psgn = psgn , kfill = kfill, & 1043 & kstart = kstart , kcount = kcount , ldxios=ldxios)1111 & kstart = kstart , kcount = kcount ) 1044 1112 pvar = ztmp_pvar 1045 1113 DEALLOCATE(ztmp_pvar) … … 1048 1116 END SUBROUTINE iom_g3d_sp 1049 1117 1050 SUBROUTINE iom_g3d_dp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount , ldxios)1118 SUBROUTINE iom_g3d_dp( kiomid, kdom, cdvar, pvar, ktime, cd_type, psgn, kfill, kstart, kcount ) 1051 1119 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 1052 1120 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 1059 1127 INTEGER , INTENT(in ), DIMENSION(3), OPTIONAL :: kstart ! start axis position of the reading 1060 1128 INTEGER , INTENT(in ), DIMENSION(3), OPTIONAL :: kcount ! number of points in each axis 1061 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS1062 1129 ! 1063 1130 IF( kiomid > 0 ) THEN … … 1065 1132 CALL iom_get_123d( kiomid, kdom, cdvar , pv_r3d = pvar , ktime = ktime, & 1066 1133 & cd_type = cd_type, psgn = psgn , kfill = kfill, & 1067 & kstart = kstart , kcount = kcount , ldxios=ldxios)1134 & kstart = kstart , kcount = kcount ) 1068 1135 END IF 1069 1136 ENDIF … … 1073 1140 1074 1141 SUBROUTINE iom_get_123d( kiomid , kdom, cdvar, pv_r1d, pv_r2d, pv_r3d, ktime , & 1075 & cd_type, psgn, kfill, kstart, kcount , ldxios)1142 & cd_type, psgn, kfill, kstart, kcount ) 1076 1143 !!----------------------------------------------------------------------- 1077 1144 !! *** ROUTINE iom_get_123d *** … … 1093 1160 INTEGER , DIMENSION(:) , INTENT(in ), OPTIONAL :: kstart ! start position of the reading in each axis 1094 1161 INTEGER , DIMENSION(:) , INTENT(in ), OPTIONAL :: kcount ! number of points to be read in each axis 1095 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! use XIOS to read restart1096 1162 ! 1097 1163 LOGICAL :: llok ! true if ok! 1098 LOGICAL :: llxios ! local definition for XIOS read1099 1164 INTEGER :: jl ! loop on number of dimension 1100 1165 INTEGER :: idom ! type of domain … … 1123 1188 REAL(dp) :: gma, gmi 1124 1189 !--------------------------------------------------------------------- 1125 ! 1190 CHARACTER(LEN=lc) :: context 1191 ! 1192 CALL set_xios_context(kiomid, context) 1126 1193 inlev = -1 1127 1194 IF( PRESENT(pv_r3d) ) inlev = SIZE(pv_r3d, 3) 1128 1195 ! 1129 llxios = .FALSE.1130 IF( PRESENT(ldxios) ) llxios = ldxios1131 !1132 1196 idom = kdom 1133 1197 istop = nstop 1134 1198 ! 1135 IF( .NOT.llxios) THEN1199 IF(context == "NONE") THEN 1136 1200 clname = iom_file(kiomid)%name ! esier to read 1137 1201 clinfo = ' iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) … … 1301 1365 !would be good to be able to check which context is active and swap only if current is not restart 1302 1366 idvar = iom_varid( kiomid, cdvar ) 1303 1367 CALL iom_swap(context) 1304 1368 zsgn = 1._wp 1305 1369 IF( PRESENT(psgn ) ) zsgn = psgn … … 1323 1387 CALL xios_recv_field( trim(cdvar), pv_r1d) 1324 1388 ENDIF 1389 CALL iom_swap(cxios_context) 1325 1390 #else 1326 1391 istop = istop + 1 … … 1518 1583 !! INTERFACE iom_rstput 1519 1584 !!---------------------------------------------------------------------- 1520 SUBROUTINE iom_rp0d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1585 SUBROUTINE iom_rp0d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1521 1586 INTEGER , INTENT(in) :: kt ! ocean time-step 1522 1587 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1525 1590 REAL(sp) , INTENT(in) :: pvar ! written field 1526 1591 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1527 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1528 LOGICAL :: llx ! local xios write flag 1529 INTEGER :: ivid ! variable id 1530 1531 llx = .FALSE. 1532 IF(PRESENT(ldxios)) llx = ldxios 1592 ! 1593 LOGICAL :: llx ! local xios write flag 1594 INTEGER :: ivid ! variable id 1595 CHARACTER(LEN=lc) :: context 1596 ! 1597 CALL set_xios_context(kiomid, context) 1598 1599 llx = .NOT. (context == "NONE") 1600 1533 1601 IF( llx ) THEN 1534 1602 #ifdef key_iomput 1535 IF( kt == kwrite ) THEN 1536 IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 1537 CALL iom_put(trim(cdvar), pvar) 1538 ELSE 1539 IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 1540 CALL iom_set_rstw_active( trim(cdvar), rs0 = pvar ) 1541 ENDIF 1603 IF( kt == kwrite ) THEN 1604 IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 1605 CALL iom_swap(context) 1606 CALL iom_put(trim(cdvar), pvar) 1607 CALL iom_swap(cxios_context) 1608 ELSE 1609 IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 1610 CALL iom_swap(context) 1611 CALL iom_set_rstw_active( trim(cdvar), rs0 = pvar ) 1612 CALL iom_swap(cxios_context) 1613 ENDIF 1542 1614 #endif 1543 1615 ELSE … … 1551 1623 END SUBROUTINE iom_rp0d_sp 1552 1624 1553 SUBROUTINE iom_rp0d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1625 SUBROUTINE iom_rp0d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1554 1626 INTEGER , INTENT(in) :: kt ! ocean time-step 1555 1627 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1558 1630 REAL(dp) , INTENT(in) :: pvar ! written field 1559 1631 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1560 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1561 LOGICAL :: llx ! local xios write flag 1562 INTEGER :: ivid ! variable id 1563 1564 llx = .FALSE. 1565 IF(PRESENT(ldxios)) llx = ldxios 1632 ! 1633 LOGICAL :: llx ! local xios write flag 1634 INTEGER :: ivid ! variable id 1635 CHARACTER(LEN=lc) :: context 1636 ! 1637 CALL set_xios_context(kiomid, context) 1638 1639 llx = .NOT. (context == "NONE") 1640 1566 1641 IF( llx ) THEN 1567 1642 #ifdef key_iomput 1568 IF( kt == kwrite ) THEN 1569 IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 1570 CALL iom_put(trim(cdvar), pvar) 1571 ELSE 1572 IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 1573 CALL iom_set_rstw_active( trim(cdvar), rd0 = pvar ) 1574 ENDIF 1643 IF( kt == kwrite ) THEN 1644 IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 1645 CALL iom_swap(context) 1646 CALL iom_put(trim(cdvar), pvar) 1647 CALL iom_swap(cxios_context) 1648 ELSE 1649 IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 1650 CALL iom_swap(context) 1651 CALL iom_set_rstw_active( trim(cdvar), rd0 = pvar ) 1652 CALL iom_swap(cxios_context) 1653 ENDIF 1575 1654 #endif 1576 1655 ELSE … … 1585 1664 1586 1665 1587 SUBROUTINE iom_rp1d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1666 SUBROUTINE iom_rp1d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1588 1667 INTEGER , INTENT(in) :: kt ! ocean time-step 1589 1668 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1592 1671 REAL(sp) , INTENT(in), DIMENSION( :) :: pvar ! written field 1593 1672 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1594 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1595 LOGICAL :: llx ! local xios write flag 1596 INTEGER :: ivid ! variable id 1597 1598 llx = .FALSE. 1599 IF(PRESENT(ldxios)) llx = ldxios 1673 ! 1674 LOGICAL :: llx ! local xios write flag 1675 INTEGER :: ivid ! variable id 1676 CHARACTER(LEN=lc) :: context 1677 ! 1678 CALL set_xios_context(kiomid, context) 1679 1680 llx = .NOT. (context == "NONE") 1681 1600 1682 IF( llx ) THEN 1601 1683 #ifdef key_iomput 1602 IF( kt == kwrite ) THEN 1603 IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 1604 CALL iom_put(trim(cdvar), pvar) 1605 ELSE 1606 IF(lwp) write(numout,*) 'RESTART: define (XIOS 1D)',trim(cdvar) 1607 CALL iom_set_rstw_active( trim(cdvar), rs1 = pvar ) 1608 ENDIF 1684 IF( kt == kwrite ) THEN 1685 IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 1686 CALL iom_swap(context) 1687 CALL iom_put(trim(cdvar), pvar) 1688 CALL iom_swap(cxios_context) 1689 ELSE 1690 IF(lwp) write(numout,*) 'RESTART: define (XIOS 1D)',trim(cdvar) 1691 CALL iom_swap(context) 1692 CALL iom_set_rstw_active( trim(cdvar), rs1 = pvar ) 1693 CALL iom_swap(cxios_context) 1694 ENDIF 1609 1695 #endif 1610 1696 ELSE … … 1618 1704 END SUBROUTINE iom_rp1d_sp 1619 1705 1620 SUBROUTINE iom_rp1d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1706 SUBROUTINE iom_rp1d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1621 1707 INTEGER , INTENT(in) :: kt ! ocean time-step 1622 1708 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1625 1711 REAL(dp) , INTENT(in), DIMENSION( :) :: pvar ! written field 1626 1712 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1627 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1628 LOGICAL :: llx ! local xios write flag 1629 INTEGER :: ivid ! variable id 1630 1631 llx = .FALSE. 1632 IF(PRESENT(ldxios)) llx = ldxios 1713 ! 1714 LOGICAL :: llx ! local xios write flag 1715 INTEGER :: ivid ! variable id 1716 CHARACTER(LEN=lc) :: context 1717 ! 1718 CALL set_xios_context(kiomid, context) 1719 1720 llx = .NOT. (context == "NONE") 1721 1633 1722 IF( llx ) THEN 1634 1723 #ifdef key_iomput 1635 IF( kt == kwrite ) THEN 1636 IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 1637 CALL iom_put(trim(cdvar), pvar) 1638 ELSE 1639 IF(lwp) write(numout,*) 'RESTART: define (XIOS 1D)',trim(cdvar) 1640 CALL iom_set_rstw_active( trim(cdvar), rd1 = pvar ) 1641 ENDIF 1724 IF( kt == kwrite ) THEN 1725 IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 1726 CALL iom_swap(context) 1727 CALL iom_put(trim(cdvar), pvar) 1728 CALL iom_swap(cxios_context) 1729 ELSE 1730 IF(lwp) write(numout,*) 'RESTART: define (XIOS 1D)',trim(cdvar) 1731 CALL iom_swap(context) 1732 CALL iom_set_rstw_active( trim(cdvar), rd1 = pvar ) 1733 CALL iom_swap(cxios_context) 1734 ENDIF 1642 1735 #endif 1643 1736 ELSE … … 1652 1745 1653 1746 1654 SUBROUTINE iom_rp2d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1747 SUBROUTINE iom_rp2d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1655 1748 INTEGER , INTENT(in) :: kt ! ocean time-step 1656 1749 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1659 1752 REAL(sp) , INTENT(in), DIMENSION(:, : ) :: pvar ! written field 1660 1753 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1661 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1662 LOGICAL :: llx 1663 INTEGER :: ivid ! variable id 1664 1665 llx = .FALSE. 1666 IF(PRESENT(ldxios)) llx = ldxios 1754 ! 1755 LOGICAL :: llx 1756 INTEGER :: ivid ! variable id 1757 CHARACTER(LEN=lc) :: context 1758 ! 1759 CALL set_xios_context(kiomid, context) 1760 1761 llx = .NOT. (context == "NONE") 1762 1667 1763 IF( llx ) THEN 1668 1764 #ifdef key_iomput 1669 IF( kt == kwrite ) THEN 1670 IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 1671 CALL iom_put(trim(cdvar), pvar) 1672 ELSE 1673 IF(lwp) write(numout,*) 'RESTART: define (XIOS 2D)',trim(cdvar) 1674 CALL iom_set_rstw_active( trim(cdvar), rs2 = pvar ) 1675 ENDIF 1765 IF( kt == kwrite ) THEN 1766 IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 1767 CALL iom_swap(context) 1768 CALL iom_put(trim(cdvar), pvar) 1769 CALL iom_swap(cxios_context) 1770 ELSE 1771 IF(lwp) write(numout,*) 'RESTART: define (XIOS 2D)',trim(cdvar) 1772 CALL iom_swap(context) 1773 CALL iom_set_rstw_active( trim(cdvar), rs2 = pvar ) 1774 CALL iom_swap(cxios_context) 1775 ENDIF 1676 1776 #endif 1677 1777 ELSE … … 1685 1785 END SUBROUTINE iom_rp2d_sp 1686 1786 1687 SUBROUTINE iom_rp2d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1787 SUBROUTINE iom_rp2d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1688 1788 INTEGER , INTENT(in) :: kt ! ocean time-step 1689 1789 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1692 1792 REAL(dp) , INTENT(in), DIMENSION(:, : ) :: pvar ! written field 1693 1793 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1694 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1695 LOGICAL :: llx 1696 INTEGER :: ivid ! variable id 1697 1698 llx = .FALSE. 1699 IF(PRESENT(ldxios)) llx = ldxios 1794 ! 1795 LOGICAL :: llx 1796 INTEGER :: ivid ! variable id 1797 CHARACTER(LEN=lc) :: context 1798 ! 1799 CALL set_xios_context(kiomid, context) 1800 1801 llx = .NOT. (context == "NONE") 1802 1700 1803 IF( llx ) THEN 1701 1804 #ifdef key_iomput 1702 IF( kt == kwrite ) THEN 1703 IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 1704 CALL iom_put(trim(cdvar), pvar) 1705 ELSE 1706 IF(lwp) write(numout,*) 'RESTART: define (XIOS 2D)',trim(cdvar) 1707 CALL iom_set_rstw_active( trim(cdvar), rd2 = pvar ) 1708 ENDIF 1805 IF( kt == kwrite ) THEN 1806 IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 1807 CALL iom_swap(context) 1808 CALL iom_put(trim(cdvar), pvar) 1809 CALL iom_swap(cxios_context) 1810 ELSE 1811 IF(lwp) write(numout,*) 'RESTART: define (XIOS 2D)',trim(cdvar) 1812 CALL iom_swap(context) 1813 CALL iom_set_rstw_active( trim(cdvar), rd2 = pvar ) 1814 CALL iom_swap(cxios_context) 1815 ENDIF 1709 1816 #endif 1710 1817 ELSE … … 1719 1826 1720 1827 1721 SUBROUTINE iom_rp3d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1828 SUBROUTINE iom_rp3d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1722 1829 INTEGER , INTENT(in) :: kt ! ocean time-step 1723 1830 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1726 1833 REAL(sp) , INTENT(in), DIMENSION(:,:,:) :: pvar ! written field 1727 1834 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1728 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1729 LOGICAL :: llx ! local xios write flag 1730 INTEGER :: ivid ! variable id 1731 1732 llx = .FALSE. 1733 IF(PRESENT(ldxios)) llx = ldxios 1835 ! 1836 LOGICAL :: llx ! local xios write flag 1837 INTEGER :: ivid ! variable id 1838 CHARACTER(LEN=lc) :: context 1839 ! 1840 CALL set_xios_context(kiomid, context) 1841 1842 llx = .NOT. (context == "NONE") 1843 1734 1844 IF( llx ) THEN 1735 1845 #ifdef key_iomput 1736 IF( kt == kwrite ) THEN 1737 IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 1738 CALL iom_put(trim(cdvar), pvar) 1739 ELSE 1740 IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 1741 CALL iom_set_rstw_active( trim(cdvar), rs3 = pvar ) 1742 ENDIF 1846 IF( kt == kwrite ) THEN 1847 IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 1848 CALL iom_swap(context) 1849 CALL iom_put(trim(cdvar), pvar) 1850 CALL iom_swap(cxios_context) 1851 ELSE 1852 IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 1853 CALL iom_swap(context) 1854 CALL iom_set_rstw_active( trim(cdvar), rs3 = pvar ) 1855 CALL iom_swap(cxios_context) 1856 ENDIF 1743 1857 #endif 1744 1858 ELSE … … 1752 1866 END SUBROUTINE iom_rp3d_sp 1753 1867 1754 SUBROUTINE iom_rp3d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1868 SUBROUTINE iom_rp3d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1755 1869 INTEGER , INTENT(in) :: kt ! ocean time-step 1756 1870 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1759 1873 REAL(dp) , INTENT(in), DIMENSION(:,:,:) :: pvar ! written field 1760 1874 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1761 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1762 LOGICAL :: llx ! local xios write flag 1763 INTEGER :: ivid ! variable id 1764 1765 llx = .FALSE. 1766 IF(PRESENT(ldxios)) llx = ldxios 1875 ! 1876 LOGICAL :: llx ! local xios write flag 1877 INTEGER :: ivid ! variable id 1878 CHARACTER(LEN=lc) :: context 1879 ! 1880 CALL set_xios_context(kiomid, context) 1881 1882 llx = .NOT. (context == "NONE") 1883 1767 1884 IF( llx ) THEN 1768 1885 #ifdef key_iomput 1769 IF( kt == kwrite ) THEN 1770 IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 1771 CALL iom_put(trim(cdvar), pvar) 1772 ELSE 1773 IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 1774 CALL iom_set_rstw_active( trim(cdvar), rd3 = pvar ) 1775 ENDIF 1886 IF( kt == kwrite ) THEN 1887 IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 1888 CALL iom_swap(context) 1889 CALL iom_put(trim(cdvar), pvar) 1890 CALL iom_swap(cxios_context) 1891 ELSE 1892 IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 1893 CALL iom_swap(context) 1894 CALL iom_set_rstw_active( trim(cdvar), rd3 = pvar ) 1895 CALL iom_swap(cxios_context) 1896 ENDIF 1776 1897 #endif 1777 1898 ELSE -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/IOM/restart.F90
r13871 r13932 116 116 clpname = TRIM(Agrif_CFixed())//"_"//clname 117 117 ENDIF 118 CALL iom_init( cw_ocerst_cxt, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .false. ) 118 numrow = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 119 CALL iom_init( cw_ocerst_cxt, kdid = numrow, ld_closedef = .false. ) 119 120 CALL iom_swap( cxios_context ) 120 121 #else … … 142 143 INTEGER, INTENT(in) :: Kbb, Kmm ! ocean time level indices 143 144 !!---------------------------------------------------------------------- 144 IF(lwxios) CALL iom_swap( cw_ocerst_cxt ) 145 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rn_Dt , ldxios = lwxios) ! dynamics time step 146 CALL iom_delay_rst( 'WRITE', 'OCE', numrow ) ! save only ocean delayed global communication variables 145 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rn_Dt ) ! dynamics time step 146 IF(.NOT.lwxios) CALL iom_delay_rst( 'WRITE', 'OCE', numrow ) ! save only ocean delayed global communication variables 147 147 148 148 IF ( .NOT. ln_diurnal_only ) THEN 149 CALL iom_rstput( kt, nitrst, numrow, 'ub' , uu(:,:,: ,Kbb) , ldxios = lwxios) ! before fields150 CALL iom_rstput( kt, nitrst, numrow, 'vb' , vv(:,:,: ,Kbb) , ldxios = lwxios)151 CALL iom_rstput( kt, nitrst, numrow, 'tb' , ts(:,:,:,jp_tem,Kbb) , ldxios = lwxios)152 CALL iom_rstput( kt, nitrst, numrow, 'sb' , ts(:,:,:,jp_sal,Kbb) , ldxios = lwxios)153 CALL iom_rstput( kt, nitrst, numrow, 'sshb' , ssh(:,: ,Kbb), ldxios = lwxios)149 CALL iom_rstput( kt, nitrst, numrow, 'ub' , uu(:,:,: ,Kbb) ) ! before fields 150 CALL iom_rstput( kt, nitrst, numrow, 'vb' , vv(:,:,: ,Kbb) ) 151 CALL iom_rstput( kt, nitrst, numrow, 'tb' , ts(:,:,:,jp_tem,Kbb) ) 152 CALL iom_rstput( kt, nitrst, numrow, 'sb' , ts(:,:,:,jp_sal,Kbb) ) 153 CALL iom_rstput( kt, nitrst, numrow, 'sshb' , ssh(:,: ,Kbb)) 154 154 ! 155 CALL iom_rstput( kt, nitrst, numrow, 'un' , uu(:,:,: ,Kmm) , ldxios = lwxios) ! now fields156 CALL iom_rstput( kt, nitrst, numrow, 'vn' , vv(:,:,: ,Kmm) , ldxios = lwxios)157 CALL iom_rstput( kt, nitrst, numrow, 'tn' , ts(:,:,:,jp_tem,Kmm) , ldxios = lwxios)158 CALL iom_rstput( kt, nitrst, numrow, 'sn' , ts(:,:,:,jp_sal,Kmm) , ldxios = lwxios)159 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , ssh(:,: ,Kmm), ldxios = lwxios)160 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop , ldxios = lwxios)155 CALL iom_rstput( kt, nitrst, numrow, 'un' , uu(:,:,: ,Kmm) ) ! now fields 156 CALL iom_rstput( kt, nitrst, numrow, 'vn' , vv(:,:,: ,Kmm) ) 157 CALL iom_rstput( kt, nitrst, numrow, 'tn' , ts(:,:,:,jp_tem,Kmm) ) 158 CALL iom_rstput( kt, nitrst, numrow, 'sn' , ts(:,:,:,jp_sal,Kmm) ) 159 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , ssh(:,: ,Kmm)) 160 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop ) 161 161 ENDIF 162 162 163 IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst, ldxios = lwxios ) 164 IF(lwxios) CALL iom_swap( cxios_context ) 163 IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst ) 165 164 IF( kt == nitrst ) THEN 166 165 IF(.NOT.lwxios) THEN … … 168 167 ELSE 169 168 CALL iom_context_finalize( cw_ocerst_cxt ) 169 iom_file(numrow)%nfid = 0 170 numrow = 0 170 171 ENDIF 171 172 !!gm IF( .NOT. lk_trdmld ) lrst_oce = .FALSE. … … 214 215 cr_ocerst_cxt = 'oce_rst' 215 216 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS' 216 217 218 219 220 221 CALL iom_init( cr_ocerst_cxt, fname = TRIM(clpath)//TRIM(clpname), &222 idfp = iom_file(numror)%nfid, ld_closedef = .TRUE.)217 ! IF( TRIM(Agrif_CFixed()) == '0' ) THEN 218 ! clpname = cn_ocerst_in 219 ! ELSE 220 ! clpname = TRIM(Agrif_CFixed())//"_"//cn_ocerst_in 221 ! ENDIF 222 CALL iom_init( cr_ocerst_cxt, kdid = numror, ld_closedef = .TRUE. ) 223 CALL iom_swap( cxios_context ) 223 224 ENDIF 224 225 … … 245 246 246 247 ! Check dynamics and tracer time-step consistency and force Euler restart if changed 247 IF( lrxios ) CALL iom_swap( cr_ocerst_cxt )248 248 IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 ) THEN 249 CALL iom_get( numror, 'rdt', zrdt , ldxios = lrxios)249 CALL iom_get( numror, 'rdt', zrdt ) 250 250 IF( zrdt /= rn_Dt ) THEN 251 251 IF(lwp) WRITE( numout,*) … … 257 257 ENDIF 258 258 259 CALL iom_delay_rst( 'READ', 'OCE', numror ) ! read only ocean delayed global communication variables259 IF(.NOT.lrxios ) CALL iom_delay_rst( 'READ', 'OCE', numror ) ! read only ocean delayed global communication variables 260 260 261 261 ! Diurnal DSST 262 IF( ln_diurnal ) CALL iom_get( numror, jpdom_auto, 'Dsst' , x_dsst , ldxios = lrxios)262 IF( ln_diurnal ) CALL iom_get( numror, jpdom_auto, 'Dsst' , x_dsst ) 263 263 IF ( ln_diurnal_only ) THEN 264 264 IF(lwp) WRITE( numout, * ) & 265 265 & "rst_read:- ln_diurnal_only set, setting rhop=rho0" 266 266 rhop = rho0 267 CALL iom_get( numror, jpdom_auto, 'tn' , w3d , ldxios = lrxios)267 CALL iom_get( numror, jpdom_auto, 'tn' , w3d ) 268 268 ts(:,:,1,jp_tem,Kmm) = w3d(:,:,1) 269 269 RETURN … … 272 272 IF( iom_varid( numror, 'ub', ldstop = .FALSE. ) > 0 ) THEN 273 273 ! before fields 274 CALL iom_get( numror, jpdom_auto, 'ub' , uu(:,:,: ,Kbb), ldxios = lrxios,cd_type = 'U', psgn = -1._wp )275 CALL iom_get( numror, jpdom_auto, 'vb' , vv(:,:,: ,Kbb), ldxios = lrxios,cd_type = 'V', psgn = -1._wp )276 CALL iom_get( numror, jpdom_auto, 'tb' , ts(:,:,:,jp_tem,Kbb) , ldxios = lrxios)277 CALL iom_get( numror, jpdom_auto, 'sb' , ts(:,:,:,jp_sal,Kbb) , ldxios = lrxios)278 CALL iom_get( numror, jpdom_auto, 'sshb' ,ssh(:,: ,Kbb) , ldxios = lrxios)274 CALL iom_get( numror, jpdom_auto, 'ub' , uu(:,:,: ,Kbb), cd_type = 'U', psgn = -1._wp ) 275 CALL iom_get( numror, jpdom_auto, 'vb' , vv(:,:,: ,Kbb), cd_type = 'V', psgn = -1._wp ) 276 CALL iom_get( numror, jpdom_auto, 'tb' , ts(:,:,:,jp_tem,Kbb) ) 277 CALL iom_get( numror, jpdom_auto, 'sb' , ts(:,:,:,jp_sal,Kbb) ) 278 CALL iom_get( numror, jpdom_auto, 'sshb' ,ssh(:,: ,Kbb) ) 279 279 ELSE 280 280 l_1st_euler = .TRUE. ! before field not found, forced euler 1st time-step … … 282 282 ! 283 283 ! now fields 284 CALL iom_get( numror, jpdom_auto, 'un' , uu(:,:,: ,Kmm), ldxios = lrxios,cd_type = 'U', psgn = -1._wp )285 CALL iom_get( numror, jpdom_auto, 'vn' , vv(:,:,: ,Kmm), ldxios = lrxios,cd_type = 'V', psgn = -1._wp )286 CALL iom_get( numror, jpdom_auto, 'tn' , ts(:,:,:,jp_tem,Kmm) , ldxios = lrxios)287 CALL iom_get( numror, jpdom_auto, 'sn' , ts(:,:,:,jp_sal,Kmm) , ldxios = lrxios)288 CALL iom_get( numror, jpdom_auto, 'sshn' ,ssh(:,: ,Kmm) , ldxios = lrxios)284 CALL iom_get( numror, jpdom_auto, 'un' , uu(:,:,: ,Kmm), cd_type = 'U', psgn = -1._wp ) 285 CALL iom_get( numror, jpdom_auto, 'vn' , vv(:,:,: ,Kmm), cd_type = 'V', psgn = -1._wp ) 286 CALL iom_get( numror, jpdom_auto, 'tn' , ts(:,:,:,jp_tem,Kmm) ) 287 CALL iom_get( numror, jpdom_auto, 'sn' , ts(:,:,:,jp_sal,Kmm) ) 288 CALL iom_get( numror, jpdom_auto, 'sshn' ,ssh(:,: ,Kmm) ) 289 289 IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN 290 CALL iom_get( numror, jpdom_auto, 'rhop' , rhop , ldxios = lrxios) ! now potential density290 CALL iom_get( numror, jpdom_auto, 'rhop' , rhop ) ! now potential density 291 291 ELSE 292 292 CALL eos( ts(:,:,:,:,Kmm), rhd, rhop, gdept(:,:,:,Kmm) ) 293 293 ENDIF 294 IF( lrxios ) CALL iom_swap( cxios_context )295 294 ! 296 295 IF( l_1st_euler ) THEN ! Euler restart -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ISF/isfcpl.F90
r13871 r13932 144 144 END DO 145 145 ! 146 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 147 CALL iom_rstput( kt, nitrst, numrow, 'tmask' , tmask , ldxios = lwxios ) 148 CALL iom_rstput( kt, nitrst, numrow, 'ssmask' , ssmask, ldxios = lwxios ) 149 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n' , ze3t , ldxios = lwxios ) 150 CALL iom_rstput( kt, nitrst, numrow, 'e3u_n' , ze3u , ldxios = lwxios ) 151 CALL iom_rstput( kt, nitrst, numrow, 'e3v_n' , ze3v , ldxios = lwxios ) 152 CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', zgdepw , ldxios = lwxios ) 153 IF( lwxios ) CALL iom_swap( cxios_context ) 146 CALL iom_rstput( kt, nitrst, numrow, 'tmask' , tmask ) 147 CALL iom_rstput( kt, nitrst, numrow, 'ssmask' , ssmask ) 148 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n' , ze3t ) 149 CALL iom_rstput( kt, nitrst, numrow, 'e3u_n' , ze3u ) 150 CALL iom_rstput( kt, nitrst, numrow, 'e3v_n' , ze3v ) 151 CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', zgdepw ) 154 152 ! 155 153 END SUBROUTINE isfcpl_rst_write … … 174 172 !!---------------------------------------------------------------------- 175 173 ! 176 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 177 CALL iom_get( numror, jpdom_auto, 'ssmask' , zssmask_b, ldxios = lrxios ) ! need to extrapolate T/S 178 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 174 CALL iom_get( numror, jpdom_auto, 'ssmask' , zssmask_b ) ! need to extrapolate T/S 179 175 180 176 ! compute new ssh if we open a full water column … … 257 253 !!---------------------------------------------------------------------- 258 254 ! 259 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 260 CALL iom_get( numror, jpdom_auto, 'tmask' , ztmask_b, ldxios = lrxios ) ! need to extrapolate T/S 261 !CALL iom_get( numror, jpdom_auto, 'wmask' , zwmask_b, ldxios = lrxios ) ! need to extrapolate T/S 262 !CALL iom_get( numror, jpdom_auto, 'gdepw_n', zdepw_b(:,:,:), ldxios = lrxios ) ! need to interpol vertical profile (vvl) 263 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 255 CALL iom_get( numror, jpdom_auto, 'tmask' , ztmask_b ) ! need to extrapolate T/S 256 !CALL iom_get( numror, jpdom_auto, 'wmask' , zwmask_b ) ! need to extrapolate T/S 257 !CALL iom_get( numror, jpdom_auto, 'gdepw_n', zdepw_b(:,:,:) ) ! need to interpol vertical profile (vvl) 264 258 ! 265 259 ! … … 405 399 !!---------------------------------------------------------------------- 406 400 ! 407 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 408 CALL iom_get( numror, jpdom_auto, 'tmask' , ztmask_b, ldxios = lrxios ) 409 CALL iom_get( numror, jpdom_auto, 'e3u_n' , ze3u_b , ldxios = lrxios ) 410 CALL iom_get( numror, jpdom_auto, 'e3v_n' , ze3v_b , ldxios = lrxios ) 411 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 401 CALL iom_get( numror, jpdom_auto, 'tmask' , ztmask_b ) 402 CALL iom_get( numror, jpdom_auto, 'e3u_n' , ze3u_b ) 403 CALL iom_get( numror, jpdom_auto, 'e3v_n' , ze3v_b ) 412 404 ! 413 405 ! 1.0: compute horizontal volume flux divergence difference before-after coupling … … 517 509 518 510 ! get restart variable 519 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 520 CALL iom_get( numror, jpdom_auto, 'tmask' , ztmask_b(:,:,:), ldxios = lrxios ) ! need to extrapolate T/S 521 CALL iom_get( numror, jpdom_auto, 'e3t_n' , ze3t_b(:,:,:) , ldxios = lrxios ) 522 CALL iom_get( numror, jpdom_auto, 'tn' , zt_b(:,:,:) , ldxios = lrxios ) 523 CALL iom_get( numror, jpdom_auto, 'sn' , zs_b(:,:,:) , ldxios = lrxios ) 524 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 511 CALL iom_get( numror, jpdom_auto, 'tmask' , ztmask_b(:,:,:) ) ! need to extrapolate T/S 512 CALL iom_get( numror, jpdom_auto, 'e3t_n' , ze3t_b(:,:,:) ) 513 CALL iom_get( numror, jpdom_auto, 'tn' , zt_b(:,:,:) ) 514 CALL iom_get( numror, jpdom_auto, 'sn' , zs_b(:,:,:) ) 525 515 526 516 ! compute run length -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ISF/isfrst.F90
r13871 r13932 53 53 IF( iom_varid( numror, cfwf_b, ldstop = .FALSE. ) > 0 ) THEN 54 54 IF(lwp) WRITE(numout,*) ' nit000-1 isf tracer content forcing fields read in the restart file' 55 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) ) 56 CALL iom_get( numror, jpdom_auto, cfwf_b, pfwf_b(:,:) , ldxios = lrxios ) ! before ice shelf melt 57 CALL iom_get( numror, jpdom_auto, chc_b , ptsc_b (:,:,jp_tem), ldxios = lrxios ) ! before ice shelf heat flux 58 CALL iom_get( numror, jpdom_auto, csc_b , ptsc_b (:,:,jp_sal), ldxios = lrxios ) ! before ice shelf heat flux 59 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) ) 55 CALL iom_get( numror, jpdom_auto, cfwf_b, pfwf_b(:,:) ) ! before ice shelf melt 56 CALL iom_get( numror, jpdom_auto, chc_b , ptsc_b (:,:,jp_tem) ) ! before ice shelf heat flux 57 CALL iom_get( numror, jpdom_auto, csc_b , ptsc_b (:,:,jp_sal) ) ! before ice shelf heat flux 60 58 ELSE 61 59 pfwf_b(:,:) = pfwf(:,:) … … 91 89 ! 92 90 ! write restart variable 93 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 94 CALL iom_rstput( kt, nitrst, numrow, cfwf_b, pfwf(:,:) , ldxios = lwxios ) 95 CALL iom_rstput( kt, nitrst, numrow, chc_b , ptsc(:,:,jp_tem), ldxios = lwxios ) 96 CALL iom_rstput( kt, nitrst, numrow, csc_b , ptsc(:,:,jp_sal), ldxios = lwxios ) 97 IF( lwxios ) CALL iom_swap( cxios_context ) 91 CALL iom_rstput( kt, nitrst, numrow, cfwf_b, pfwf(:,:) ) 92 CALL iom_rstput( kt, nitrst, numrow, chc_b , ptsc(:,:,jp_tem) ) 93 CALL iom_rstput( kt, nitrst, numrow, csc_b , ptsc(:,:,jp_sal) ) 98 94 ! 99 95 END SUBROUTINE isfrst_write -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/SBC/sbcapr.F90
r13871 r13932 148 148 ! ! ---------------------------------------- ! 149 149 ! !* Restart: read in restart file 150 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )151 150 IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN 152 151 IF(lwp) WRITE(numout,*) 'sbc_apr: ssh_ibb read in the restart file' 153 CALL iom_get( numror, jpdom_auto, 'ssh_ibb', ssh_ibb , ldxios = lrxios) ! before inv. barometer ssh152 CALL iom_get( numror, jpdom_auto, 'ssh_ibb', ssh_ibb ) ! before inv. barometer ssh 154 153 ! 155 154 ELSE !* no restart: set from nit000 values … … 157 156 ssh_ibb(:,:) = ssh_ib(:,:) 158 157 ENDIF 159 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )160 158 ENDIF 161 159 ! ! ---------------------------------------- ! … … 165 163 IF(lwp) WRITE(numout,*) 'sbc_apr : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp 166 164 IF(lwp) WRITE(numout,*) '~~~~' 167 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 168 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib, ldxios = lwxios ) 169 IF( lwxios ) CALL iom_swap( cxios_context ) 165 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib ) 170 166 ENDIF 171 167 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/SBC/sbcmod.F90
r13871 r13932 497 497 IF( kt == nit000 ) THEN ! set the forcing field at nit000 - 1 ! 498 498 ! ! ---------------------------------------- ! 499 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )500 499 IF( ln_rstart .AND. & !* Restart: read in restart file 501 500 & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN 502 501 IF(lwp) WRITE(numout,*) ' nit000-1 surface forcing fields red in the restart file' 503 CALL iom_get( numror, jpdom_auto, 'utau_b', utau_b , ldxios = lrxios) ! before i-stress (U-point)504 CALL iom_get( numror, jpdom_auto, 'vtau_b', vtau_b , ldxios = lrxios) ! before j-stress (V-point)505 CALL iom_get( numror, jpdom_auto, 'qns_b', qns_b , ldxios = lrxios) ! before non solar heat flux (T-point)502 CALL iom_get( numror, jpdom_auto, 'utau_b', utau_b ) ! before i-stress (U-point) 503 CALL iom_get( numror, jpdom_auto, 'vtau_b', vtau_b ) ! before j-stress (V-point) 504 CALL iom_get( numror, jpdom_auto, 'qns_b', qns_b ) ! before non solar heat flux (T-point) 506 505 ! The 3D heat content due to qsr forcing is treated in traqsr 507 ! CALL iom_get( numror, jpdom_auto, 'qsr_b' , qsr_b , ldxios = lrxios) ! before solar heat flux (T-point)508 CALL iom_get( numror, jpdom_auto, 'emp_b', emp_b , ldxios = lrxios) ! before freshwater flux (T-point)506 ! CALL iom_get( numror, jpdom_auto, 'qsr_b' , qsr_b ) ! before solar heat flux (T-point) 507 CALL iom_get( numror, jpdom_auto, 'emp_b', emp_b ) ! before freshwater flux (T-point) 509 508 ! To ensure restart capability with 3.3x/3.4 restart files !! to be removed in v3.6 510 509 IF( iom_varid( numror, 'sfx_b', ldstop = .FALSE. ) > 0 ) THEN 511 CALL iom_get( numror, jpdom_auto, 'sfx_b', sfx_b , ldxios = lrxios) ! before salt flux (T-point)510 CALL iom_get( numror, jpdom_auto, 'sfx_b', sfx_b ) ! before salt flux (T-point) 512 511 ELSE 513 512 sfx_b (:,:) = sfx(:,:) … … 521 520 sfx_b (:,:) = sfx (:,:) 522 521 ENDIF 523 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )524 522 ENDIF 525 523 ! ! ---------------------------------------- ! … … 530 528 & 'at it= ', kt,' date= ', ndastp 531 529 IF(lwp) WRITE(numout,*) '~~~~' 532 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 533 CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau, ldxios = lwxios ) 534 CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau, ldxios = lwxios ) 535 CALL iom_rstput( kt, nitrst, numrow, 'qns_b' , qns, ldxios = lwxios ) 530 CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau ) 531 CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau ) 532 CALL iom_rstput( kt, nitrst, numrow, 'qns_b' , qns ) 536 533 ! The 3D heat content due to qsr forcing is treated in traqsr 537 534 ! CALL iom_rstput( kt, nitrst, numrow, 'qsr_b' , qsr ) 538 CALL iom_rstput( kt, nitrst, numrow, 'emp_b' , emp, ldxios = lwxios ) 539 CALL iom_rstput( kt, nitrst, numrow, 'sfx_b' , sfx, ldxios = lwxios ) 540 IF( lwxios ) CALL iom_swap( cxios_context ) 535 CALL iom_rstput( kt, nitrst, numrow, 'emp_b' , emp ) 536 CALL iom_rstput( kt, nitrst, numrow, 'sfx_b' , sfx ) 541 537 ENDIF 542 538 ! ! ---------------------------------------- ! -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/SBC/sbcrnf.F90
r13871 r13932 157 157 IF( kt == nit000 ) THEN ! set the forcing field at nit000 - 1 ! 158 158 ! ! ---------------------------------------- ! 159 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )160 159 IF( ln_rstart .AND. & !* Restart: read in restart file 161 160 & iom_varid( numror, 'rnf_b', ldstop = .FALSE. ) > 0 ) THEN 162 161 IF(lwp) WRITE(numout,*) ' nit000-1 runoff forcing fields red in the restart file', lrxios 163 CALL iom_get( numror, jpdom_auto, 'rnf_b', rnf_b , ldxios = lrxios) ! before runoff164 CALL iom_get( numror, jpdom_auto, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem) , ldxios = lrxios) ! before heat content of runoff165 CALL iom_get( numror, jpdom_auto, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal) , ldxios = lrxios) ! before salinity content of runoff162 CALL iom_get( numror, jpdom_auto, 'rnf_b', rnf_b ) ! before runoff 163 CALL iom_get( numror, jpdom_auto, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem) ) ! before heat content of runoff 164 CALL iom_get( numror, jpdom_auto, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal) ) ! before salinity content of runoff 166 165 ELSE !* no restart: set from nit000 values 167 166 IF(lwp) WRITE(numout,*) ' nit000-1 runoff forcing fields set to nit000' … … 169 168 rnf_tsc_b(:,:,:) = rnf_tsc(:,:,:) 170 169 ENDIF 171 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )172 170 ENDIF 173 171 ! ! ---------------------------------------- ! … … 178 176 & 'at it= ', kt,' date= ', ndastp 179 177 IF(lwp) WRITE(numout,*) '~~~~' 180 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 181 CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf, ldxios = lwxios ) 182 CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem), ldxios = lwxios ) 183 CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal), ldxios = lwxios ) 184 IF( lwxios ) CALL iom_swap( cxios_context ) 178 CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf ) 179 CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem) ) 180 CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal) ) 185 181 ENDIF 186 182 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/SBC/sbcssm.F90
r13871 r13932 154 154 IF(lwp) WRITE(numout,*) '~~~~~~~' 155 155 zf_sbc = REAL( nn_fsbc, wp ) 156 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 157 CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc, ldxios = lwxios ) ! sbc frequency 158 CALL iom_rstput( kt, nitrst, numrow, 'ssu_m' , ssu_m, ldxios = lwxios ) ! sea surface mean fields 159 CALL iom_rstput( kt, nitrst, numrow, 'ssv_m' , ssv_m, ldxios = lwxios ) 160 CALL iom_rstput( kt, nitrst, numrow, 'sst_m' , sst_m, ldxios = lwxios ) 161 CALL iom_rstput( kt, nitrst, numrow, 'sss_m' , sss_m, ldxios = lwxios ) 162 CALL iom_rstput( kt, nitrst, numrow, 'ssh_m' , ssh_m, ldxios = lwxios ) 163 CALL iom_rstput( kt, nitrst, numrow, 'e3t_m' , e3t_m, ldxios = lwxios ) 164 CALL iom_rstput( kt, nitrst, numrow, 'frq_m' , frq_m, ldxios = lwxios ) 165 ! 166 IF( lwxios ) CALL iom_swap( cxios_context ) 156 CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc ) ! sbc frequency 157 CALL iom_rstput( kt, nitrst, numrow, 'ssu_m' , ssu_m ) ! sea surface mean fields 158 CALL iom_rstput( kt, nitrst, numrow, 'ssv_m' , ssv_m ) 159 CALL iom_rstput( kt, nitrst, numrow, 'sst_m' , sst_m ) 160 CALL iom_rstput( kt, nitrst, numrow, 'sss_m' , sss_m ) 161 CALL iom_rstput( kt, nitrst, numrow, 'ssh_m' , ssh_m ) 162 CALL iom_rstput( kt, nitrst, numrow, 'e3t_m' , e3t_m ) 163 CALL iom_rstput( kt, nitrst, numrow, 'frq_m' , frq_m ) 164 ! 167 165 ENDIF 168 166 ! … … 206 204 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~ ' 207 205 ! 208 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )209 206 IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN 210 207 l_ssm_mean = .TRUE. 211 CALL iom_get( numror , 'nn_fsbc', zf_sbc ,ldxios = lrxios) ! sbc frequency of previous run212 CALL iom_get( numror, jpdom_auto, 'ssu_m' , ssu_m, ldxios = lrxios,cd_type = 'U', psgn = -1._wp ) ! sea surface mean velocity (U-point)213 CALL iom_get( numror, jpdom_auto, 'ssv_m' , ssv_m, ldxios = lrxios,cd_type = 'V', psgn = -1._wp ) ! " " velocity (V-point)214 CALL iom_get( numror, jpdom_auto, 'sst_m' , sst_m , ldxios = lrxios) ! " " temperature (T-point)215 CALL iom_get( numror, jpdom_auto, 'sss_m' , sss_m , ldxios = lrxios) ! " " salinity (T-point)216 CALL iom_get( numror, jpdom_auto, 'ssh_m' , ssh_m , ldxios = lrxios) ! " " height (T-point)217 CALL iom_get( numror, jpdom_auto, 'e3t_m' , e3t_m , ldxios = lrxios) ! 1st level thickness (T-point)208 CALL iom_get( numror , 'nn_fsbc', zf_sbc ) ! sbc frequency of previous run 209 CALL iom_get( numror, jpdom_auto, 'ssu_m' , ssu_m, cd_type = 'U', psgn = -1._wp ) ! sea surface mean velocity (U-point) 210 CALL iom_get( numror, jpdom_auto, 'ssv_m' , ssv_m, cd_type = 'V', psgn = -1._wp ) ! " " velocity (V-point) 211 CALL iom_get( numror, jpdom_auto, 'sst_m' , sst_m ) ! " " temperature (T-point) 212 CALL iom_get( numror, jpdom_auto, 'sss_m' , sss_m ) ! " " salinity (T-point) 213 CALL iom_get( numror, jpdom_auto, 'ssh_m' , ssh_m ) ! " " height (T-point) 214 CALL iom_get( numror, jpdom_auto, 'e3t_m' , e3t_m ) ! 1st level thickness (T-point) 218 215 ! fraction of solar net radiation absorbed in 1st T level 219 216 IF( iom_varid( numror, 'frq_m', ldstop = .FALSE. ) > 0 ) THEN 220 CALL iom_get( numror, jpdom_auto, 'frq_m' , frq_m , ldxios = lrxios)217 CALL iom_get( numror, jpdom_auto, 'frq_m' , frq_m ) 221 218 ELSE 222 219 frq_m(:,:) = 1._wp ! default definition … … 237 234 ENDIF 238 235 ENDIF 239 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )240 236 ENDIF 241 237 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/TRA/traqsr.F90
r13871 r13932 135 135 ! !-----------------------------------! 136 136 IF( kt == nit000 ) THEN !== 1st time step ==! 137 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )138 137 IF( ln_rstart .AND. iom_varid( numror, 'qsr_hc_b', ldstop = .FALSE. ) > 0 .AND. .NOT.l_1st_euler ) THEN ! read in restart 139 138 IF(lwp) WRITE(numout,*) ' nit000-1 qsr tracer content forcing field read in the restart file' 140 139 z1_2 = 0.5_wp 141 CALL iom_get( numror, jpdom_auto, 'qsr_hc_b', qsr_hc_b , ldxios = lrxios) ! before heat content trend due to Qsr flux140 CALL iom_get( numror, jpdom_auto, 'qsr_hc_b', qsr_hc_b ) ! before heat content trend due to Qsr flux 142 141 ELSE ! No restart or restart not found: Euler forward time stepping 143 142 z1_2 = 1._wp 144 143 qsr_hc_b(:,:,:) = 0._wp 145 144 ENDIF 146 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )147 145 ELSE !== Swap of qsr heat content ==! 148 146 z1_2 = 0.5_wp … … 294 292 ! 295 293 IF( lrst_oce ) THEN ! write in the ocean restart file 296 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 297 CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b' , qsr_hc , ldxios = lwxios ) 298 CALL iom_rstput( kt, nitrst, numrow, 'fraqsr_1lev', fraqsr_1lev, ldxios = lwxios ) 299 IF( lwxios ) CALL iom_swap( cxios_context ) 294 CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b' , qsr_hc ) 295 CALL iom_rstput( kt, nitrst, numrow, 'fraqsr_1lev', fraqsr_1lev ) 300 296 ENDIF 301 297 ! … … 432 428 ! 433 429 ! 1st ocean level attenuation coefficient (used in sbcssm) 434 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )435 430 IF( iom_varid( numror, 'fraqsr_1lev', ldstop = .FALSE. ) > 0 ) THEN 436 CALL iom_get( numror, jpdom_auto, 'fraqsr_1lev' , fraqsr_1lev , ldxios = lrxios)431 CALL iom_get( numror, jpdom_auto, 'fraqsr_1lev' , fraqsr_1lev ) 437 432 ELSE 438 433 fraqsr_1lev(:,:) = 1._wp ! default : no penetration 439 434 ENDIF 440 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )441 435 ! 442 436 END SUBROUTINE tra_qsr_init -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/TRA/trasbc.F90
r13871 r13932 107 107 ! !== Set before sbc tracer content fields ==! 108 108 IF( kt == nit000 ) THEN !* 1st time-step 109 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )110 109 IF( ln_rstart .AND. & ! Restart: read in restart file 111 110 & iom_varid( numror, 'sbc_hc_b', ldstop = .FALSE. ) > 0 ) THEN … … 113 112 zfact = 0.5_wp 114 113 sbc_tsc(:,:,:) = 0._wp 115 CALL iom_get( numror, jpdom_auto, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem) , ldxios = lrxios) ! before heat content sbc trend116 CALL iom_get( numror, jpdom_auto, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal) , ldxios = lrxios) ! before salt content sbc trend114 CALL iom_get( numror, jpdom_auto, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem) ) ! before heat content sbc trend 115 CALL iom_get( numror, jpdom_auto, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal) ) ! before salt content sbc trend 117 116 ELSE ! No restart or restart not found: Euler forward time stepping 118 117 zfact = 1._wp … … 120 119 sbc_tsc_b(:,:,:) = 0._wp 121 120 ENDIF 122 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )123 121 ELSE !* other time-steps: swap of forcing fields 124 122 zfact = 0.5_wp … … 147 145 ! 148 146 IF( lrst_oce ) THEN !== write sbc_tsc in the ocean restart file ==! 149 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 150 CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem), ldxios = lwxios ) 151 CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal), ldxios = lwxios ) 152 IF( lwxios ) CALL iom_swap( cxios_context ) 147 CALL iom_rstput( kt, nitrst, numrow, 'sbc_hc_b', sbc_tsc(:,:,jp_tem) ) 148 CALL iom_rstput( kt, nitrst, numrow, 'sbc_sc_b', sbc_tsc(:,:,jp_sal) ) 153 149 ENDIF 154 150 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ZDF/zdfgls.F90
r13871 r13932 1084 1084 ! ! --------------- 1085 1085 IF( ln_rstart ) THEN !* Read the restart file 1086 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )1087 1086 id1 = iom_varid( numror, 'en' , ldstop = .FALSE. ) 1088 1087 id2 = iom_varid( numror, 'avt_k' , ldstop = .FALSE. ) … … 1091 1090 ! 1092 1091 IF( MIN( id1, id2, id3, id4 ) > 0 ) THEN ! all required arrays exist 1093 CALL iom_get( numror, jpdom_auto, 'en' , en , ldxios = lrxios)1094 CALL iom_get( numror, jpdom_auto, 'avt_k' , avt_k , ldxios = lrxios)1095 CALL iom_get( numror, jpdom_auto, 'avm_k' , avm_k , ldxios = lrxios)1096 CALL iom_get( numror, jpdom_auto, 'hmxl_n', hmxl_n , ldxios = lrxios)1092 CALL iom_get( numror, jpdom_auto, 'en' , en ) 1093 CALL iom_get( numror, jpdom_auto, 'avt_k' , avt_k ) 1094 CALL iom_get( numror, jpdom_auto, 'avm_k' , avm_k ) 1095 CALL iom_get( numror, jpdom_auto, 'hmxl_n', hmxl_n ) 1097 1096 ELSE 1098 1097 IF(lwp) WRITE(numout,*) … … 1102 1101 ! avt_k, avm_k already set to the background value in zdf_phy_init 1103 1102 ENDIF 1104 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )1105 1103 ELSE !* Start from rest 1106 1104 IF(lwp) WRITE(numout,*) … … 1114 1112 ! ! ------------------- 1115 1113 IF(lwp) WRITE(numout,*) '---- gls-rst ----' 1116 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 1117 CALL iom_rstput( kt, nitrst, numrow, 'en' , en , ldxios = lwxios ) 1118 CALL iom_rstput( kt, nitrst, numrow, 'avt_k' , avt_k , ldxios = lwxios ) 1119 CALL iom_rstput( kt, nitrst, numrow, 'avm_k' , avm_k , ldxios = lwxios ) 1120 CALL iom_rstput( kt, nitrst, numrow, 'hmxl_n', hmxl_n, ldxios = lwxios ) 1121 IF( lwxios ) CALL iom_swap( cxios_context ) 1114 CALL iom_rstput( kt, nitrst, numrow, 'en' , en ) 1115 CALL iom_rstput( kt, nitrst, numrow, 'avt_k' , avt_k ) 1116 CALL iom_rstput( kt, nitrst, numrow, 'avm_k' , avm_k ) 1117 CALL iom_rstput( kt, nitrst, numrow, 'hmxl_n', hmxl_n ) 1122 1118 ! 1123 1119 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ZDF/zdfosm.F90
r13871 r13932 1467 1467 !!----------------------------------------------------------------------------- 1468 1468 IF( TRIM(cdrw) == 'READ'.AND. ln_rstart) THEN 1469 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )1470 1469 id1 = iom_varid( numror, 'wn' , ldstop = .FALSE. ) 1471 1470 IF( id1 > 0 ) THEN ! 'wn' exists; read 1472 CALL iom_get( numror, jpdom_auto, 'wn', ww , ldxios = lrxios)1471 CALL iom_get( numror, jpdom_auto, 'wn', ww ) 1473 1472 WRITE(numout,*) ' ===>>>> : ww read from restart file' 1474 1473 ELSE … … 1479 1478 id2 = iom_varid( numror, 'hbli' , ldstop = .FALSE. ) 1480 1479 IF( id1 > 0 .AND. id2 > 0) THEN ! 'hbl' exists; read and return 1481 CALL iom_get( numror, jpdom_auto, 'hbl' , hbl , ldxios = lrxios)1482 CALL iom_get( numror, jpdom_auto, 'hbli', hbli , ldxios = lrxios)1480 CALL iom_get( numror, jpdom_auto, 'hbl' , hbl ) 1481 CALL iom_get( numror, jpdom_auto, 'hbli', hbli ) 1483 1482 WRITE(numout,*) ' ===>>>> : hbl & hbli read from restart file' 1484 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )1485 1483 RETURN 1486 1484 ELSE ! 'hbl' & 'hbli' not in restart file, recalculate 1487 1485 WRITE(numout,*) ' ===>>>> : previous run without osmosis scheme, hbl computed from stratification' 1488 1486 END IF 1489 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )1490 1487 END IF 1491 1488 … … 1495 1492 IF( TRIM(cdrw) == 'WRITE') THEN !* Write hbli into the restart file, then return 1496 1493 IF(lwp) WRITE(numout,*) '---- osm-rst ----' 1497 CALL iom_rstput( kt, nitrst, numrow, 'wn' , ww , ldxios = lwxios)1498 CALL iom_rstput( kt, nitrst, numrow, 'hbl' , hbl , ldxios = lwxios)1499 CALL iom_rstput( kt, nitrst, numrow, 'hbli' , hbli , ldxios = lwxios)1494 CALL iom_rstput( kt, nitrst, numrow, 'wn' , ww ) 1495 CALL iom_rstput( kt, nitrst, numrow, 'hbl' , hbl ) 1496 CALL iom_rstput( kt, nitrst, numrow, 'hbli' , hbli ) 1500 1497 RETURN 1501 1498 END IF -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ZDF/zdfric.F90
r13871 r13932 206 206 ! !* Read the restart file 207 207 IF( ln_rstart ) THEN 208 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )209 208 id1 = iom_varid( numror, 'avt_k', ldstop = .FALSE. ) 210 209 id2 = iom_varid( numror, 'avm_k', ldstop = .FALSE. ) 211 210 ! 212 211 IF( MIN( id1, id2 ) > 0 ) THEN ! restart exists => read it 213 CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k , ldxios = lrxios)214 CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k , ldxios = lrxios)212 CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k ) 213 CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k ) 215 214 ENDIF 216 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )217 215 ENDIF 218 216 ! !* otherwise Kz already set to the background value in zdf_phy_init … … 221 219 ! ! ------------------- 222 220 IF(lwp) WRITE(numout,*) '---- ric-rst ----' 223 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 224 CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k, ldxios = lwxios ) 225 CALL iom_rstput( kt, nitrst, numrow, 'avm_k', avm_k, ldxios = lwxios) 226 IF( lwxios ) CALL iom_swap( cxios_context ) 221 CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k ) 222 CALL iom_rstput( kt, nitrst, numrow, 'avm_k', avm_k) 227 223 ! 228 224 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/ZDF/zdftke.F90
r13871 r13932 746 746 ! ! --------------- 747 747 IF( ln_rstart ) THEN !* Read the restart file 748 IF( lrxios ) CALL iom_swap( TRIM(cr_ocerst_cxt) )749 748 id1 = iom_varid( numror, 'en' , ldstop = .FALSE. ) 750 749 id2 = iom_varid( numror, 'avt_k', ldstop = .FALSE. ) … … 753 752 ! 754 753 IF( MIN( id1, id2, id3, id4 ) > 0 ) THEN ! fields exist 755 CALL iom_get( numror, jpdom_auto, 'en' , en , ldxios = lrxios)756 CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k , ldxios = lrxios)757 CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k , ldxios = lrxios)758 CALL iom_get( numror, jpdom_auto, 'dissl', dissl , ldxios = lrxios)754 CALL iom_get( numror, jpdom_auto, 'en' , en ) 755 CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k ) 756 CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k ) 757 CALL iom_get( numror, jpdom_auto, 'dissl', dissl ) 759 758 ELSE ! start TKE from rest 760 759 IF(lwp) WRITE(numout,*) … … 764 763 ! avt_k, avm_k already set to the background value in zdf_phy_init 765 764 ENDIF 766 IF( lrxios ) CALL iom_swap( TRIM(cxios_context) )767 765 ELSE !* Start from rest 768 766 IF(lwp) WRITE(numout,*) … … 776 774 ! ! ------------------- 777 775 IF(lwp) WRITE(numout,*) '---- tke_rst ----' 778 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt ) 779 CALL iom_rstput( kt, nitrst, numrow, 'en' , en , ldxios = lwxios ) 780 CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k, ldxios = lwxios ) 781 CALL iom_rstput( kt, nitrst, numrow, 'avm_k', avm_k, ldxios = lwxios ) 782 CALL iom_rstput( kt, nitrst, numrow, 'dissl', dissl, ldxios = lwxios ) 783 IF( lwxios ) CALL iom_swap( cxios_context ) 776 CALL iom_rstput( kt, nitrst, numrow, 'en' , en ) 777 CALL iom_rstput( kt, nitrst, numrow, 'avt_k', avt_k ) 778 CALL iom_rstput( kt, nitrst, numrow, 'avm_k', avm_k ) 779 CALL iom_rstput( kt, nitrst, numrow, 'dissl', dissl ) 784 780 ! 785 781 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/step.F90
r13871 r13932 355 355 IF( kstp == nit000 ) THEN ! 1st time step only 356 356 CALL iom_close( numror ) ! close input ocean restart file 357 IF( lrxios ) CALL iom_context_finalize( cr_ocerst_cxt )357 IF( lrxios ) CALL iom_context_finalize( cr_ocerst_cxt ) 358 358 IF(lwm) CALL FLUSH ( numond ) ! flush output namelist oce 359 359 IF(lwm .AND. numoni /= -1 ) CALL FLUSH ( numoni ) ! flush output namelist ice (if exist) -
NEMO/branches/2020/dev_12905_xios_restart/src/OFF/dtadyn.F90
r13727 r13932 46 46 USE fldread ! read input fields 47 47 USE timing ! Timing 48 USE trc, ONLY : ln_rsttr, numrtr, numrtw,lrst_trc48 USE trc, ONLY : ln_rsttr, lrst_trc 49 49 50 50 IMPLICIT NONE -
NEMO/branches/2020/dev_12905_xios_restart/src/SAS/step.F90
r13871 r13932 162 162 ELSE 163 163 CALL iom_context_finalize( cw_ocerst_cxt ) 164 iom_file(numrow)%nfid = 0 165 numrow = 0 164 166 ENDIF 165 167 lrst_oce = .FALSE. -
NEMO/branches/2020/dev_12905_xios_restart/src/SWE/domvvl.F90
r13871 r13932 1105 1105 IF( ln_rstart ) THEN !* Read the restart file 1106 1106 CALL rst_read_open ! open the restart file if necessary 1107 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) , ldxios = lrxios)1107 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) ) 1108 1108 ! 1109 1109 id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) … … 1118 1118 ! 1119 1119 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 1120 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)1121 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)1120 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 1121 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 1122 1122 ! needed to restart if land processor not computed 1123 1123 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' … … 1133 1133 IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 1134 1134 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 1135 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)1135 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 1136 1136 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 1137 1137 l_1st_euler = .true. … … 1140 1140 IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 1141 1141 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 1142 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)1142 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 1143 1143 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 1144 1144 l_1st_euler = .true. … … 1165 1165 ! ! ----------------------- ! 1166 1166 IF( MIN( id3, id4 ) > 0 ) THEN ! all required arrays exist 1167 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lrxios)1168 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lrxios)1167 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 1168 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 1169 1169 ELSE ! one at least array is missing 1170 1170 tilde_e3t_b(:,:,:) = 0.0_wp … … 1175 1175 ! ! ------------ ! 1176 1176 IF( id5 > 0 ) THEN ! required array exists 1177 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lrxios)1177 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) ) 1178 1178 ELSE ! array is missing 1179 1179 hdiv_lf(:,:,:) = 0.0_wp … … 1251 1251 ! ! =================== 1252 1252 IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 1253 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt )1254 1253 ! ! --------- ! 1255 1254 ! ! all cases ! 1256 1255 ! ! --------- ! 1257 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lwxios)1258 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lwxios)1256 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) ) 1257 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) ) 1259 1258 ! ! ----------------------- ! 1260 1259 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases ! 1261 1260 ! ! ----------------------- ! 1262 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lwxios)1263 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lwxios)1261 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:)) 1262 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:)) 1264 1263 END IF 1265 1264 ! ! -------------! 1266 1265 IF( ln_vvl_ztilde ) THEN ! z_tilde case ! 1267 1266 ! ! ------------ ! 1268 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lwxios)1267 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:)) 1269 1268 ENDIF 1270 1269 ! 1271 IF( lwxios ) CALL iom_swap( cxios_context )1272 1270 ENDIF 1273 1271 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/C14/trcini_c14.F90
r13871 r13932 68 68 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 69 69 ! 70 IF(lrxios) CALL iom_swap(cr_toprst_cxt) 71 CALL iom_get( numrtr, 'co2sbc', co2sbc, ldxios = lrxios ) 72 CALL iom_get( numrtr, jpdom_auto, 'c14sbc', c14sbc, ldxios = lrxios ) 73 CALL iom_get( numrtr, jpdom_auto, 'exch_co2', exch_co2, ldxios = lrxios ) 74 CALL iom_get( numrtr, jpdom_auto, 'exch_c14', exch_c14, ldxios = lrxios ) 75 CALL iom_get( numrtr, jpdom_auto, 'qtr_c14', qtr_c14, ldxios = lrxios ) 76 IF(lrxios) CALL iom_swap(cxios_context) 70 CALL iom_get( numrtr, 'co2sbc', co2sbc ) 71 CALL iom_get( numrtr, jpdom_auto, 'c14sbc', c14sbc ) 72 CALL iom_get( numrtr, jpdom_auto, 'exch_co2', exch_co2 ) 73 CALL iom_get( numrtr, jpdom_auto, 'exch_c14', exch_c14 ) 74 CALL iom_get( numrtr, jpdom_auto, 'qtr_c14', qtr_c14 ) 77 75 ! 78 76 END IF … … 87 85 ELSE 88 86 ! 89 IF(lrxios) CALL iom_swap(cr_toprst_cxt) 90 CALL iom_get( numrtr, jpdom_auto, 'qint_c14', qint_c14, ldxios = lrxios ) 91 IF(lrxios) CALL iom_swap(cxios_context) 87 CALL iom_get( numrtr, jpdom_auto, 'qint_c14', qint_c14 ) 92 88 ! 93 89 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/C14/trcsms_c14.F90
r13871 r13932 144 144 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 145 145 ! 146 IF( lwxios ) CALL iom_swap( cw_toprst_cxt ) 147 CALL iom_rstput( kt, nitrst, numrtw, 'co2sbc', co2sbc, ldxios = lwxios ) ! These five need & 148 CALL iom_rstput( kt, nitrst, numrtw, 'c14sbc', c14sbc, ldxios = lwxios ) ! & to be written & 149 CALL iom_rstput( kt, nitrst, numrtw, 'exch_co2', exch_co2, ldxios = lwxios ) ! & for temporal & 150 CALL iom_rstput( kt, nitrst, numrtw, 'exch_c14', exch_c14, ldxios = lwxios ) ! & averages & 151 CALL iom_rstput( kt, nitrst, numrtw, 'qtr_c14', qtr_c14, ldxios = lwxios ) ! & to be coherent. 152 CALL iom_rstput( kt, nitrst, numrtw, 'qint_c14', qint_c14, ldxios = lwxios ) ! Cumulative 153 IF( lwxios ) CALL iom_swap( cxios_context ) 146 CALL iom_rstput( kt, nitrst, numrtw, 'co2sbc', co2sbc ) ! These five need & 147 CALL iom_rstput( kt, nitrst, numrtw, 'c14sbc', c14sbc ) ! & to be written & 148 CALL iom_rstput( kt, nitrst, numrtw, 'exch_co2', exch_co2 ) ! & for temporal & 149 CALL iom_rstput( kt, nitrst, numrtw, 'exch_c14', exch_c14 ) ! & averages & 150 CALL iom_rstput( kt, nitrst, numrtw, 'qtr_c14', qtr_c14 ) ! & to be coherent. 151 CALL iom_rstput( kt, nitrst, numrtw, 'qint_c14', qint_c14 ) ! Cumulative 154 152 ! 155 153 ENDIF -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/CFC/trcsms_cfc.F90
r13871 r13932 179 179 IF(lwp) WRITE(numout,*) '~~~~' 180 180 jl = 0 181 IF( lwxios ) CALL iom_swap( cw_toprst_cxt )182 181 DO jn = jp_cfc0, jp_cfc1 183 182 jl = jl + 1 184 CALL iom_rstput( kt, nitrst, numrtw, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl) , ldxios = lwxios)183 CALL iom_rstput( kt, nitrst, numrtw, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl) ) 185 184 END DO 186 IF( lwxios ) CALL iom_swap( cxios_context )187 185 ENDIF 188 186 ! … … 298 296 ! 299 297 jl = 0 300 IF(lrxios) CALL iom_swap(cr_toprst_cxt)301 298 DO jn = jp_cfc0, jp_cfc1 302 299 jl = jl + 1 303 CALL iom_get( numrtr, jpdom_auto, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl) , ldxios = lrxios)300 CALL iom_get( numrtr, jpdom_auto, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl) ) 304 301 END DO 305 IF(lrxios) CALL iom_swap(cxios_context)306 302 ENDIF 307 303 IF(lwp) WRITE(numout,*) -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/P2Z/p2zexp.F90
r13871 r13932 134 134 & 'at it= ', kt,' date= ', ndastp 135 135 IF(lwp) WRITE(numout,*) '~~~~' 136 IF( lwxios ) CALL iom_swap( cw_toprst_cxt ) 137 CALL iom_rstput( kt, nitrst, numrtw, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:), ldxios = lwxios ) 138 CALL iom_rstput( kt, nitrst, numrtw, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:), ldxios = lwxios ) 139 IF( lwxios ) CALL iom_swap( cxios_context ) 136 CALL iom_rstput( kt, nitrst, numrtw, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) ) 137 CALL iom_rstput( kt, nitrst, numrtw, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) ) 140 138 ENDIF 141 139 ! … … 216 214 ! 217 215 IF( ln_rsttr ) THEN 218 IF(lrxios) CALL iom_swap(cr_toprst_cxt) 219 CALL iom_get( numrtr, jpdom_auto, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:), ldxios = lrxios ) 220 CALL iom_get( numrtr, jpdom_auto, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:), ldxios = lrxios ) 221 IF(lrxios) CALL iom_swap(cxios_context) 216 CALL iom_get( numrtr, jpdom_auto, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) ) 217 CALL iom_get( numrtr, jpdom_auto, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) ) 222 218 ELSE 223 219 sedpocb(:,:) = 0._wp -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/P4Z/p4zsms.F90
r13871 r13932 332 332 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 333 333 ! 334 IF(lrxios) CALL iom_swap(cr_toprst_cxt)335 334 IF( iom_varid( numrtr, 'PH', ldstop = .FALSE. ) > 0 ) THEN 336 CALL iom_get( numrtr, jpdom_auto, 'PH' , hi(:,:,:) , ldxios = lrxios)335 CALL iom_get( numrtr, jpdom_auto, 'PH' , hi(:,:,:) ) 337 336 ELSE 338 337 CALL p4z_che( Kbb, Kmm ) ! initialize the chemical constants 339 338 CALL ahini_for_at( hi, Kbb ) 340 339 ENDIF 341 CALL iom_get( numrtr, jpdom_auto, 'Silicalim', xksi(:,:) , ldxios = lrxios)340 CALL iom_get( numrtr, jpdom_auto, 'Silicalim', xksi(:,:) ) 342 341 IF( iom_varid( numrtr, 'Silicamax', ldstop = .FALSE. ) > 0 ) THEN 343 CALL iom_get( numrtr, jpdom_auto, 'Silicamax' , xksimax(:,:) , ldxios = lrxios)342 CALL iom_get( numrtr, jpdom_auto, 'Silicamax' , xksimax(:,:) ) 344 343 ELSE 345 344 xksimax(:,:) = xksi(:,:) … … 347 346 ! 348 347 IF( iom_varid( numrtr, 'tcflxcum', ldstop = .FALSE. ) > 0 ) THEN ! cumulative total flux of carbon 349 CALL iom_get( numrtr, 'tcflxcum' , t_oce_co2_flx_cum , ldxios = lrxios)348 CALL iom_get( numrtr, 'tcflxcum' , t_oce_co2_flx_cum ) 350 349 ELSE 351 350 t_oce_co2_flx_cum = 0._wp … … 354 353 IF( ln_p5z ) THEN 355 354 IF( iom_varid( numrtr, 'sized', ldstop = .FALSE. ) > 0 ) THEN 356 CALL iom_get( numrtr, jpdom_auto, 'sizep' , sizep(:,:,:) , ldxios = lrxios)357 CALL iom_get( numrtr, jpdom_auto, 'sizen' , sizen(:,:,:) , ldxios = lrxios)358 CALL iom_get( numrtr, jpdom_auto, 'sized' , sized(:,:,:) , ldxios = lrxios)355 CALL iom_get( numrtr, jpdom_auto, 'sizep' , sizep(:,:,:) ) 356 CALL iom_get( numrtr, jpdom_auto, 'sizen' , sizen(:,:,:) ) 357 CALL iom_get( numrtr, jpdom_auto, 'sized' , sized(:,:,:) ) 359 358 ELSE 360 359 sizep(:,:,:) = 1. … … 363 362 ENDIF 364 363 ENDIF 365 IF(lrxios) CALL iom_swap(cxios_context)366 364 ! 367 365 ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN … … 371 369 IF(lwp) WRITE(numout,*) '~~~~~~~' 372 370 ENDIF 373 IF( lwxios ) CALL iom_swap( cw_toprst_cxt ) 374 CALL iom_rstput( kt, nitrst, numrtw, 'PH', hi(:,:,:), ldxios = lwxios ) 375 CALL iom_rstput( kt, nitrst, numrtw, 'Silicalim', xksi(:,:), ldxios = lwxios ) 376 CALL iom_rstput( kt, nitrst, numrtw, 'Silicamax', xksimax(:,:), ldxios = lwxios ) 377 CALL iom_rstput( kt, nitrst, numrtw, 'tcflxcum', t_oce_co2_flx_cum, ldxios = lwxios ) 371 CALL iom_rstput( kt, nitrst, numrtw, 'PH', hi(:,:,:) ) 372 CALL iom_rstput( kt, nitrst, numrtw, 'Silicalim', xksi(:,:) ) 373 CALL iom_rstput( kt, nitrst, numrtw, 'Silicamax', xksimax(:,:) ) 374 CALL iom_rstput( kt, nitrst, numrtw, 'tcflxcum', t_oce_co2_flx_cum ) 378 375 IF( ln_p5z ) THEN 379 CALL iom_rstput( kt, nitrst, numrtw, 'sizep', sizep(:,:,:), ldxios = lwxios ) 380 CALL iom_rstput( kt, nitrst, numrtw, 'sizen', sizen(:,:,:), ldxios = lwxios ) 381 CALL iom_rstput( kt, nitrst, numrtw, 'sized', sized(:,:,:), ldxios = lwxios ) 382 ENDIF 383 IF( lwxios ) CALL iom_swap( cxios_context ) 376 CALL iom_rstput( kt, nitrst, numrtw, 'sizep', sizep(:,:,:) ) 377 CALL iom_rstput( kt, nitrst, numrtw, 'sizen', sizen(:,:,:) ) 378 CALL iom_rstput( kt, nitrst, numrtw, 'sized', sized(:,:,:) ) 379 ENDIF 384 380 ENDIF 385 381 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sed.F90
r13871 r13932 44 44 REAL , PUBLIC :: sedmask 45 45 REAL(wp), PUBLIC :: denssol !: density of solid material 46 INTEGER , PUBLIC :: numrsr, numrsw !: logical unit for sed restart (read and write)47 46 LOGICAL , PUBLIC :: lrst_sed !: logical to control the trc restart write 48 47 LOGICAL , PUBLIC :: ln_rst_sed = .TRUE. !: initialisation from a restart file or not -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sedrst.F90
r13871 r13932 91 91 clpname = TRIM(Agrif_CFixed())//"_"//clname 92 92 ENDIF 93 CALL iom_init( cw_sedrst_cxt, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE.)94 CALL iom_ swap( cxios_context)93 numrsw = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 94 CALL iom_init( cw_sedrst_cxt, kdid = numrsw, ld_closedef = .FALSE. ) 95 95 #else 96 96 clinfo = 'Can not use XIOS in trc_rst_opn' … … 138 138 zdta2 = 0. 139 139 140 IF(lrxios) CALL iom_swap(cr_sedrst_cxt)141 140 DO jn = 1, jptrased 142 141 cltra = TRIM(sedtrcd(jn)) 143 142 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 144 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta(:,:,:,jn) , ldxios = lrxios)143 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta(:,:,:,jn) ) 145 144 ELSE 146 145 zdta(:,:,:,jn) = 0.0 … … 161 160 cltra = TRIM(seddia3d(jn)) 162 161 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 163 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta1(:,:,:,jn) , ldxios = lrxios)162 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta1(:,:,:,jn) ) 164 163 ELSE 165 164 zdta1(:,:,:,jn) = 0.0 … … 188 187 cltra = "dbioturb" 189 188 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 190 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:) , ldxios = lrxios)189 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:) ) 191 190 ELSE 192 191 zdta2(:,:,:) = 0.0 … … 198 197 cltra = "irrig" 199 198 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 200 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:) , ldxios = lrxios)199 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:) ) 201 200 ELSE 202 201 zdta2(:,:,:) = 0.0 … … 208 207 cltra = "sedligand" 209 208 IF( iom_varid( numrsr, TRIM(cltra) , ldstop = .FALSE. ) > 0 ) THEN 210 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:) , ldxios = lrxios)209 CALL iom_get( numrsr, jpdom_auto, TRIM(cltra), zdta2(:,:,:) ) 211 210 ELSE 212 211 zdta2(:,:,:) = 0.0 … … 215 214 CALL pack_arr( jpoce, sedligand(1:jpoce,1:jpksed), & 216 215 & zdta2(1:jpi,1:jpj,1:jpksed), iarroce(1:jpoce) ) 217 IF(lrxios) CALL iom_swap(cxios_context)218 216 IF( ln_timing ) CALL timing_stop('sed_rst_read') 219 217 … … 259 257 !! 1. WRITE in nutwrs 260 258 !! ------------------ 261 IF( lwxios ) CALL iom_swap( cw_sedrst_cxt )262 259 ! zinfo(1) = REAL( kt) 263 CALL iom_rstput( kt, nitrst, numrsw, 'kt', REAL( kt , wp) , ldxios = lwxios)260 CALL iom_rstput( kt, nitrst, numrsw, 'kt', REAL( kt , wp) ) 264 261 265 262 ! Back to 2D geometry … … 291 288 DO jn = 1, jptrased 292 289 cltra = TRIM(sedtrcd(jn)) 293 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), trcsedi(:,:,:,jn) , ldxios = lwxios)290 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), trcsedi(:,:,:,jn) ) 294 291 ENDDO 295 292 296 293 DO jn = 1, 2 297 294 cltra = TRIM(seddia3d(jn)) 298 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), flxsedi3d(:,:,:,jn) , ldxios = lwxios)295 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), flxsedi3d(:,:,:,jn) ) 299 296 ENDDO 300 297 … … 303 300 304 301 cltra = "dbioturb" 305 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) , ldxios = lwxios)302 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 306 303 307 304 CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed) , iarroce(1:jpoce), & … … 309 306 310 307 cltra = "irrig" 311 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) , ldxios = lwxios)308 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 312 309 313 310 CALL unpack_arr( jpoce, zdta2(1:jpi,1:jpj,1:jpksed) , iarroce(1:jpoce), & … … 315 312 316 313 cltra = "sedligand" 317 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:), ldxios = lwxios ) 318 IF( lwxios ) CALL iom_swap( cxios_context ) 314 CALL iom_rstput( kt, nitrst, numrsw, TRIM(cltra), zdta2(:,:,:) ) 319 315 320 316 IF( kt == nitrst ) THEN … … 323 319 ELSE 324 320 CALL iom_context_finalize( cw_sedrst_cxt ) 321 iom_file(numrsw)%nfid = 0 322 numrsw = 0 325 323 ENDIF 326 324 IF( l_offline .AND. ln_rst_list ) THEN … … 384 382 cr_sedrst_cxt = 'sed_rst' 385 383 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SED' 386 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 387 clpname = cn_sedrst_in 388 ELSE 389 clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in 390 ENDIF 391 CALL iom_init( cr_sedrst_cxt, fname = TRIM(cn_sedrst_indir)//'/'//TRIM(clpname), & 392 idfp = iom_file(numrsr)%nfid, ld_closedef = .TRUE. ) 393 ENDIF 394 IF(lrxios) CALL iom_swap(cr_sedrst_cxt) 395 CALL iom_get ( numrsr, 'kt', zkt, ldxios = lrxios ) ! last time-step of previous run 396 IF(lrxios) CALL iom_swap(cxios_context) 384 ! IF( TRIM(Agrif_CFixed()) == '0' ) THEN 385 ! clpname = cn_sedrst_in 386 ! ELSE 387 ! clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in 388 ! ENDIF 389 CALL iom_init( cr_sedrst_cxt, kdid = numrsr, ld_closedef = .TRUE. ) 390 ENDIF 391 CALL iom_get ( numrsr, 'kt', zkt ) ! last time-step of previous run 397 392 IF(lwp) THEN 398 393 WRITE(numsed,*) ' *** Info read in restart : ' … … 415 410 ! ! set the date in offline mode 416 411 IF( ln_rst_sed .AND. nn_rstsed == 2 ) THEN 417 IF(lrxios) CALL iom_swap(cr_sedrst_cxt) 418 CALL iom_get( numrsr, 'ndastp', zndastp, ldxios = lrxios ) 412 CALL iom_get( numrsr, 'ndastp', zndastp ) 419 413 ndastp = NINT( zndastp ) 420 CALL iom_get( numrsr, 'adatrj', adatrj, ldxios = lrxios ) 421 IF(lrxios) CALL iom_swap(cr_ocerst_cxt) 414 CALL iom_get( numrsr, 'adatrj', adatrj ) 422 415 ELSE 423 416 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam … … 445 438 IF( lwxios ) CALL iom_init_closedef(cw_sedrst_cxt) 446 439 ENDIF 447 IF( lwxios ) CALL iom_swap( cw_sedrst_cxt ) 448 CALL iom_rstput( kt, nitrst, numrsw, 'kt' , REAL( kt , wp), ldxios = lwxios ) ! time-step 449 CALL iom_rstput( kt, nitrst, numrsw, 'ndastp' , REAL( ndastp, wp), ldxios = lwxios ) ! date 450 CALL iom_rstput( kt, nitrst, numrsw, 'adatrj' , adatrj, ldxios = lwxios ) ! number of elapsed days since 440 CALL iom_rstput( kt, nitrst, numrsw, 'kt' , REAL( kt , wp) ) ! time-step 441 CALL iom_rstput( kt, nitrst, numrsw, 'ndastp' , REAL( ndastp, wp) ) ! date 442 CALL iom_rstput( kt, nitrst, numrsw, 'adatrj' , adatrj ) ! number of elapsed days since 451 443 ! ! the begining of the run [s] 452 IF( lwxios ) CALL iom_swap( cxios_context )453 444 ENDIF 454 445 -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/PISCES/SED/sedstp.F90
r13871 r13932 87 87 CALL iom_close( numrsr ) ! close input tracer restart file 88 88 IF(lrxios) CALL iom_context_finalize( cr_sedrst_cxt ) 89 ! 89 ! IF(lwm) CALL FLUSH( numont ) ! flush namelist output 90 90 ENDIF 91 91 IF( lrst_sed ) CALL sed_rst_wri( kt ) ! restart file output -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/TRP/trcsbc.F90
r13871 r13932 87 87 IF(lwp) WRITE(numout,*) ' nittrc000-1 surface tracer content forcing fields read in the restart file' 88 88 zfact = 0.5_wp 89 IF(lrxios) CALL iom_swap(cr_toprst_cxt)90 89 DO jn = 1, jptra 91 CALL iom_get( numrtr, jpdom_auto, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc_b(:,:,jn) , ldxios = lrxios) ! before tracer content sbc90 CALL iom_get( numrtr, jpdom_auto, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc_b(:,:,jn) ) ! before tracer content sbc 92 91 END DO 93 IF(lrxios) CALL iom_swap(cxios_context)94 92 ELSE ! No restart or restart not found: Euler forward time stepping 95 93 zfact = 1._wp … … 183 181 & 'at it= ', kt,' date= ', ndastp 184 182 IF(lwp) WRITE(numout,*) '~~~~' 185 IF( lwxios ) CALL iom_swap( cw_toprst_cxt ) 186 DO jn = 1, jptra 187 CALL iom_rstput( kt, nitrst, numrtw, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc(:,:,jn), ldxios = lwxios ) 188 END DO 189 IF( lwxios ) CALL iom_swap( cxios_context ) 183 DO jn = 1, jptra 184 CALL iom_rstput( kt, nitrst, numrtw, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc(:,:,jn) ) 185 END DO 190 186 ENDIF 191 187 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/trc.F90
r13871 r13932 21 21 INTEGER, PUBLIC :: numonr = -1 !: reference passive tracer namelist output output.namelist.top 22 22 INTEGER, PUBLIC :: numstr !: tracer statistics 23 INTEGER, PUBLIC :: numrtr = -1 !: trc restart (read )24 INTEGER, PUBLIC :: numrtw !: trc restart ( write )25 23 CHARACTER(:), ALLOCATABLE, PUBLIC :: numnat_ref !: character buffer for reference passive tracer namelist_top_ref 26 24 CHARACTER(:), ALLOCATABLE, PUBLIC :: numnat_cfg !: character buffer for configuration specific passive tracer namelist_top_cfg -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/trcrst.F90
r13871 r13932 102 102 clpname = TRIM(Agrif_CFixed())//"_"//clname 103 103 ENDIF 104 CALL iom_init( cw_toprst_cxt, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE.)105 CALL iom_ swap( cxios_context)104 numrtw = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 105 CALL iom_init( cw_toprst_cxt, kdid = numrtw, ld_closedef = .FALSE. ) 106 106 #else 107 107 clinfo = 'Can not use XIOS in trc_rst_opn' … … 130 130 131 131 ! READ prognostic variables and computes diagnostic variable 132 IF(lrxios) CALL iom_swap(cr_toprst_cxt)133 132 DO jn = 1, jptra 134 CALL iom_get( numrtr, jpdom_auto, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) , ldxios = lrxios)133 CALL iom_get( numrtr, jpdom_auto, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) ) 135 134 END DO 136 135 137 136 DO jn = 1, jptra 138 CALL iom_get( numrtr, jpdom_auto, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb), ldxios = lrxios ) 139 END DO 140 ! 141 CALL iom_delay_rst( 'READ', 'TOP', numrtr ) ! read only TOP delayed global communication variables 142 IF(lrxios) CALL iom_swap(cxios_context) 137 CALL iom_get( numrtr, jpdom_auto, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) ) 138 END DO 139 ! 140 IF(.NOT.lrxios) CALL iom_delay_rst( 'READ', 'TOP', numrtr ) ! read only TOP delayed global communication variables 143 141 END SUBROUTINE trc_rst_read 144 142 … … 155 153 !!---------------------------------------------------------------------- 156 154 ! 157 IF( lwxios ) CALL iom_swap( cw_toprst_cxt ) 158 CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rn_Dt, ldxios = lwxios ) ! passive tracer time step (= ocean time step) 155 CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rn_Dt ) ! passive tracer time step (= ocean time step) 159 156 ! prognostic variables 160 157 ! -------------------- 161 158 DO jn = 1, jptra 162 CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) , ldxios = lwxios)159 CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) ) 163 160 END DO 164 161 165 162 DO jn = 1, jptra 166 CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb), ldxios = lwxios ) 167 END DO 168 IF( lwxios ) CALL iom_swap( cxios_context ) 169 ! 170 CALL iom_delay_rst( 'WRITE', 'TOP', numrtw ) ! save only TOP delayed global communication variables 163 CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), tr(:,:,:,jn,Kbb) ) 164 END DO 165 166 IF( .NOT. lwxios ) CALL iom_delay_rst( 'WRITE', 'TOP', numrtw ) ! save only TOP delayed global communication variables 171 167 172 168 IF( kt == nitrst ) THEN … … 174 170 IF(lwxios) THEN 175 171 CALL iom_context_finalize( cw_toprst_cxt ) 172 iom_file(numrtw)%nfid = 0 173 numrtw = 0 176 174 ELSE 177 175 CALL iom_close( numrtw ) ! close the restart file (only at last time step) … … 237 235 cr_toprst_cxt = 'top_rst' 238 236 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for TOP' 239 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 240 clpname = cn_trcrst_in 241 ELSE 242 clpname = TRIM(Agrif_CFixed())//"_"//cn_trcrst_in 243 ENDIF 244 CALL iom_init( cr_toprst_cxt, fname = TRIM(cn_trcrst_indir)//'/'//TRIM(clpname), & 245 idfp = iom_file(numrtr)%nfid, ld_closedef = .TRUE. ) 246 ENDIF 247 248 IF(lrxios) CALL iom_swap(cr_toprst_cxt) 249 CALL iom_get ( numrtr, 'kt', zkt, ldxios = lrxios ) ! last time-step of previous run 250 IF(lrxios) CALL iom_swap(cxios_context) 237 ! IF( TRIM(Agrif_CFixed()) == '0' ) THEN 238 ! clpname = cn_trcrst_in 239 ! ELSE 240 ! clpname = TRIM(Agrif_CFixed())//"_"//cn_trcrst_in 241 ! ENDIF 242 CALL iom_init( cr_toprst_cxt, kdid = numrtr, ld_closedef = .TRUE. ) 243 ENDIF 244 245 CALL iom_get ( numrtr, 'kt', zkt ) ! last time-step of previous run 251 246 252 247 IF(lwp) THEN … … 270 265 ! ! set the date in offline mode 271 266 IF( ln_rsttr .AND. nn_rsttr == 2 ) THEN 272 IF(lrxios) CALL iom_swap(cr_toprst_cxt) 273 CALL iom_get( numrtr, 'ndastp', zndastp, ldxios = lrxios ) 267 CALL iom_get( numrtr, 'ndastp', zndastp ) 274 268 ndastp = NINT( zndastp ) 275 CALL iom_get( numrtr, 'adatrj', adatrj, ldxios = lrxios ) 276 CALL iom_get( numrtr, 'ntime' , ktime, ldxios = lrxios ) 277 IF(lrxios) CALL iom_swap(cxios_context) 269 CALL iom_get( numrtr, 'adatrj', adatrj ) 270 CALL iom_get( numrtr, 'ntime' , ktime ) 278 271 nn_time0=INT(ktime) 279 272 ! calculate start time in hours and minutes … … 335 328 IF(lwp) WRITE(numout,*) '~~~~~~~' 336 329 ENDIF 337 IF( lwxios ) CALL iom_swap( cw_toprst_cxt ) 338 CALL iom_rstput( kt, nitrst, numrtw, 'kt' , REAL( kt , wp) , ldxios = lwxios ) ! time-step 339 CALL iom_rstput( kt, nitrst, numrtw, 'ndastp' , REAL( ndastp, wp) , ldxios = lwxios ) ! date 340 CALL iom_rstput( kt, nitrst, numrtw, 'adatrj' , adatrj , ldxios = lwxios ) ! number of elapsed days since 330 CALL iom_rstput( kt, nitrst, numrtw, 'kt' , REAL( kt , wp) ) ! time-step 331 CALL iom_rstput( kt, nitrst, numrtw, 'ndastp' , REAL( ndastp, wp) ) ! date 332 CALL iom_rstput( kt, nitrst, numrtw, 'adatrj' , adatrj ) ! number of elapsed days since 341 333 ! ! the begining of the run [s] 342 CALL iom_rstput( kt, nitrst, numrtw, 'ntime' , REAL( nn_time0, wp), ldxios = lwxios ) ! time 343 IF( lwxios ) CALL iom_swap( cxios_context ) 334 CALL iom_rstput( kt, nitrst, numrtw, 'ntime' , REAL( nn_time0, wp) ) ! time 344 335 ENDIF 345 336 -
NEMO/branches/2020/dev_12905_xios_restart/src/TOP/trcstp.F90
r13871 r13932 197 197 & .AND. iom_varid( numrtr, 'ktdcy' , ldstop = .FALSE. ) > 0 & 198 198 & .AND. iom_varid( numrtr, 'nrdcy' , ldstop = .FALSE. ) > 0 ) THEN 199 IF(lrxios) CALL iom_swap(cr_toprst_cxt) 200 CALL iom_get( numrtr, 'ktdcy', zkt, ldxios = lrxios ) 199 CALL iom_get( numrtr, 'ktdcy', zkt ) 201 200 rsecfst = INT( zkt ) * rn_Dt 202 201 IF(lwp) WRITE(numout,*) 'trc_qsr_mean: qsr_mean read in the restart file at time-step rsecfst =', rsecfst, ' s ' 203 CALL iom_get( numrtr, jpdom_auto, 'qsr_mean', qsr_mean , ldxios = lrxios) ! A mean of qsr204 CALL iom_get( numrtr, 'nrdcy', zrec , ldxios = lrxios) ! Number of record per days202 CALL iom_get( numrtr, jpdom_auto, 'qsr_mean', qsr_mean ) ! A mean of qsr 203 CALL iom_get( numrtr, 'nrdcy', zrec ) ! Number of record per days 205 204 IF( INT( zrec ) == nb_rec_per_day ) THEN 206 205 DO jn = 1, nb_rec_per_day 207 206 IF( jn <= 9 ) THEN 208 207 WRITE(cl1,'(i1)') jn 209 CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl1, qsr_arr(:,:,jn) , ldxios = lrxios) ! A mean of qsr208 CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl1, qsr_arr(:,:,jn) ) ! A mean of qsr 210 209 ELSE 211 210 WRITE(cl2,'(i2.2)') jn 212 CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl2, qsr_arr(:,:,jn) , ldxios = lrxios) ! A mean of qsr211 CALL iom_get( numrtr, jpdom_auto, 'qsr_arr_'//cl2, qsr_arr(:,:,jn) ) ! A mean of qsr 213 212 ENDIF 214 213 END DO … … 218 217 ENDDO 219 218 ENDIF 220 IF(lrxios) CALL iom_swap(cxios_context)221 219 ELSE !* no restart: set from nit000 values 222 220 IF(lwp) WRITE(numout,*) 'trc_qsr_mean: qsr_mean set to nit000 values' … … 252 250 zkt = REAL( ktdcy, wp ) 253 251 zrec = REAL( nb_rec_per_day, wp ) 254 IF( lwxios ) CALL iom_swap( cw_toprst_cxt ) 255 CALL iom_rstput( kt, nitrst, numrtw, 'ktdcy', zkt, ldxios = lwxios ) 256 CALL iom_rstput( kt, nitrst, numrtw, 'nrdcy', zrec, ldxios = lwxios ) 252 CALL iom_rstput( kt, nitrst, numrtw, 'ktdcy', zkt ) 253 CALL iom_rstput( kt, nitrst, numrtw, 'nrdcy', zrec ) 257 254 DO jn = 1, nb_rec_per_day 258 255 IF( jn <= 9 ) THEN 259 256 WRITE(cl1,'(i1)') jn 260 CALL iom_rstput( kt, nitrst, numrtw, 'qsr_arr_'//cl1, qsr_arr(:,:,jn) , ldxios = lwxios)257 CALL iom_rstput( kt, nitrst, numrtw, 'qsr_arr_'//cl1, qsr_arr(:,:,jn) ) 261 258 ELSE 262 259 WRITE(cl2,'(i2.2)') jn 263 CALL iom_rstput( kt, nitrst, numrtw, 'qsr_arr_'//cl2, qsr_arr(:,:,jn) , ldxios = lwxios)260 CALL iom_rstput( kt, nitrst, numrtw, 'qsr_arr_'//cl2, qsr_arr(:,:,jn) ) 264 261 ENDIF 265 262 END DO 266 CALL iom_rstput( kt, nitrst, numrtw, 'qsr_mean', qsr_mean(:,:), ldxios = lwxios ) 267 IF( lwxios ) CALL iom_swap( cxios_context ) 263 CALL iom_rstput( kt, nitrst, numrtw, 'qsr_mean', qsr_mean(:,:) ) 268 264 ENDIF 269 265 ! -
NEMO/branches/2020/dev_12905_xios_restart/tests/CANAL/MY_SRC/domvvl.F90
r13871 r13932 785 785 IF( ln_rstart ) THEN !* Read the restart file 786 786 CALL rst_read_open ! open the restart file if necessary 787 IF( lrxios ) CALL iom_swap( cr_ocerst_cxt ) 788 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm), ldxios = lrxios ) 787 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) ) 789 788 ! 790 789 id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) … … 799 798 ! 800 799 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 801 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)802 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)800 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 801 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 803 802 ! needed to restart if land processor not computed 804 803 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' … … 814 813 IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 815 814 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 816 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)815 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 817 816 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 818 817 l_1st_euler = .true. … … 821 820 IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 822 821 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 823 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)822 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 824 823 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 825 824 l_1st_euler = .true. … … 846 845 ! ! ----------------------- ! 847 846 IF( MIN( id3, id4 ) > 0 ) THEN ! all required arrays exist 848 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lrxios)849 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lrxios)847 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 848 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 850 849 ELSE ! one at least array is missing 851 850 tilde_e3t_b(:,:,:) = 0.0_wp … … 856 855 ! ! ------------ ! 857 856 IF( id5 > 0 ) THEN ! required array exists 858 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lrxios)857 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) ) 859 858 ELSE ! array is missing 860 859 hdiv_lf(:,:,:) = 0.0_wp … … 862 861 ENDIF 863 862 ENDIF 864 IF( lrxios ) CALL iom_swap( cxios_context )865 863 ! 866 864 ELSE !* Initialize at "rest" … … 931 929 ! ! =================== 932 930 IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 933 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt )934 931 ! ! --------- ! 935 932 ! ! all cases ! 936 933 ! ! --------- ! 937 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lwxios)938 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lwxios)934 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) ) 935 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) ) 939 936 ! ! ----------------------- ! 940 937 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases ! 941 938 ! ! ----------------------- ! 942 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lwxios)943 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lwxios)939 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:)) 940 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:)) 944 941 END IF 945 942 ! ! -------------! 946 943 IF( ln_vvl_ztilde ) THEN ! z_tilde case ! 947 944 ! ! ------------ ! 948 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lwxios)945 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:)) 949 946 ENDIF 950 947 ! 951 IF( lwxios ) CALL iom_swap( cxios_context )952 948 ENDIF 953 949 ! -
NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX/MY_SRC/domvvl.F90
r13871 r13932 785 785 IF( ln_rstart ) THEN !* Read the restart file 786 786 CALL rst_read_open ! open the restart file if necessary 787 IF( lrxios ) CALL iom_swap( cr_ocerst_cxt ) 788 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm), ldxios = lrxios ) 787 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) ) 789 788 ! 790 789 id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) … … 799 798 ! 800 799 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 801 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)802 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)800 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 801 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 803 802 ! needed to restart if land processor not computed 804 803 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' … … 814 813 IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 815 814 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 816 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)815 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 817 816 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 818 817 l_1st_euler = .true. … … 821 820 IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 822 821 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 823 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)822 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 824 823 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 825 824 l_1st_euler = .true. … … 846 845 ! ! ----------------------- ! 847 846 IF( MIN( id3, id4 ) > 0 ) THEN ! all required arrays exist 848 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lrxios)849 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lrxios)847 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 848 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 850 849 ELSE ! one at least array is missing 851 850 tilde_e3t_b(:,:,:) = 0.0_wp … … 856 855 ! ! ------------ ! 857 856 IF( id5 > 0 ) THEN ! required array exists 858 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lrxios)857 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) ) 859 858 ELSE ! array is missing 860 859 hdiv_lf(:,:,:) = 0.0_wp … … 862 861 ENDIF 863 862 ENDIF 864 IF( lrxios ) CALL iom_swap( cxios_context )865 863 ! 866 864 ELSE !* Initialize at "rest" … … 931 929 ! ! =================== 932 930 IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 933 IF( lwxios ) CALL iom_swap( cw_ocerst_cxt )934 931 ! ! --------- ! 935 932 ! ! all cases ! 936 933 ! ! --------- ! 937 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lwxios)938 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lwxios)934 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) ) 935 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) ) 939 936 ! ! ----------------------- ! 940 937 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases ! 941 938 ! ! ----------------------- ! 942 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lwxios)943 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lwxios)939 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:)) 940 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:)) 944 941 END IF 945 942 ! ! -------------! 946 943 IF( ln_vvl_ztilde ) THEN ! z_tilde case ! 947 944 ! ! ------------ ! 948 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lwxios)945 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:)) 949 946 ENDIF 950 947 ! 951 IF( lwxios ) CALL iom_swap( cxios_context )952 948 ENDIF 953 949 !
Note: See TracChangeset
for help on using the changeset viewer.