File indexing completed on 2025-08-05 05:09:15 UTC
view on githubraw file Latest commit 13ce79fe on 2025-08-04 21:05:34 UTC
24462d2fa8 Patr*0001 #include "PROFILES_OPTIONS.h"
13ce79fe94 Ivan*0002 #include "AD_CONFIG.h"
6a770e0a24 Patr*0003
13ce79fe94 Ivan*0004
0005
0006
6a770e0a24 Patr*0007
13ce79fe94 Ivan*0008
0009 SUBROUTINE PROFILES_INIT_NCFILE(
0010 & num_file,fid1,file2,fid2,length,Zlength,bi,bj,myThid)
6a770e0a24 Patr*0011
13ce79fe94 Ivan*0012
0013
0014
0015
6a770e0a24 Patr*0016
13ce79fe94 Ivan*0017
0018 IMPLICIT NONE
0019
6a770e0a24 Patr*0020 #include "EEPARAMS.h"
0021 #include "SIZE.h"
0022 #include "GRID.h"
0023 #include "DYNVARS.h"
d28c90138c Patr*0024 #ifdef ALLOW_PROFILES
6328b73337 Gael*0025 # include "PROFILES_SIZE.h"
6e4c90fea3 Patr*0026 # include "profiles.h"
0027 # include "netcdf.inc"
0028 #endif
6a770e0a24 Patr*0029
13ce79fe94 Ivan*0030
0031
0032 INTEGER num_file, fid1
0033 CHARACTER*(*) file2
0034 INTEGER fid2, length, Zlength
0035 INTEGER bi, bj, myThid
0036
6e4c90fea3 Patr*0037
13ce79fe94 Ivan*0038 #ifdef ALLOW_PROFILES
0039
0040 INTEGER k,err,vecid(2)
0041 INTEGER irec,num_var,dimId1,dimId2,varId(2*NVARMAX),varId0
0042 _RL tmp_vec(Zlength+1)
0043 CHARACTER*(MAX_LEN_MBUF) msgBuf
0044
0045 IF (profilesDoNcOutput) THEN
0046
0047 err = NF_CREATE( file2, NF_CLOBBER, fid2 )
0048 CALL PROFILES_NF_ERROR( 'INIT_NCFILE: NF_CREATE fid2',
0049 & err,bi,bj,myThid )
0050 err = NF_DEF_DIM( fid2,'iDEPTH', Zlength, dimId1 )
0051 CALL PROFILES_NF_ERROR( 'INIT_NCFILE: NF_DEF_DIM Zlength',
0052 & err,bi,bj,myThid )
0053 err = NF_DEF_DIM( fid2,'iPROF', length, dimId2 )
0054 CALL PROFILES_NF_ERROR( 'INIT_NCFILE: NF_DEF_DIM length',
0055 & err,bi,bj,myThid )
0056
0057 vecid(1)=dimId1
0058 vecid(2)=dimId2
0059
0060 err = NF_DEF_VAR( fid2, 'prof_ind_glob',
0061 & NF_INT, 1, vecid(2), varId(1) )
0062 CALL PROFILES_NF_ERROR(
0063 & 'INIT_NCFILE: NF_DEF_VAR prof_ind_glob',
0064 & err,bi,bj,myThid )
0065 err = NF_PUT_ATT_INT( fid2, varId(1),
0066 & '_FillValue', NF_INT, 1, 0 )
0067 CALL PROFILES_NF_ERROR(
0068 & 'INIT_NCFILE: NF_PUT_ATT_INT varId(1)',
0069 & err,bi,bj,myThid )
0070
0071 DO num_var = 1, NVARMAX
0072 err = NF_INQ_VARID( fid1,
0073 & prof_names(num_file,num_var), varId0 )
0074 IF (err.EQ.NF_NOERR) THEN
0075 WRITE(msgBuf,'(2A)')
0076 & 'S/R PROFILES_INIT_NCFILE: defining new variable ',
0077 & prof_names(num_file,num_var)
0078 CALL PRINT_MESSAGE( msgBuf,
0079 & standardMessageUnit, SQUEEZE_RIGHT, myThid )
0080
0081 err = NF_DEF_VAR( fid2, prof_names(num_file,num_var),
0082 & NF_DOUBLE, 2, vecid, varId(2+(num_var-1)*2) )
0083 CALL PROFILES_NF_ERROR(
0084 & 'INIT_NCFILE: NF_DEF_VAR prof_names',
0085 & err,bi,bj,myThid )
0086 err = NF_PUT_ATT_DOUBLE( fid2, varId(2+(num_var-1)*2),
0087 & '_FillValue', NF_DOUBLE, 1, 0. _d 0 )
0088 CALL PROFILES_NF_ERROR(
0089 & 'INIT_NCFILE: NF_PUT_ATT_DOUBLE varId(2',
0090 & err,bi,bj,myThid )
0091
0092 err = NF_DEF_VAR( fid2, prof_namesmask(num_file,num_var),
0093 & NF_DOUBLE, 2, vecid, varId(3+(num_var-1)*2) )
0094 CALL PROFILES_NF_ERROR(
0095 & 'INIT_NCFILE: NF_DEF_VAR prof_namesmask',
0096 & err,bi,bj,myThid )
0097 err = NF_PUT_ATT_DOUBLE( fid2, varId(3+(num_var-1)*2),
0098 & '_FillValue', NF_DOUBLE, 1, 0. _d 0 )
0099 CALL PROFILES_NF_ERROR(
0100 & 'INIT_NCFILE: NF_PUT_ATT_DOUBLE varId(3',
0101 & err,bi,bj,myThid )
0102
0103 ELSE
0104 WRITE(msgBuf,'(2A)')
0105 & 'S/R PROFILES_INIT_NCFILE: no variable ',
0106 & prof_names(num_file,num_var)
0107 CALL PRINT_MESSAGE( msgBuf,
0108 & standardMessageUnit, SQUEEZE_RIGHT, myThid )
0109 WRITE(msgBuf,'(2A)')
0110 & 'INIT_NCFILE: NF_INQ_VARID prof_names = ',
0111 & prof_names(num_file,num_var)
0112 CALL PROFILES_NF_ERROR( msgBuf, err, bi, bj, myThid )
0113
0114 ENDIF
0115 ENDDO
0116
0117 err = NF_ENDDEF( fid2 )
0118 CALL PROFILES_NF_ERROR( 'INIT_NCFILE: NF_ENDDEF fid2',
0119 & err,bi,bj,myThid )
0120 err = NF_CLOSE( fid2 )
0121 CALL PROFILES_NF_ERROR( 'INIT_NCFILE: NF_CLOSE fid2',
0122 & err,bi,bj,myThid )
0123
0124 err = NF_OPEN( file2, NF_WRITE, fid2 )
0125 CALL PROFILES_NF_ERROR( 'INIT_NCFILE: NF_OPEN'//file2//')',
0126 & err,bi,bj,myThid )
0127
0128 ELSE
0129 OPEN( fid2, FILE = file2, FORM = 'unformatted',
0130 & STATUS = 'unknown', ACCESS = 'direct',
0131 & RECL = (Zlength + 1)*WORDLENGTH*2 )
0132
0133 DO k = 1, Zlength+1
0134 tmp_vec(k) = zeroRL
0135 ENDDO
0136
0137 # ifdef _BYTESWAPIO
0138 CALL MDS_BYTESWAPR8(Zlength+1,tmp_vec)
0139 # endif
0140 DO irec = length, 1, -1
0141 DO num_var = prof_num_var_tot(num_file,bi,bj), 1, -1
0142 WRITE(fid2,rec=((irec-1)*prof_num_var_tot(num_file,bi,bj)
0143 & +num_var-1)*2 +1) tmp_vec
0144 WRITE(fid2,rec=((irec-1)*prof_num_var_tot(num_file,bi,bj)
0145 & +num_var-1)*2 +2) tmp_vec
0146 ENDDO
0147 ENDDO
0148
0149 ENDIF
0150 #endif /* ALLOW_PROFILES */
0151
0152 RETURN
6a770e0a24 Patr*0153 END