Changeset 13934
- Timestamp:
- 2020-12-01T13:17:32+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/test_12905_xios_restart
- Files:
-
- 60 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/test_12905_xios_restart/cfgs/C1D_PAPA/EXPREF/namelist_cfg
r13727 r13934 428 428 / 429 429 !----------------------------------------------------------------------- 430 !-----------------------------------------------------------------------431 /432 !-----------------------------------------------------------------------433 430 &namhsb ! Heat and salt budgets (default: OFF) 434 431 !----------------------------------------------------------------------- -
NEMO/branches/2020/test_12905_xios_restart/cfgs/ORCA2_OFF_PISCES/EXPREF/namelist_cfg
r13727 r13934 388 388 / 389 389 !----------------------------------------------------------------------- 390 !-----------------------------------------------------------------------391 /392 !-----------------------------------------------------------------------393 390 &namhsb ! Heat and salt budgets (default: OFF) 394 391 !----------------------------------------------------------------------- -
NEMO/branches/2020/test_12905_xios_restart/cfgs/ORCA2_OFF_TRC/EXPREF/namelist_cfg
r13727 r13934 384 384 / 385 385 !----------------------------------------------------------------------- 386 !-----------------------------------------------------------------------387 /388 !-----------------------------------------------------------------------389 386 &namhsb ! Heat and salt budgets (default: OFF) 390 387 !----------------------------------------------------------------------- -
NEMO/branches/2020/test_12905_xios_restart/cfgs/SHARED/namelist_ref
r13727 r13934 1264 1264 !!gm ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S 1265 1265 !!gm 1266 /1267 1266 !----------------------------------------------------------------------- 1268 1267 &namhsb ! Heat and salt budgets (default: OFF) -
NEMO/branches/2020/test_12905_xios_restart/cfgs/WED025/EXPREF/namelist_cfg
r13727 r13934 583 583 / 584 584 !----------------------------------------------------------------------- 585 !-----------------------------------------------------------------------586 /587 !-----------------------------------------------------------------------588 585 &namhsb ! Heat and salt budgets (default: OFF) 589 586 !----------------------------------------------------------------------- -
NEMO/branches/2020/test_12905_xios_restart/src/ICE/ice.F90
r13727 r13934 179 179 LOGICAL , PUBLIC :: ln_cndflx !: use conduction flux as surface boundary condition (instead of qsr and qns) 180 180 LOGICAL , PUBLIC :: ln_cndemulate !: emulate conduction flux (if not provided) 181 LOGICAL , PUBLIC :: lrixios !: use xios to read restart in SI3182 181 ! ! Conduction flux as surface forcing or not 183 182 INTEGER, PUBLIC, PARAMETER :: np_cnd_OFF = 0 !: no forcing from conduction flux (ice thermodynamics forced via qsr and qns) -
NEMO/branches/2020/test_12905_xios_restart/src/ICE/icedia.F90
r13727 r13934 221 221 IF( ln_rstart ) THEN !* Read the restart file 222 222 ! 223 IF(lrixios) CALL iom_swap(crixios_context) 224 CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lrixios ) 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 = lrixios ) 229 CALL iom_get( numrir, 'frc_volbot' , frc_volbot, ldxios = lrixios ) 230 CALL iom_get( numrir, 'frc_temtop' , frc_temtop, ldxios = lrixios ) 231 CALL iom_get( numrir, 'frc_tembot' , frc_tembot, ldxios = lrixios ) 232 CALL iom_get( numrir, 'frc_sal' , frc_sal, ldxios = lrixios ) 233 CALL iom_get( numrir, jpdom_auto, 'vol_loc_ini', vol_loc_ini, ldxios = lrixios ) 234 CALL iom_get( numrir, jpdom_auto, 'tem_loc_ini', tem_loc_ini, ldxios = lrixios ) 235 CALL iom_get( numrir, jpdom_auto, 'sal_loc_ini', sal_loc_ini, ldxios = lrixios ) 236 IF(lrixios) 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( cwixios_context ) 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/test_12905_xios_restart/src/ICE/icedyn_adv_pra.F90
r13727 r13934 955 955 ! 956 956 IF( id1 > 0 ) THEN !** Read the restart file **! 957 IF(lrixios) CALL iom_swap(crixios_context)958 957 ! 959 958 ! ! ice thickness 960 CALL iom_get( numrir, jpdom_auto, 'sxice' , sxice , psgn = -1._wp , ldxios = lrixios)961 CALL iom_get( numrir, jpdom_auto, 'syice' , syice , psgn = -1._wp , ldxios = lrixios)962 CALL iom_get( numrir, jpdom_auto, 'sxxice', sxxice , ldxios = lrixios)963 CALL iom_get( numrir, jpdom_auto, 'syyice', syyice , ldxios = lrixios)964 CALL iom_get( numrir, jpdom_auto, 'sxyice', sxyice , ldxios = lrixios)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 = lrixios)967 CALL iom_get( numrir, jpdom_auto, 'sysn' , sysn , psgn = -1._wp , ldxios = lrixios)968 CALL iom_get( numrir, jpdom_auto, 'sxxsn' , sxxsn , ldxios = lrixios)969 CALL iom_get( numrir, jpdom_auto, 'syysn' , syysn , ldxios = lrixios)970 CALL iom_get( numrir, jpdom_auto, 'sxysn' , sxysn , ldxios = lrixios)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 = lrixios)973 CALL iom_get( numrir, jpdom_auto, 'sya' , sya , psgn = -1._wp , ldxios = lrixios)974 CALL iom_get( numrir, jpdom_auto, 'sxxa' , sxxa , ldxios = lrixios)975 CALL iom_get( numrir, jpdom_auto, 'syya' , syya , ldxios = lrixios)976 CALL iom_get( numrir, jpdom_auto, 'sxya' , sxya , ldxios = lrixios)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 = lrixios)979 CALL iom_get( numrir, jpdom_auto, 'sysal' , sysal , psgn = -1._wp , ldxios = lrixios)980 CALL iom_get( numrir, jpdom_auto, 'sxxsal', sxxsal , ldxios = lrixios)981 CALL iom_get( numrir, jpdom_auto, 'syysal', syysal , ldxios = lrixios)982 CALL iom_get( numrir, jpdom_auto, 'sxysal', sxysal , ldxios = lrixios)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 = lrixios)985 CALL iom_get( numrir, jpdom_auto, 'syage' , syage , psgn = -1._wp , ldxios = lrixios)986 CALL iom_get( numrir, jpdom_auto, 'sxxage', sxxage , ldxios = lrixios)987 CALL iom_get( numrir, jpdom_auto, 'syyage', syyage , ldxios = lrixios)988 CALL iom_get( numrir, jpdom_auto, 'sxyage', sxyage , ldxios = lrixios)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 = lrixios) ; 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 = lrixios) ; 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 = lrixios) ; 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 = lrixios) ; 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 = lrixios) ; 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 = lrixios) ; 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 = lrixios) ; 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 = lrixios) ; 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 = lrixios) ; 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 = lrixios) ; 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 = lrixios)1021 CALL iom_get( numrir, jpdom_auto, 'syap' , syap , psgn = -1._wp , ldxios = lrixios)1022 CALL iom_get( numrir, jpdom_auto, 'sxxap', sxxap , ldxios = lrixios)1023 CALL iom_get( numrir, jpdom_auto, 'syyap', syyap , ldxios = lrixios)1024 CALL iom_get( numrir, jpdom_auto, 'sxyap', sxyap , ldxios = lrixios)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 = lrixios)1027 CALL iom_get( numrir, jpdom_auto, 'syvp' , syvp , psgn = -1._wp , ldxios = lrixios)1028 CALL iom_get( numrir, jpdom_auto, 'sxxvp', sxxvp , ldxios = lrixios)1029 CALL iom_get( numrir, jpdom_auto, 'syyvp', syyvp , ldxios = lrixios)1030 CALL iom_get( numrir, jpdom_auto, 'sxyvp', sxyvp , ldxios = lrixios)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 = lrixios)1039 CALL iom_get( numrir, jpdom_auto, 'syvl' , syvl , psgn = -1._wp , ldxios = lrixios)1040 CALL iom_get( numrir, jpdom_auto, 'sxxvl', sxxvl , ldxios = lrixios)1041 CALL iom_get( numrir, jpdom_auto, 'syyvl', syyvl , ldxios = lrixios)1042 CALL iom_get( numrir, jpdom_auto, 'sxyvl', sxyvl , ldxios = lrixios)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(lrixios) 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( cwixios_context ) 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/test_12905_xios_restart/src/ICE/icedyn_rhg_evp.F90
r13727 r13934 1005 1005 IF( ln_rstart ) THEN !* Read the restart file 1006 1006 ! 1007 IF(lrixios) CALL iom_swap(crixios_context)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 = lrixios)1014 CALL iom_get( numrir, jpdom_auto, 'stress2_i' , stress2_i , cd_type = 'T' , ldxios = lrixios)1015 CALL iom_get( numrir, jpdom_auto, 'stress12_i', stress12_i, cd_type = 'F' , ldxios = lrixios)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(lrixios) 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( cwixios_context ) 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/test_12905_xios_restart/src/ICE/icerst.F90
r13750 r13934 89 89 ELSE 90 90 #if defined key_iomput 91 cw ixios_context = "rstwi_"//TRIM(ADJUSTL(clkt))91 cw_icerst_cxt = "rstwi_"//TRIM(ADJUSTL(clkt)) 92 92 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 93 93 clpname = clname … … 95 95 clpname = TRIM(Agrif_CFixed())//"_"//clname 96 96 ENDIF 97 CALL iom_init( cwixios_context, 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( cwixios_context )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 … … 183 183 CALL iom_close( numriw ) 184 184 ELSE 185 CALL iom_context_finalize( cwixios_context ) 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. … … 217 219 CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir ) 218 220 219 lrixios = lrxios.AND.lxios_sini 220 IF( lrixios) THEN 221 crixios_context = 'si3_rst' 221 IF( lrxios) THEN 222 cr_icerst_cxt = 'si3_rst' 222 223 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SI3' 223 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 224 clpname = cn_icerst_in 225 ELSE 226 clpname = TRIM(Agrif_CFixed())//"_"//cn_icerst_in 227 ENDIF 228 CALL iom_init( crixios_context, fname = TRIM(cn_icerst_indir)//'/'//TRIM(clpname), & 229 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. ) 230 230 ENDIF 231 231 … … 236 236 IF( id0 > 0 ) THEN ! == case of a normal restart == ! 237 237 ! ! ------------------------------ ! 238 IF(lrixios) CALL iom_swap(crixios_context)239 238 ! Time info 240 CALL iom_get( numrir, 'nn_fsbc', zfice , ldxios = lrixios)241 CALL iom_get( numrir, 'kt_ice' , ziter , ldxios = lrixios)239 CALL iom_get( numrir, 'nn_fsbc', zfice ) 240 CALL iom_get( numrir, 'kt_ice' , ziter ) 242 241 IF(lwp) WRITE(numout,*) ' read ice restart file at time step : ', ziter 243 242 IF(lwp) WRITE(numout,*) ' in any case we force it to nit000 - 1 : ', nit000 - 1 … … 254 253 255 254 ! --- mandatory fields --- ! 256 CALL iom_get( numrir, jpdom_auto, 'v_i' , v_i , ldxios = lrixios)257 CALL iom_get( numrir, jpdom_auto, 'v_s' , v_s , ldxios = lrixios)258 CALL iom_get( numrir, jpdom_auto, 'sv_i' , sv_i , ldxios = lrixios)259 CALL iom_get( numrir, jpdom_auto, 'a_i' , a_i , ldxios = lrixios)260 CALL iom_get( numrir, jpdom_auto, 't_su' , t_su , ldxios = lrixios)261 CALL iom_get( numrir, jpdom_auto, 'u_ice', u_ice, cd_type = 'U', psgn = -1._wp , ldxios = lrixios)262 CALL iom_get( numrir, jpdom_auto, 'v_ice', v_ice, cd_type = 'V', psgn = -1._wp , ldxios = lrixios)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 ) 263 262 ! Snow enthalpy 264 263 DO jk = 1, nlay_s 265 264 WRITE(zchar1,'(I2.2)') jk 266 265 znam = 'e_s'//'_l'//zchar1 267 CALL iom_get( numrir, jpdom_auto, znam , z3d , ldxios = lrixios)266 CALL iom_get( numrir, jpdom_auto, znam , z3d ) 268 267 e_s(:,:,jk,:) = z3d(:,:,:) 269 268 END DO … … 272 271 WRITE(zchar1,'(I2.2)') jk 273 272 znam = 'e_i'//'_l'//zchar1 274 CALL iom_get( numrir, jpdom_auto, znam , z3d , ldxios = lrixios)273 CALL iom_get( numrir, jpdom_auto, znam , z3d ) 275 274 e_i(:,:,jk,:) = z3d(:,:,:) 276 275 END DO … … 279 278 id1 = iom_varid( numrir, 'oa_i' , ldstop = .FALSE. ) 280 279 IF( id1 > 0 ) THEN ! fields exist 281 CALL iom_get( numrir, jpdom_auto, 'oa_i', oa_i , ldxios = lrixios)280 CALL iom_get( numrir, jpdom_auto, 'oa_i', oa_i ) 282 281 ELSE ! start from rest 283 282 IF(lwp) WRITE(numout,*) ' ==>> previous run without ice age output then set it to zero' … … 287 286 id2 = iom_varid( numrir, 'a_ip' , ldstop = .FALSE. ) 288 287 IF( id2 > 0 ) THEN ! fields exist 289 CALL iom_get( numrir, jpdom_auto, 'a_ip' , a_ip , ldxios = lrixios)290 CALL iom_get( numrir, jpdom_auto, 'v_ip' , v_ip , ldxios = lrixios)288 CALL iom_get( numrir, jpdom_auto, 'a_ip' , a_ip ) 289 CALL iom_get( numrir, jpdom_auto, 'v_ip' , v_ip ) 291 290 ELSE ! start from rest 292 291 IF(lwp) WRITE(numout,*) ' ==>> previous run without melt ponds output then set it to zero' … … 297 296 id3 = iom_varid( numrir, 'v_il' , ldstop = .FALSE. ) 298 297 IF( id3 > 0 ) THEN 299 CALL iom_get( numrir, jpdom_auto, 'v_il', v_il , ldxios = lrixios)298 CALL iom_get( numrir, jpdom_auto, 'v_il', v_il) 300 299 ELSE 301 300 IF(lwp) WRITE(numout,*) ' ==>> previous run without melt ponds lids output then set it to zero' … … 307 306 id5 = iom_varid( numrir, 't1_ice' , ldstop = .FALSE. ) 308 307 IF( id4 > 0 .AND. id5 > 0 ) THEN ! fields exist 309 CALL iom_get( numrir, jpdom_auto, 'cnd_ice', cnd_ice , ldxios = lrixios)310 CALL iom_get( numrir, jpdom_auto, 't1_ice' , t1_ice , ldxios = lrixios)308 CALL iom_get( numrir, jpdom_auto, 'cnd_ice', cnd_ice ) 309 CALL iom_get( numrir, jpdom_auto, 't1_ice' , t1_ice ) 311 310 ELSE ! start from rest 312 311 IF(lwp) WRITE(numout,*) ' ==>> previous run without conductivity output then set it to zero' … … 316 315 ENDIF 317 316 318 CALL iom_delay_rst( 'READ', 'ICE', numrir ) ! read only ice delayed global communication variables 319 IF(lrixios) CALL iom_swap(cxios_context) 317 IF(.NOT.lrxios) CALL iom_delay_rst( 'READ', 'ICE', numrir ) ! read only ice delayed global communication variables 320 318 ! ! ---------------------------------- ! 321 319 ELSE ! == case of a simplified restart == ! -
NEMO/branches/2020/test_12905_xios_restart/src/ICE/icestp.F90
r13727 r13934 212 212 ! --- Ocean time step --- ! 213 213 !-------------------------! 214 IF( ln_icedyn ) CALL ice_update_tau( kt, uu(:,:,1,Kbb), vv(:,:,1,Kbb) )! -- update surface ocean stresses214 CALL ice_update_tau( kt, uu(:,:,1,Kbb), vv(:,:,1,Kbb) ) ! -- update surface ocean stresses 215 215 !!gm remark, the ocean-ice stress is not saved in ice diag call above ..... find a solution!!! 216 216 ! … … 292 292 ! 293 293 IF( ln_rstart ) THEN 294 295 IF(lrixios) CALL iom_context_finalize( crixios_context )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/test_12905_xios_restart/src/ICE/icetab.F90
r10069 r13934 40 40 INTEGER , DIMENSION(ndim1d) , INTENT(in ) :: tab_ind ! input index 41 41 REAL(wp), DIMENSION(jpi,jpj,jpl), INTENT(in ) :: tab2d ! input 2D field 42 REAL(wp), DIMENSION(ndim1d,jpl) , INTENT( 42 REAL(wp), DIMENSION(ndim1d,jpl) , INTENT(inout) :: tab1d ! output 1D field 43 43 ! 44 44 INTEGER :: jl, jn, jid, jjd … … 61 61 INTEGER , DIMENSION(ndim1d) , INTENT(in ) :: tab_ind ! input index 62 62 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: tab2d ! input 2D field 63 REAL(wp), DIMENSION(ndim1d) , INTENT( 63 REAL(wp), DIMENSION(ndim1d) , INTENT(inout) :: tab1d ! output 1D field 64 64 ! 65 65 INTEGER :: jn , jid, jjd … … 80 80 INTEGER , DIMENSION(ndim1d) , INTENT(in ) :: tab_ind ! input index 81 81 REAL(wp), DIMENSION(ndim1d,jpl) , INTENT(in ) :: tab1d ! input 1D field 82 REAL(wp), DIMENSION(jpi,jpj,jpl), INTENT( 82 REAL(wp), DIMENSION(jpi,jpj,jpl), INTENT(inout) :: tab2d ! output 2D field 83 83 ! 84 84 INTEGER :: jl, jn, jid, jjd … … 101 101 INTEGER , DIMENSION(ndim1d) , INTENT(in ) :: tab_ind ! input index 102 102 REAL(wp), DIMENSION(ndim1d) , INTENT(in ) :: tab1d ! input 1D field 103 REAL(wp), DIMENSION(jpi,jpj), INTENT( 103 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: tab2d ! output 2D field 104 104 ! 105 105 INTEGER :: jn , jid, jjd -
NEMO/branches/2020/test_12905_xios_restart/src/ICE/iceupdate.F90
r13727 r13934 427 427 ! 428 428 IF( id1 > 0 ) THEN ! fields exist 429 IF(lrixios) CALL iom_swap(crixios_context) 430 CALL iom_get( numrir, jpdom_auto, 'snwice_mass' , snwice_mass , ldxios = lrixios ) 431 CALL iom_get( numrir, jpdom_auto, 'snwice_mass_b', snwice_mass_b, ldxios = lrixios ) 432 IF(lrixios) 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( cwixios_context ) 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/test_12905_xios_restart/src/OCE/DIA/diahsb.F90
r13727 r13934 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( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 270 CALL iom_get( numror, 'frc_v', frc_v, ldxios = lroxios ) 271 CALL iom_get( numror, 'frc_t', frc_t, ldxios = lroxios ) 272 CALL iom_get( numror, 'frc_s', frc_s, ldxios = lroxios ) 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 = lroxios)275 CALL iom_get( numror, 'frc_wn_s', frc_wn_s , ldxios = lroxios)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 = lroxios) ! ice sheet coupling278 CALL iom_get( numror, jpdom_auto, 'ssh_ini' , ssh_ini , ldxios = lroxios)279 CALL iom_get( numror, jpdom_auto, 'e3t_ini' , e3t_ini , ldxios = lroxios)280 CALL iom_get( numror, jpdom_auto, 'tmask_ini' , tmask_ini , ldxios = lroxios)281 CALL iom_get( numror, jpdom_auto, 'hc_loc_ini', hc_loc_ini , ldxios = lroxios)282 CALL iom_get( numror, jpdom_auto, 'sc_loc_ini', sc_loc_ini , ldxios = lroxios)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 = lroxios)285 CALL iom_get( numror, jpdom_auto, 'ssh_sc_loc_ini', ssh_sc_loc_ini , ldxios = lroxios)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( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/DIU/diu_coolskin.F90
r13727 r13934 95 95 !!---------------------------------------------------------------------- 96 96 ! 97 IF( .NOT. ln_blk) CALL ctl_stop("diu_coolskin.f90: diurnal flux processing only implemented for bulk forcing")97 IF( .NOT. (ln_blk .OR. ln_abl) ) CALL ctl_stop("diu_coolskin.f90: diurnal flux processing only implemented for bulk forcing") 98 98 ! 99 99 DO_2D( 1, 1, 1, 1 ) -
NEMO/branches/2020/test_12905_xios_restart/src/OCE/DOM/daymod.F90
r13727 r13934 316 316 317 317 IF( TRIM(cdrw) == 'READ' ) THEN 318 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )319 318 IF( iom_varid( numror, 'kt', ldstop = .FALSE. ) > 0 ) THEN 320 319 ! Get Calendar informations 321 CALL iom_get( numror, 'kt', zkt , ldxios = lroxios) ! 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 = lroxios)339 CALL iom_get( numror, 'ndastp', zndastp ) 341 340 ndastp = NINT( zndastp ) 342 CALL iom_get( numror, 'adatrj', adatrj , ldxios = lroxios)343 CALL iom_get( numror, 'ntime' , ktime , ldxios = lroxios)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( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/DOM/domqco.F90
r13750 r13934 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/test_12905_xios_restart/src/OCE/DOM/domvvl.F90
r13727 r13934 785 785 IF( ln_rstart ) THEN !* Read the restart file 786 786 CALL rst_read_open ! open the restart file if necessary 787 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 788 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm), ldxios = lroxios ) 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 = lroxios)802 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lroxios)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 = lroxios)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 = lroxios)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 = lroxios)849 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lroxios)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 = lroxios)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( lroxios ) 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( cwxios_context )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/test_12905_xios_restart/src/OCE/DYN/dynspg_ts.F90
r13727 r13934 899 899 IF( TRIM(cdrw) == 'READ' ) THEN ! Read/initialise 900 900 ! ! --------------- 901 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )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 = lroxios)904 CALL iom_get( numror, jpdom_auto, 'vb2_b' , vb2_b (:,:), cd_type = 'V', psgn = -1._wp , ldxios = lroxios)905 CALL iom_get( numror, jpdom_auto, 'un_bf' , un_bf (:,:), cd_type = 'U', psgn = -1._wp , ldxios = lroxios)906 CALL iom_get( numror, jpdom_auto, 'vn_bf' , vn_bf (:,:), cd_type = 'V', psgn = -1._wp , ldxios = lroxios)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 = lroxios)909 CALL iom_get( numror, jpdom_auto, 'ubb_e' , ubb_e(:,:), cd_type = 'U', psgn = -1._wp , ldxios = lroxios)910 CALL iom_get( numror, jpdom_auto, 'vbb_e' , vbb_e(:,:), cd_type = 'V', psgn = -1._wp , ldxios = lroxios)911 CALL iom_get( numror, jpdom_auto, 'sshb_e' , sshb_e(:,:), cd_type = 'T', psgn = 1._wp , ldxios = lroxios)912 CALL iom_get( numror, jpdom_auto, 'ub_e' , ub_e(:,:), cd_type = 'U', psgn = -1._wp , ldxios = lroxios)913 CALL iom_get( numror, jpdom_auto, 'vb_e' , vb_e(:,:), cd_type = 'V', psgn = -1._wp , ldxios = lroxios)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 = lroxios)919 CALL iom_get( numror, jpdom_auto, 'vb2_i_b' , vb2_i_b(:,:), cd_type = 'V', psgn = -1._wp , ldxios = lroxios)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( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/IOM/in_out_manager.F90
r13727 r13934 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 xios_context!: context name used in xios to read OCE restart169 CHARACTER(LEN=lc) :: cw xios_context!: context name used in xios to write OCE restart file170 CHARACTER(LEN=lc) :: cr ixios_context!: context name used in xios to read SI3 restart171 CHARACTER(LEN=lc) :: cw ixios_context!: context name used in xios to write SI3 restart file172 CHARACTER(LEN=lc) :: cr txios_context!: context name used in xios to read TOP restart173 CHARACTER(LEN=lc) :: cw txios_context!: context name used in xios to write TOP restart file174 CHARACTER(LEN=lc) :: cr sxios_context!: context name used in xios to read SEDIMENT restart175 CHARACTER(LEN=lc) :: cw sxios_context!: context name used in xios to write SEDIMENT restart file172 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/test_12905_xios_restart/src/OCE/IOM/iom.F90
r13750 r13934 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 … … 141 142 CALL iom_swap( cdname ) 142 143 143 llrstr = ( TRIM(cdname) == TRIM(crxios_context)) .OR. (TRIM(cdname) == TRIM(crixios_context))144 llrstr = llrstr .OR. ( TRIM(cdname) == TRIM(crtxios_context))145 llrstr = llrstr .OR. ( TRIM(cdname) == TRIM(crsxios_context))146 147 llrstw = ( TRIM(cdname) == TRIM(cwxios_context)) .OR. (TRIM(cdname) == TRIM(cwixios_context))148 llrstw = llrstw .OR. ( TRIM(cdname) == TRIM(cwtxios_context))149 llrstw = llrstw .OR. ( TRIM(cdname) == TRIM(cwsxios_context))144 llrstr = (cdname == cr_ocerst_cxt) .OR. (cdname == cr_icerst_cxt) 145 llrstr = llrstr .OR. (cdname == cr_toprst_cxt) 146 llrstr = llrstr .OR. (cdname == cr_sedrst_cxt) 147 148 llrstw = (cdname == cw_ocerst_cxt) .OR. (cdname == cw_icerst_cxt) 149 llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 150 llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) 150 151 151 152 llrst_context = llrstr .OR. llrstw … … 168 169 IF(.NOT.llrst_context) CALL set_scalar 169 170 ! 170 IF( TRIM(cdname) == TRIM(cxios_context)) THEN171 IF( cdname == cxios_context ) THEN 171 172 CALL set_grid( "T", glamt, gphit, .FALSE., .FALSE. ) 172 173 CALL set_grid( "U", glamu, gphiu, .FALSE., .FALSE. ) … … 212 213 ! vertical grid definition 213 214 IF(.NOT.llrst_context) THEN 214 215 216 217 215 CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 216 CALL iom_set_axis_attr( "depthu", paxis = gdept_1d ) 217 CALL iom_set_axis_attr( "depthv", paxis = gdept_1d ) 218 CALL iom_set_axis_attr( "depthw", paxis = gdepw_1d ) 218 219 219 220 ! ABL 220 221 222 223 224 225 226 221 IF( .NOT. ALLOCATED(ght_abl) ) THEN ! force definition for xml files (xios) 222 ALLOCATE( ght_abl(jpka), ghw_abl(jpka), e3t_abl(jpka), e3w_abl(jpka) ) ! default allocation needed by iom 223 ght_abl(:) = -1._wp ; ghw_abl(:) = -1._wp 224 e3t_abl(:) = -1._wp ; e3w_abl(:) = -1._wp 225 ENDIF 226 CALL iom_set_axis_attr( "ght_abl", ght_abl(2:jpka) ) 227 CALL iom_set_axis_attr( "ghw_abl", ghw_abl(2:jpka) ) 227 228 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 229 ! Add vertical grid bounds 230 zt_bnds(2,: ) = gdept_1d(:) 231 zt_bnds(1,2:jpk ) = gdept_1d(1:jpkm1) 232 zt_bnds(1,1 ) = gdept_1d(1) - e3w_1d(1) 233 zw_bnds(1,: ) = gdepw_1d(:) 234 zw_bnds(2,1:jpkm1) = gdepw_1d(2:jpk) 235 zw_bnds(2,jpk: ) = gdepw_1d(jpk) + e3t_1d(jpk) 236 CALL iom_set_axis_attr( "deptht", bounds=zw_bnds ) 237 CALL iom_set_axis_attr( "depthu", bounds=zw_bnds ) 238 CALL iom_set_axis_attr( "depthv", bounds=zw_bnds ) 239 CALL iom_set_axis_attr( "depthw", bounds=zt_bnds ) 240 241 ! ABL 242 za_bnds(1,:) = ghw_abl(1:jpkam1) 243 za_bnds(2,:) = ghw_abl(2:jpka ) 244 CALL iom_set_axis_attr( "ght_abl", bounds=za_bnds ) 245 za_bnds(1,:) = ght_abl(2:jpka ) 246 za_bnds(2,:) = ght_abl(2:jpka ) + e3w_abl(2:jpka) 247 CALL iom_set_axis_attr( "ghw_abl", bounds=za_bnds ) 248 249 CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,jpnfl) /) ) 249 250 # if defined key_si3 250 251 252 251 CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 252 ! SIMIP diagnostics (4 main arctic straits) 253 CALL iom_set_axis_attr( "nstrait", (/ (REAL(ji,wp), ji=1,4) /) ) 253 254 # endif 254 255 #if defined key_top 255 256 #endif 257 258 259 260 261 262 263 264 256 IF( ALLOCATED(profsed) ) CALL iom_set_axis_attr( "profsed", paxis = profsed ) 257 #endif 258 CALL iom_set_axis_attr( "icbcla", class_num ) 259 CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) ) ! strange syntaxe and idea... 260 CALL iom_set_axis_attr( "iax_26C", (/ REAL(26,wp) /) ) ! strange syntaxe and idea... 261 CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) ) ! strange syntaxe and idea... 262 ! for diaprt, we need to define an axis which size can be 1 (default) or 5 (if the file subbasins.nc exists) 263 INQUIRE( FILE = 'subbasins.nc', EXIST = ll_exist ) 264 nbasin = 1 + 4 * COUNT( (/ll_exist/) ) 265 CALL iom_set_axis_attr( "basin" , (/ (REAL(ji,wp), ji=1,nbasin) /) ) 265 266 ENDIF 266 267 ! 267 268 ! automatic definitions of some of the xml attributs 268 269 IF(llrstr) THEN 269 IF(PRESENT(idfp)) THEN270 270 IF(PRESENT(kdid)) THEN 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 274 275 273 CALL iom_set_vars_active(kdid) 274 ELSE 275 CALL ctl_stop( 'iom_init:', 'restart read with XIOS: missing pointer to NETCDF file' ) 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 280 281 ENDIF 281 282 ! … … 301 302 !! 302 303 !!---------------------------------------------------------------------- 303 CHARACTER(len=*), OPTIONAL, INTENT(IN) :: cdname304 CHARACTER(len=*), OPTIONAL, INTENT(IN) :: cdname 304 305 #if defined key_iomput 305 LOGICAL :: llrstw306 LOGICAL :: llrstw 306 307 307 308 llrstw = .FALSE. 308 309 IF(PRESENT(cdname)) THEN 309 llrstw = ( TRIM(cdname) == TRIM(cwxios_context))310 llrstw = llrstw .OR. ( TRIM(cdname) == TRIM(cwixios_context))311 llrstw = llrstw .OR. ( TRIM(cdname) == TRIM(cwtxios_context))312 llrstw = llrstw .OR. ( TRIM(cdname) == TRIM(cwsxios_context))310 llrstw = (cdname == cw_ocerst_cxt) 311 llrstw = llrstw .OR. (cdname == cw_icerst_cxt) 312 llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 313 llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) 313 314 ENDIF 314 315 315 316 IF( llrstw ) THEN 316 317 !set names of the fields in restart file IF using XIOS to write data 317 318 318 CALL iom_set_rst_context(.FALSE.) 319 CALL xios_close_context_definition() 319 320 ELSE 320 321 321 CALL xios_close_context_definition() 322 CALL xios_update_calendar( 0 ) 322 323 ENDIF 323 324 #else … … 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 338 CHARACTER(len=*), INTENT(IN) :: cdfname 339 INTEGER , INTENT(IN) :: idnum 338 INTEGER, INTENT(IN) :: idnum 339 340 340 #if defined key_iomput 341 INTEGER :: ndims, nvars, natts, unlimitedDimId, dimlen, xtype,mdims 342 TYPE(xios_field) :: field_hdl 343 TYPE(xios_file) :: file_hdl 344 TYPE(xios_filegroup) :: filegroup_hdl 345 INTEGER :: dimids(4), jv,i, idim 346 CHARACTER(LEN=256) :: clinfo ! info character 347 INTEGER, ALLOCATABLE :: indimlens(:) 348 CHARACTER(LEN=nf90_max_name), ALLOCATABLE :: indimnames(:) 349 CHARACTER(LEN=nf90_max_name) :: dimname, varname 350 LOGICAL :: lmeta 351 352 meta(1) = "nav_lat" 353 meta(2) = "nav_lon" 354 meta(3) = "nav_lev" 355 meta(4) = "time_instant" 356 meta(5) = "time_instant_bounds" 357 meta(6) = "time_counter" 358 meta(7) = "time_counter_bounds" 359 meta(8) = "x" 360 meta(9) = "y" 361 meta(10) = "numcat" 362 363 clinfo = ' iom_set_vars_active, file: '//TRIM(cdfname) 341 INTEGER :: ndims, nvars, natts, unlimitedDimId, dimlen, xtype,mdims 342 TYPE(xios_field) :: field_hdl 343 TYPE(xios_file) :: file_hdl 344 TYPE(xios_filegroup) :: filegroup_hdl 345 INTEGER :: dimids(4), jv,i, idim 346 CHARACTER(LEN=256) :: clinfo ! info character 347 INTEGER, ALLOCATABLE :: indimlens(:) 348 CHARACTER(LEN=nf90_max_name), ALLOCATABLE :: indimnames(:) 349 CHARACTER(LEN=nf90_max_name) :: dimname, varname 350 INTEGER :: iln 351 CHARACTER(LEN=lc) :: fname 352 LOGICAL :: lmeta 353 !metadata in restart file for restart read with XIOS 354 INTEGER, PARAMETER :: NMETA = 10 355 CHARACTER(LEN=lc) :: meta(NMETA) 356 357 358 meta(1) = "nav_lat" 359 meta(2) = "nav_lon" 360 meta(3) = "nav_lev" 361 meta(4) = "time_instant" 362 meta(5) = "time_instant_bounds" 363 meta(6) = "time_counter" 364 meta(7) = "time_counter_bounds" 365 meta(8) = "x" 366 meta(9) = "y" 367 meta(10) = "numcat" 368 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 364 378 365 379 !set name of the restart file and enable available fields 366 CALL xios_get_handle("file_definition", filegroup_hdl ) 367 CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart') 368 CALL xios_set_file_attr( "rrestart", name=trim(cdfname), type="one_file", & 369 par_access="collective", enabled=.TRUE., mode="read", & 370 output_freq=xios_timestep) 371 372 CALL iom_nf90_check( nf90_inquire(idnum, ndims, nvars, natts ), clinfo ) 373 ALLOCATE(indimlens(ndims), indimnames(ndims)) 374 CALL iom_nf90_check( nf90_inquire(idnum, unlimitedDimId = unlimitedDimId ), clinfo ) 375 376 DO idim = 1, ndims 377 CALL iom_nf90_check( nf90_inquire_dimension(idnum, idim, dimname, dimlen ), clinfo ) 378 indimlens(idim) = dimlen 379 indimnames(idim) = dimname 380 ENDDO 381 382 DO jv =1, nvars 383 lmeta = .FALSE. 384 CALL iom_nf90_check( nf90_inquire_variable(idnum, jv, varname, xtype, ndims, dimids, natts ), clinfo ) 385 DO i = 1, NMETA 386 IF(TRIM(varname) == TRIM(meta(i))) THEN 387 lmeta = .TRUE. 388 ENDIF 389 ENDDO 390 IF(.NOT.lmeta) THEN 391 CALL xios_add_child(file_hdl, field_hdl, TRIM(varname)) 392 mdims = ndims 393 394 IF(ANY(dimids(1:ndims) == unlimitedDimId)) THEN 395 mdims = mdims - 1 396 ENDIF 397 398 IF(mdims == 3) THEN 399 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname), & 400 domain_ref="grid_N", axis_ref=TRIM(iom_axis(indimlens(dimids(mdims)))), & 401 prec = 8, operation = "instant") 402 ELSEIF(mdims == 2) THEN 403 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname), & 404 domain_ref="grid_N", prec = 8, operation = "instant") 405 ELSEIF(mdims == 1) THEN 406 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname), & 407 axis_ref=TRIM(iom_axis(indimlens(dimids(mdims)))), prec = 8, operation = "instant") 408 ELSEIF(mdims == 0) THEN 409 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(varname), & 410 scalar_ref = "grid_scalar", prec = 8, operation = "instant") 411 ELSE 412 WRITE(ctmp1,*) 'iom_set_vars_active: variable ', TRIM(varname) ,' incorrect number of dimensions' 413 CALL ctl_stop( 'iom_set_vars_active:', ctmp1 ) 414 ENDIF 380 CALL xios_get_handle("file_definition", filegroup_hdl ) 381 CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart') 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 ) 387 ALLOCATE(indimlens(ndims), indimnames(ndims)) 388 CALL iom_nf90_check( nf90_inquire(iom_file(idnum)%nfid, unlimitedDimId = unlimitedDimId ), clinfo ) 389 390 DO idim = 1, ndims 391 CALL iom_nf90_check( nf90_inquire_dimension(iom_file(idnum)%nfid, idim, dimname, dimlen ), clinfo ) 392 indimlens(idim) = dimlen 393 indimnames(idim) = dimname 394 ENDDO 395 396 DO jv =1, nvars 397 lmeta = .FALSE. 398 CALL iom_nf90_check( nf90_inquire_variable(iom_file(idnum)%nfid, jv, varname, xtype, ndims, dimids, natts ), clinfo ) 399 DO i = 1, NMETA 400 IF(varname == meta(i)) THEN 401 lmeta = .TRUE. 402 ENDIF 403 ENDDO 404 IF(.NOT.lmeta) THEN 405 CALL xios_add_child(file_hdl, field_hdl, varname) 406 mdims = ndims 407 408 IF(ANY(dimids(1:ndims) == unlimitedDimId)) THEN 409 mdims = mdims - 1 415 410 ENDIF 416 ENDDO 417 DEALLOCATE(indimlens, indimnames) 411 412 IF(mdims == 3) THEN 413 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname, & 414 domain_ref="grid_N", & 415 axis_ref=iom_axis(indimlens(dimids(mdims))), & 416 prec = 8, operation = "instant" ) 417 ELSEIF(mdims == 2) THEN 418 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname, & 419 domain_ref="grid_N", prec = 8, & 420 operation = "instant" ) 421 ELSEIF(mdims == 1) THEN 422 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname, & 423 axis_ref=iom_axis(indimlens(dimids(mdims))), & 424 prec = 8, operation = "instant" ) 425 ELSEIF(mdims == 0) THEN 426 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = varname, & 427 scalar_ref = "grid_scalar", prec = 8, & 428 operation = "instant" ) 429 ELSE 430 WRITE(ctmp1,*) 'iom_set_vars_active: variable ', TRIM(varname) ,' incorrect number of dimensions' 431 CALL ctl_stop( 'iom_set_vars_active:', ctmp1 ) 432 ENDIF 433 ENDIF 434 ENDDO 435 DEALLOCATE(indimlens, indimnames) 418 436 #endif 419 437 END SUBROUTINE iom_set_vars_active … … 425 443 !! ** Purpose : define file name in XIOS context for writing restart 426 444 !!--------------------------------------------------------------------- 427 CHARACTER(len=*) :: cdrst_file445 CHARACTER(len=*) :: cdrst_file 428 446 #if defined key_iomput 429 TYPE(xios_file) :: file_hdl 430 TYPE(xios_filegroup) :: filegroup_hdl 431 INTEGER :: i 432 CHARACTER(lc) :: clpath 447 TYPE(xios_file) :: file_hdl 448 TYPE(xios_filegroup) :: filegroup_hdl 433 449 434 450 !set name of the restart file and enable available fields 435 IF(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ',cdrst_file436 437 438 439 440 mode="write", output_freq=xios_timestep)441 if(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in one_file mode'442 443 444 mode="write", output_freq=xios_timestep)445 if(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in multiple_file mode'446 447 451 IF(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS write) to: ', TRIM(cdrst_file) 452 CALL xios_get_handle("file_definition", filegroup_hdl ) 453 CALL xios_add_child(filegroup_hdl, file_hdl, 'wrestart') 454 IF(nxioso.eq.1) THEN 455 CALL xios_set_file_attr( "wrestart", type="one_file", enabled=.TRUE.,& 456 mode="write", output_freq=xios_timestep) 457 IF(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in one_file mode' 458 ELSE 459 CALL xios_set_file_attr( "wrestart", type="multiple_file", enabled=.TRUE.,& 460 mode="write", output_freq=xios_timestep) 461 IF(lwp) write(numout,*) 'OPEN ', trim(cdrst_file), ' in multiple_file mode' 462 ENDIF 463 CALL xios_set_file_attr( "wrestart", name=trim(cdrst_file)) 448 464 #endif 449 465 END SUBROUTINE iom_set_rstw_file … … 458 474 !!--------------------------------------------------------------------- 459 475 !sets enabled = .TRUE. for each field in restart file 460 CHARACTER(len = *), INTENT(IN) :: sdfield461 REAL(dp), OPTIONAL, INTENT(IN) :: rd0462 REAL(sp), OPTIONAL, INTENT(IN) :: rs0463 REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:) :: rd1464 REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:) :: rs1465 REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :) :: rd2466 REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :) :: rs2467 REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rd3468 REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rs3476 CHARACTER(len = *), INTENT(IN) :: sdfield 477 REAL(dp), OPTIONAL, INTENT(IN) :: rd0 478 REAL(sp), OPTIONAL, INTENT(IN) :: rs0 479 REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:) :: rd1 480 REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:) :: rs1 481 REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :) :: rd2 482 REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :) :: rs2 483 REAL(dp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rd3 484 REAL(sp), OPTIONAL, INTENT(IN), DIMENSION(:, :, :) :: rs3 469 485 #if defined key_iomput 470 TYPE(xios_field) :: field_hdl 471 TYPE(xios_file) :: file_hdl 472 INTEGER :: i 473 CHARACTER(lc) :: clpath 474 CHARACTER(len=1024) :: fname 475 CHARACTER(len=lc) :: axis_ref 476 477 CALL xios_get_handle("wrestart", file_hdl) 486 TYPE(xios_field) :: field_hdl 487 TYPE(xios_file) :: file_hdl 488 489 CALL xios_get_handle("wrestart", file_hdl) 478 490 !define fields for restart context 479 CALL xios_add_child(file_hdl, field_hdl, TRIM(sdfield)) 480 481 IF(PRESENT(rd3)) THEN 482 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 483 domain_ref="grid_N", axis_ref=TRIM(iom_axis(size(rd3, 3))), & 484 prec = 8, operation = "instant") 485 ELSEIF(PRESENT(rs3)) THEN 486 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 487 domain_ref="grid_N", axis_ref=TRIM(iom_axis(size(rd3, 3))), & 488 prec = 4, operation = "instant") 489 ELSEIF(PRESENT(rd2)) THEN 490 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 491 domain_ref="grid_N", prec = 8, operation = "instant") 492 ELSEIF(PRESENT(rs2)) THEN 493 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 494 domain_ref="grid_N", prec = 4, operation = "instant") 495 ELSEIF(PRESENT(rd1)) THEN 496 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 497 axis_ref=TRIM(iom_axis(size(rd1, 1))), prec = 8, operation = "instant") 498 ELSEIF(PRESENT(rs1)) THEN 499 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 500 axis_ref=TRIM(iom_axis(size(rd1, 1))), prec = 4, operation = "instant") 501 ELSEIF(PRESENT(rd0)) THEN 502 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 503 scalar_ref = "grid_scalar", prec = 8, operation = "instant") 504 ELSEIF(PRESENT(rs0)) THEN 505 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(sdfield), & 506 scalar_ref = "grid_scalar", prec = 4, operation = "instant") 507 ENDIF 491 CALL xios_add_child(file_hdl, field_hdl, sdfield) 492 493 IF(PRESENT(rd3)) THEN 494 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 495 domain_ref = "grid_N", & 496 axis_ref = iom_axis(size(rd3, 3)), & 497 prec = 8, operation = "instant" ) 498 ELSEIF(PRESENT(rs3)) THEN 499 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 500 domain_ref = "grid_N", & 501 axis_ref = iom_axis(size(rd3, 3)), & 502 prec = 4, operation = "instant" ) 503 ELSEIF(PRESENT(rd2)) THEN 504 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 505 domain_ref = "grid_N", prec = 8, & 506 operation = "instant" ) 507 ELSEIF(PRESENT(rs2)) THEN 508 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 509 domain_ref = "grid_N", prec = 4, & 510 operation = "instant" ) 511 ELSEIF(PRESENT(rd1)) THEN 512 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 513 axis_ref = iom_axis(size(rd1, 1)), & 514 prec = 8, operation = "instant" ) 515 ELSEIF(PRESENT(rs1)) THEN 516 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 517 axis_ref = iom_axis(size(rd1, 1)), & 518 prec = 4, operation = "instant" ) 519 ELSEIF(PRESENT(rd0)) THEN 520 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 521 scalar_ref = "grid_scalar", prec = 8, & 522 operation = "instant" ) 523 ELSEIF(PRESENT(rs0)) THEN 524 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = sdfield, & 525 scalar_ref = "grid_scalar", prec = 4, & 526 operation = "instant" ) 527 ENDIF 508 528 #endif 509 529 END SUBROUTINE iom_set_rstw_active 510 530 511 531 FUNCTION iom_axis(idlev) result(axis_ref) 512 !!---------------------------------------------------------------------532 !!--------------------------------------------------------------------- 513 533 !! *** FUNCTION iom_axis *** 514 534 !! … … 518 538 !! iom_set_rst_context 519 539 !!--------------------------------------------------------------------- 520 INTEGER, INTENT(IN) :: idlev521 CHARACTER(len=lc) :: axis_ref522 CHARACTER(len=12) :: str523 540 INTEGER, INTENT(IN) :: idlev 541 CHARACTER(len=lc) :: axis_ref 542 CHARACTER(len=12) :: str 543 IF(idlev == jpk) THEN 524 544 axis_ref="nav_lev" 525 545 #if defined key_si3 526 546 ELSEIF(idlev == jpl) THEN 527 547 axis_ref="numcat" 528 548 #endif 529 549 ELSE 530 550 write(str, *) idlev 531 551 CALL ctl_stop( 'iom_axis', 'Definition for axis with '//TRIM(ADJUSTL(str))//' levels missing') 532 552 ENDIF 533 553 END FUNCTION iom_axis 534 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 535 580 SUBROUTINE iom_set_rst_context(ld_rstr) 536 !!---------------------------------------------------------------------581 !!--------------------------------------------------------------------- 537 582 !! *** SUBROUTINE iom_set_rst_context *** 538 583 !! … … 541 586 !! 542 587 !!--------------------------------------------------------------------- 543 LOGICAL, INTENT(IN) :: ld_rstr544 INTEGER :: ji588 LOGICAL, INTENT(IN) :: ld_rstr 589 INTEGER :: ji 545 590 #if defined key_iomput 546 TYPE(xios_domaingroup) :: domaingroup_hdl547 TYPE(xios_domain) :: domain_hdl548 TYPE(xios_axisgroup) :: axisgroup_hdl549 TYPE(xios_axis) :: axis_hdl550 TYPE(xios_scalar) :: scalar_hdl551 TYPE(xios_scalargroup) :: scalargroup_hdl552 553 CALL xios_get_handle("domain_definition",domaingroup_hdl)554 CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N")555 CALL set_grid("N", glamt, gphit, .TRUE., ld_rstr)591 TYPE(xios_domaingroup) :: domaingroup_hdl 592 TYPE(xios_domain) :: domain_hdl 593 TYPE(xios_axisgroup) :: axisgroup_hdl 594 TYPE(xios_axis) :: axis_hdl 595 TYPE(xios_scalar) :: scalar_hdl 596 TYPE(xios_scalargroup) :: scalargroup_hdl 597 598 CALL xios_get_handle("domain_definition",domaingroup_hdl) 599 CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N") 600 CALL set_grid("N", glamt, gphit, .TRUE., ld_rstr) 556 601 557 CALL xios_get_handle("axis_definition",axisgroup_hdl)558 CALL xios_add_child(axisgroup_hdl, axis_hdl, "nav_lev")602 CALL xios_get_handle("axis_definition",axisgroup_hdl) 603 CALL xios_add_child(axisgroup_hdl, axis_hdl, "nav_lev") 559 604 !AGRIF fails to compile when unit= is in call to xios_set_axis_attr 560 ! CALL xios_set_axis_attr( "nav_lev", long_name="Vertical levels", unit="m", positive="down")561 CALL xios_set_axis_attr( "nav_lev", long_name="Vertical levels in meters", positive="down")562 CALL iom_set_axis_attr( "nav_lev", paxis = gdept_1d )605 ! CALL xios_set_axis_attr( "nav_lev", long_name="Vertical levels", unit="m", positive="down") 606 CALL xios_set_axis_attr( "nav_lev", long_name = "Vertical levels in meters", positive = "down") 607 CALL iom_set_axis_attr( "nav_lev", paxis = gdept_1d ) 563 608 #if defined key_si3 564 CALL xios_add_child(axisgroup_hdl, axis_hdl, "numcat") 565 CALL iom_set_axis_attr( "numcat", (/ (REAL(ji,wp), ji=1,jpl) /) ) 566 #endif 567 568 CALL xios_get_handle("scalar_definition", scalargroup_hdl) 569 CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar") 609 CALL xios_add_child(axisgroup_hdl, axis_hdl, "numcat") 610 CALL iom_set_axis_attr( "numcat", (/ (REAL(ji,wp), ji=1,jpl) /) ) 611 #endif 612 CALL xios_get_handle("scalar_definition", scalargroup_hdl) 613 CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar") 570 614 #endif 571 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 572 655 573 656 SUBROUTINE iom_swap( cdname ) … … 829 912 !! INTERFACE iom_get 830 913 !!---------------------------------------------------------------------- 831 SUBROUTINE iom_g0d_sp( kiomid, cdvar, pvar, ktime , ldxios)914 SUBROUTINE iom_g0d_sp( kiomid, cdvar, pvar, ktime ) 832 915 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 833 916 CHARACTER(len=*), INTENT(in ) :: cdvar ! Name of the variable … … 835 918 REAL(dp) :: ztmp_pvar ! tmp var to read field 836 919 INTEGER , INTENT(in ), OPTIONAL :: ktime ! record number 837 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! use xios to read restart838 920 ! 839 921 INTEGER :: idvar ! variable id … … 843 925 CHARACTER(LEN=100) :: clname ! file name 844 926 CHARACTER(LEN=1) :: cldmspc ! 845 LOGICAL :: llxios 846 ! 847 llxios = .FALSE. 848 IF( PRESENT(ldxios) ) llxios = ldxios 849 850 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 851 932 itime = 1 852 933 IF( PRESENT(ktime) ) itime = ktime … … 871 952 #if defined key_iomput 872 953 IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 954 CALL iom_swap(context) 873 955 CALL xios_recv_field( trim(cdvar), pvar) 956 CALL iom_swap(cxios_context) 874 957 #else 875 958 WRITE(ctmp1,*) 'Can not use XIOS in iom_g0d, file: '//trim(clname)//', var:'//trim(cdvar) … … 879 962 END SUBROUTINE iom_g0d_sp 880 963 881 SUBROUTINE iom_g0d_dp( kiomid, cdvar, pvar, ktime , ldxios)964 SUBROUTINE iom_g0d_dp( kiomid, cdvar, pvar, ktime ) 882 965 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 883 966 CHARACTER(len=*), INTENT(in ) :: cdvar ! Name of the variable 884 967 REAL(dp) , INTENT( out) :: pvar ! read field 885 968 INTEGER , INTENT(in ), OPTIONAL :: ktime ! record number 886 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! use xios to read restart887 969 ! 888 970 INTEGER :: idvar ! variable id … … 892 974 CHARACTER(LEN=100) :: clname ! file name 893 975 CHARACTER(LEN=1) :: cldmspc ! 894 LOGICAL :: llxios 895 ! 896 llxios = .FALSE. 897 IF( PRESENT(ldxios) ) llxios = ldxios 898 899 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 900 981 itime = 1 901 982 IF( PRESENT(ktime) ) itime = ktime … … 919 1000 #if defined key_iomput 920 1001 IF(lwp) WRITE(numout,*) 'XIOS RST READ (0D): ', trim(cdvar) 1002 CALL iom_swap(context) 921 1003 CALL xios_recv_field( trim(cdvar), pvar) 1004 CALL iom_swap(cxios_context) 922 1005 #else 923 1006 WRITE(ctmp1,*) 'Can not use XIOS in iom_g0d, file: '//trim(clname)//', var:'//trim(cdvar) … … 927 1010 END SUBROUTINE iom_g0d_dp 928 1011 929 SUBROUTINE iom_g1d_sp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount , ldxios)1012 SUBROUTINE iom_g1d_sp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount ) 930 1013 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 931 1014 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 936 1019 INTEGER , INTENT(in ), DIMENSION(1), OPTIONAL :: kstart ! start axis position of the reading 937 1020 INTEGER , INTENT(in ), DIMENSION(1), OPTIONAL :: kcount ! number of points in each axis 938 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS939 1021 ! 940 1022 IF( kiomid > 0 ) THEN … … 942 1024 ALLOCATE(ztmp_pvar(size(pvar,1))) 943 1025 CALL iom_get_123d( kiomid, kdom , cdvar , pv_r1d=ztmp_pvar, & 944 & ktime=ktime, kstart=kstart, kcount=kcount, & 945 & ldxios=ldxios ) 1026 & ktime=ktime, kstart=kstart, kcount=kcount ) 946 1027 pvar = ztmp_pvar 947 1028 DEALLOCATE(ztmp_pvar) … … 951 1032 952 1033 953 SUBROUTINE iom_g1d_dp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount , ldxios)1034 SUBROUTINE iom_g1d_dp( kiomid, kdom, cdvar, pvar, ktime, kstart, kcount ) 954 1035 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 955 1036 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 959 1040 INTEGER , INTENT(in ), DIMENSION(1), OPTIONAL :: kstart ! start axis position of the reading 960 1041 INTEGER , INTENT(in ), DIMENSION(1), OPTIONAL :: kcount ! number of points in each axis 961 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS962 1042 ! 963 1043 IF( kiomid > 0 ) THEN 964 1044 IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom , cdvar , pv_r1d=pvar, & 965 & ktime=ktime, kstart=kstart, kcount=kcount, & 966 & ldxios=ldxios ) 1045 & ktime=ktime, kstart=kstart, kcount=kcount) 967 1046 ENDIF 968 1047 END SUBROUTINE iom_g1d_dp 969 1048 970 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) 971 1050 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 972 1051 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 980 1059 INTEGER , INTENT(in ), DIMENSION(2), OPTIONAL :: kstart ! start axis position of the reading 981 1060 INTEGER , INTENT(in ), DIMENSION(2), OPTIONAL :: kcount ! number of points in each axis 982 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS983 1061 ! 984 1062 IF( kiomid > 0 ) THEN … … 987 1065 CALL iom_get_123d( kiomid, kdom, cdvar , pv_r2d = ztmp_pvar , ktime = ktime, & 988 1066 & cd_type = cd_type, psgn = psgn , kfill = kfill, & 989 & kstart = kstart , kcount = kcount , ldxios=ldxios)1067 & kstart = kstart , kcount = kcount ) 990 1068 pvar = ztmp_pvar 991 1069 DEALLOCATE(ztmp_pvar) … … 994 1072 END SUBROUTINE iom_g2d_sp 995 1073 996 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) 997 1075 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 998 1076 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 1005 1083 INTEGER , INTENT(in ), DIMENSION(2), OPTIONAL :: kstart ! start axis position of the reading 1006 1084 INTEGER , INTENT(in ), DIMENSION(2), OPTIONAL :: kcount ! number of points in each axis 1007 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS1008 1085 ! 1009 1086 IF( kiomid > 0 ) THEN 1010 1087 IF( iom_file(kiomid)%nfid > 0 ) CALL iom_get_123d( kiomid, kdom, cdvar , pv_r2d = pvar , ktime = ktime, & 1011 1088 & cd_type = cd_type, psgn = psgn , kfill = kfill, & 1012 & kstart = kstart , kcount = kcount , ldxios=ldxios)1089 & kstart = kstart , kcount = kcount ) 1013 1090 ENDIF 1014 1091 END SUBROUTINE iom_g2d_dp 1015 1092 1016 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 ) 1017 1094 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 1018 1095 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 1026 1103 INTEGER , INTENT(in ), DIMENSION(3), OPTIONAL :: kstart ! start axis position of the reading 1027 1104 INTEGER , INTENT(in ), DIMENSION(3), OPTIONAL :: kcount ! number of points in each axis 1028 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS1029 1105 ! 1030 1106 IF( kiomid > 0 ) THEN … … 1033 1109 CALL iom_get_123d( kiomid, kdom, cdvar , pv_r3d = ztmp_pvar , ktime = ktime, & 1034 1110 & cd_type = cd_type, psgn = psgn , kfill = kfill, & 1035 & kstart = kstart , kcount = kcount , ldxios=ldxios)1111 & kstart = kstart , kcount = kcount ) 1036 1112 pvar = ztmp_pvar 1037 1113 DEALLOCATE(ztmp_pvar) … … 1040 1116 END SUBROUTINE iom_g3d_sp 1041 1117 1042 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 ) 1043 1119 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 1044 1120 INTEGER , INTENT(in ) :: kdom ! Type of domain to be read … … 1051 1127 INTEGER , INTENT(in ), DIMENSION(3), OPTIONAL :: kstart ! start axis position of the reading 1052 1128 INTEGER , INTENT(in ), DIMENSION(3), OPTIONAL :: kcount ! number of points in each axis 1053 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! read data using XIOS1054 1129 ! 1055 1130 IF( kiomid > 0 ) THEN … … 1057 1132 CALL iom_get_123d( kiomid, kdom, cdvar , pv_r3d = pvar , ktime = ktime, & 1058 1133 & cd_type = cd_type, psgn = psgn , kfill = kfill, & 1059 & kstart = kstart , kcount = kcount , ldxios=ldxios)1134 & kstart = kstart , kcount = kcount ) 1060 1135 END IF 1061 1136 ENDIF … … 1065 1140 1066 1141 SUBROUTINE iom_get_123d( kiomid , kdom, cdvar, pv_r1d, pv_r2d, pv_r3d, ktime , & 1067 & cd_type, psgn, kfill, kstart, kcount , ldxios)1142 & cd_type, psgn, kfill, kstart, kcount ) 1068 1143 !!----------------------------------------------------------------------- 1069 1144 !! *** ROUTINE iom_get_123d *** … … 1085 1160 INTEGER , DIMENSION(:) , INTENT(in ), OPTIONAL :: kstart ! start position of the reading in each axis 1086 1161 INTEGER , DIMENSION(:) , INTENT(in ), OPTIONAL :: kcount ! number of points to be read in each axis 1087 LOGICAL , INTENT(in ), OPTIONAL :: ldxios ! use XIOS to read restart1088 1162 ! 1089 1163 LOGICAL :: llok ! true if ok! 1090 LOGICAL :: llxios ! local definition for XIOS read1091 1164 INTEGER :: jl ! loop on number of dimension 1092 1165 INTEGER :: idom ! type of domain … … 1115 1188 REAL(dp) :: gma, gmi 1116 1189 !--------------------------------------------------------------------- 1117 ! 1190 CHARACTER(LEN=lc) :: context 1191 ! 1192 CALL set_xios_context(kiomid, context) 1118 1193 inlev = -1 1119 1194 IF( PRESENT(pv_r3d) ) inlev = SIZE(pv_r3d, 3) 1120 1195 ! 1121 llxios = .FALSE.1122 IF( PRESENT(ldxios) ) llxios = ldxios1123 !1124 1196 idom = kdom 1125 1197 istop = nstop 1126 1198 ! 1127 IF( .NOT.llxios) THEN1199 IF(context == "NONE") THEN 1128 1200 clname = iom_file(kiomid)%name ! esier to read 1129 1201 clinfo = ' iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) … … 1293 1365 !would be good to be able to check which context is active and swap only if current is not restart 1294 1366 idvar = iom_varid( kiomid, cdvar ) 1295 1367 CALL iom_swap(context) 1296 1368 zsgn = 1._wp 1297 1369 IF( PRESENT(psgn ) ) zsgn = psgn … … 1315 1387 CALL xios_recv_field( trim(cdvar), pv_r1d) 1316 1388 ENDIF 1389 CALL iom_swap(cxios_context) 1317 1390 #else 1318 1391 istop = istop + 1 … … 1510 1583 !! INTERFACE iom_rstput 1511 1584 !!---------------------------------------------------------------------- 1512 SUBROUTINE iom_rp0d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1585 SUBROUTINE iom_rp0d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1513 1586 INTEGER , INTENT(in) :: kt ! ocean time-step 1514 1587 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1517 1590 REAL(sp) , INTENT(in) :: pvar ! written field 1518 1591 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1519 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1520 LOGICAL :: llx ! local xios write flag 1521 INTEGER :: ivid ! variable id 1522 1523 llx = .FALSE. 1524 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 1525 1601 IF( llx ) THEN 1526 1602 #ifdef key_iomput 1527 IF( kt == kwrite ) THEN 1528 IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 1529 CALL iom_put(trim(cdvar), pvar) 1530 ELSE 1531 IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 1532 CALL iom_set_rstw_active( trim(cdvar), rs0 = pvar ) 1533 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 1534 1614 #endif 1535 1615 ELSE … … 1543 1623 END SUBROUTINE iom_rp0d_sp 1544 1624 1545 SUBROUTINE iom_rp0d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1625 SUBROUTINE iom_rp0d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1546 1626 INTEGER , INTENT(in) :: kt ! ocean time-step 1547 1627 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1550 1630 REAL(dp) , INTENT(in) :: pvar ! written field 1551 1631 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1552 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1553 LOGICAL :: llx ! local xios write flag 1554 INTEGER :: ivid ! variable id 1555 1556 llx = .FALSE. 1557 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 1558 1641 IF( llx ) THEN 1559 1642 #ifdef key_iomput 1560 IF( kt == kwrite ) THEN 1561 IF(lwp) write(numout,*) 'RESTART: write (XIOS 0D) ',trim(cdvar) 1562 CALL iom_put(trim(cdvar), pvar) 1563 ELSE 1564 IF(lwp) write(numout,*) 'RESTART: define (XIOS 0D) ',trim(cdvar) 1565 CALL iom_set_rstw_active( trim(cdvar), rd0 = pvar ) 1566 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 1567 1654 #endif 1568 1655 ELSE … … 1577 1664 1578 1665 1579 SUBROUTINE iom_rp1d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1666 SUBROUTINE iom_rp1d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1580 1667 INTEGER , INTENT(in) :: kt ! ocean time-step 1581 1668 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1584 1671 REAL(sp) , INTENT(in), DIMENSION( :) :: pvar ! written field 1585 1672 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1586 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1587 LOGICAL :: llx ! local xios write flag 1588 INTEGER :: ivid ! variable id 1589 1590 llx = .FALSE. 1591 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 1592 1682 IF( llx ) THEN 1593 1683 #ifdef key_iomput 1594 IF( kt == kwrite ) THEN 1595 IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 1596 CALL iom_put(trim(cdvar), pvar) 1597 ELSE 1598 IF(lwp) write(numout,*) 'RESTART: define (XIOS 1D)',trim(cdvar) 1599 CALL iom_set_rstw_active( trim(cdvar), rs1 = pvar ) 1600 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 1601 1695 #endif 1602 1696 ELSE … … 1610 1704 END SUBROUTINE iom_rp1d_sp 1611 1705 1612 SUBROUTINE iom_rp1d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1706 SUBROUTINE iom_rp1d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1613 1707 INTEGER , INTENT(in) :: kt ! ocean time-step 1614 1708 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1617 1711 REAL(dp) , INTENT(in), DIMENSION( :) :: pvar ! written field 1618 1712 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1619 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1620 LOGICAL :: llx ! local xios write flag 1621 INTEGER :: ivid ! variable id 1622 1623 llx = .FALSE. 1624 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 1625 1722 IF( llx ) THEN 1626 1723 #ifdef key_iomput 1627 IF( kt == kwrite ) THEN 1628 IF(lwp) write(numout,*) 'RESTART: write (XIOS 1D) ',trim(cdvar) 1629 CALL iom_put(trim(cdvar), pvar) 1630 ELSE 1631 IF(lwp) write(numout,*) 'RESTART: define (XIOS 1D)',trim(cdvar) 1632 CALL iom_set_rstw_active( trim(cdvar), rd1 = pvar ) 1633 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 1634 1735 #endif 1635 1736 ELSE … … 1644 1745 1645 1746 1646 SUBROUTINE iom_rp2d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1747 SUBROUTINE iom_rp2d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1647 1748 INTEGER , INTENT(in) :: kt ! ocean time-step 1648 1749 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1651 1752 REAL(sp) , INTENT(in), DIMENSION(:, : ) :: pvar ! written field 1652 1753 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1653 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1654 LOGICAL :: llx 1655 INTEGER :: ivid ! variable id 1656 1657 llx = .FALSE. 1658 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 1659 1763 IF( llx ) THEN 1660 1764 #ifdef key_iomput 1661 IF( kt == kwrite ) THEN 1662 IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 1663 CALL iom_put(trim(cdvar), pvar) 1664 ELSE 1665 IF(lwp) write(numout,*) 'RESTART: define (XIOS 2D)',trim(cdvar) 1666 CALL iom_set_rstw_active( trim(cdvar), rs2 = pvar ) 1667 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 1668 1776 #endif 1669 1777 ELSE … … 1677 1785 END SUBROUTINE iom_rp2d_sp 1678 1786 1679 SUBROUTINE iom_rp2d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1787 SUBROUTINE iom_rp2d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1680 1788 INTEGER , INTENT(in) :: kt ! ocean time-step 1681 1789 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1684 1792 REAL(dp) , INTENT(in), DIMENSION(:, : ) :: pvar ! written field 1685 1793 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1686 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1687 LOGICAL :: llx 1688 INTEGER :: ivid ! variable id 1689 1690 llx = .FALSE. 1691 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 1692 1803 IF( llx ) THEN 1693 1804 #ifdef key_iomput 1694 IF( kt == kwrite ) THEN 1695 IF(lwp) write(numout,*) 'RESTART: write (XIOS 2D) ',trim(cdvar) 1696 CALL iom_put(trim(cdvar), pvar) 1697 ELSE 1698 IF(lwp) write(numout,*) 'RESTART: define (XIOS 2D)',trim(cdvar) 1699 CALL iom_set_rstw_active( trim(cdvar), rd2 = pvar ) 1700 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 1701 1816 #endif 1702 1817 ELSE … … 1711 1826 1712 1827 1713 SUBROUTINE iom_rp3d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1828 SUBROUTINE iom_rp3d_sp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1714 1829 INTEGER , INTENT(in) :: kt ! ocean time-step 1715 1830 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1718 1833 REAL(sp) , INTENT(in), DIMENSION(:,:,:) :: pvar ! written field 1719 1834 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1720 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1721 LOGICAL :: llx ! local xios write flag 1722 INTEGER :: ivid ! variable id 1723 1724 llx = .FALSE. 1725 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 1726 1844 IF( llx ) THEN 1727 1845 #ifdef key_iomput 1728 IF( kt == kwrite ) THEN 1729 IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 1730 CALL iom_put(trim(cdvar), pvar) 1731 ELSE 1732 IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 1733 CALL iom_set_rstw_active( trim(cdvar), rs3 = pvar ) 1734 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 1735 1857 #endif 1736 1858 ELSE … … 1744 1866 END SUBROUTINE iom_rp3d_sp 1745 1867 1746 SUBROUTINE iom_rp3d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype , ldxios)1868 SUBROUTINE iom_rp3d_dp( kt, kwrite, kiomid, cdvar, pvar, ktype ) 1747 1869 INTEGER , INTENT(in) :: kt ! ocean time-step 1748 1870 INTEGER , INTENT(in) :: kwrite ! writing time-step … … 1751 1873 REAL(dp) , INTENT(in), DIMENSION(:,:,:) :: pvar ! written field 1752 1874 INTEGER , INTENT(in), OPTIONAL :: ktype ! variable external type 1753 LOGICAL, OPTIONAL :: ldxios ! xios write flag 1754 LOGICAL :: llx ! local xios write flag 1755 INTEGER :: ivid ! variable id 1756 1757 llx = .FALSE. 1758 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 1759 1884 IF( llx ) THEN 1760 1885 #ifdef key_iomput 1761 IF( kt == kwrite ) THEN 1762 IF(lwp) write(numout,*) 'RESTART: write (XIOS 3D) ',trim(cdvar) 1763 CALL iom_put(trim(cdvar), pvar) 1764 ELSE 1765 IF(lwp) write(numout,*) 'RESTART: define (XIOS 3D)',trim(cdvar) 1766 CALL iom_set_rstw_active( trim(cdvar), rd3 = pvar ) 1767 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 1768 1897 #endif 1769 1898 ELSE … … 1880 2009 IF( iom_use(cdname) ) THEN 1881 2010 #if defined key_iomput 1882 IF( SIZE(pfield2d, dim=1) == jpi .AND. SIZE(pfield2d, dim=2) == jpj ) THEN 1883 CALL xios_send_field( cdname, pfield2d(Nis0:Nie0, Njs0:Nje0) ) ! this extraction will create a copy of pfield2d 1884 ELSE 1885 CALL xios_send_field( cdname, pfield2d ) 1886 ENDIF 2011 CALL xios_send_field( cdname, pfield2d ) 1887 2012 #else 1888 2013 WRITE(numout,*) pfield2d ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings … … 1896 2021 IF( iom_use(cdname) ) THEN 1897 2022 #if defined key_iomput 1898 IF( SIZE(pfield2d, dim=1) == jpi .AND. SIZE(pfield2d, dim=2) == jpj ) THEN 1899 CALL xios_send_field( cdname, pfield2d(Nis0:Nie0, Njs0:Nje0) ) ! this extraction will create a copy of pfield2d 1900 ELSE 1901 CALL xios_send_field( cdname, pfield2d ) 1902 ENDIF 2023 CALL xios_send_field( cdname, pfield2d ) 1903 2024 #else 1904 2025 WRITE(numout,*) pfield2d ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings … … 1912 2033 IF( iom_use(cdname) ) THEN 1913 2034 #if defined key_iomput 1914 IF( SIZE(pfield3d, dim=1) == jpi .AND. SIZE(pfield3d, dim=2) == jpj ) THEN 1915 CALL xios_send_field( cdname, pfield3d(Nis0:Nie0, Njs0:Nje0,:) ) ! this extraction will create a copy of pfield3d 1916 ELSE 1917 CALL xios_send_field( cdname, pfield3d ) 1918 ENDIF 2035 CALL xios_send_field( cdname, pfield3d ) 1919 2036 #else 1920 2037 WRITE(numout,*) pfield3d ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings … … 1928 2045 IF( iom_use(cdname) ) THEN 1929 2046 #if defined key_iomput 1930 IF( SIZE(pfield3d, dim=1) == jpi .AND. SIZE(pfield3d, dim=2) == jpj ) THEN 1931 CALL xios_send_field( cdname, pfield3d(Nis0:Nie0, Njs0:Nje0,:) ) ! this extraction will create a copy of pfield3d 1932 ELSE 1933 CALL xios_send_field( cdname, pfield3d ) 1934 ENDIF 2047 CALL xios_send_field( cdname, pfield3d ) 1935 2048 #else 1936 2049 WRITE(numout,*) pfield3d ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings … … 1944 2057 IF( iom_use(cdname) ) THEN 1945 2058 #if defined key_iomput 1946 IF( SIZE(pfield4d, dim=1) == jpi .AND. SIZE(pfield4d, dim=2) == jpj ) THEN 1947 CALL xios_send_field( cdname, pfield4d(Nis0:Nie0, Njs0:Nje0,:,:) ) ! this extraction will create a copy of pfield4d 1948 ELSE 1949 CALL xios_send_field (cdname, pfield4d ) 1950 ENDIF 2059 CALL xios_send_field (cdname, pfield4d ) 1951 2060 #else 1952 2061 WRITE(numout,*) pfield4d ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings … … 1960 2069 IF( iom_use(cdname) ) THEN 1961 2070 #if defined key_iomput 1962 IF( SIZE(pfield4d, dim=1) == jpi .AND. SIZE(pfield4d, dim=2) == jpj ) THEN 1963 CALL xios_send_field( cdname, pfield4d(Nis0:Nie0, Njs0:Nje0,:,:) ) ! this extraction will create a copy of pfield4d 1964 ELSE 1965 CALL xios_send_field (cdname, pfield4d ) 1966 ENDIF 2071 CALL xios_send_field (cdname, pfield4d ) 1967 2072 #else 1968 2073 WRITE(numout,*) pfield4d ! iom_use(cdname) = .F. -> useless test to avoid compilation warnings … … 2135 2240 CALL iom_swap( cdname ) ! swap to cdname context 2136 2241 CALL xios_update_calendar(kt) 2137 IF( cdname /= TRIM(cxios_context) ) CALL iom_swap( TRIM(cxios_context)) ! return back to nemo context2242 IF( cdname /= TRIM(cxios_context) ) CALL iom_swap( cxios_context ) ! return back to nemo context 2138 2243 END SUBROUTINE iom_setkt 2139 2244 … … 2149 2254 CALL iom_swap( cdname ) ! swap to cdname context 2150 2255 CALL xios_context_finalize() ! finalize the context 2151 IF( cdname /= TRIM(cxios_context) ) CALL iom_swap( TRIM(cxios_context)) ! return back to nemo context2256 IF( cdname /= cxios_context ) CALL iom_swap( cxios_context ) ! return back to nemo context 2152 2257 ENDIF 2153 2258 ! … … 2170 2275 ! 2171 2276 CALL iom_set_domain_attr("grid_"//cdgrd, ni_glo=Ni0glo,nj_glo=Nj0glo,ibegin=mig0(Nis0)-1,jbegin=mjg0(Njs0)-1,ni=Ni_0,nj=Nj_0) 2172 CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = 0, data_ni = Ni_0, data_jbegin = 0, data_nj = Nj_0)2277 CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = -nn_hls, data_ni = jpi, data_jbegin = -nn_hls, data_nj = jpj) 2173 2278 !don't define lon and lat for restart reading context. 2174 2279 IF ( .NOT.ldrxios ) & … … 2269 2374 CALL dom_ngb( 180.0_wp, 90.0_wp, ix, iy, 'T' ) ! i-line that passes near the North Pole : Reference latitude (used in plots) 2270 2375 CALL iom_set_domain_attr("gznl", ni_glo=Ni0glo, nj_glo=Nj0glo, ibegin=mig0(Nis0)-1, jbegin=mjg0(Njs0)-1, ni=Ni_0, nj=Nj_0) 2271 CALL iom_set_domain_attr("gznl", data_dim=2, data_ibegin = 0, data_ni = Ni_0, data_jbegin = 0, data_nj = Nj_0)2376 CALL iom_set_domain_attr("gznl", data_dim=2, data_ibegin = -nn_hls, data_ni = jpi, data_jbegin = -nn_hls, data_nj = jpj) 2272 2377 CALL iom_set_domain_attr("gznl", lonvalue = real(zlon, dp), & 2273 2378 & latvalue = real(RESHAPE(plat(Nis0:Nie0, Njs0:Nje0),(/ Ni_0*Nj_0 /)),dp)) 2274 CALL iom_set_zoom_domain_attr("ptr", ibegin=ix-1, jbegin=0, ni=1, nj=Nj _0)2379 CALL iom_set_zoom_domain_attr("ptr", ibegin=ix-1, jbegin=0, ni=1, nj=Nj0glo) 2275 2380 ! 2276 2381 CALL iom_update_file_name('ptr') -
NEMO/branches/2020/test_12905_xios_restart/src/OCE/IOM/iom_def.F90
r13727 r13934 38 38 !XIOS read restart 39 39 LOGICAL, PUBLIC :: lrxios = .FALSE. !: read single file restart using XIOS main switch 40 LOGICAL, PUBLIC :: lroxios = .FALSE. !: read single file restart using XIOS for oce41 40 LOGICAL, PUBLIC :: lxios_sini = .FALSE. ! is restart in a single file 42 41 … … 62 61 END TYPE file_descriptor 63 62 TYPE(file_descriptor), DIMENSION(jpmax_files), PUBLIC :: iom_file !: array containing the info for all opened files 64 !metadata in restart file for restart read with XIOS65 INTEGER, PUBLIC, PARAMETER :: NMETA = 1066 CHARACTER(LEN=nf90_max_name), PUBLIC :: meta(NMETA)67 63 !$AGRIF_END_DO_NOT_TREAT 68 64 ! -
NEMO/branches/2020/test_12905_xios_restart/src/OCE/IOM/restart.F90
r13750 r13934 110 110 ELSE 111 111 #if defined key_iomput 112 cw xios_context = "rstw_"//TRIM(ADJUSTL(clkt))112 cw_ocerst_cxt = "rstw_"//TRIM(ADJUSTL(clkt)) 113 113 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 114 114 clpname = clname … … 116 116 clpname = TRIM(Agrif_CFixed())//"_"//clname 117 117 ENDIF 118 CALL iom_init( cwxios_context, 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( cwxios_context ) 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 167 166 CALL iom_close( numrow ) ! close the restart file (only at last time step) 168 167 ELSE 169 CALL iom_context_finalize( cwxios_context ) 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. … … 209 210 ! can handle checking if variable is in the restart file (there will be no need to open 210 211 ! restart) 211 lr oxios = lrxios.AND.lxios_sini212 213 IF( lr oxios) THEN214 cr xios_context = 'oce_rst'212 lrxios = lrxios.AND.lxios_sini 213 214 IF( lrxios) THEN 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 xios_context, 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( lroxios ) CALL iom_swap( TRIM(crxios_context) )248 248 IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 ) THEN 249 CALL iom_get( numror, 'rdt', zrdt , ldxios = lroxios)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 = lroxios)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 = lroxios)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 = lroxios) ! 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( lroxios ) CALL iom_swap( TRIM(cxios_context) )295 294 ! 296 295 IF( l_1st_euler ) THEN ! Euler restart -
NEMO/branches/2020/test_12905_xios_restart/src/OCE/ISF/isfcpl.F90
r13750 r13934 144 144 END DO 145 145 ! 146 IF( lwxios ) CALL iom_swap( cwxios_context ) 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( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 177 CALL iom_get( numror, jpdom_auto, 'ssmask' , zssmask_b, ldxios = lroxios ) ! need to extrapolate T/S 178 IF( lroxios ) 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( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 260 CALL iom_get( numror, jpdom_auto, 'tmask' , ztmask_b, ldxios = lroxios ) ! need to extrapolate T/S 261 !CALL iom_get( numror, jpdom_auto, 'wmask' , zwmask_b, ldxios = lroxios ) ! need to extrapolate T/S 262 !CALL iom_get( numror, jpdom_auto, 'gdepw_n', zdepw_b(:,:,:), ldxios = lroxios ) ! need to interpol vertical profile (vvl) 263 IF( lroxios ) 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( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 408 CALL iom_get( numror, jpdom_auto, 'tmask' , ztmask_b, ldxios = lroxios ) 409 CALL iom_get( numror, jpdom_auto, 'e3u_n' , ze3u_b , ldxios = lroxios ) 410 CALL iom_get( numror, jpdom_auto, 'e3v_n' , ze3v_b , ldxios = lroxios ) 411 IF( lroxios ) 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( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 520 CALL iom_get( numror, jpdom_auto, 'tmask' , ztmask_b(:,:,:), ldxios = lroxios ) ! need to extrapolate T/S 521 CALL iom_get( numror, jpdom_auto, 'e3t_n' , ze3t_b(:,:,:) , ldxios = lroxios ) 522 CALL iom_get( numror, jpdom_auto, 'tn' , zt_b(:,:,:) , ldxios = lroxios ) 523 CALL iom_get( numror, jpdom_auto, 'sn' , zs_b(:,:,:) , ldxios = lroxios ) 524 IF( lroxios ) 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/test_12905_xios_restart/src/OCE/ISF/isfrst.F90
r13727 r13934 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( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 56 CALL iom_get( numror, jpdom_auto, cfwf_b, pfwf_b(:,:) , ldxios = lroxios ) ! before ice shelf melt 57 CALL iom_get( numror, jpdom_auto, chc_b , ptsc_b (:,:,jp_tem), ldxios = lroxios ) ! before ice shelf heat flux 58 CALL iom_get( numror, jpdom_auto, csc_b , ptsc_b (:,:,jp_sal), ldxios = lroxios ) ! before ice shelf heat flux 59 IF( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/SBC/sbcapr.F90
r13727 r13934 148 148 ! ! ---------------------------------------- ! 149 149 ! !* Restart: read in restart file 150 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )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 = lroxios) ! 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( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/SBC/sbcmod.F90
r13727 r13934 229 229 CASE DEFAULT !- not supported 230 230 END SELECT 231 IF( ln_diurnal .AND. .NOT. ln_blk) CALL ctl_stop( "sbc_init: diurnal flux processing only implemented for bulk forcing" )231 IF( ln_diurnal .AND. .NOT. (ln_blk.OR.ln_abl) ) CALL ctl_stop( "sbc_init: diurnal flux processing only implemented for bulk forcing" ) 232 232 ! 233 233 ! !** allocate and set required variables … … 497 497 IF( kt == nit000 ) THEN ! set the forcing field at nit000 - 1 ! 498 498 ! ! ---------------------------------------- ! 499 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )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 = lroxios) ! before i-stress (U-point)504 CALL iom_get( numror, jpdom_auto, 'vtau_b', vtau_b , ldxios = lroxios) ! before j-stress (V-point)505 CALL iom_get( numror, jpdom_auto, 'qns_b', qns_b , ldxios = lroxios) ! 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 = lroxios) ! before solar heat flux (T-point)508 CALL iom_get( numror, jpdom_auto, 'emp_b', emp_b , ldxios = lroxios) ! 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 = lroxios) ! 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( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/SBC/sbcrnf.F90
r13727 r13934 157 157 IF( kt == nit000 ) THEN ! set the forcing field at nit000 - 1 ! 158 158 ! ! ---------------------------------------- ! 159 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )160 159 IF( ln_rstart .AND. & !* Restart: read in restart file 161 160 & iom_varid( numror, 'rnf_b', ldstop = .FALSE. ) > 0 ) THEN 162 IF(lwp) WRITE(numout,*) ' nit000-1 runoff forcing fields red in the restart file', lr oxios163 CALL iom_get( numror, jpdom_auto, 'rnf_b', rnf_b , ldxios = lroxios) ! before runoff164 CALL iom_get( numror, jpdom_auto, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem) , ldxios = lroxios) ! before heat content of runoff165 CALL iom_get( numror, jpdom_auto, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal) , ldxios = lroxios) ! before salinity content of runoff161 IF(lwp) WRITE(numout,*) ' nit000-1 runoff forcing fields red in the restart file', lrxios 162 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( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/SBC/sbcssm.F90
r13727 r13934 154 154 IF(lwp) WRITE(numout,*) '~~~~~~~' 155 155 zf_sbc = REAL( nn_fsbc, wp ) 156 IF( lwxios ) CALL iom_swap( cwxios_context ) 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( lroxios ) CALL iom_swap( TRIM(crxios_context) )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 = lroxios) ! sbc frequency of previous run212 CALL iom_get( numror, jpdom_auto, 'ssu_m' , ssu_m, ldxios = lroxios,cd_type = 'U', psgn = -1._wp ) ! sea surface mean velocity (U-point)213 CALL iom_get( numror, jpdom_auto, 'ssv_m' , ssv_m, ldxios = lroxios,cd_type = 'V', psgn = -1._wp ) ! " " velocity (V-point)214 CALL iom_get( numror, jpdom_auto, 'sst_m' , sst_m , ldxios = lroxios) ! " " temperature (T-point)215 CALL iom_get( numror, jpdom_auto, 'sss_m' , sss_m , ldxios = lroxios) ! " " salinity (T-point)216 CALL iom_get( numror, jpdom_auto, 'ssh_m' , ssh_m , ldxios = lroxios) ! " " height (T-point)217 CALL iom_get( numror, jpdom_auto, 'e3t_m' , e3t_m , ldxios = lroxios) ! 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 = lroxios)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( lroxios ) CALL iom_swap( TRIM(cxios_context) )240 236 ENDIF 241 237 ! -
NEMO/branches/2020/test_12905_xios_restart/src/OCE/TRA/traqsr.F90
r13727 r13934 135 135 ! !-----------------------------------! 136 136 IF( kt == nit000 ) THEN !== 1st time step ==! 137 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )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 = lroxios) ! 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( lroxios ) 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( cwxios_context ) 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( lroxios ) CALL iom_swap( TRIM(crxios_context) )435 430 IF( iom_varid( numror, 'fraqsr_1lev', ldstop = .FALSE. ) > 0 ) THEN 436 CALL iom_get( numror, jpdom_auto, 'fraqsr_1lev' , fraqsr_1lev , ldxios = lroxios)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( lroxios ) CALL iom_swap( TRIM(cxios_context) )441 435 ! 442 436 END SUBROUTINE tra_qsr_init -
NEMO/branches/2020/test_12905_xios_restart/src/OCE/TRA/trasbc.F90
r13727 r13934 107 107 ! !== Set before sbc tracer content fields ==! 108 108 IF( kt == nit000 ) THEN !* 1st time-step 109 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )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 = lroxios) ! before heat content sbc trend116 CALL iom_get( numror, jpdom_auto, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal) , ldxios = lroxios) ! 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( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/ZDF/zdfgls.F90
r13727 r13934 1084 1084 ! ! --------------- 1085 1085 IF( ln_rstart ) THEN !* Read the restart file 1086 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )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 = lroxios)1094 CALL iom_get( numror, jpdom_auto, 'avt_k' , avt_k , ldxios = lroxios)1095 CALL iom_get( numror, jpdom_auto, 'avm_k' , avm_k , ldxios = lroxios)1096 CALL iom_get( numror, jpdom_auto, 'hmxl_n', hmxl_n , ldxios = lroxios)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( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/ZDF/zdfosm.F90
r13727 r13934 1467 1467 !!----------------------------------------------------------------------------- 1468 1468 IF( TRIM(cdrw) == 'READ'.AND. ln_rstart) THEN 1469 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )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 = lroxios)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 = lroxios)1482 CALL iom_get( numror, jpdom_auto, 'hbli', hbli , ldxios = lroxios)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( lroxios ) 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( lroxios ) 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/test_12905_xios_restart/src/OCE/ZDF/zdfric.F90
r13727 r13934 206 206 ! !* Read the restart file 207 207 IF( ln_rstart ) THEN 208 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )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 = lroxios)214 CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k , ldxios = lroxios)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( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/ZDF/zdftke.F90
r13727 r13934 746 746 ! ! --------------- 747 747 IF( ln_rstart ) THEN !* Read the restart file 748 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) )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 = lroxios)756 CALL iom_get( numror, jpdom_auto, 'avt_k', avt_k , ldxios = lroxios)757 CALL iom_get( numror, jpdom_auto, 'avm_k', avm_k , ldxios = lroxios)758 CALL iom_get( numror, jpdom_auto, 'dissl', dissl , ldxios = lroxios)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( lroxios ) 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( cwxios_context ) 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/test_12905_xios_restart/src/OCE/step.F90
r13727 r13934 125 125 ENDIF 126 126 IF((kstp == nitrst) .AND. lwxios) THEN 127 CALL iom_swap( cw xios_context )128 CALL iom_init_closedef(cw xios_context)129 CALL iom_setkt( kstp - nit000 + 1, cw xios_context )127 CALL iom_swap( cw_ocerst_cxt ) 128 CALL iom_init_closedef(cw_ocerst_cxt) 129 CALL iom_setkt( kstp - nit000 + 1, cw_ocerst_cxt ) 130 130 #if defined key_top 131 CALL iom_swap( cw txios_context )132 CALL iom_init_closedef(cw txios_context)133 CALL iom_setkt( kstp - nit000 + 1, cw txios_context )131 CALL iom_swap( cw_toprst_cxt ) 132 CALL iom_init_closedef(cw_toprst_cxt) 133 CALL iom_setkt( kstp - nit000 + 1, cw_toprst_cxt ) 134 134 #endif 135 135 ENDIF 136 136 #if defined key_si3 137 137 IF(((kstp + nn_fsbc - 1) == nitrst) .AND. lwxios) THEN 138 CALL iom_swap( cw ixios_context )139 CALL iom_init_closedef(cw ixios_context)140 CALL iom_setkt( kstp - nit000 + 1, cw ixios_context )138 CALL iom_swap( cw_icerst_cxt ) 139 CALL iom_init_closedef(cw_icerst_cxt) 140 CALL iom_setkt( kstp - nit000 + 1, cw_icerst_cxt ) 141 141 ENDIF 142 142 #endif … … 355 355 IF( kstp == nit000 ) THEN ! 1st time step only 356 356 CALL iom_close( numror ) ! close input ocean restart file 357 IF( lr oxios ) CALL iom_context_finalize( crxios_context )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/test_12905_xios_restart/src/OCE/stpMLF.F90
r13727 r13934 364 364 IF( kstp == nitend .OR. indic < 0 ) THEN 365 365 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 366 IF(lrxios) CALL iom_context_finalize( cr xios_context )366 IF(lrxios) CALL iom_context_finalize( cr_ocerst_cxt ) 367 367 IF( ln_crs ) CALL iom_context_finalize( trim(cxios_context)//"_crs" ) ! 368 368 ENDIF -
NEMO/branches/2020/test_12905_xios_restart/src/OFF/dtadyn.F90
r13727 r13934 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/test_12905_xios_restart/src/OFF/nemogcm.F90
r13727 r13934 127 127 ! 128 128 IF((istp == nitrst) .AND. lwxios) THEN 129 CALL iom_swap( cw txios_context )130 CALL iom_init_closedef(cw txios_context)131 CALL iom_setkt( istp - nit000 + 1, cw txios_context )129 CALL iom_swap( cw_toprst_cxt ) 130 CALL iom_init_closedef(cw_toprst_cxt) 131 CALL iom_setkt( istp - nit000 + 1, cw_toprst_cxt ) 132 132 ENDIF 133 133 -
NEMO/branches/2020/test_12905_xios_restart/src/SAS/step.F90
r13727 r13934 91 91 CALL iom_setkt( kstp - nit000 + 1, cxios_context ) ! tell iom we are at time step kstp 92 92 IF((kstp == nitrst) .AND. lwxios) THEN 93 CALL iom_swap( cw xios_context )94 CALL iom_init_closedef(cw xios_context)95 CALL iom_setkt( kstp - nit000 + 1, cw xios_context )93 CALL iom_swap( cw_ocerst_cxt ) 94 CALL iom_init_closedef(cw_ocerst_cxt) 95 CALL iom_setkt( kstp - nit000 + 1, cw_ocerst_cxt ) 96 96 #if defined key_top 97 CALL iom_swap( cw txios_context )98 CALL iom_init_closedef(cw txios_context)99 CALL iom_setkt( kstp - nit000 + 1, cw txios_context )97 CALL iom_swap( cw_toprst_cxt ) 98 CALL iom_init_closedef(cw_toprst_cxt) 99 CALL iom_setkt( kstp - nit000 + 1, cw_toprst_cxt ) 100 100 #endif 101 101 ENDIF … … 104 104 #if defined key_si3 105 105 IF(((kstp + nn_fsbc - 1) == nitrst) .AND. lwxios) THEN 106 CALL iom_swap( cw ixios_context )107 CALL iom_init_closedef(cw ixios_context)108 CALL iom_setkt( kstp - nit000 + 1, cw ixios_context )106 CALL iom_swap( cw_icerst_cxt ) 107 CALL iom_init_closedef(cw_icerst_cxt) 108 CALL iom_setkt( kstp - nit000 + 1, cw_icerst_cxt ) 109 109 ENDIF 110 110 #endif … … 148 148 IF( kstp == nit000 ) THEN 149 149 CALL iom_close( numror ) ! close input ocean restart file 150 IF( lr oxios ) CALL iom_context_finalize( crxios_context )150 IF( lrxios ) CALL iom_context_finalize( cr_ocerst_cxt ) 151 151 ENDIF 152 152 … … 161 161 CALL iom_close( numrow ) 162 162 ELSE 163 CALL iom_context_finalize( cwxios_context ) 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/test_12905_xios_restart/src/SWE/domvvl.F90
r13472 r13934 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( cwxios_context )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/test_12905_xios_restart/src/SWE/step.F90
r13458 r13934 304 304 IF( kstp == nitend .OR. indic < 0 ) THEN 305 305 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 306 IF(lrxios) CALL iom_context_finalize( cr xios_context )306 IF(lrxios) CALL iom_context_finalize( cr_ocerst_cxt ) 307 307 ENDIF 308 308 #endif -
NEMO/branches/2020/test_12905_xios_restart/src/SWE/stepLF.F90
r13295 r13934 318 318 IF( kstp == nitend .OR. indic < 0 ) THEN 319 319 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 320 IF(lrxios) CALL iom_context_finalize( cr xios_context )320 IF(lrxios) CALL iom_context_finalize( cr_ocerst_cxt ) 321 321 ENDIF 322 322 #endif -
NEMO/branches/2020/test_12905_xios_restart/src/SWE/stpRK3.F90
r13295 r13934 361 361 IF( kstp == nitend .OR. indic < 0 ) THEN 362 362 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 363 IF(lrxios) CALL iom_context_finalize( cr xios_context )363 IF(lrxios) CALL iom_context_finalize( cr_ocerst_cxt ) 364 364 ENDIF 365 365 #endif -
NEMO/branches/2020/test_12905_xios_restart/src/TOP/C14/trcini_c14.F90
r13727 r13934 68 68 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 69 69 ! 70 IF(lrtxios) CALL iom_swap(crtxios_context) 71 CALL iom_get( numrtr, 'co2sbc', co2sbc, ldxios = lrtxios ) 72 CALL iom_get( numrtr, jpdom_auto, 'c14sbc', c14sbc, ldxios = lrtxios ) 73 CALL iom_get( numrtr, jpdom_auto, 'exch_co2', exch_co2, ldxios = lrtxios ) 74 CALL iom_get( numrtr, jpdom_auto, 'exch_c14', exch_c14, ldxios = lrtxios ) 75 CALL iom_get( numrtr, jpdom_auto, 'qtr_c14', qtr_c14, ldxios = lrtxios ) 76 IF(lrtxios) 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(lrtxios) CALL iom_swap(crtxios_context) 90 CALL iom_get( numrtr, jpdom_auto, 'qint_c14', qint_c14, ldxios = lrtxios ) 91 IF(lrtxios) CALL iom_swap(cxios_context) 87 CALL iom_get( numrtr, jpdom_auto, 'qint_c14', qint_c14 ) 92 88 ! 93 89 ENDIF -
NEMO/branches/2020/test_12905_xios_restart/src/TOP/C14/trcsms_c14.F90
r13727 r13934 144 144 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 145 145 ! 146 IF( lwxios ) CALL iom_swap( cwtxios_context ) 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/test_12905_xios_restart/src/TOP/CFC/trcsms_cfc.F90
r13727 r13934 179 179 IF(lwp) WRITE(numout,*) '~~~~' 180 180 jl = 0 181 IF( lwxios ) CALL iom_swap( cwtxios_context )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(lrtxios) CALL iom_swap(crtxios_context)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 = lrtxios)300 CALL iom_get( numrtr, jpdom_auto, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jl) ) 304 301 END DO 305 IF(lrtxios) CALL iom_swap(cxios_context)306 302 ENDIF 307 303 IF(lwp) WRITE(numout,*) -
NEMO/branches/2020/test_12905_xios_restart/src/TOP/PISCES/P2Z/p2zexp.F90
r13727 r13934 134 134 & 'at it= ', kt,' date= ', ndastp 135 135 IF(lwp) WRITE(numout,*) '~~~~' 136 IF( lwxios ) CALL iom_swap( cwtxios_context ) 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(lrtxios) CALL iom_swap(crtxios_context) 219 CALL iom_get( numrtr, jpdom_auto, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:), ldxios = lrtxios ) 220 CALL iom_get( numrtr, jpdom_auto, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:), ldxios = lrtxios ) 221 IF(lrtxios) 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/test_12905_xios_restart/src/TOP/PISCES/P4Z/p4zsms.F90
r13727 r13934 332 332 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 333 333 ! 334 IF(lrtxios) CALL iom_swap(crtxios_context)335 334 IF( iom_varid( numrtr, 'PH', ldstop = .FALSE. ) > 0 ) THEN 336 CALL iom_get( numrtr, jpdom_auto, 'PH' , hi(:,:,:) , ldxios = lrtxios)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 = lrtxios)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 = lrtxios)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 = lrtxios)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 = lrtxios)357 CALL iom_get( numrtr, jpdom_auto, 'sizen' , sizen(:,:,:) , ldxios = lrtxios)358 CALL iom_get( numrtr, jpdom_auto, 'sized' , sized(:,:,:) , ldxios = lrtxios)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(lrtxios) 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( cwtxios_context ) 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/test_12905_xios_restart/src/TOP/PISCES/SED/sed.F90
r12969 r13934 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 … … 53 52 INTEGER , PUBLIC :: nn_rstsed !: control of the time step ( 0 or 1 ) for pass. tr. 54 53 INTEGER , PUBLIC :: nn_dtsed = 1 !: frequency of step on passive tracers 55 LOGICAL, PUBLIC :: lrsxios !: use xios to read restart56 54 CHARACTER(len = 80) , PUBLIC :: cn_sedrst_in !: suffix of pass. tracer restart name (input) 57 55 CHARACTER(len = 256), PUBLIC :: cn_sedrst_indir !: restart input directory -
NEMO/branches/2020/test_12905_xios_restart/src/TOP/PISCES/SED/sedrst.F90
r13750 r13934 85 85 ELSE 86 86 #if defined key_iomput 87 cw sxios_context = "rstws_"//TRIM(ADJUSTL(clkt))87 cw_sedrst_cxt = "rstws_"//TRIM(ADJUSTL(clkt)) 88 88 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 89 89 clpname = clname … … 91 91 clpname = TRIM(Agrif_CFixed())//"_"//clname 92 92 ENDIF 93 CALL iom_init( cwsxios_context, 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(lrsxios) CALL iom_swap(crsxios_context)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 = lrsxios)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 = lrsxios)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 = lrsxios)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 = lrsxios)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 = lrsxios)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(lrsxios) 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( cwsxios_context )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 … … 322 318 CALL iom_close( numrsw ) ! close the restart file (only at last time step) 323 319 ELSE 324 CALL iom_context_finalize( cwsxios_context ) 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 … … 381 379 CALL iom_open( TRIM(cn_sedrst_indir)//'/'//cn_sedrst_in, numrsr ) 382 380 383 lrsxios = lrxios.AND.lxios_sini 384 IF( lrsxios) THEN 385 crsxios_context = 'sed_rst' 381 IF( lrxios) THEN 382 cr_sedrst_cxt = 'sed_rst' 386 383 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SED' 387 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 388 clpname = cn_sedrst_in 389 ELSE 390 clpname = TRIM(Agrif_CFixed())//"_"//cn_sedrst_in 391 ENDIF 392 CALL iom_init( crsxios_context, fname = TRIM(cn_sedrst_indir)//'/'//TRIM(clpname), & 393 idfp = iom_file(numrsr)%nfid, ld_closedef = .TRUE. ) 394 ENDIF 395 IF(lrsxios) CALL iom_swap(crsxios_context) 396 CALL iom_get ( numrsr, 'kt', zkt, ldxios = lrsxios ) ! last time-step of previous run 397 IF(lrsxios) 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 398 392 IF(lwp) THEN 399 393 WRITE(numsed,*) ' *** Info read in restart : ' … … 416 410 ! ! set the date in offline mode 417 411 IF( ln_rst_sed .AND. nn_rstsed == 2 ) THEN 418 IF(lrsxios) CALL iom_swap(crsxios_context) 419 CALL iom_get( numrsr, 'ndastp', zndastp, ldxios = lrsxios ) 412 CALL iom_get( numrsr, 'ndastp', zndastp ) 420 413 ndastp = NINT( zndastp ) 421 CALL iom_get( numrsr, 'adatrj', adatrj, ldxios = lrsxios ) 422 IF(lrsxios) CALL iom_swap(crxios_context) 414 CALL iom_get( numrsr, 'adatrj', adatrj ) 423 415 ELSE 424 416 ndastp = ndate0 - 1 ! ndate0 read in the namelist in dom_nam … … 444 436 IF(lwp) WRITE(numsed,*) 'trc_wri : write the TOP restart file (NetCDF) at it= ', kt, ' date= ', ndastp 445 437 IF(lwp) WRITE(numsed,*) '~~~~~~~' 446 IF( lwxios ) CALL iom_init_closedef(cwsxios_context) 447 ENDIF 448 IF( lwxios ) CALL iom_swap( cwsxios_context ) 449 CALL iom_rstput( kt, nitrst, numrsw, 'kt' , REAL( kt , wp), ldxios = lwxios ) ! time-step 450 CALL iom_rstput( kt, nitrst, numrsw, 'ndastp' , REAL( ndastp, wp), ldxios = lwxios ) ! date 451 CALL iom_rstput( kt, nitrst, numrsw, 'adatrj' , adatrj, ldxios = lwxios ) ! number of elapsed days since 438 IF( lwxios ) CALL iom_init_closedef(cw_sedrst_cxt) 439 ENDIF 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 452 443 ! ! the begining of the run [s] 453 IF( lwxios ) CALL iom_swap( cxios_context )454 444 ENDIF 455 445 -
NEMO/branches/2020/test_12905_xios_restart/src/TOP/PISCES/SED/sedstp.F90
r12969 r13934 86 86 IF( kt == nitsed000 ) THEN 87 87 CALL iom_close( numrsr ) ! close input tracer restart file 88 IF(lr sxios) CALL iom_context_finalize( crsxios_context )89 ! 88 IF(lrxios) CALL iom_context_finalize( cr_sedrst_cxt ) 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/test_12905_xios_restart/src/TOP/TRP/trcsbc.F90
r13727 r13934 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(lrtxios) CALL iom_swap(crtxios_context)90 89 DO jn = 1, jptra 91 CALL iom_get( numrtr, jpdom_auto, 'sbc_'//TRIM(ctrcnm(jn))//'_b', sbc_trc_b(:,:,jn) , ldxios = lrtxios) ! 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(lrtxios) 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( cwtxios_context ) 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/test_12905_xios_restart/src/TOP/trc.F90
r13727 r13934 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 … … 69 67 INTEGER , PUBLIC :: nittrc000 !: first time step of passive tracers model 70 68 LOGICAL , PUBLIC :: l_trcdm2dc !: Diurnal cycle for TOP 71 LOGICAL , PUBLIC :: lrtxios !: read TOP restart with XIOS72 69 73 70 !! Information for the ice module for tracers -
NEMO/branches/2020/test_12905_xios_restart/src/TOP/trcrst.F90
r13750 r13934 96 96 ELSE 97 97 #if defined key_iomput 98 cw txios_context = "rstwt_"//TRIM(ADJUSTL(clkt))98 cw_toprst_cxt = "rstwt_"//TRIM(ADJUSTL(clkt)) 99 99 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 100 100 clpname = clname … … 102 102 clpname = TRIM(Agrif_CFixed())//"_"//clname 103 103 ENDIF 104 CALL iom_init( cwtxios_context, 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(lrtxios) CALL iom_swap(crtxios_context)133 132 DO jn = 1, jptra 134 CALL iom_get( numrtr, jpdom_auto, 'TRN'//ctrcnm(jn), tr(:,:,:,jn,Kmm) , ldxios = lrtxios)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 = lrtxios ) 139 END DO 140 ! 141 CALL iom_delay_rst( 'READ', 'TOP', numrtr ) ! read only TOP delayed global communication variables 142 IF(lrtxios) 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( cwtxios_context ) 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 173 169 CALL trc_rst_stat( Kmm, Krhs ) ! statistics 174 170 IF(lwxios) THEN 175 CALL iom_context_finalize( cwtxios_context ) 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) … … 234 232 lxios_sini = .FALSE. 235 233 CALL iom_open( TRIM(cn_trcrst_indir)//'/'//cn_trcrst_in, numrtr ) 236 lrtxios = lrxios.AND.lxios_sini 237 IF( lrtxios) THEN 238 crtxios_context = 'top_rst' 234 IF( lrxios) THEN 235 cr_toprst_cxt = 'top_rst' 239 236 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for TOP' 240 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 241 clpname = cn_trcrst_in 242 ELSE 243 clpname = TRIM(Agrif_CFixed())//"_"//cn_trcrst_in 244 ENDIF 245 CALL iom_init( crtxios_context, fname = TRIM(cn_trcrst_indir)//'/'//TRIM(clpname), & 246 idfp = iom_file(numrtr)%nfid, ld_closedef = .TRUE. ) 247 ENDIF 248 249 IF(lrtxios) CALL iom_swap(crtxios_context) 250 CALL iom_get ( numrtr, 'kt', zkt, ldxios = lrtxios ) ! last time-step of previous run 251 IF(lrtxios) 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 252 246 253 247 IF(lwp) THEN … … 271 265 ! ! set the date in offline mode 272 266 IF( ln_rsttr .AND. nn_rsttr == 2 ) THEN 273 IF(lrtxios) CALL iom_swap(crtxios_context) 274 CALL iom_get( numrtr, 'ndastp', zndastp, ldxios = lrtxios ) 267 CALL iom_get( numrtr, 'ndastp', zndastp ) 275 268 ndastp = NINT( zndastp ) 276 CALL iom_get( numrtr, 'adatrj', adatrj, ldxios = lrtxios ) 277 CALL iom_get( numrtr, 'ntime' , ktime, ldxios = lrtxios ) 278 IF(lrtxios) CALL iom_swap(cxios_context) 269 CALL iom_get( numrtr, 'adatrj', adatrj ) 270 CALL iom_get( numrtr, 'ntime' , ktime ) 279 271 nn_time0=INT(ktime) 280 272 ! calculate start time in hours and minutes … … 336 328 IF(lwp) WRITE(numout,*) '~~~~~~~' 337 329 ENDIF 338 IF( lwxios ) CALL iom_swap( cwtxios_context ) 339 CALL iom_rstput( kt, nitrst, numrtw, 'kt' , REAL( kt , wp) , ldxios = lwxios ) ! time-step 340 CALL iom_rstput( kt, nitrst, numrtw, 'ndastp' , REAL( ndastp, wp) , ldxios = lwxios ) ! date 341 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 342 333 ! ! the begining of the run [s] 343 CALL iom_rstput( kt, nitrst, numrtw, 'ntime' , REAL( nn_time0, wp), ldxios = lwxios ) ! time 344 IF( lwxios ) CALL iom_swap( cxios_context ) 334 CALL iom_rstput( kt, nitrst, numrtw, 'ntime' , REAL( nn_time0, wp) ) ! time 345 335 ENDIF 346 336 -
NEMO/branches/2020/test_12905_xios_restart/src/TOP/trcstp.F90
r13727 r13934 110 110 IF( kt == nittrc000 ) THEN 111 111 CALL iom_close( numrtr ) ! close input tracer restart file 112 IF(lr txios) CALL iom_context_finalize( crtxios_context )112 IF(lrxios) CALL iom_context_finalize( cr_toprst_cxt ) 113 113 IF(lwm) CALL FLUSH( numont ) ! flush namelist output 114 114 ENDIF … … 197 197 & .AND. iom_varid( numrtr, 'ktdcy' , ldstop = .FALSE. ) > 0 & 198 198 & .AND. iom_varid( numrtr, 'nrdcy' , ldstop = .FALSE. ) > 0 ) THEN 199 IF(lrtxios) CALL iom_swap(crtxios_context) 200 CALL iom_get( numrtr, 'ktdcy', zkt, ldxios = lrtxios ) 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 = lrtxios) ! A mean of qsr204 CALL iom_get( numrtr, 'nrdcy', zrec , ldxios = lrtxios) ! 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 = lrtxios) ! 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 = lrtxios) ! 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(lrtxios) 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( cwtxios_context ) 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/test_12905_xios_restart/tests/CANAL/MY_SRC/domvvl.F90
r13727 r13934 785 785 IF( ln_rstart ) THEN !* Read the restart file 786 786 CALL rst_read_open ! open the restart file if necessary 787 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 788 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm), ldxios = lroxios ) 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 = lroxios)802 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lroxios)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 = lroxios)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 = lroxios)822 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 824 823 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 825 824 l_1st_euler = .true.