Changeset 13871 for NEMO/branches/2020/dev_12905_xios_restart/src/ICE
- Timestamp:
- 2020-11-25T12:51:29+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_12905_xios_restart/src/ICE
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/ice.F90
r13727 r13871 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/dev_12905_xios_restart/src/ICE/icedia.F90
r13727 r13871 221 221 IF( ln_rstart ) THEN !* Read the restart file 222 222 ! 223 IF(lr ixios) CALL iom_swap(crixios_context)224 CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lr ixios )223 IF(lrxios) CALL iom_swap(cr_icerst_cxt) 224 CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lrxios ) 225 225 IF(lwp) WRITE(numout,*) 226 226 IF(lwp) WRITE(numout,*) 'ice_dia_rst read at time step = ', ziter 227 227 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 228 CALL iom_get( numrir, 'frc_voltop' , frc_voltop, ldxios = lr ixios )229 CALL iom_get( numrir, 'frc_volbot' , frc_volbot, ldxios = lr ixios )230 CALL iom_get( numrir, 'frc_temtop' , frc_temtop, ldxios = lr ixios )231 CALL iom_get( numrir, 'frc_tembot' , frc_tembot, ldxios = lr ixios )232 CALL iom_get( numrir, 'frc_sal' , frc_sal, ldxios = lr ixios )233 CALL iom_get( numrir, jpdom_auto, 'vol_loc_ini', vol_loc_ini, ldxios = lr ixios )234 CALL iom_get( numrir, jpdom_auto, 'tem_loc_ini', tem_loc_ini, ldxios = lr ixios )235 CALL iom_get( numrir, jpdom_auto, 'sal_loc_ini', sal_loc_ini, ldxios = lr ixios )236 IF(lr ixios) CALL iom_swap(cxios_context)228 CALL iom_get( numrir, 'frc_voltop' , frc_voltop, ldxios = lrxios ) 229 CALL iom_get( numrir, 'frc_volbot' , frc_volbot, ldxios = lrxios ) 230 CALL iom_get( numrir, 'frc_temtop' , frc_temtop, ldxios = lrxios ) 231 CALL iom_get( numrir, 'frc_tembot' , frc_tembot, ldxios = lrxios ) 232 CALL iom_get( numrir, 'frc_sal' , frc_sal, ldxios = lrxios ) 233 CALL iom_get( numrir, jpdom_auto, 'vol_loc_ini', vol_loc_ini, ldxios = lrxios ) 234 CALL iom_get( numrir, jpdom_auto, 'tem_loc_ini', tem_loc_ini, ldxios = lrxios ) 235 CALL iom_get( numrir, jpdom_auto, 'sal_loc_ini', sal_loc_ini, ldxios = lrxios ) 236 IF(lrxios) CALL iom_swap(cxios_context) 237 237 ELSE 238 238 IF(lwp) WRITE(numout,*) … … 263 263 ! Write in numriw (if iter == nitrst) 264 264 ! ------------------ 265 IF( lwxios ) CALL iom_swap( cw ixios_context )265 IF( lwxios ) CALL iom_swap( cw_icerst_cxt ) 266 266 CALL iom_rstput( iter, nitrst, numriw, 'frc_voltop' , frc_voltop, ldxios = lwxios ) 267 267 CALL iom_rstput( iter, nitrst, numriw, 'frc_volbot' , frc_volbot, ldxios = lwxios ) -
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icedyn_adv_pra.F90
r13727 r13871 955 955 ! 956 956 IF( id1 > 0 ) THEN !** Read the restart file **! 957 IF(lr ixios) CALL iom_swap(crixios_context)957 IF(lrxios) CALL iom_swap(cr_icerst_cxt) 958 958 ! 959 959 ! ! ice thickness 960 CALL iom_get( numrir, jpdom_auto, 'sxice' , sxice , psgn = -1._wp, ldxios = lr ixios )961 CALL iom_get( numrir, jpdom_auto, 'syice' , syice , psgn = -1._wp, ldxios = lr ixios )962 CALL iom_get( numrir, jpdom_auto, 'sxxice', sxxice, ldxios = lr ixios )963 CALL iom_get( numrir, jpdom_auto, 'syyice', syyice, ldxios = lr ixios )964 CALL iom_get( numrir, jpdom_auto, 'sxyice', sxyice, ldxios = lr ixios )960 CALL iom_get( numrir, jpdom_auto, 'sxice' , sxice , psgn = -1._wp, ldxios = lrxios ) 961 CALL iom_get( numrir, jpdom_auto, 'syice' , syice , psgn = -1._wp, ldxios = lrxios ) 962 CALL iom_get( numrir, jpdom_auto, 'sxxice', sxxice, ldxios = lrxios ) 963 CALL iom_get( numrir, jpdom_auto, 'syyice', syyice, ldxios = lrxios ) 964 CALL iom_get( numrir, jpdom_auto, 'sxyice', sxyice, ldxios = lrxios ) 965 965 ! ! snow thickness 966 CALL iom_get( numrir, jpdom_auto, 'sxsn' , sxsn , psgn = -1._wp, ldxios = lr ixios )967 CALL iom_get( numrir, jpdom_auto, 'sysn' , sysn , psgn = -1._wp, ldxios = lr ixios )968 CALL iom_get( numrir, jpdom_auto, 'sxxsn' , sxxsn, ldxios = lr ixios )969 CALL iom_get( numrir, jpdom_auto, 'syysn' , syysn, ldxios = lr ixios )970 CALL iom_get( numrir, jpdom_auto, 'sxysn' , sxysn, ldxios = lr ixios )966 CALL iom_get( numrir, jpdom_auto, 'sxsn' , sxsn , psgn = -1._wp, ldxios = lrxios ) 967 CALL iom_get( numrir, jpdom_auto, 'sysn' , sysn , psgn = -1._wp, ldxios = lrxios ) 968 CALL iom_get( numrir, jpdom_auto, 'sxxsn' , sxxsn, ldxios = lrxios ) 969 CALL iom_get( numrir, jpdom_auto, 'syysn' , syysn, ldxios = lrxios ) 970 CALL iom_get( numrir, jpdom_auto, 'sxysn' , sxysn, ldxios = lrxios ) 971 971 ! ! ice concentration 972 CALL iom_get( numrir, jpdom_auto, 'sxa' , sxa , psgn = -1._wp, ldxios = lr ixios )973 CALL iom_get( numrir, jpdom_auto, 'sya' , sya , psgn = -1._wp, ldxios = lr ixios )974 CALL iom_get( numrir, jpdom_auto, 'sxxa' , sxxa, ldxios = lr ixios )975 CALL iom_get( numrir, jpdom_auto, 'syya' , syya, ldxios = lr ixios )976 CALL iom_get( numrir, jpdom_auto, 'sxya' , sxya, ldxios = lr ixios )972 CALL iom_get( numrir, jpdom_auto, 'sxa' , sxa , psgn = -1._wp, ldxios = lrxios ) 973 CALL iom_get( numrir, jpdom_auto, 'sya' , sya , psgn = -1._wp, ldxios = lrxios ) 974 CALL iom_get( numrir, jpdom_auto, 'sxxa' , sxxa, ldxios = lrxios ) 975 CALL iom_get( numrir, jpdom_auto, 'syya' , syya, ldxios = lrxios ) 976 CALL iom_get( numrir, jpdom_auto, 'sxya' , sxya, ldxios = lrxios ) 977 977 ! ! ice salinity 978 CALL iom_get( numrir, jpdom_auto, 'sxsal' , sxsal , psgn = -1._wp, ldxios = lr ixios )979 CALL iom_get( numrir, jpdom_auto, 'sysal' , sysal , psgn = -1._wp, ldxios = lr ixios )980 CALL iom_get( numrir, jpdom_auto, 'sxxsal', sxxsal, ldxios = lr ixios )981 CALL iom_get( numrir, jpdom_auto, 'syysal', syysal, ldxios = lr ixios )982 CALL iom_get( numrir, jpdom_auto, 'sxysal', sxysal, ldxios = lr ixios )978 CALL iom_get( numrir, jpdom_auto, 'sxsal' , sxsal , psgn = -1._wp, ldxios = lrxios ) 979 CALL iom_get( numrir, jpdom_auto, 'sysal' , sysal , psgn = -1._wp, ldxios = lrxios ) 980 CALL iom_get( numrir, jpdom_auto, 'sxxsal', sxxsal, ldxios = lrxios ) 981 CALL iom_get( numrir, jpdom_auto, 'syysal', syysal, ldxios = lrxios ) 982 CALL iom_get( numrir, jpdom_auto, 'sxysal', sxysal, ldxios = lrxios ) 983 983 ! ! ice age 984 CALL iom_get( numrir, jpdom_auto, 'sxage' , sxage , psgn = -1._wp, ldxios = lr ixios )985 CALL iom_get( numrir, jpdom_auto, 'syage' , syage , psgn = -1._wp, ldxios = lr ixios )986 CALL iom_get( numrir, jpdom_auto, 'sxxage', sxxage, ldxios = lr ixios )987 CALL iom_get( numrir, jpdom_auto, 'syyage', syyage, ldxios = lr ixios )988 CALL iom_get( numrir, jpdom_auto, 'sxyage', sxyage, ldxios = lr ixios )984 CALL iom_get( numrir, jpdom_auto, 'sxage' , sxage , psgn = -1._wp, ldxios = lrxios ) 985 CALL iom_get( numrir, jpdom_auto, 'syage' , syage , psgn = -1._wp, ldxios = lrxios ) 986 CALL iom_get( numrir, jpdom_auto, 'sxxage', sxxage, ldxios = lrxios ) 987 CALL iom_get( numrir, jpdom_auto, 'syyage', syyage, ldxios = lrxios ) 988 CALL iom_get( numrir, jpdom_auto, 'sxyage', sxyage, ldxios = lrxios ) 989 989 ! ! snow layers heat content 990 990 DO jk = 1, nlay_s 991 991 WRITE(zchar1,'(I2.2)') jk 992 992 znam = 'sxc0'//'_l'//zchar1 993 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lr ixios ) ; sxc0 (:,:,jk,:) = z3d(:,:,:)993 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrxios ) ; sxc0 (:,:,jk,:) = z3d(:,:,:) 994 994 znam = 'syc0'//'_l'//zchar1 995 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lr ixios ) ; syc0 (:,:,jk,:) = z3d(:,:,:)995 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrxios ) ; syc0 (:,:,jk,:) = z3d(:,:,:) 996 996 znam = 'sxxc0'//'_l'//zchar1 997 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lr ixios ) ; sxxc0(:,:,jk,:) = z3d(:,:,:)997 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios ) ; sxxc0(:,:,jk,:) = z3d(:,:,:) 998 998 znam = 'syyc0'//'_l'//zchar1 999 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lr ixios ) ; syyc0(:,:,jk,:) = z3d(:,:,:)999 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios ) ; syyc0(:,:,jk,:) = z3d(:,:,:) 1000 1000 znam = 'sxyc0'//'_l'//zchar1 1001 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lr ixios ) ; sxyc0(:,:,jk,:) = z3d(:,:,:)1001 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios ) ; sxyc0(:,:,jk,:) = z3d(:,:,:) 1002 1002 END DO 1003 1003 ! ! ice layers heat content … … 1005 1005 WRITE(zchar1,'(I2.2)') jk 1006 1006 znam = 'sxe'//'_l'//zchar1 1007 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lr ixios ) ; sxe (:,:,jk,:) = z3d(:,:,:)1007 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrxios ) ; sxe (:,:,jk,:) = z3d(:,:,:) 1008 1008 znam = 'sye'//'_l'//zchar1 1009 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lr ixios ) ; sye (:,:,jk,:) = z3d(:,:,:)1009 CALL iom_get( numrir, jpdom_auto, znam , z3d, psgn = -1._wp, ldxios = lrxios ) ; sye (:,:,jk,:) = z3d(:,:,:) 1010 1010 znam = 'sxxe'//'_l'//zchar1 1011 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lr ixios ) ; sxxe(:,:,jk,:) = z3d(:,:,:)1011 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios ) ; sxxe(:,:,jk,:) = z3d(:,:,:) 1012 1012 znam = 'syye'//'_l'//zchar1 1013 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lr ixios ) ; syye(:,:,jk,:) = z3d(:,:,:)1013 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios ) ; syye(:,:,jk,:) = z3d(:,:,:) 1014 1014 znam = 'sxye'//'_l'//zchar1 1015 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lr ixios ) ; sxye(:,:,jk,:) = z3d(:,:,:)1015 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios ) ; sxye(:,:,jk,:) = z3d(:,:,:) 1016 1016 END DO 1017 1017 ! 1018 1018 IF( ln_pnd_LEV ) THEN ! melt pond fraction 1019 1019 IF( iom_varid( numrir, 'sxap', ldstop = .FALSE. ) > 0 ) THEN 1020 CALL iom_get( numrir, jpdom_auto, 'sxap' , sxap , psgn = -1._wp, ldxios = lr ixios )1021 CALL iom_get( numrir, jpdom_auto, 'syap' , syap , psgn = -1._wp, ldxios = lr ixios )1022 CALL iom_get( numrir, jpdom_auto, 'sxxap', sxxap, ldxios = lr ixios )1023 CALL iom_get( numrir, jpdom_auto, 'syyap', syyap, ldxios = lr ixios )1024 CALL iom_get( numrir, jpdom_auto, 'sxyap', sxyap, ldxios = lr ixios )1020 CALL iom_get( numrir, jpdom_auto, 'sxap' , sxap , psgn = -1._wp, ldxios = lrxios ) 1021 CALL iom_get( numrir, jpdom_auto, 'syap' , syap , psgn = -1._wp, ldxios = lrxios ) 1022 CALL iom_get( numrir, jpdom_auto, 'sxxap', sxxap, ldxios = lrxios ) 1023 CALL iom_get( numrir, jpdom_auto, 'syyap', syyap, ldxios = lrxios ) 1024 CALL iom_get( numrir, jpdom_auto, 'sxyap', sxyap, ldxios = lrxios ) 1025 1025 ! ! melt pond volume 1026 CALL iom_get( numrir, jpdom_auto, 'sxvp' , sxvp , psgn = -1._wp, ldxios = lr ixios )1027 CALL iom_get( numrir, jpdom_auto, 'syvp' , syvp , psgn = -1._wp, ldxios = lr ixios )1028 CALL iom_get( numrir, jpdom_auto, 'sxxvp', sxxvp, ldxios = lr ixios )1029 CALL iom_get( numrir, jpdom_auto, 'syyvp', syyvp, ldxios = lr ixios )1030 CALL iom_get( numrir, jpdom_auto, 'sxyvp', sxyvp, ldxios = lr ixios )1026 CALL iom_get( numrir, jpdom_auto, 'sxvp' , sxvp , psgn = -1._wp, ldxios = lrxios ) 1027 CALL iom_get( numrir, jpdom_auto, 'syvp' , syvp , psgn = -1._wp, ldxios = lrxios ) 1028 CALL iom_get( numrir, jpdom_auto, 'sxxvp', sxxvp, ldxios = lrxios ) 1029 CALL iom_get( numrir, jpdom_auto, 'syyvp', syyvp, ldxios = lrxios ) 1030 CALL iom_get( numrir, jpdom_auto, 'sxyvp', sxyvp, ldxios = lrxios ) 1031 1031 ELSE 1032 1032 sxap = 0._wp ; syap = 0._wp ; sxxap = 0._wp ; syyap = 0._wp ; sxyap = 0._wp ! melt pond fraction … … 1036 1036 IF ( ln_pnd_lids ) THEN ! melt pond lid volume 1037 1037 IF( iom_varid( numrir, 'sxvl', ldstop = .FALSE. ) > 0 ) THEN 1038 CALL iom_get( numrir, jpdom_auto, 'sxvl' , sxvl , psgn = -1._wp, ldxios = lr ixios )1039 CALL iom_get( numrir, jpdom_auto, 'syvl' , syvl , psgn = -1._wp, ldxios = lr ixios )1040 CALL iom_get( numrir, jpdom_auto, 'sxxvl', sxxvl, ldxios = lr ixios )1041 CALL iom_get( numrir, jpdom_auto, 'syyvl', syyvl, ldxios = lr ixios )1042 CALL iom_get( numrir, jpdom_auto, 'sxyvl', sxyvl, ldxios = lr ixios )1038 CALL iom_get( numrir, jpdom_auto, 'sxvl' , sxvl , psgn = -1._wp, ldxios = lrxios ) 1039 CALL iom_get( numrir, jpdom_auto, 'syvl' , syvl , psgn = -1._wp, ldxios = lrxios ) 1040 CALL iom_get( numrir, jpdom_auto, 'sxxvl', sxxvl, ldxios = lrxios ) 1041 CALL iom_get( numrir, jpdom_auto, 'syyvl', syyvl, ldxios = lrxios ) 1042 CALL iom_get( numrir, jpdom_auto, 'sxyvl', sxyvl, ldxios = lrxios ) 1043 1043 ELSE 1044 1044 sxvl = 0._wp; syvl = 0._wp ; sxxvl = 0._wp ; syyvl = 0._wp ; sxyvl = 0._wp ! melt pond lid volume … … 1046 1046 ENDIF 1047 1047 ENDIF 1048 IF(lr ixios) CALL iom_swap(cxios_context)1048 IF(lrxios) CALL iom_swap(cxios_context) 1049 1049 ! 1050 1050 ELSE !** start rheology from rest **! … … 1079 1079 ! 1080 1080 ! ! ice thickness 1081 IF( lwxios ) CALL iom_swap( cw ixios_context )1081 IF( lwxios ) CALL iom_swap( cw_icerst_cxt ) 1082 1082 CALL iom_rstput( iter, nitrst, numriw, 'sxice' , sxice, ldxios = lwxios) 1083 1083 CALL iom_rstput( iter, nitrst, numriw, 'syice' , syice, ldxios = lwxios) -
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icedyn_rhg_evp.F90
r13727 r13871 1005 1005 IF( ln_rstart ) THEN !* Read the restart file 1006 1006 ! 1007 IF(lr ixios) CALL iom_swap(crixios_context)1007 IF(lrxios) CALL iom_swap(cr_icerst_cxt) 1008 1008 id1 = iom_varid( numrir, 'stress1_i' , ldstop = .FALSE. ) 1009 1009 id2 = iom_varid( numrir, 'stress2_i' , ldstop = .FALSE. ) … … 1011 1011 ! 1012 1012 IF( MIN( id1, id2, id3 ) > 0 ) THEN ! fields exist 1013 CALL iom_get( numrir, jpdom_auto, 'stress1_i' , stress1_i , cd_type = 'T', ldxios = lr ixios )1014 CALL iom_get( numrir, jpdom_auto, 'stress2_i' , stress2_i , cd_type = 'T', ldxios = lr ixios )1015 CALL iom_get( numrir, jpdom_auto, 'stress12_i', stress12_i, cd_type = 'F', ldxios = lr ixios )1013 CALL iom_get( numrir, jpdom_auto, 'stress1_i' , stress1_i , cd_type = 'T', ldxios = lrxios ) 1014 CALL iom_get( numrir, jpdom_auto, 'stress2_i' , stress2_i , cd_type = 'T', ldxios = lrxios ) 1015 CALL iom_get( numrir, jpdom_auto, 'stress12_i', stress12_i, cd_type = 'F', ldxios = lrxios ) 1016 1016 ELSE ! start rheology from rest 1017 1017 IF(lwp) WRITE(numout,*) … … 1021 1021 stress12_i(:,:) = 0._wp 1022 1022 ENDIF 1023 IF(lr ixios) CALL iom_swap(cxios_context)1023 IF(lrxios) CALL iom_swap(cxios_context) 1024 1024 ELSE !* Start from rest 1025 1025 IF(lwp) WRITE(numout,*) … … 1035 1035 iter = kt + nn_fsbc - 1 ! ice restarts are written at kt == nitrst - nn_fsbc + 1 1036 1036 ! 1037 IF( lwxios ) CALL iom_swap( cw ixios_context )1037 IF( lwxios ) CALL iom_swap( cw_icerst_cxt ) 1038 1038 CALL iom_rstput( iter, nitrst, numriw, 'stress1_i' , stress1_i, ldxios = lwxios ) 1039 1039 CALL iom_rstput( iter, nitrst, numriw, 'stress2_i' , stress2_i, ldxios = lwxios ) -
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icerst.F90
r13750 r13871 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( cw ixios_context, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE. )97 CALL iom_init( cw_icerst_cxt, fname = TRIM(clpath)//TRIM(clpname), ld_closedef = .FALSE. ) 98 98 CALL iom_swap( cxios_context ) 99 99 #else … … 138 138 ! ------------------ 139 139 ! ! calendar control 140 IF( lwxios ) CALL iom_swap( cw ixios_context )140 IF( lwxios ) CALL iom_swap( cw_icerst_cxt ) 141 141 CALL iom_rstput( iter, nitrst, numriw, 'nn_fsbc', REAL( nn_fsbc, wp ), ldxios = lwxios ) ! time-step 142 142 CALL iom_rstput( iter, nitrst, numriw, 'kt_ice' , REAL( iter , wp ), ldxios = lwxios ) ! date … … 183 183 CALL iom_close( numriw ) 184 184 ELSE 185 CALL iom_context_finalize( cw ixios_context )185 CALL iom_context_finalize( cw_icerst_cxt ) 186 186 ENDIF 187 187 lrst_ice = .FALSE. … … 217 217 CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir ) 218 218 219 lrixios = lrxios.AND.lxios_sini 220 IF( lrixios) THEN 221 crixios_context = 'si3_rst' 219 IF( lrxios) THEN 220 cr_icerst_cxt = 'si3_rst' 222 221 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for SI3' 223 222 IF( TRIM(Agrif_CFixed()) == '0' ) THEN … … 226 225 clpname = TRIM(Agrif_CFixed())//"_"//cn_icerst_in 227 226 ENDIF 228 CALL iom_init( cr ixios_context, fname = TRIM(cn_icerst_indir)//'/'//TRIM(clpname), &227 CALL iom_init( cr_icerst_cxt, fname = TRIM(cn_icerst_indir)//'/'//TRIM(clpname), & 229 228 idfp = iom_file(numrir)%nfid, ld_closedef = .TRUE. ) 230 229 ENDIF … … 236 235 IF( id0 > 0 ) THEN ! == case of a normal restart == ! 237 236 ! ! ------------------------------ ! 238 IF(lr ixios) CALL iom_swap(crixios_context)237 IF(lrxios) CALL iom_swap(cr_icerst_cxt) 239 238 ! Time info 240 CALL iom_get( numrir, 'nn_fsbc', zfice, ldxios = lr ixios )241 CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lr ixios )239 CALL iom_get( numrir, 'nn_fsbc', zfice, ldxios = lrxios ) 240 CALL iom_get( numrir, 'kt_ice' , ziter, ldxios = lrxios ) 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 = lr ixios )257 CALL iom_get( numrir, jpdom_auto, 'v_s' , v_s , ldxios = lr ixios )258 CALL iom_get( numrir, jpdom_auto, 'sv_i' , sv_i , ldxios = lr ixios )259 CALL iom_get( numrir, jpdom_auto, 'a_i' , a_i , ldxios = lr ixios )260 CALL iom_get( numrir, jpdom_auto, 't_su' , t_su , ldxios = lr ixios )261 CALL iom_get( numrir, jpdom_auto, 'u_ice', u_ice, cd_type = 'U', psgn = -1._wp, ldxios = lr ixios )262 CALL iom_get( numrir, jpdom_auto, 'v_ice', v_ice, cd_type = 'V', psgn = -1._wp, ldxios = lr ixios )255 CALL iom_get( numrir, jpdom_auto, 'v_i' , v_i , ldxios = lrxios ) 256 CALL iom_get( numrir, jpdom_auto, 'v_s' , v_s , ldxios = lrxios ) 257 CALL iom_get( numrir, jpdom_auto, 'sv_i' , sv_i , ldxios = lrxios ) 258 CALL iom_get( numrir, jpdom_auto, 'a_i' , a_i , ldxios = lrxios ) 259 CALL iom_get( numrir, jpdom_auto, 't_su' , t_su , ldxios = lrxios ) 260 CALL iom_get( numrir, jpdom_auto, 'u_ice', u_ice, cd_type = 'U', psgn = -1._wp, ldxios = lrxios ) 261 CALL iom_get( numrir, jpdom_auto, 'v_ice', v_ice, cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 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 = lr ixios )266 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios ) 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 = lr ixios )273 CALL iom_get( numrir, jpdom_auto, znam , z3d, ldxios = lrxios ) 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 = lr ixios )280 CALL iom_get( numrir, jpdom_auto, 'oa_i', oa_i, ldxios = lrxios ) 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 = lr ixios )290 CALL iom_get( numrir, jpdom_auto, 'v_ip' , v_ip, ldxios = lr ixios )288 CALL iom_get( numrir, jpdom_auto, 'a_ip' , a_ip, ldxios = lrxios ) 289 CALL iom_get( numrir, jpdom_auto, 'v_ip' , v_ip, ldxios = lrxios ) 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 = lr ixios)298 CALL iom_get( numrir, jpdom_auto, 'v_il', v_il, ldxios = lrxios) 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 = lr ixios )310 CALL iom_get( numrir, jpdom_auto, 't1_ice' , t1_ice , ldxios = lr ixios )308 CALL iom_get( numrir, jpdom_auto, 'cnd_ice', cnd_ice, ldxios = lrxios ) 309 CALL iom_get( numrir, jpdom_auto, 't1_ice' , t1_ice , ldxios = lrxios ) 311 310 ELSE ! start from rest 312 311 IF(lwp) WRITE(numout,*) ' ==>> previous run without conductivity output then set it to zero' … … 317 316 318 317 CALL iom_delay_rst( 'READ', 'ICE', numrir ) ! read only ice delayed global communication variables 319 IF(lr ixios) CALL iom_swap(cxios_context)318 IF(lrxios) CALL iom_swap(cxios_context) 320 319 ! ! ---------------------------------- ! 321 320 ELSE ! == case of a simplified restart == ! -
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/icestp.F90
r13727 r13871 293 293 IF( ln_rstart ) THEN 294 294 CALL iom_close( numrir ) ! close input ice restart file 295 IF(lr ixios) CALL iom_context_finalize( crixios_context )295 IF(lrxios) CALL iom_context_finalize( cr_icerst_cxt ) 296 296 ENDIF 297 297 ! -
NEMO/branches/2020/dev_12905_xios_restart/src/ICE/iceupdate.F90
r13727 r13871 427 427 ! 428 428 IF( id1 > 0 ) THEN ! fields exist 429 IF(lr ixios) CALL iom_swap(crixios_context)430 CALL iom_get( numrir, jpdom_auto, 'snwice_mass' , snwice_mass , ldxios = lr ixios )431 CALL iom_get( numrir, jpdom_auto, 'snwice_mass_b', snwice_mass_b, ldxios = lr ixios )432 IF(lr ixios) CALL iom_swap(cxios_context)429 IF(lrxios) CALL iom_swap(cr_icerst_cxt) 430 CALL iom_get( numrir, jpdom_auto, 'snwice_mass' , snwice_mass , ldxios = lrxios ) 431 CALL iom_get( numrir, jpdom_auto, 'snwice_mass_b', snwice_mass_b, ldxios = lrxios ) 432 IF(lrxios) CALL iom_swap(cxios_context) 433 433 ELSE ! start from rest 434 434 IF(lwp) WRITE(numout,*) ' ==>> previous run without snow-ice mass output then set it' … … 447 447 iter = kt + nn_fsbc - 1 ! ice restarts are written at kt == nitrst - nn_fsbc + 1 448 448 ! 449 IF( lwxios ) CALL iom_swap( cw ixios_context )449 IF( lwxios ) CALL iom_swap( cw_icerst_cxt ) 450 450 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass' , snwice_mass, ldxios = lwxios ) 451 451 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass_b', snwice_mass_b, ldxios = lwxios )
Note: See TracChangeset
for help on using the changeset viewer.