离线拉格朗日配置
可以在PML GitLab中找到该代码。调整makefile
以指向您的netCDF库路径,并使用编译代码make
。输出文件称为ptraj
。
注意:代码没有并行化,因此运行缓慢且仅在单个内核上运行。
模型设置
模型配置由文件控制casename_run.dat
。下面给出一个例子。
!=========================================================================================!
! INPUT FILE FOR PARAMETERS CONTROLLING EXECUTION OF OFF-LINE PARTICLE TRACKING !
! DESCRIPTION OF VARIABLES AND SUGGESTED PARAMETERS CAN BE FOUND AT BOTTOM !
! !
! FORMAT: !
! 1.) VARIABLE = VALUE (EQUAL SIGN MUST BE USED) !
! 2.) FLOATING POINT VARIABLES MUST CONTAIN A PERIOD "." EX: 1.3, 2.,etc !
! 3.) BLANK LINES ARE IGNORED AS ARE LINES BEGINNING WITH ! (F90 COMMENT) !
! 4.) COMMENTS CAN FOLLOW VALUES IF MARKED BY ! !
! 5.) ORDER OF VARIABLES IS NOT IMPORTANT !
! 6.) FOR MULTIPLE VALUE VARIABLES FIRST ENTRY IS NUMBER OF VARIABLES !
! TO FOLLOW (OR 0 IF NONE) !
! 7.) DO NOT USE COMMAS TO SEPARATE VARIABLES !
! 8.) DO NOT EXCEED EIGHTY CHARACTERS PER LINE !
! 9.) FOR LINE CONTINUATION ADD \\ TO END OF LINE TO FORCE CONTINUE !
! TO NEXT LINE. MAXIMUM 4 CONTINUATIONS !
! 10.) TRUE = T, FALSE = F !
! !
!=========================================================================================!
!=========Parameters Controlling Time Integration==========================================
DTI = 120.0 ! Time step for scheme resolution. mod(INSTP/DTI) should be 0
INSTP = 3600 ! INPUT time step (s).
DTOUT = 1 ! output time step in hour
TDRIFT = 720 !480 !720 ! Drift duration (hour)
!=========Parameters Controlling Starting Tracking Date====================================
YEARLAG = 1995 ! Year of tracking start
MONTHLAG = 1 ! Month of tracking start
DAYLAG = 1 ! Day of tracking start
HOURLAG = 0 ! Hour of tracking start
!=========Parameters Controlling Input/Output LOCATION=====================================
INPDIR = INPDIR
GEOAREA = tst
OUTDIR = OUTDIR_tst
INFOFILE = screen
LAGINI = particle_tst ! Input file with particle location
METRICS = tst ! Prefix for the grid metrics netCDF file (saved in OUTDIR)
!=========Parameters Controlling SIGMA/CARTESIAN===========================================
F_DEPTH = F ! Cartesian depth is kept constant if T.
P_SIGMA = F ! Input particle depth in sigma if T.
OUT_SIGMA = F ! Output particle depth in sigma if T.
!=========Parameters Controlling Random Walk===============================================
IRW = 0 ! IRW (0-w/o rw; 1-hor rw; 2-vert rw; 3:hor+vert rw)
DHOR = 20. ! DHOR (horizontal diff coeff m^2/s, miller 10^6m^2/day~11.57m^2/s)
DTRW = 6. ! time step (s) for RW (from the visser's criterion). mod(DTI/DTRW) should be 0
值得注意的参数是YEARLAG
,MONTHLAG
,DAYLAG
和HOURLAG
确定何时粒子追踪应该开始。尽管YEARLAG
在此控制文件中进行了定义,但是源代码当前具有年份的硬编码值,因此您将需要offlag.f90
在第45行和第46行进行编辑以使用正确的年份进行模型运行。
LAGINI
是包含初始粒子位置的文件。
GEOAREA
casename
与FVCOM手册中的等效。您的.dat文件必须被调用GEOAREA_run.dat
(即casename_run.dat
)。
设置INPDIR
和OUTDIR
值以反映您从FVCOM模型运行中获得的输入和输出目录。每年的输出文件必须在目录中。模型输出文件的命名必须为casename_####.nc
####是从0001开始的数字。
INPDIR/YEARLAG/casename_0001.nc
INPDIR/YEARLAG/casename_0002.nc
...
INPDIR/YEARLAG/casename_000n.nc
可以在此处找到将每月模型输出文件分割为一天的单个文件的脚本。
INFOFILE
是screen
将运行时信息输出到标准输出(即到终端)或文件名。
网格指标
如果您使用的是离线拉格朗日代码的medusa-v3.1.0-LAG分支,则必须在该Parameters Controlling Input/Output LOCATION
部分中添加一个额外的参数:
!=========Parameters Controlling Input/Output LOCATION=====================================
INPDIR = INPDIR
GEOAREA = tst
OUTDIR = OUTDIR_tst
INFOFILE = screen
LAGINI = particle_tst ! Input file with particle location
METRICS = tst ! Prefix for the grid metrics netCDF file (saved in OUTDIR)
该METRICS
参数控制网格度量的文件名。此netCDF文件包含平移粒子所需的网格度量。如果网格很复杂,这可能是一个耗时的操作,因此将这些输出保存为连续运行可以节省大量时间。
它的工作方式是,如果输入目录中不存在该文件,则将计算网格度量并将其保存到tst_metrics.nc
上例中命名的netCDF文件中(更改METRICS
以更改前缀)。首次运行生成文件后,如果将其移入输入目录(INPDIR/YEARLAG
),则连续运行都可以使用它。
FVCOM模型输出文件
离线代码需要模型输出,其中包含以下变量:
变量名 | 长名 | 外型尺寸 | 单位 |
X | 节点x坐标 | 节点 | 米 |
ÿ | 节点y坐标 | 节点 | 米 |
nv | 元素周围的节点 | 三,尼尔 | – |
H | 测深法 | 节点 | 米 |
西格列夫 | 西格玛水平 | siglev,节点 | – |
a1u | a1u | 三,尼尔 | – |
a2u | a2u | 三,尼尔 | – |
w0 | w0 | 三,尼尔 | – |
awx | awx | 三,尼尔 | – |
wy | wy | 三,尼尔 | – |
时间 | 时间 | 时间 | 自1858-11-17 00:00:00以来的天数 |
泽塔 | 水面高程 | 时间,节点 | 米 |
ü | 东风速 | 时间西格莱奈尔 | 毫秒-1 |
v | 北方水速 | 时间西格莱奈尔 | 毫秒-1 |
欧米茄 | 垂直Sigma坐标速度 | 时间,siglev,节点 | s -1 |
公里 | 动量的涡流粘度 | 时间,siglev,节点 | m 2 s -1 |
注意:不支持球坐标,因此您将不得不以笛卡尔形式运行原始模型,或者FLAG_6 = -DPROJ
在编译FVCOM时启用(随后PROJECTION_REFERENCE
在casename_run.nml
文件中进行设置)。
注意:您的FVCOM模型输出必须是整天的块。粒子跟踪只会读取给出的任何结果文件的前24小时。可以在此处找到将每月模型输出文件分割为一天的单个文件的脚本。
离线输入粒子定义文件
脱机代码仅需要一个文件即可定义粒子的释放位置。下面是一个示例:
3
1 510876 6555485 5.0
2 500064 6563972 0.0
3 530350 6561007 10.0
第一行定义了要跟踪的粒子数(这是通过offlag.f90中的DO循环读取的,因此,如果位置列表很长,但只希望使用前几个位置,请将标头号设置为希望阅读,保留列表中定义的其余点;代码将忽略它们)。
每个点的定义是ID XPOS YPOS DEPTH
深度为正向下。设置此文件的名称以匹配文件中的LAGINI
值casename_run.dat
。