Back to home page

MITgcm

 
 

    


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 
                0003 CBOP
                0004 C     !ROUTINE: OBSFIT_READPARMS
                0005 
                0006 C     !INTERFACE:
                0007       SUBROUTINE OBSFIT_READPARMS( myThid )
                0008 
                0009 C     !DESCRIPTION:
                0010 C     ==================================================================
                0011 C     | Initialize ObsFit variables and constants
                0012 C     ==================================================================
                0013 
                0014 C     !USES:
                0015       IMPLICIT NONE
                0016 C     == Global variables ===
                0017 #include "SIZE.h"
                0018 #include "EEPARAMS.h"
                0019 #include "PARAMS.h"
                0020 #include "GRID.h"
                0021 #include "OBSFIT_SIZE.h"
                0022 #include "OBSFIT.h"
                0023 
                0024 C     !INPUT PARAMETERS:
                0025       INTEGER myThid
                0026 CEOP
                0027 
                0028 C     !FUNCTIONS:
                0029       INTEGER  ILNBLNK
                0030       EXTERNAL ILNBLNK
                0031 
                0032 C     !LOCAL VARIABLES:
                0033 C     msgBuf :: Informational/error message buffer
                0034 C     iUnit  :: Work variable for IO unit number
                0035       CHARACTER*(MAX_LEN_MBUF) msgBuf
                0036       INTEGER   iUnit, num_file, IL
                0037       LOGICAL   exst
                0038       CHARACTER*(128) fname
                0039 
                0040       NAMELIST /obsfit_nml/
                0041      &                 obsfitDir,
                0042      &                 obsfitFiles,
                0043      &                 mult_obsfit,
                0044      &                 obsfit_facmod,
                0045      &                 obsfitDoNcOutput,
                0046      &                 obsfitDoGenGrid
                0047 
                0048       IF ( .NOT.useOBSFIT ) THEN
                0049         _BEGIN_MASTER(myThid)
                0050 C Track pkg activation status:
                0051 C Print a (weak) warning if data.obsfit is found
                0052         CALL PACKAGES_UNUSED_MSG( 'useOBSFIT', ' ', ' ' )
                0053         _END_MASTER(myThid)
                0054         RETURN
                0055       ENDIF
                0056 
                0057       _BEGIN_MASTER(myThid)
                0058 
                0059 C Default values for ObsFit
                0060       obsfitDir = ' '
                0061 
                0062       DO num_file = 1, NFILESMAX_OBS
                0063         obsfitFiles(num_file) = ' '
                0064       ENDDO
                0065 
                0066       DO num_file = 1, NFILESMAX_OBS
                0067         mult_obsfit(num_file) = 1. _d 0
                0068         obsfit_facmod(num_file) = 1. _d 0
                0069       ENDDO
                0070 
                0071       obsfitDoNcOutput = .false.
                0072 
                0073       IF ( (.NOT.usingSphericalPolarGrid .OR. rotateGrid) ) THEN
                0074         obsfitDoGenGrid = .true.
                0075       ELSE
                0076         obsfitDoGenGrid = .false.
                0077       ENDIF
                0078 
                0079 C Read ObsFit cost data file
                0080       WRITE( msgBuf,'(A)' ) 'OBSFIT_READPARMS: opening data.obsfit'
                0081       CALL PRINT_MESSAGE( msgBuf,
                0082      &     standardMessageUnit, SQUEEZE_RIGHT, 1 )
                0083 
                0084       CALL OPEN_COPY_DATA_FILE(
                0085      I     'data.obsfit', 'OBSFIT_READPARMS',
                0086      O     iUnit,
                0087      I     myThid )
                0088 
                0089       READ( iUnit, nml = obsfit_nml )
                0090 
                0091       WRITE( msgBuf,'(2A)' ) 'OBSFIT_READPARMS: ',
                0092      & 'finished reading data.obsfit'
                0093       CALL PRINT_MESSAGE( msgBuf,
                0094      &     standardMessageUnit, SQUEEZE_RIGHT, 1 )
                0095 
                0096 #ifdef SINGLE_DISK_IO
                0097       CLOSE( iUnit )
                0098 #else
                0099       CLOSE( iUnit,STATUS='DELETE' )
                0100 #endif /* SINGLE_DISK_IO */
                0101 
                0102       DO num_file = 1, NFILESMAX_OBS
                0103 
                0104         IF ( obsfitFiles(num_file) .NE. ' ' ) THEN
                0105           IL  = ILNBLNK( obsfitFiles(num_file) )
                0106           fname = obsfitFiles(num_file)(1:IL)//'.nc'
                0107           INQUIRE( file=fname, exist=exst )
                0108           IF (.NOT.exst) THEN
                0109 C Warn user as we override obsfitFiles
                0110             WRITE( msgBuf,'(3A)' )
                0111      &       '** WARNING ** OBSFIT_READPARMS: missing file: ',
                0112      &       obsfitFiles(num_file)(1:IL),' gets switched off'
                0113             CALL PRINT_MESSAGE( msgBuf,
                0114      &           errorMessageUnit, SQUEEZE_RIGHT, myThid )
                0115 
                0116 C Switch off this file (and potential cost function term)
                0117             obsfitFiles(num_file) = ' '
                0118 
                0119           ENDIF
                0120         ENDIF
                0121 
                0122       ENDDO !DO num_file
                0123 
                0124       _END_MASTER( myThid )
                0125 
                0126       _BARRIER
                0127 
                0128       RETURN
                0129       END