** Warning **
Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle dbname=MITgcm at /usr/local/share/lxr/lib/LXR/Common.pm line 1224.
Last-Modified: Wed, 10 Mar 2026 05:09:16 GMT
Content-Type: text/html; charset=utf-8
MITgcm/MITgcm/pkg/profiles/profiles_readvector.F
File indexing completed on 2025-08-05 05:09:15 UTC
view on github raw file Latest commit 13ce79fe on 2025-08-04 21:05:34 UTC
24462d2fa8 Patr* 0001 #include "PROFILES_OPTIONS.h "
6a770e0a24 Patr* 0002
13ce79fe94 Ivan* 0003
0004
0005
6a770e0a24 Patr* 0006
13ce79fe94 Ivan* 0007
0008 SUBROUTINE PROFILES_READVECTOR ( fNb , vNb , irec ,
0009 & vec_loc_length , vec_loc , bi , bj , myThid )
6a770e0a24 Patr* 0010
13ce79fe94 Ivan* 0011
0012
0013
6a770e0a24 Patr* 0014
13ce79fe94 Ivan* 0015
0016 IMPLICIT NONE
0017
6a770e0a24 Patr* 0018 #include "SIZE.h "
275a56dc21 Gael* 0019 #include "EEPARAMS.h "
0020 #include "PARAMS.h "
6a770e0a24 Patr* 0021 #include "GRID.h "
0022 #include "DYNVARS.h "
d28c90138c Patr* 0023 #ifdef ALLOW_PROFILES
6328b73337 Gael* 0024 # include "netcdf.inc"
0025 # include "PROFILES_SIZE.h "
0026 # include "profiles.h "
6e4c90fea3 Patr* 0027 #endif
13ce79fe94 Ivan* 0028
0029
0030
0031 INTEGER vec_loc_length ,vNb ,bi ,bj
0032 INTEGER irec ,fNb ,myThid
6a770e0a24 Patr* 0033 _RL vec_loc (vec_loc_length )
13ce79fe94 Ivan* 0034
6e4c90fea3 Patr* 0035
13ce79fe94 Ivan* 0036
0037 INTEGER num_var ,v1 ,v2
0038 INTEGER err ,varId1 ,tmpprofno
d28c90138c Patr* 0039 #ifdef ALLOW_PROFILES
13ce79fe94 Ivan* 0040 INTEGER vec_start (2),vec_count (2)
6a770e0a24 Patr* 0041 _RL vec_tmp1 (1000*NLEVELMAX ),vec_tmp2 (1000*NLEVELMAX )
13ce79fe94 Ivan* 0042 # ifdef ALLOW_PROFILES_CLIMMASK
6b2230d510 Ou W* 0043 _RL vec_tmp3 (1000*NLEVELMAX )
13ce79fe94 Ivan* 0044 # endif
0045 CHARACTER *(MAX_LEN_MBUF ) msgBuf
0046
0047 IF ( (irec .LT. profiles_minind_buff (bi ,bj )) .OR.
0048 & (irec .GT. profiles_maxind_buff (bi ,bj )) .OR.
0049 & (profiles_curfile_buff (bi ,bj ).NE. fNb ) ) THEN
0050 err = NF_INQ_DIMID(fiddata (fNb ,bi ,bj ),'iPROF' , varId1 )
0051 CALL PROFILES_NF_ERROR (
0052 & 'READVECTOR: NF_INQ_DIMID fiddata iProf' ,
0053 & err ,bi ,bj ,myThid )
0054 err = NF_INQ_DIMLEN( fiddata (fNb ,bi ,bj ), varId1 , tmpprofno )
0055 CALL PROFILES_NF_ERROR ( 'READVECTOR: NF_INQ_DIMLEN tmpprofno' ,
0056 & err ,bi ,bj ,myThid )
0057
0058 IF (profiles_curfile_buff (bi ,bj ).NE. fNb ) THEN
0059
0060 profiles_minind_buff (bi ,bj ) = MAX(1,irec -500+1)
0061 profiles_maxind_buff (bi ,bj ) = MIN(tmpprofno ,irec +500)
0062
0063 ELSEIF (irec .LT. profiles_minind_buff (bi ,bj )) THEN
0064
0065 profiles_minind_buff (bi ,bj ) = MAX(1,irec -999)
0066 profiles_maxind_buff (bi ,bj ) = irec
0067
0068 ELSE
0069
0070 profiles_minind_buff (bi ,bj ) = irec
0071 profiles_maxind_buff (bi ,bj ) = MIN(tmpprofno ,irec +999)
0072
0073 ENDIF
0074
0075 # ifdef ALLOW_DEBUG
0076 IF (debugLevel .GE. debLevD ) THEN
0077 WRITE (msgBuf ,'(A,5I9)' )
0078 & 'buffer readvector ' ,
0079 & profiles_minind_buff (bi ,bj ), profiles_maxind_buff (bi ,bj ),
0080 & irec , profNo (fNb ,bi ,bj ), tmpprofno
0081 CALL PRINT_MESSAGE ( msgBuf ,
0082 & standardMessageUnit , SQUEEZE_RIGHT , myThid )
0083 ENDIF
0084 # endif
0085
0086 vec_start (1) = 1
0087 vec_start (2) = profiles_minind_buff (bi ,bj )
0088 vec_count (1) = vec_loc_length
0089 vec_count (2) =
0090 & profiles_maxind_buff (bi ,bj )-profiles_minind_buff (bi ,bj )+1
0091
0092 DO num_var = 1, NVARMAX
0093 IF ( vec_quantities (fNb ,num_var ,bi ,bj ) ) THEN
0094 err = NF_INQ_VARID( fiddata (fNb ,bi ,bj ),
0095 & prof_names (fNb ,num_var ), varId1 )
0096 CALL PROFILES_NF_ERROR (
0097 & 'READVECTOR: NF_INQ_VARID prof_names' ,
0098 & err ,bi ,bj ,myThid )
0099 err = NF_GET_VARA_DOUBLE( fiddata (fNb ,bi ,bj ), varId1 ,
0100 & vec_start , vec_count , vec_tmp1 )
0101 CALL PROFILES_NF_ERROR (
0102 & 'READVECTOR: NF_GET_VARA_DOUBLE vec_tmp1' ,
0103 & err ,bi ,bj ,myThid )
0104
0105 err = NF_INQ_VARID( fiddata (fNb ,bi ,bj ),
0106 & prof_namesweight (fNb ,num_var ), varId1 )
0107 CALL PROFILES_NF_ERROR (
0108 & 'READVECTOR: NF_INQ_VARID ' //prof_namesweight (fNb ,num_var ),
0109 & err ,bi ,bj ,myThid )
0110 err = NF_GET_VARA_DOUBLE( fiddata (fNb ,bi ,bj ),
0111 & varId1 , vec_start , vec_count , vec_tmp2 )
0112 CALL PROFILES_NF_ERROR (
0113 & 'READVECTOR: NF_GET_VARA_DOUBLE vec_tmp2' ,
0114 & err ,bi ,bj ,myThid )
0115
0116 # ifdef ALLOW_PROFILES_CLIMMASK
0117 err = NF_INQ_VARID( fiddata (fNb ,bi ,bj ),
0118 & prof_namesclim (fNb ,num_var ),varId1 )
0119 CALL PROFILES_NF_ERROR (
0120 & 'READVECTOR: NF_INQ_VARID prof_namesclim' ,
0121 & err ,bi ,bj ,myThid )
0122 err = NF_GET_VARA_DOUBLE( fiddata (fNb ,bi ,bj ),
0123 & varId1 ,vec_start ,vec_count , vec_tmp3 )
0124 CALL PROFILES_NF_ERROR (
0125 & 'READVECTOR: NF_GET_VARA_DOUBLE vec_tmp3' ,
0126 & err ,bi ,bj ,myThid )
0127 # endif
0128
0129 IF (err .NE. NF_NOERR) THEN
0130 WRITE (errorMessageUnit ,'(A)' )
0131 & 'WARNING PROFILES_READVECTOR: record not found!!'
0132 ENDIF
0133
0134 DO v1 = 1, vec_count (1)
0135 DO v2 = 1, vec_count (2)
0136 profiles_data_buff (v1 ,v2 ,num_var ,bi ,bj ) =
0137 & vec_tmp1 ((v2 -1)*vec_count (1)+v1 )
0138
0139 profiles_weight_buff (v1 ,v2 ,num_var ,bi ,bj ) =
0140 & vec_tmp2 ((v2 -1)*vec_count (1)+v1 )
0141
0142 # ifdef ALLOW_PROFILES_CLIMMAS
0143 IF (vec_tmp3 ((v2 -1)*vec_count (1)+v1 ).LE. -990. _d 0)
0144 & profiles_weight_buff (v1 ,v2 ,num_var ,bi ,bj ) = 0. _d 0
0145
0146 # endif
0147 ENDDO
0148 ENDDO
0149
0150 ENDIF
0151 ENDDO
0152
0153 profiles_curfile_buff (bi ,bj ) = fNb
0154 ENDIF
0155
0156
0157 IF (vNb .LT. 0) THEN
0158 DO v1 = 1, vec_loc_length
0159 vec_loc (v1 ) = profiles_weight_buff
0160 & (v1 ,irec -profiles_minind_buff (bi ,bj )+1,-vNb ,bi ,bj )
0161 ENDDO
0162
0163 ELSE
0164 DO v1 = 1, vec_loc_length
0165 vec_loc (v1 ) = profiles_data_buff
0166 & (v1 ,irec -profiles_minind_buff (bi ,bj )+1,vNb ,bi ,bj )
0167 ENDDO
6a770e0a24 Patr* 0168
13ce79fe94 Ivan* 0169 ENDIF
6a770e0a24 Patr* 0170
13ce79fe94 Ivan* 0171 #endif /* ALLOW_PROFILES */
6a770e0a24 Patr* 0172
13ce79fe94 Ivan* 0173 RETURN
6a770e0a24 Patr* 0174 END