1. 引言

本文对gprMax项目中的“gprMax.constants.py”、“gprMax.exceptions.py”文件代码进行了逻辑梳理和分解。

2. gprMax.constants.py

gprMax.constants.py内容主要用于定义一些常量和数据类型。其中的常量cm0e0从scipy库导入的,可详见Constants (scipy.constants) — SciPy v1.10.0 Manual;常量z0是通过简单的平方根运算得到的。数据类型的定义也很直观,均是通过直接赋值的方式指定的。

import numpy as np
from scipy.constants import c
from scipy.constants import mu_0 as m0
from scipy.constants import epsilon_0 as e0 #定义变量z0
# Impedance of free space (Ohms)
z0 = np.sqrt(m0 / e0) #以下为定义数据类型
# Single precision
# For numpy arrays
floattype = np.float32
complextype = np.complex64 # For C (CUDA) arrays
cudafloattype = 'float'
cudacomplextype = 'pycuda::complex<float>' # Double precision
# For numpy arrays
# floattype = np.float64
# complextype = np.complex128 # For C (CUDA) arrays
# cudafloattype = 'double'
# cudacomplextype = 'pycuda::complex<double>'

3. gprMax.exceptions.py

colorama库用于自定义命令行文本显示颜色。Generalerror类和CmdinputErrorl类都继承自ValueError类,GeneralError类用于处理一般错误,CmdinputErrorl用于处理用户输入命令错误

#导入函数库
import sys
from colorama import init
from colorama import Fore init() sys.tracebacklimit = None class GeneralError(ValueError):
""""此类用于处理一般错误,继承自ValueError。"""
"""Handles general errors. Subclasses the ValueError class.""" def __init__(self, message, *args): self.message = message
super(GeneralError, self).__init__(message, *args)
print(Fore.RED) class CmdInputError(ValueError):
""""此类用于处理用户输入命令错误,继承自ValueError。"""
"""Handles errors in user specified commands. Subclasses the ValueError class.""" def __init__(self, message, *args): self.message = message
super(CmdInputError, self).__init__(message, *args)
print(Fore.RED)

4. 总结

本文分解了gprMax项目中的gprMax.constants.py、gprMax.exceptions.py文件代码。

Reference

  1. GitHub - gprMax/gprMax: gprMax is open source software that simulates electromagnetic wave propagation using the Finite-Difference Time-Domain (FDTD) method for numerical modelling of Ground Penetrating Radar (GPR)
  2. SciPy documentation — SciPy v1.10.0 Manual

(更新中)gprMax项目代码分解:gprMax.constants.py、gprMax.exceptions的更多相关文章

  1. GitHub上更新原有的项目代码(二)

    转载自:https://blog.csdn.net/dayewandou/article/details/79175783 项目上传了,现在又写了一些内容想要跟新到项目上去,怎么更新呢? 首先进入项目 ...

  2. IDEA中统计项目代码的总行数

    方法    安装“Statistic”插件步骤    打开idea设置界面,选择 plugins标签   点击下面“Browse repositories”按扭,浏览插件仓库   搜索“Statist ...

  3. 【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)

    Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包 ...

  4. 笔记:认识 head 标签 待 更新中……

    文档的头部描述了文档的各种属性和信息,包括文档的标题等.绝大多数文档头部包含的数据都不会真正作为内容显示给读者. 下面这些标签可用在 head 部分: <head> <title&g ...

  5. BBS+Blog项目代码

    项目目录结构: cnblog/ |-- blog/(APP) |-- migrations(其中文件略) |-- templatetags/ |-- my_tags.py |-- utils/ |-- ...

  6. 使用git向github中添加项目并更新(备忘录)

    今天使用Git&github&ST3时,发现ST3不仅是git插件不能push成功,使用sublimegit插件也不行. 可能是没有掌握sublimegit的使用技巧,有待后续继续摸索 ...

  7. 个人开源项目testall 持续更新中···

    项目在GitHub上:https://github.com/x113773/testall ,喜欢的给个星星呀,亲~ 打算把用到过的和学习过的,所有前后端技术都集成到这个项目里,并在issues里配以 ...

  8. Webpack 2 视频教程 017 - Webpack 2 中分离打包项目代码与组件代码

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  9. Android studio下将项目代码上传至github包括更新,同步,创建依赖

    AS中设置GIT 一.开篇 本文讲如何使用Android Studio将项目上传到github,虽然讲上传github的文章很多,但是大部分都是使用Git Bash命令行,虽然效率高些,但是有点麻烦, ...

  10. html2canvas - 项目中遇到的那些坑点汇总(更新中...)

    截图模糊    原理就是讲canvas画布的width和height放大两倍. 后来学习canvas的时候,才了解到这种写法不同于css的宽高设置, 因为css里的只是展示画布显示的大小,不像这样是c ...

随机推荐

  1. KingbaseES 用户密码认证及加密算法

    kingbaseES用户的口令被存储在sys_authid系统表中. 口令可以用SQL命令create user 和alter user 管理,例如 :create/alter user u1 wit ...

  2. jQuery获得或设置内容和属性、添加属性 append和after的区别

    来自w3school 在线教程 jQuery获得或设置内容和属性 text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设 ...

  3. #线段树,模拟费用流#CF280D k-Maximum Subsequence Sum

    题目 给定一个大小为 \(n\) 的序列,要求支持单点修改和查询区间内至多 \(k\) 个不交子区间之和的最大值(可以不取) 分析 考虑源点向每个点.每个点向汇点流流量1费用0的边,每个点向右边的点流 ...

  4. #Tarjan,树的直径#CF1000E We Need More Bosses

    题目 给定一个\(n\)个点\(m\)条边的无向图,找到两个点\(s,t\),使得\(s\)到\(t\)必须经过的边最多 分析 桥就是必须经过的边,考虑给无向图缩点, 按照桥建一棵树,那么就转换成了求 ...

  5. #线性筛,质数#LOJ 6165 一道水题

    题目 \((lcm_{i=1}^ni)\bmod 10^8+7,n\leq 10^8\) 分析 考虑对于某个质数\(p\),在\(n\)范围内做出的最大贡献为\(p^k(p^k\leq n)\), 线 ...

  6. 开源图形驱动在OpenHarmony上的使用和落地

      本文转载自 OpenHarmony TSC 官方微信公众号<峰会回顾第10期 | 开源图形驱动在OpenHarmony上的使用和落地> 演讲嘉宾 | 黄   然 回顾整理 | 廖    ...

  7. OpenHarmony将携新成果亮相HDC2022

     第四届华为开发者大会 2022(Together)将于11月4日-6日在东莞召开,OpenAtom OpenHarmony(以下简称"OpenHarmony")将携新生态成果亮相 ...

  8. C 语言文件处理全攻略:创建、写入、追加操作解析

    C 语言中的文件处理 在 C 语言中,您可以通过声明类型为 FILE 的指针,并使用 fopen() 函数来创建.打开.读取和写入文件: FILE *fptr; fptr = fopen(filena ...

  9. 美团一面,面试官让介绍AQS原理并手写一个同步器,直接凉了

    写在开头 今天在牛客上看到了一个帖子,一个网友吐槽美团一面上来就让手撕同步器,没整出来,结果面试直接凉凉. 就此联想到一周前写的一篇关于AQS知识点解析的博文,当时也曾埋下伏笔说后面会根据AQS的原理 ...

  10. 《c#高级编程》第5章C#5.0中的更改(十)——异步编程

    C#异步编程是一种在单线程上实现并发执行的技术,它通过使用异步方法.任务等高级概念,使得应用程序能够更好地响应用户操作.处理大量数据和操作外部资源.C#异步编程的核心概念包括: 异步方法:使用 asy ...