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_AUTODIFF
0003 # include "AUTODIFF_OPTIONS.h"
0004 #endif
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 SUBROUTINE OBSFIT_SAMPLING(
0017 O modval_cur_out,
0018 I i_cur,
0019 I j_cur,
0020 I k_cur,
0021 I weights_cur,
0022 I var_cur,
0023 I file_cur,
0024 I bi, bj,
0025 I myTime, myIter, myThid )
0026
0027
0028
0029
0030
0031
0032
0033 IMPLICIT NONE
0034
0035 #include "SIZE.h"
0036 #include "EEPARAMS.h"
0037 #include "PARAMS.h"
0038 #include "GRID.h"
0039 #include "DYNVARS.h"
0040
0041
0042
0043
0044
0045
0046
0047 #ifdef ALLOW_OBSFIT
0048 # include "OBSFIT_SIZE.h"
0049 # include "OBSFIT.h"
0050 #endif
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068 #ifdef ALLOW_OBSFIT
0069 INTEGER i_cur(NUM_INTERP_PTS_OBS)
0070 INTEGER j_cur(NUM_INTERP_PTS_OBS)
0071 INTEGER k_cur(NUM_INTERP_PTS_OBS)
0072 _RL weights_cur(NUM_INTERP_PTS_OBS)
0073 #else
0074 INTEGER i_cur, j_cur, k_cur
0075 _RL weights_cur
0076 #endif
0077 INTEGER var_cur, file_cur
0078 INTEGER bi, bj
0079 _RL myTime
0080 INTEGER myIter
0081 INTEGER myThid
0082
0083
0084
0085 _RL modval_cur_out
0086
0087
0088 #ifdef ALLOW_OBSFIT
0089
0090 INTEGER iq
0091 _RL tab_coeffs1(NUM_INTERP_PTS_OBS)
0092 _RL tab_coeffs3(NUM_INTERP_PTS_OBS)
0093 _RL weighing_pts(NUM_INTERP_PTS_OBS),weighingSUM
0094 _RL modval_cur, mask_cur
0095
0096
0097 weighingSUM = 0. _d 0
0098 DO iq = 1, NUM_INTERP_PTS_OBS
0099 IF ( var_cur.EQ.1 ) THEN
0100 tab_coeffs1(iq) = theta(i_cur(iq),j_cur(iq),k_cur(iq),bi,bj)
0101 ELSEIF ( var_cur.EQ.2 ) THEN
0102 tab_coeffs1(iq) = salt(i_cur(iq),j_cur(iq),k_cur(iq),bi,bj)
0103 ELSEIF ( var_cur.EQ.3 ) THEN
0104 tab_coeffs1(iq) = uvel(i_cur(iq),j_cur(iq),k_cur(iq),bi,bj)
0105 ELSEIF ( var_cur.EQ.4 ) THEN
0106 tab_coeffs1(iq) = vvel(i_cur(iq),j_cur(iq),k_cur(iq),bi,bj)
0107 ELSEIF ( var_cur.EQ.5 ) THEN
0108 tab_coeffs1(iq) = etan(i_cur(iq),j_cur(iq),bi,bj)
0109 ELSE
0110 tab_coeffs1(iq) = 0. _d 0
0111 ENDIF
0112 tab_coeffs3(iq) = maskC(i_cur(iq),j_cur(iq),k_cur(iq),bi,bj)
0113 weighing_pts(iq) = tab_coeffs3(iq)*weights_cur(iq)
0114 weighingSUM = weighingSUM+weighing_pts(iq)
0115 ENDDO
0116
0117 IF ( weighingSUM.GT.zeroRL ) THEN
0118 modval_cur = 0. _d 0
0119 mask_cur = 1. _d 0
0120 DO iq = 1, NUM_INTERP_PTS_OBS
0121 modval_cur = modval_cur
0122 & +tab_coeffs1(iq)*weighing_pts(iq)/weighingSUM
0123 ENDDO
0124 ELSE
0125 modval_cur = 0. _d 0
0126 mask_cur = 0. _d 0
0127 ENDIF
0128
0129 #ifdef ALLOW_AUTODIFF_TAMC
0130
0131
0132
0133
0134
0135 #endif
0136
0137 modval_cur_out = modval_cur
0138 sample_modmask(bi,bj) = mask_cur
0139
0140 #endif /* ALLOW_OBSFIT */
0141
0142 RETURN
0143 END