JuliaFEM中的数据格式——fields.jl
文章目录
- Fields(场)
- 四种离散场
- 四种连续场
- 字典格式定义
- new_field函数
Fields(场)
在JuliaFEM中,从项目一开始,我们脑海中就有一个清晰的概念:“一切都是场”。也就是说,任何事物都可以在时间和空间上发生变化。我们认为这个常数只是场不随时间、空间变化的一种特殊情况。场可以在空间方向上变化或不变,同理,在时间方向上可以是时间变量或时间不变。从这个思考中,我们可以认为存在四种(离散)场:
四种离散场
- discrete(离散), constant(空间常量), time invariant(时间不变) (DCTI)
- discrete(离散), variable(空间变量), time invariant (时间不变)(DVTI)
- discrete(离散), constant(空间常量), time variant(时间变量) (DCTV)
- discrete(离散), variable(空间变量), time variant(时间变量) (DVTV)
各离散场在JuliaFEM中的构造函数的参数类型分别为:
- DCTI,参数为一确定常数,如:DCTI(1)。
- DVTI,参数为一元祖(Tuple),元祖的长度与形函数的数量相匹配这样才能保证空间方向上差值可行,如:DVTI(1, 2, 3)。
- DCTV,参数为多组Pair,Pair的第一个参数为时刻(基本类型),第二个参数为对应的数值(基本类型),如:DCTV(0.0 => 5, 1.0 => 10)
- DVTV,参数为多组Pair,Pair的第一个参数为时刻(基本类型),第二个参数为对应的空间数值(Tuple类型),如:DVTV(0.0 => (1, 2), 1.0 => (2, 3))
在上面的例子中,所有定义的字段都是标量字段。定义向量场或张量场也是如此。唯一的区别是,现在我们定义了向量和张量,而不是单个标量值。它们在空间和时间方向上的变化与标量场的变化相同。下面是定义上述向量场的例子:
a = DCTI([1.0, 2.0])
b = DVTI(([1.0, 2.0], [2.0, 3.0]))
c = DCTV(0.0 => [1.0, 2.0], 1.0 => [2.0, 3.0])
d = DVTV(0.0 => ([1.0, 2.0], [2.0, 3.0]), 1.0 => ([2.0, 3.0], [3.0, 4.0]))
四种连续场
然后我们有连续的场,它们定义在整个域中,或者至少不是逐点地。按照已经用过的缩写,我们还有四个
字段:
- continuous(连续), constant(空间常量), time invariant(时间不变) (CCTI)
- continuous(连续), variable(空间变量), time invariant(时间不变) (CVTI)
- continuous(连续), constant(空间常量), time variant(时间变量) (CCTV)
- continuous,(连续) variable(空间变量), time variant (时间变量)(CVTV)
连续场在定义解析边界条件时可能有用,JuliaFEM仅仅给出了 CVTV的构造方法,参数为一个函数,比如CVTV((xi,t) -> xi*t)。
字典格式定义
通常离散场的变量都是单元素的数值,比如1-10。然而,有时候我们想用概念更清晰的索引来定义。例如,如果有一个三角形元素连接节点1、1000和100000,则仍然希望使用’ getindex '自然地访问该字段。我想要获取节点的位移,不是通过节点坐标而是通过简单的节点编号。这种情况下我们用字典比元祖更方便。在JuliaFEM中用字典格式定义了两种字段分别为DVTId,DVTVd(后面带d表示字典格式);
三个节点的编号分别为 1,1000,100000,三个节点的坐标为[0.0,0.0],[1.0,0.0],[1.0,1.0]。 DVTId可定义为如下:
X = Dict(1=>[0.0,0.0], 1000=>[1.0,0.0], 100000=>[1.0,1.0])
G = DVTId(X)
G[1], G[1000], G[100000]
#注意第一个参数为Int64
DVTVd可定义为如下:
Y = Dict(1=>[1.0,1.0], 1000=>[2.0,1.0], 100000=>[2.0,2.0])
F = DVTVd(0.0 => X, 1.0 => Y)
interpolate(F,0.5)[100000]
new_field函数
new_field函数会根据函数参数的类型自动构造字段,默认共有7种字段,DCTI, DCTV, DVTI, DVTV, CVTV, DVTId,
DVTVd。field(x)函数会自动调用new_field。
f1 = field(1) # return DCTI(1)
f2 = field(1, 2) # return DVTI(1,2)
f3 = field(0.0 => 1) # return DCTV(0.0 => 5)
f4 = field(0.0 => (1, 2), 1.0 => (2, 3)) # return DVTV(0.0 => (1, 2), 1.0 => (2, 3))
f5 = field((xi,t) -> xi[1]*t) # return CVTV((xi,t) -> xi*t)
f6 = field(1 => 1, 2 => 2) # return DVTId(1 => 1, 2 => 2) Pair第一个参数为Int64,所以不是DCTV
f7 = field(0.0 => (1=>1, 10=>2), 1.0 => (1=>2,10=>3)) # return DVTVd(0.0 => (1=>1, 10=>2), 1.0 => (1=>2,10=>3))
当然也可以自定义字段,自定义字段需要完成以下三个函数:new_field,update_field!,interpolate_field。
JuliaFEM中的数据格式——fields.jl相关推荐
- 目标检测中的数据格式转换工具Roboflow
目标检测中的数据格式转换工具.Roboflow Roboflow提供了您需要的所有工具,将原始图像转换为定制的训练有素的计算机视觉模型,并部署它在您的应用程序中使用. Roboflow支持检测目标和分 ...
- python数字类型转换函数_python中的各种数据类型中的数据格式转换
一,转换list中的数据格式 str --> float (一)使用自定义函数 def str2float(list) strlist=[] for i in list: strlist.app ...
- 【Elasticsearch】Lucene 中的 Stored Fields 存储优化 自定义 存储类型 序列化 方式
1.概述 转载:Lucene 中的 Stored Fields 存储优化 1 背景 Qunar 酒店的搜索和 suggest 是基于 Lucene 构建的,在我们的使用场景中,由于召回和排序是作为两个 ...
- 简单了解DGL中的数据格式
目录 前言 1. DGL数据集 2. dgl.DGLGraph 3. dgl.graph 4. dgl.heterograph 前言 在PyG搭建GCN前的准备:了解PyG中的数据格式中讲解了PyG中 ...
- golang中的strings.Fields
golang中的字符串操作strings.Fields package mainimport ("fmt""strings" )//golang字符串操作 fu ...
- java json data_java中json数据格式的处理
json基础 json表示法是一种轻量级的基于文本的开放标准 json是javascript object notation的缩写 json的网络媒体格式是 application/json 容易阅读 ...
- Python中json数据格式转换
json数据格式(良好的中转数据格式) JSON是一种轻量级的数据交互格式.可以按照JSON指定的格式去组织和封装数据 JSON本质上是一种带有特定格式的字符串 **JSON的主要功能:**json就 ...
- RTKLIB(一)——GNSS测量中的数据格式
目录 1.写在前面 2.RINEX格式 2.1 概述(什么是RINEX格式) 2.2 文件类型及命名规则 2.2.1文件类型 2.2.2 命名规则 2.3 RINEX 2.10格式说明 2.3.1 O ...
- Kibana: 如何在 Kibana 中生成 Scripted fields
如果细心的读者阅读过我之前的文章 "Elasticsearch:aggregation 介绍",就会发现在我之前的例子中,我有用到 Script 来生成一个 field,并对这个 ...
最新文章
- 博士申请 | ​香港中文大学LaVi实验室招收2022年秋季入学博士生、硕士生
- 如何用python画数据图-用Python如何画出数据可视化图呢?本文详解
- 获得 bootstrapTable行号index
- iOS开发UI篇--UIScrollView思维导图[不断更新]
- nyoj904 search
- js、react对象名和对象属性赋值
- 阿里P8架构师谈:高并发网站的监控系统选型、比较、核心监控指标
- Spring框架----基于接口的动态代理
- Flask 的 template模板 与 jinja2语法
- 网站防盗链的配置之apache
- 在鼠标点击的位置 ,添加一个div ,类似手表右键菜单
- django基于大数据的应届生求职系统--python-计算机毕业设计
- python基于django的校园公寓宿舍报修管理系统设计与实现
- 微信公众账号登陆授权开发——2
- 学习CNN的比较好的网站
- Only one expression can be specified in the select list when the subquery is not introduced with EXI
- Google Filament引擎编译记录
- cu3er 3D幻灯切换效果 div被遮住的解决方法
- ESP32学习笔记(34)——BLE一主多从连接
- Timestamp Encoding FEDformer_ Frequency Enhanced Decomposed Transformer for Long-term Series Forecas
热门文章
- css绝对定位如何居中?css绝对定位居中的四种实现方法-web前端教程
- “华为杯”第十八届中国研究生数学建模竞赛B题参赛总结
- 工业农业消防自动检测及报警云方案
- SVL-VI SLAM
- 电脑硬件知识入门之内存篇
- 【BUUCTF】[Zer0pts2020]Can you guess it?
- mysql hash索引 btree索引_HASH索引做等值查询会很快,BTree索引做范围查询比较快...
- ubuntu8.04安装配置,现有问题集合,及解决方法
- spark中RSS工具简介
- 《追寻生命的意义》--后记