当前位置: 首页 > news >正文

SPECFEM手册的一些翻译(Chapter 4)

要运行求解器,在主工作目录下输入以下命令:

bin/xspecfem2D
(如果你使用了并行支持的编译,可以使用 mpirun 或等效命令)。

运行后,求解器将在 OUTPUT_FILES/ 目录中输出地震记录和不同时间步长的波前快照。

可视化输出结果:

  • 要查看波场的 Postscript 文件,输入:

    gs OUTPUT_FILES/vect.ps*

    在这些文件中,波场用小箭头表示,流体/固体的匹配界面用粗粉线表示,吸收边界用粗绿线表示。

  • 要查看彩色波场快照,输入:
    gimp OUTPUT_FILES/image.gif*
    这将显示你选定输出的波场的像素化图像(或压力场,取决于你在 DATA/Par_file 中的选择)。

在运行求解器时,请注意以下几点:

  • 提供的 DATA/Par_file 文件可以正常运行,测试代码时无需修改。

  • 地震记录 OUTPUT_FILES/*.sem* 是简单的 ASCII 文件,包含两列数据:第一列是时间,第二列是振幅。你可以使用任何工具来可视化这些数据,例如 "gnuplot"。如果你希望以 Seismic Unix 格式输出二进制地震记录,可以使用参数 SU_FORMAT。在这种情况下,所有地震记录将写入一个带有 .bin 扩展名的文件。要查看头文件信息,可以使用以下命令(取决于你的 Seismic Unix 安装):

    surange < Uz_file_single.bin
    suoldtonew < Uz_file_single.bin | surange
  • 要查看地震记录的波形图,请将 surange 替换为 suxwigb

  • 如果 DATA/Par_file 中的 MODEL 标志设置为 default,则速度和密度模型通过 nbmodelsnbregions 来确定。否则,nbmodels 的值将被忽略,速度和密度模型由用户提供的文件或子程序确定。

  • 使用 Intel 的 ifort 编译时,使用 -assume byterecl 选项来创建显示波场的二进制 PNM 图像。

  • 目录 utils/ 中包含一些有用的脚本和 Fortran 程序。

  • 你可以在 EX2DDIR 中找到用于计算简单介质的解析解的 Fortran 代码,许多文章中的基准测试都使用了该代码作为参考。此代码在 Berg et al. [1994] 中有描述。

关于 DATA/Par_file 参数的说明

DATA/Par_file 文件包含详细的注释,几乎是自解释的。生成网格时,请参考相应的说明。以下是一些影响求解器的参数的更详细说明:

1. ATTENUATION_VISCOELASTIC 或 ATTENUATION_VISCOACOUSTIC

  • 关于衰减(粘弹性和粘声学性),在 Par_file 中需要选择标准线性固体(N_SLS)的数量,以模拟恒定的 Q 品质因数。通常使用 N_SLS = 3 是安全的。如果(仅在你确定知道自己在做什么时)想降低模拟成本,可以尝试减少这个值。
  • 图 4.2 提供了一些可供参考的值(再次提醒,只有在你确定知道自己在做什么时才使用这些值)。该表格由 Zhinan Xie 创建,通过比较真实恒定 Q 与基于 N_SLS 标准线性固体近似的结果得出。比较依据是 Kristeková et al. [2009] 提出的时频失配和拟合优度标准。该表格针对一个无量纲参数绘制,表示传播距离。

2. USE_TRICK_FOR_BETTER_PRESSURE

  • 这个选项仅适用于所有接收器记录压力且位于声学元素中的情况。此选项通过使用一种技巧来提高流体(声学)元素中压力地震记录的准确性:
    • 使用源的二阶导数作为源时间函数,而不是直接使用源本身,然后记录 potential_acoustic() 作为压力地震记录,而不是 potential_dot_dot_acoustic()
    • 从数学上讲,这两者是等价的,但在数值上,使用 potential_acoustic() 更加准确,因为在显式 Newmark 时间方案中,加速度是零阶精度,而位移是二阶精度。因此,在流体元素中,potential_dot_dot_acoustic() 仅是零阶精度,而 potential_acoustic() 是二阶精度,因而含有显著更少的数值噪声。

这两个参数对模拟的影响较大,特别是在涉及粘弹性或压力地震记录的情况下,建议根据需要谨慎调整这些参数。

关于 DATA/SOURCE 参数的说明

DATA/ 目录中的 SOURCE 文件应按如下方式编辑:

  • source_surf:将此标志设置为 .true.,以强制源位于模型的表面;否则源将位于介质内部。

  • xszs:源的位置,xs 为 x 方向的位置(单位:米),zs 为 z 方向的位置(单位:米)。

  • source_type:设置源类型:

    • 1 表示弹性力或声学压力源。
    • 2 表示矩张量源。
    • 对于包含自由表面反射和转换波的平面波:
      • P 波 = 1
      • S 波 = 2
      • 瑞利波 = 3
    • 对于不包含自由表面反射和转换波的平面波(仅入射波):
      • P 波 = 4
      • S 波 = 5
    • 入射平面波由 DATA/Par_file 中的 initialfield 参数启用。
  • time_function_type:选择源时间函数类型:

    • 1 使用 Ricker 波(高斯函数的二阶导数)。
    • 2 使用高斯函数的一阶导数。
    • 3 使用高斯函数。
    • 4 使用 Dirac 函数。
    • 5 使用 Heaviside 源时间函数。

    Ricker 波形的标准定义为:
    Ricker(t)=(1−2at2)e−at2\text{Ricker}(t) = (1 - 2at^2)e^{-at^2}Ricker(t)=(1−2at2)e−at2
    其中 a=π2f02a = \pi^2 f_0^2a=π2f02​,该波形的傅里叶变换如图 4.3 所示。

  • f0:设置源的主频率。对于使用 Heaviside 源时间函数的点源模拟(time_function_type = 5),建议将频率参数 f0 设置为较高值,这相当于模拟一个阶跃源时间函数,即一个 δ 函数的矩率函数。

    源的半持续时间由 1/f0 给出。如果使用高斯源时间函数(time_function_type = 3),源时间函数的半宽度等于其半持续时间。通常我们在模拟中设置半持续时间为 0,并在后处理时卷积合成地震图,以方便使用多种源时间函数。

  • t0:对于单一源,建议将时间移位参数 t0 设置为 0.0。时间移位可以在后处理时应用,但对于多个源,t0 可以设置为非零值。

  • anglesource:源的角度(仅适用于力源);对于平面波,这表示入射角。对于矩张量源,该参数不适用。

  • Mxx, Mzz, Mxz:矩张量分量(仅适用于矩张量源,source_type = 2)。请注意,在 SPECFEM2D 和 SPECFEM3D 中,矩张量分量的单位不同:

    • SPECFEM3D 中,单位是 dyne*cm。
    • SPECFEM2D 中,单位是 N*m。

    要将 Strike / Dip / Rake 转换为 CMTSOLUTION 矩张量格式,可以使用 SPECFEM3D_GLOBE 提供的两个小型 C 程序:

    • strike_dip_rake_to_CMTSOLUTION.c
    • CMTSOLUTION_to_AkiRichards.c

    但是在 2D 平面应变 P-SV 模型中,这实际上是一个线源,而不是 3D 点源。有关更多详细信息,请参考 Pilant [1979] 的书中的第 7.3 节“二维点源”,以及 Helmberger 和 Vidale [1988] 的研究。

  • factor:放大因子。

模拟的零时间点

模拟的零时间对应于三角形/高斯函数的中心,或地震事件的质心时间。模拟的起始时间为:
t=−1.2×half duration+t0t = -1.2 \times \text{half duration} + t0t=−1.2×half duration+t0
其中,因子 1.2 用于确保模拟开始时,矩率函数接近于零。对于 Heaviside 函数,这个因子为 2.0。半持续时间由 1/f0 给出。如果你希望手动设置起始时间,可以在 constants.h 文件中将参数 USER_T0 设置为一个正的非零值,在这种情况下,模拟将在 -USER_T0 的时间点开始。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Qt 状态机编程,双层状态机,实现暂停恢复
  • 【手写数据库内核组件】1001词法分析器,语言被程序识别的第一步,将语句分解为最小词根token
  • 常见框架漏洞复现
  • 不同语言的switch/case语句
  • 【通讯协议】S32K142芯片——LIN通信的学习和配置
  • ActiveMQ 的消息持久化策略
  • K8s Calico替换为Cilium,以及安装Cilium过程
  • 解决Vue 3中Element Plus el-color-picker 组件消失的问题
  • 828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台
  • 浅显易懂的Git教程
  • 4.《DevOps》系列K8S部署CICD流水线之Helm部署Harbor私人镜像仓库
  • 阿里巴巴新推出Java版AI 应用开发框架-Spring AI Alibaba
  • 用Flowise+OneAPI+Ollama做一个在线翻译工作流
  • LLaMA-Factory 使用 alpaca 格式的数据集
  • Linux 常用命令 - more 【分页显示文件内容】
  • $translatePartialLoader加载失败及解决方式
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 08.Android之View事件问题
  • CSS盒模型深入
  • ES2017异步函数现已正式可用
  • iOS 颜色设置看我就够了
  • java取消线程实例
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Median of Two Sorted Arrays
  • ucore操作系统实验笔记 - 重新理解中断
  • vue-cli在webpack的配置文件探究
  • vue--为什么data属性必须是一个函数
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 我与Jetbrains的这些年
  • 小程序开发之路(一)
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​queue --- 一个同步的队列类​
  • # Panda3d 碰撞检测系统介绍
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #define用法
  • (7)STL算法之交换赋值
  • (NSDate) 时间 (time )比较
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (三分钟)速览传统边缘检测算子
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (转)http-server应用
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ****Linux下Mysql的安装和配置
  • *2 echo、printf、mkdir命令的应用
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET 中使用 Mutex 进行跨越进程边界的同步