【Matlab函数】提取inp文件中的节点、单元数据并保留集合信息
功能
- 提取hypermesh2020(其他版本也可以)中的节点、单元信息,并保留elem set信息。
- 返回的是一个结构体
输入输出参数
输入:
- inp文件路径,如:'example.inp'、"inp\ex.inp"
输出:
- 一个结构体,包含节点信息、单元信息、单元集合信息、部件名字。
Struct
-- Name
-- Nodes
-- ElemSets
matlab代码
% --------------------------------------------------------------- %
% Loads the inp(generated by HM2020) data to a parts struct array %
% --------------------------------------------------------------- %
function part = loadinp_GeByHm2020(inp)
% inp='SmallLXJ_TETmesh_size2mm-20230704.inp';
% Get and process text from the file
text = fileread(inp); % read all the text
text = strtrim(text); % remove leading and trailing whitespaces
text = strrep(text, ' ', ''); % remove any in-between whitespaces
text = lower(text); % lower the case
text = inpremcom(text); % remove comment lines from inp text data
% get nodes infomation
data =strsplit(text, '*element')';% split char vector at '*element'——>n X 1 的cell array;
% create struct :part
name=strsplit(inp,'.');
part.Name=name{1};
% Extract nodes data
nodes=data{1};
part.Nodes=getnodes(nodes);
% Extract set data
% create a cell array ,contain each elemset struct
ElementSets=cell(size(data,1)-1,1);
numOftet=0;
for i=1:1:size(ElementSets,1)
% a char vector including element define info: setname,elemtype,elem label,connectivity
elemsetInfo=data{i+1};
ElementSets{i}=getelementOFset(elemsetInfo);
numOftet=numOftet+size(ElementSets{i}.Elements,1);
end
part.ElemSets=ElementSets;
%show number of tet elements
disp(['**number of tet =',num2str(numOftet)])
end
function output = inpremcom(text)
% ---------------------------------------- %
% Removes comment lines from inp text data %
% ---------------------------------------- %
text = splitlines(text);% split string at the actual \n ,rather than char \n。
output = {};
j = 1;
for i = 1:1:size(text, 1)
if ~startsWith(text{i}, '**')
output{j, 1} = text{i};
j = j + 1;
end
end
% 文本\n 会转换为实际的换行符
output = strjoin(output, '\n');%将元胞数组中的字符向量联接为一个字符向量。指定\n作为分隔符。
end
function Nodes = getnodes(nodes)
% --------------------------------------------------------------------------- %
% Gets the nodes from the *node data,return a containers.Map var called Nodes %
% --------------------------------------------------------------------------- %
%create a empty Map var
Nodes=containers.Map('KeyType','double','ValueType','any');
% loop *node data
lines = splitlines(nodes);
for i = 1:1:size(lines, 1)
line = lines{i};
if contains(line, '*node')
for j = (i + 1):1:size(lines, 1)
line = lines{j};
if contains(line, '*') || isempty(line)
return
else
data = str2num(line);
% key: node label
% value: 1X1 cell array ,contain coordinates value
Nodes(data(1)) = {data(2:end)};
end
end
end
end
end
function ElemSet = getelementOFset(elemdata)
% --------------------------------------------------------- %
% Gets the elements from the *element data ,return a struct %
% ----------------------------------------------------------%
ElemSet=struct;
%create a empty Map var
Els=containers.Map('KeyType','double','ValueType','any');
lines = splitlines(elemdata);
% read elemsert's name and elemtype
if contains(lines{1},'elset')
line_1=strsplit(lines{1},',');
for i=2:1:size(line_1,2)
tempcell=strsplit(line_1{i},'=');
if strcmp( tempcell{1},'type')
ElemSet.ElemType=tempcell{2};
elseif strcmp(tempcell{1},'elset')
ElemSet.SetName=tempcell{2};
end
end
end
% read element's label and connectivity
for i = 2:1:size(lines, 1)
line = lines{i};
if contains(line, '*') || isempty(line)
break;
else
data = str2num(line);
% key: elem label
% value: 1X1 cell array ,contain elem connectivity
Els(data(1)) = {data(2:end)};
end
end
ElemSet.Elements=Els;
end
【Matlab函数】提取inp文件中的节点、单元数据并保留集合信息的更多相关文章
- C#程序中:如何修改xml文件中的节点(数据)
要想在web等程序中实现动态的数据内容给新(如网页中的Flash),不会更新xml文件中的节点(数据)是远远不够的,今天在这里说一个简单的xml文件的更新,方法比较基础,很适合初学者看的,保证一看就懂 ...
- C#程序中:如何向xml文件中插入节点(数据)
向xml文件中动态的添加节点(数据)是一件很爽的事,可以给你的程序带来很多的方便,比如在web中,如果你的Flash用到了xml文件,这个方法可以让你在后台就轻轻松松的更新你的Flash内容哦!一起研 ...
- MATLAB 在同一个m文件中写多个独立的功能函数
MATLAB 在同一个m文件中写多个独立的功能函数,从而实现在外部可以直接调用这个文件中的某一个函数. 鉴于MATLAB的函数文件的函数名与文件名要一样,就需要有一个统一的接口来涵盖这些功能函数. 例 ...
- C#程序中:如何删除xml文件中的节点、元素。
C#中动态的清理xml文件中的垃圾信息是程序员必会的哦.这就像数据库一样,不会清理数据怎么可以呢?其实xml文件就可以用作一个小的数据库,存储一些简单的信息.所以,用C#程序实现xml文件的增.删.改 ...
- 提取PPT文件中的Vba ProjectStg Compressed Atom。Extract PPT VBA Compress Stream
http://msdn.microsoft.com/en-us/library/cc313106(v=office.12).aspx 微软文档 PartI ********************* ...
- C#如何提取.txt文件中的每个字符串
C#如何提取.txt文件中的每个字符串,并将其存放到一个类中. 将其中的编号 菜名 价格 分别存入不同的数组中. 注:在用ReadLine读取一行信息时为什么读取的中文字符变成了乱码. 20 满意答案 ...
- 另类爬虫:从PDF文件中爬取表格数据
简介 本文将展示一个稍微不一样点的爬虫. 以往我们的爬虫都是从网络上爬取数据,因为网页一般用HTML,CSS,JavaScript代码写成,因此,有大量成熟的技术来爬取网页中的各种数据.这次, ...
- 【译】 AWK教程指南 3计算并打印文件中指定的字段数据
awk 处理数据时,它会自动从数据文件中一次读取一条记录,并会将该记录切分成一个个的字段:程序中可使用 $1, $2,... 直接取得各个字段的内容.这个特色让使用者易于用 awk 编写 reform ...
- matlab之导入txt文件并取其中一列数据
1.我想导入下面这个文件的内容,并且获取这个文件中的两列数据. 2.首先确保Matlab当前所在文件夹为txt文件所在文件夹,然后命令行执行: X = load('2019_03_21_08_59_0 ...
- 从PCD文件中读取点云数据
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=84 在本小节我们学习如何从PCD文件中读取点云数据. 代码 章例1文件夹中, ...
随机推荐
- PMML讲解及使用
1. PMML概述 PMML全称预言模型标记语言(Predictive Model Markup Language),利用XML描述和存储数据挖掘模型,是一个已经被W3C所接受的标准.使用pmml储存 ...
- Qt编写视频监控系统73-不同视频流不同类型的判断和解析(http/m3u8/rtsp/rtmp等)
一.前言 这套视频监控系统大概从2018年起步整体框架,一步步积累到现在,中间经历了无数次的各种视频文件.视频流.视频设备的播放测试,比如光视频文件就有mp4/wmv/rmvb/mkv/avi等格式, ...
- Qt开源作品40-图片及文字与base64编码互换
一.前言 对于图片的传输,通俗的做法一般有两种,一种是直接二进制文件传输,比如先传输开始标记,带文件名称.文件字节长度,然后挨个分包发送.最后发送文件结束标记,这种方式必须要求接收方按照自己定义的规则 ...
- 抖音技术分享:飞鸽IM桌面端基于Rust语言进行重构的技术选型和实践总结
本文由ELab团队公众号授权发布,原题<Rust语言在IM客户端的实践>,来自抖音电商前端团队的分享,本文有修订和改动. 1.引言 本文将介绍飞鸽IM前端团队如何结合Rust对飞鸽客户端接 ...
- WebSocket从入门到精通,半小时就够!
本文原题"WebSocket:5分钟从入门到精通",作者"程序猿小卡_casper",原文链接见文末参考资料部分.本次收录时有改动. 1.引言 自从HTML5里 ...
- LRU的map+双链表实现(Go描述)
面云账户时候问了LRU,具体实现的方式是map+双链表.Set和Get的时间复杂度都是O(1).完整写一遍复习一下, 仅作记录 /** * @Author: lzw5399 * @Date: 2021 ...
- python-nmap实现python利用nmap扫描分析
目录 前言 python-nmap的基本使用 PortScanner扫描 PortScannerAsync异步扫描 python-nmap的源码分析 前言 Nmap是一个非常用的网络/端口扫描工具,如 ...
- Netty-快速入门
---------------------------------------------------- netty是什么? Netty is an asynchronous event-driven ...
- Nginx配置文件及默认配置说明
默认安装的1.16.1版本的主配置文件nginx.conf如图: 业务性配置引入额外的配置文件/etc/nginx/conf.d/default.conf如图: 现在可以在默认的根目录下找到2个页面 ...
- Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5
大家好,我是编程乐趣. 行业诸多大佬一直在说:"2025年将是AI应用元年",虽然说大佬的说法不一定对,但AI趋势肯定没错的. 对于我们程序员来说,储备AI应用开发技能,不管对 ...