File indexing completed on 2025-12-15 06:14:27 UTC
view on githubraw file Latest commit ad59256d on 2025-12-15 00:05:36 UTC
ad59256d7d aver*0001 #include "OBSFIT_OPTIONS.h"
0002
0003
0004
0005
0006
0007 SUBROUTINE OBSFIT_INIT_EQUIFILES(
0008 I num_file,
0009 I fid1,
0010 I file2,
0011 O fid2,
0012 I length,
0013 I bi,
0014 I bj,
0015 I myThid )
0016
0017
0018
0019
0020
0021
0022
0023
0024 IMPLICIT NONE
0025
0026 #include "EEPARAMS.h"
0027 #include "SIZE.h"
0028 #include "GRID.h"
0029 #include "DYNVARS.h"
0030 #ifdef ALLOW_OBSFIT
0031 # include "OBSFIT_SIZE.h"
0032 # include "OBSFIT.h"
0033 # include "netcdf.inc"
0034 #endif
0035
0036
0037
0038 INTEGER num_file, length, fid1, fid2
0039 CHARACTER*(*) file2
0040 INTEGER bi, bj, myThid
0041
0042
0043 #ifdef ALLOW_OBSFIT
0044
0045 INTEGER dimid, varID(3), varID0
0046 INTEGER irec, err
0047 _RL tmp_vec(2)
0048 CHARACTER*(MAX_LEN_MBUF) msgBuf
0049
0050 IF (obsfitDoNcOutput) THEN
0051
0052
0053 err = NF_CREATE( file2, NF_CLOBBER, fid2 )
0054 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILE: NF_CREATE fid2',
0055 & err,bi,bj,myThid )
0056 err = NF_DEF_DIM( fid2, 'iSAMPLE', length, dimid )
0057 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILE: NF_DEF_DIM sample',
0058 & err,bi,bj,myThid )
0059 err = NF_DEF_VAR( fid2, 'sample_ind_glob',
0060 & NF_INT, 1, dimid, varID(1) )
0061 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILE: NF_DEF_VAR sample',
0062 & err,bi,bj,myThid )
0063 err = NF_PUT_ATT_INT( fid2, varID(1), '_FillValue',
0064 & NF_INT, 1, 0 )
0065 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILE: NF_PUT_ATT_INT sample',
0066 & err,bi,bj,myThid )
0067
0068 err = NF_INQ_VARID( fid1, obsfit_nameval, varID0 )
0069 IF (err.EQ.NF_NOERR) THEN
0070
0071 err = NF_DEF_VAR( fid2, obsfit_nameequi,
0072 & NF_DOUBLE, 1, dimid, varID(2) )
0073 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILE: NF_DEF_VAR val',
0074 & err,bi,bj,myThid )
0075 err = NF_PUT_ATT_DOUBLE( fid2,varID(2),
0076 & '_FillValue', NF_DOUBLE, 1, 0. _d 0 )
0077 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILE: NF_PUT_ATT_INT val',
0078 & err,bi,bj,myThid )
0079
0080 err = NF_DEF_VAR( fid2, obsfit_namemask,
0081 & NF_DOUBLE, 1, dimid, varID(3) )
0082 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILE: NF_DEF_VAR mask',
0083 & err,bi,bj,myThid )
0084 err = NF_PUT_ATT_DOUBLE( fid2, varID(3),
0085 & '_FillValue', NF_DOUBLE, 1, 0. _d 0 )
0086 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILE: NF_PUT_ATT_INT mask',
0087 & err,bi,bj,myThid )
0088
0089 ELSE
0090 WRITE( msgBuf,'(2A)' )
0091 & 'S/R OBSFIT_INIT_EQUIFILES: no variable obs_val'
0092 CALL PRINT_MESSAGE( msgBuf,
0093 & standardMessageUnit, SQUEEZE_RIGHT, myThid )
0094 WRITE( msgBuf,'(2A)' )
0095 & 'INIT_EQUIFILES: NF_INQ_VARID obs_val'
0096 CALL OBSFIT_NF_ERROR( msgBuf, err, bi, bj, myThid )
0097
0098 ENDIF
0099
0100 err = NF_ENDDEF( fid2 )
0101 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILES: NF_ENDDEF fid2',
0102 & err,bi,bj,myThid )
0103 err = NF_CLOSE( fid2 )
0104 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILES: NF_CLOSE fid2',
0105 & err,bi,bj,myThid )
0106
0107 err = NF_OPEN( file2,NF_WRITE,fid2 )
0108 CALL OBSFIT_NF_ERROR( 'INIT_EQUIFILES: NF_OPEN'//file2//')',
0109 & err,bi,bj,myThid )
0110
0111 ELSE
0112
0113
0114 OPEN( fid2, FILE=file2, FORM='unformatted', STATUS='unknown',
0115 & ACCESS='direct', RECL=2*WORDLENGTH*2 )
0116
0117 DO irec = 1, 2
0118 tmp_vec(irec) = zeroRL
0119 ENDDO
0120 #ifdef _BYTESWAPIO
0121 CALL MDS_BYTESWAPR8(2,tmp_vec)
0122 #endif
0123
0124 DO irec = length, 1, -1
0125 WRITE( fid2, rec=(irec*2-1) ) tmp_vec
0126 WRITE( fid2, rec=(irec*2) ) tmp_vec
0127 ENDDO
0128
0129 ENDIF
0130
0131 #endif
0132
0133 END
0134