【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文件夹中, ...
随机推荐
- 聊一聊 C#后台线程 如何阻塞程序退出
一:背景 1. 讲故事 这篇文章起源于我的 C#内功修炼训练营里的一位朋友提的问题:后台线程的内部是如何运转的 ? ,犹记得C# Via CLR这本书中 Jeffery 就聊到了他曾经给别人解决一个程 ...
- 【Rive】Android与Rive交互
1 Android与Rive交互的常用接口 1.1 RiveAnimationView参数 <app.rive.runtime.kotlin.RiveAnimationView android: ...
- docker limit
我给docker的systemd
- mac 10.15 国内如何安装brew
下载文件 brew_install.sh,然后执行 sh brew_install.sh 通常会卡在 tapping homebrew/core ,没关系, 执行如下命令即可 解决方法,手动执行下面 ...
- Vue3封装一个ElementPlus自定义上传组件2--无弹窗
Vue3封装一个ElementPlus自定义上传组件2--无弹窗 写在前面: 无弹窗的上传组件它来了,依旧是小巧又好用,只不过这回我用的是前端直传的方式,采用http-request进行文件上传,中间 ...
- Qt编写地图综合应用45-路径规划
一.前言 路径规划一般是根据起始点坐标经纬度和结束点坐标经纬度,查询出合适的路线.关于起始坐标和结束坐标,最开始做的是直接传入具体中文地址即可,后面百度地图不再开放此功能,貌似变成了收费功能,但是经纬 ...
- Qt项目架构经验总结
(一)通用规则 除了极小的微型demo级别项目外,其余项目建议用pri分门别类不同文件夹存放代码文件,方便统一管理和查找. 同类型功能的类建议统一放在一起,如果该目录下代码文件数量过多,也建议拆分多个 ...
- SpringBoot整合WebSocket实践
简介 先来看下维基百科WebSocket的简介: WebSocket是一种与HTTP不同的协议.两者都位于OSI模型的应用层,并且都依赖于传输层的TCP协议. 虽然它们不同,但是RFC 6455中规定 ...
- java通过apache poi框架读取2007版Excel文件
java系读写excel文件既可以用jxl库,也可以用POI库,但是,jxl库只支持低版本的excel2003,不支持更高版本,无法直接输出*.xlsx文件,只能输出*.xls文件,另外,更新也不频繁 ...
- 即时通讯技术文集(第9期):Java NIO和Netty入门系列 [共19篇]
为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第9 期. [-1-] 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别 [链接] http ...