File indexing completed on 2025-08-30 05:08:40 UTC
view on githubraw file Latest commit a5926ff8 on 2025-08-30 02:05:51 UTC
97c7a8be8b Jean*0001 #include "STREAMICE_OPTIONS.h"
0002
0003
0004
0005
0006
0007 SUBROUTINE STREAMICE_WRITE_PICKUP( permPickup,
0008 & suff, myTime, myIter, myThid )
0009
0010
a5926ff804 dngo*0011
97c7a8be8b Jean*0012
0013
0014 IMPLICIT NONE
0015 #include "SIZE.h"
0016 #include "EEPARAMS.h"
0017 #include "PARAMS.h"
0018 #include "STREAMICE.h"
0019
0020
0021
0022
0023
0024
0025
0026 LOGICAL permPickup
0027 CHARACTER*(*) suff
0028 _RL myTime
0029 INTEGER myIter
0030 INTEGER myThid
0031
0032
0033
0034
0035 #ifdef ALLOW_STREAMICE
0036
0037 INTEGER ILNBLNK
0038 EXTERNAL ILNBLNK
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050 INTEGER j, nj, fp, lChar
0051 LOGICAL glf
0052 _RL timList(1)
0053 CHARACTER*(MAX_LEN_FNAM) fn
0054 INTEGER listDim, nWrFlds
0055 PARAMETER( listDim = 12 )
0056 CHARACTER*(8) wrFldList(listDim)
0057 CHARACTER*(MAX_LEN_MBUF) msgBuf
0058
0059
0060 lChar = ILNBLNK(suff)
0061 IF ( lChar.EQ.0 ) THEN
0062 WRITE(fn,'(2A)') 'pickup_streamice'
0063 ELSE
0064 WRITE(fn,'(2A)') 'pickup_streamice.',suff(1:lChar)
0065 ENDIF
0066 fp = precFloat64
0067 j = 0
0068
0069
0070
0071 #ifdef STREAMICE_HYBRID_STRESS
0072
0073 j = j + 1
a5926ff804 dngo*0074 #ifdef ALLOW_OPENAD
0075 CALL WRITE_REC_3D_RL( fn, fp, Nr, visc_streamice_full%v,
0076 & -j, myIter, myThid )
0077 #else
7360cc2681 Jean*0078 CALL WRITE_REC_3D_RL( fn, fp, Nr, visc_streamice_full,
0079 & -j, myIter, myThid )
a5926ff804 dngo*0080 #endif
97c7a8be8b Jean*0081 IF (j.LE.listDim) wrFldList(j) = 'visc3d '
0082 #endif /* STREAMICE_HYBRID_STRESS */
0083
0084
0085 nj = -j*Nr
0086
0087 j = j + 1
0088 nj = nj-1
a5926ff804 dngo*0089 #ifdef ALLOW_OPENAD
0090 CALL WRITE_REC_3D_RL( fn, fp, 1, area_shelf_streamice%v,
0091 & nj, myIter, myThid )
0092 #else
7360cc2681 Jean*0093 CALL WRITE_REC_3D_RL( fn, fp, 1, area_shelf_streamice,
0094 & nj, myIter, myThid )
a5926ff804 dngo*0095 #endif
97c7a8be8b Jean*0096 IF (j.LE.listDim) wrFldList(j) = 'SI_area '
0097
eaf63fbcc2 Dani*0098 j = j + 1
0099 nj = nj-1
7360cc2681 Jean*0100 CALL WRITE_REC_3D_RS( fn, fp, 1, STREAMICE_hmask,
0101 & nj, myIter, myThid )
eaf63fbcc2 Dani*0102 IF (j.LE.listDim) wrFldList(j) = 'SI_hmask'
0103
0104 j = j + 1
0105 nj = nj-1
a5926ff804 dngo*0106 #ifdef ALLOW_OPENAD
0107 CALL WRITE_REC_3D_RL( fn, fp, 1, U_streamice%v,
0108 & nj, myIter, myThid )
0109 #else
7360cc2681 Jean*0110 CALL WRITE_REC_3D_RL( fn, fp, 1, U_streamice,
0111 & nj, myIter, myThid )
a5926ff804 dngo*0112 #endif
eaf63fbcc2 Dani*0113 IF (j.LE.listDim) wrFldList(j) = 'SI_uvel '
0114
0115 j = j + 1
0116 nj = nj-1
a5926ff804 dngo*0117 #ifdef ALLOW_OPENAD
0118 CALL WRITE_REC_3D_RL( fn, fp, 1, V_streamice%v,
0119 & nj, myIter, myThid )
0120 #else
7360cc2681 Jean*0121 CALL WRITE_REC_3D_RL( fn, fp, 1, V_streamice,
0122 & nj, myIter, myThid )
a5926ff804 dngo*0123 #endif
eaf63fbcc2 Dani*0124 IF (j.LE.listDim) wrFldList(j) = 'SI_vvel '
0125
0126 j = j + 1
0127 nj = nj-1
a5926ff804 dngo*0128 #ifdef ALLOW_OPENAD
0129 CALL WRITE_REC_3D_RL( fn, fp, 1, H_streamice%v,
0130 & nj, myIter, myThid )
0131 #else
7360cc2681 Jean*0132 CALL WRITE_REC_3D_RL( fn, fp, 1, H_streamice,
0133 & nj, myIter, myThid )
a5926ff804 dngo*0134 #endif
eaf63fbcc2 Dani*0135 IF (j.LE.listDim) wrFldList(j) = 'SI_thick'
7360cc2681 Jean*0136
eaf63fbcc2 Dani*0137 j = j + 1
0138 nj = nj-1
a5926ff804 dngo*0139 #ifdef ALLOW_OPENAD
0140 CALL WRITE_REC_3D_RL( fn, fp, 1, tau_beta_eff_streamice%v,
0141 & nj, myIter, myThid )
0142 #else
7360cc2681 Jean*0143 CALL WRITE_REC_3D_RL( fn, fp, 1, tau_beta_eff_streamice,
0144 & nj, myIter, myThid )
a5926ff804 dngo*0145 #endif
eaf63fbcc2 Dani*0146 IF (j.LE.listDim) wrFldList(j) = 'SI_betaF'
0147
0148 j = j + 1
0149 nj = nj-1
a5926ff804 dngo*0150 #ifdef ALLOW_OPENAD
0151 CALL WRITE_REC_3D_RL( fn, fp, 1, visc_streamice%v,
0152 & nj, myIter, myThid )
0153 #else
7360cc2681 Jean*0154 CALL WRITE_REC_3D_RL( fn, fp, 1, visc_streamice,
0155 & nj, myIter, myThid )
a5926ff804 dngo*0156 #endif
eaf63fbcc2 Dani*0157 IF (j.LE.listDim) wrFldList(j) = 'SI_visc '
0158
0159 #ifdef STREAMICE_HYBRID_STRESS
0160 j = j + 1
0161 nj = nj-1
a5926ff804 dngo*0162 #ifdef ALLOW_OPENAD
0163 CALL WRITE_REC_3D_RL( fn, fp, 1, streamice_taubx%v,
0164 & nj, myIter, myThid )
0165 #else
7360cc2681 Jean*0166 CALL WRITE_REC_3D_RL( fn, fp, 1, streamice_taubx,
0167 & nj, myIter, myThid )
a5926ff804 dngo*0168 #endif
eaf63fbcc2 Dani*0169 IF (j.LE.listDim) wrFldList(j) = 'SI_taubx'
0170
0171 j = j + 1
0172 nj = nj-1
a5926ff804 dngo*0173 #ifdef ALLOW_OPENAD
0174 CALL WRITE_REC_3D_RL( fn, fp, 1, streamice_tauby%v,
0175 & nj, myIter, myThid )
0176 #else
7360cc2681 Jean*0177 CALL WRITE_REC_3D_RL( fn, fp, 1, streamice_tauby,
0178 & nj, myIter, myThid )
a5926ff804 dngo*0179 #endif
eaf63fbcc2 Dani*0180 IF (j.LE.listDim) wrFldList(j) = 'SI_tauby'
0181 #endif
0182
97c7a8be8b Jean*0183
0184
7360cc2681 Jean*0185
0186
97c7a8be8b Jean*0187
0188
0189
0190 nWrFlds = j
0191 IF ( nWrFlds.GT.listDim ) THEN
0192 WRITE(msgBuf,'(2A,I5,A)') 'STREAMICE_WRITE_PICKUP: ',
0193 & 'trying to write ',nWrFlds,' fields'
0194 CALL PRINT_ERROR( msgBuf, myThid )
0195 WRITE(msgBuf,'(2A,I5,A)') 'STREAMICE_WRITE_PICKUP: ',
0196 & 'field-list dimension (listDim=',listDim,') too small'
0197 CALL PRINT_ERROR( msgBuf, myThid )
0198 CALL ALL_PROC_DIE( myThid )
0199 STOP 'ABNORMAL END: S/R STREAMICE_WRITE_PICKUP (list-size Pb)'
0200 ENDIF
0201 #ifdef ALLOW_MDSIO
0202
0203 j = 1
0204 nj = ABS(nj)
0205 IF ( nWrFlds*Nr .EQ. nj ) THEN
0206 j = Nr
0207 nj = nWrFlds
0208 ENDIF
0209 glf = globalFiles
0210 timList(1) = myTime
0211 CALL MDS_WR_METAFILES( fn, fp, glf, .FALSE.,
0212 & 0, 0, j, ' ',
0213 & nWrFlds, wrFldList,
0214 & 1, timList, oneRL,
0215 & nj, myIter, myThid )
0216 #endif /* ALLOW_MDSIO */
0217
0218
0219 #endif /* ALLOW_STREAMICE */
0220
0221 RETURN
0222 END