⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parameters.f90

📁 集合卡尔曼滤波(EnKF) 数据同化方法可以避免了EKF 中协方差演变方程预报过程中出现的计算不准确和关于协方差矩阵的大量数据的存储问题,最主要的是可以有效的控制估计误差方差的增长,改善预报的效果。
💻 F90
字号:
!! Copyright (C) 2008 Pavel Sakov!! !! This file is part of EnKF-Matlab. EnKF-Matlab is a free software. See !! LICENSE for details.! File:           parameters.f90!! Created:        31/08/2007!! Last modified:  08/02/2008!! Author:         Pavel Sakov!                 CSIRO Marine and Atmospheric Research!                 NERSC!! Purpose:        Fortran code for QG model. Reads and stores the model!                 parameters.!! Description:    !! Revisions:module parameters_mod  use utils_mod  implicit none  save  public parameters_read  integer, parameter, private :: FID_PRM = 111  ! This is the place to change the resolution of the model, by  ! changing the parameter MREFIN:  ! To make the ocean a rectangular (at your own risk!) change nx1,  ! ny1 to (2,4), and adjust domain size (Lx, Ly)...  !  integer, parameter, public :: MREFIN = 7  integer, parameter, public :: NX1 = 2  integer, parameter, public :: NY1 = 2  integer, parameter, public :: M = NX1 * 2 ** (MREFIN - 1) + 1  integer, parameter, public :: N = NY1 * 2 ** (MREFIN - 1) + 1  real(8), parameter, public :: PI = 3.14159265358979323d0  real(8), parameter, public :: rf_coeff = 0.1 ! Roberts filter coefficient                                               ! for the leap-frog scheme  real(8), public :: dt            ! time step  real(8), public :: rkb           ! bottom friction  real(8), public :: rkh           ! horizontal friction  real(8), public :: rkh2          ! biharmonic friction  real(8), public :: F             ! Froud number, (L / Rd)^2  real(8), public :: r             ! factor in front of nonlinear                                   ! advection term  integer, public :: rstart = 0  real(8), public :: tend  real(8), public :: dtout  integer, public :: verbose = VERBOSE_DEF  character(STRLEN), public :: scheme  character(STRLEN), public :: restartfname  character(STRLEN), public :: outfname  ! secondary parameters  real(8), dimension(N, M), public :: CURLT  real(8), public :: dx  real(8), public :: dycontains  subroutine parameters_read(prmfname)    character(STRLEN) :: prmfname    integer :: j    integer :: m1 = M - 1    namelist /parameters/ &         tend, &         dtout, &         dt, &         rkb, &         rkh, &         rkh2, &         F, &         r, &         verbose, &         scheme, &         rstart, &         restartfname, &         outfname    call wopen(trim(prmfname), FID_PRM, 'old')    read(FID_PRM, parameters)    if (verbose > 0) then       write(stdout, *) 'parameters:'       write(stdout, *) '  tend =', tend       write(stdout, *) '  dtout =', dtout       write(stdout, *) '  dt =', dt       write(stdout, *) '  RKB =', rkb       write(stdout, *) '  RKH =', rkh       write(stdout, *) '  RKH2 =', rkh2       write(stdout, *) '  F =', F       write(stdout, *) '  r =', r       write(stdout, *) '  verbose =', verbose       write(stdout, *) '  scheme = "', trim(scheme), '"'       write(stdout, *) '  rstart =', rstart       write(stdout, *) '  restart file = "', trim(restartfname), '"'       write(stdout, *) '  output file = "', trim(outfname), '"'    end if    dx = 1.0d0 / dble(N - 1)    dy = 1.0d0 / dble(M - 1)    do j = 1, M       CURLT(:, j) = - 2.0d0 * PI * sin(2.0d0 * PI * (j - 1) / m1)    end do    close(FID_PRM)  end subroutine parameters_read  subroutine parameters_get(N_out, M_out, tend_out, dtout_out, dt_out, &       rkb_out, rkh_out, rkh2_out, F_out, r_out, verbose_out, &       scheme_out, rstart_out, restartfname_out, outfname_out)    integer, intent(out) :: N_out, M_out    real(8), intent(out) :: dt_out    real(8), intent(out) :: rkb_out    real(8), intent(out) :: rkh_out    real(8), intent(out) :: rkh2_out    real(8), intent(out) :: F_out    real(8), intent(out) :: r_out    real(8), intent(out) :: tend_out    real(8), intent(out) :: dtout_out    integer, intent(out) :: verbose_out    character(STRLEN), intent(out) :: scheme_out    integer, intent(out) :: rstart_out    character(STRLEN), intent(out) :: restartfname_out    character(STRLEN), intent(out) :: outfname_out        N_out = N    M_out = M    tend_out = tend    dtout_out = dtout    dt_out = dt    rkb_out = rkb    rkh_out = rkh    rkh2_out = rkh2    F_out = F    r_out = r    verbose_out = verbose    scheme_out = scheme    rstart_out = rstart    restartfname_out = restartfname    outfname_out = outfname  end subroutine parameters_get       end module parameters_mod

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -