(更新中)gprMax项目代码分解:gprMax.constants.py、gprMax.exceptions
1. 引言
本文对gprMax项目中的“gprMax.constants.py”、“gprMax.exceptions.py”文件代码进行了逻辑梳理和分解。
2. gprMax.constants.py
gprMax.constants.py内容主要用于定义一些常量和数据类型。其中的常量c、m0和e0从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
- 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)
- SciPy documentation — SciPy v1.10.0 Manual
(更新中)gprMax项目代码分解:gprMax.constants.py、gprMax.exceptions的更多相关文章
- GitHub上更新原有的项目代码(二)
转载自:https://blog.csdn.net/dayewandou/article/details/79175783 项目上传了,现在又写了一些内容想要跟新到项目上去,怎么更新呢? 首先进入项目 ...
- IDEA中统计项目代码的总行数
方法 安装“Statistic”插件步骤 打开idea设置界面,选择 plugins标签 点击下面“Browse repositories”按扭,浏览插件仓库 搜索“Statist ...
- 【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)
Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包 ...
- 笔记:认识 head 标签 待 更新中……
文档的头部描述了文档的各种属性和信息,包括文档的标题等.绝大多数文档头部包含的数据都不会真正作为内容显示给读者. 下面这些标签可用在 head 部分: <head> <title&g ...
- BBS+Blog项目代码
项目目录结构: cnblog/ |-- blog/(APP) |-- migrations(其中文件略) |-- templatetags/ |-- my_tags.py |-- utils/ |-- ...
- 使用git向github中添加项目并更新(备忘录)
今天使用Git&github&ST3时,发现ST3不仅是git插件不能push成功,使用sublimegit插件也不行. 可能是没有掌握sublimegit的使用技巧,有待后续继续摸索 ...
- 个人开源项目testall 持续更新中···
项目在GitHub上:https://github.com/x113773/testall ,喜欢的给个星星呀,亲~ 打算把用到过的和学习过的,所有前后端技术都集成到这个项目里,并在issues里配以 ...
- Webpack 2 视频教程 017 - Webpack 2 中分离打包项目代码与组件代码
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- Android studio下将项目代码上传至github包括更新,同步,创建依赖
AS中设置GIT 一.开篇 本文讲如何使用Android Studio将项目上传到github,虽然讲上传github的文章很多,但是大部分都是使用Git Bash命令行,虽然效率高些,但是有点麻烦, ...
- html2canvas - 项目中遇到的那些坑点汇总(更新中...)
截图模糊 原理就是讲canvas画布的width和height放大两倍. 后来学习canvas的时候,才了解到这种写法不同于css的宽高设置, 因为css里的只是展示画布显示的大小,不像这样是c ...
随机推荐
- 线上问题分析之java dump文件生成
一.查看java进程 jps or ps aux | grep java 二.生成dump文件 jmap -dump:live,format=b,file=xxxx.bin 进程ID 三.查看dump ...
- 11.硬核的volatile考点分析
大家好,我是王有志.关注王有志,一起聊技术,聊游戏,聊在外漂泊的生活. 今天我们学习并发编程中另一个重要的关键字volatile,虽然面试中它的占比低于synchronized,但依旧是不可忽略的内容 ...
- Postman模拟浏览器网页请求并获取网页数据
本文介绍在浏览器中,获取网页中的某一个请求信息,并将其导入到Postman软件,并进行API请求测试的方法. Postman是一款流行的API开发和测试工具,它提供了一个用户友好的界面,用于创 ...
- 使用OHOS SDK构建googletest
参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://github.com/google/googl ...
- 许北林:我为什么加入OpenHarmony生态?又为什么要做“启航KP”开发套件?
许北林 软通动力 资深项目经理 在全球开源趋势下,中国正逐渐成为全球开源软件的主要使用者和核心贡献者.今天我们来认识一位接触 OpenHarmony 不到一年,便带领团队成功开发出一款"启航 ...
- C#.Net WinForm学习笔记
.Net WinForm学习笔记 1,MDI窗体设有两个窗体frmMain,frmChild,则:frmMain: 设IsMdiContainer属性为true 打开子窗口: 在相关事件中写如下代 ...
- IE8发送ajax请求无效
IE是个非常有个性的浏览器,常规的东西在他这个都不太好使. 最开始发送ajax请求,总是不成功,也没啥报错,反正就是请求被忽略了 然后我就考虑用原生的JS来实现,然后就:哎呀 可以了...... x ...
- spring复习(二)AOP
1.aop基于xml以及注解的AOP配置 什么是AOP 简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强. AOP术语: ...
- 美团一面,面试官让介绍AQS原理并手写一个同步器,直接凉了
写在开头 今天在牛客上看到了一个帖子,一个网友吐槽美团一面上来就让手撕同步器,没整出来,结果面试直接凉凉. 就此联想到一周前写的一篇关于AQS知识点解析的博文,当时也曾埋下伏笔说后面会根据AQS的原理 ...
- HarmonyOS CPU与I/O密集型任务开发指导
一.CPU密集型任务开发指导 CPU密集型任务是指需要占用系统资源处理大量计算能力的任务,需要长时间运行,这段时间会阻塞线程其它事件的处理,不适宜放在主线程进行.例如图像处理.视频编码.数据分析等 ...