File indexing completed on 2025-12-15 06:14:28 UTC
view on githubraw file Latest commit ad59256d on 2025-12-15 00:05:36 UTC
ad59256d7d aver*0001 #include "OBSFIT_OPTIONS.h"
0002 #ifdef ALLOW_CTRL
0003 # include "CTRL_OPTIONS.h"
0004 #endif
0005
0006
0007
0008
0009
0010 SUBROUTINE OBSFIT_INLOOP( myTime, myIter, myThid )
0011
0012
0013
0014
0015
0016
0017
0018 IMPLICIT NONE
0019
0020 #include "SIZE.h"
0021 #include "EEPARAMS.h"
0022 #include "GRID.h"
0023 #include "DYNVARS.h"
0024 #include "PARAMS.h"
0025 #ifdef ALLOW_CAL
0026 # include "cal.h"
0027 #endif
0028 #ifdef ALLOW_CTRL
0029 # include "OPTIMCYCLE.h"
0030 #endif
0031 #ifdef ALLOW_OBSFIT
0032 # include "OBSFIT_SIZE.h"
0033 # include "OBSFIT.h"
0034 # include "netcdf.inc"
0035 #endif
0036
0037
0038
0039
0040
0041 _RL myTime
0042 INTEGER myIter
0043 INTEGER myThid
0044
0045
0046 #ifdef ALLOW_OBSFIT
0047
0048 INTEGER sample_num, num_file, iq
0049 INTEGER bi, bj
0050 INTEGER sample_i(NUM_INTERP_PTS_OBS)
0051 INTEGER sample_j(NUM_INTERP_PTS_OBS)
0052 INTEGER sample_k(NUM_INTERP_PTS_OBS)
0053 _RL sample_frac(NUM_INTERP_PTS_OBS)
0054 _RL sample_modval, saved_modval
0055 # ifndef ALLOW_CTRL
0056 INTEGER optimcycle
0057 # endif
0058 # ifndef ALLOW_ECCO
0059 INTEGER i,j,k
0060 # endif
0061
0062
0063
0064 # ifndef ALLOW_CTRL
0065 optimcycle = 0
0066 # endif
0067
0068 # ifndef ALLOW_ECCO
0069 DO bj = myByLo(myThid), myByHi(myThid)
0070 DO bi = myBxLo(myThid), myBxHi(myThid)
0071 DO k = 1, Nr
0072 DO j = 1, sNy
0073 DO i = 1, sNx
0074 m_UE(i,j,k,bi,bj) = 0. _d 0
0075 m_VN(i,j,k,bi,bj) = 0. _d 0
0076 ENDDO
0077 ENDDO
0078 ENDDO
0079 ENDDO
0080 ENDDO
0081
0082 CALL ROTATE_UV2EN_RL(
0083 U uVel, vVel, m_UE, m_VN,
0084 I .TRUE., .TRUE., .FALSE., Nr, myThid )
0085 # endif /* not ALLOW_ECCO */
0086
0087 _BEGIN_MASTER( myThid )
0088
0089 DO bj = 1, nSy
0090 DO bi = 1, nSx
0091 DO num_file = 1, NFILESMAX_OBS
0092 DO sample_num = 1, NSAMP_PER_TILE_MAX
0093 IF ( sample_num.LE.sampleNo(num_file,bi,bj) ) THEN
0094 IF ( (sample_timeE(num_file,sample_num,bi,bj).GE.
0095 & myTime).AND.
0096 & (sample_timeS(num_file,sample_num,bi,bj).LT.
0097 & (myTime+deltaTClock)) ) THEN
0098 DO iq = 1, NUM_INTERP_PTS_OBS
0099 sample_i(iq) =
0100 & sample_interp_i(num_file,sample_num,iq,bi,bj)
0101 sample_j(iq) =
0102 & sample_interp_j(num_file,sample_num,iq,bi,bj)
0103 sample_k(iq) =
0104 & sample_interp_k(num_file,sample_num,iq,bi,bj)
0105 sample_frac(iq) = sample_interp_frac
0106 & (num_file,sample_num,iq,bi,bj)
0107 ENDDO
0108
0109 sample_modval = 0
0110 saved_modval = 0
0111
0112
0113
0114 IF ( obsfitOperation(num_file).GT.0 ) THEN
0115 CALL ACTIVE_READ_OBS_TILE(
0116 I num_file,
0117 O saved_modval,
0118 I sample_num,.FALSE.,optimcycle,bi,bj,myThid,
0119 I obsfit_dummy(num_file,bi,bj) )
0120 ENDIF
0121
0122 CALL OBSFIT_SAMPLING(
0123 O sample_modval,
0124 I sample_i, sample_j, sample_k, sample_frac,
0125 I sample_type(num_file,sample_num,bi,bj),
0126 I num_file, bi, bj, myTime, myIter, myThid )
0127
0128 sample_modval = sample_modval*
0129 & obsfit_facmod(num_file)
0130
0131 IF ( obsfitOperation(num_file).GT.0 ) THEN
0132 sample_modval = saved_modval
0133 & +sample_modval*deltaTClock
0134 ENDIF
0135
0136 sample_modmask(bi,bj) = sample_modmask(bi,bj)*
0137 & sample_weight(num_file,sample_num,bi,bj)
0138
0139 CALL ACTIVE_WRITE_OBS_TILE(
0140 I num_file,sample_modval,
0141 I sample_num,optimcycle,bi,bj,myThid,
0142 I obsfit_dummy(num_file,bi,bj) )
0143
0144 ENDIF
0145 ENDIF
0146 ENDDO
0147 ENDDO
0148
0149 ENDDO
0150 ENDDO
0151
0152 _END_MASTER( myThid )
0153
0154 #endif /* ALLOW_OBSFIT */
0155
0156 RETURN
0157 END