gismo-3维IGA

文章目录

  • 前言
  • 一、简单示例
  • 二、gismo-3维IGA
    • 3维程序中的几何模型
  • 三、xml文件的理解
    • 1、xml文件示例
    • 2、gismo中二维示例文件-一个曲面(简单)
  • 四、三维程序中xml文件的理解
    • 三维几何模型
    • 边界信息
  • 五、三维程序运行
    • 细化四次
    • 细化5次
  • 总结 #pic_center


前言

只是为方便学习,不做其他用途!

一、简单示例

参考网页 Tutorial 02: Geometry

#include <gismo.h>using namespace gismo;int main(int, char**)
{gsInfo.precision(3);gsKnotVector<>   kv(-1, 0, 3, 3, 1);gsBSplineBasis<> bsp(kv);gsInfo << bsp.detail() << "\n";bsp.uniformRefine();gsInfo << bsp.detail() << "\n";return 0;
}

在这里插入图片描述

二、gismo-3维IGA

运行代码需要配置好gismo环境
还需要将 terrific.xml 放在项目文件下,和cpp文件放在同一文件路径下

在这里插入图片描述

/// This is an example of using the linear elasticity solver on a 3D multi-patch geometry.
/// The problems is part of the EU project "Terrific".
///
/// Authors: O. Weeger (2012-1015, TU Kaiserslautern),
///          A.Shamanskiy (2016 - ...., TU Kaiserslautern)
#include <gismo.h>
#include <gsElasticity/gsElasticityAssembler.h>
#include <gsElasticity/gsWriteParaviewMultiPhysics.h>
#include <gsElasticity/gsGeoUtils.h>using namespace gismo;int main(int argc, char* argv[])
{gsInfo << "Testing the linear elasticity solver in 3D-线弹性求解器的三维测试.\n";//=============================================================//// Input ////=============================================================////std::string filename("terrific.xml");//初始数据文件std::string filename("test.xml");//初始数据文件real_t youngsModulus = 74e9;//杨氏模量real_t poissonsRatio = 0.33;//泊松比index_t numUniRef = 0;//节点插入数index_t numDegElev = 0;//升阶次数index_t numPlotPoints = 10000;//preview软件画图的点数量// minimalistic user interface for terminal 终端最简用户界面gsCmdLine cmd("Testing the linear elasticity solver in 3D.");// 定义一个gsCmdLine类 命名为cmdcmd.addInt("r", "refine", "Number of uniform refinement application", numUniRef);cmd.addInt("d", "degelev", "Number of degree elevation application", numDegElev);cmd.addInt("p", "points", "Number of points to plot to Paraview", numPlotPoints);try { cmd.getValues(argc, argv); } //  不太用看  不知道这个命令代表啥catch (int rv) { return rv; }//=====================================================================//// Scanning geometry and creating bases:扫描几何和创建基函数  ////=====================================================================//// scanning geometry 扫描几何gsMultiPatch<> geometry; //  定义一个多片gsReadFile<>(filename, geometry);// 将plateWithHole.xml文件中的数据赋值给 geometry// creating basis 生成基函数gsMultiBasis<> basis(geometry);for (index_t i = 0; i < numDegElev; ++i) // 升阶次数basis.degreeElevate();for (index_t i = 0; i < numUniRef; ++i) // k细化(节点插入)次数basis.uniformRefine();gsInfo << basis ;//=====================================================================//// Setting loads and boundary conditions  设置载荷和边界条件 ////=====================================================================//// source function, rhs  源函数?-解析解?gsConstantFunction<> f(0., 0., 0., 3);// surface load, neumann BC 黎曼边界对应载荷边界条件  荷载BC   力的边界条件gsConstantFunction<> g(20e6, -14e6, 0, 3);// boundary conditions 边界条件  黎曼边界对应载荷边界条件    dirichlete对应位移边界条件gsBoundaryConditions<> bcInfo;// Dirichlet BC are imposed separately for every component (coordinate) 对每个分量(坐标)分别施加 Dirichlet BCfor (index_t d = 0; d < 3; d++){bcInfo.addCondition(0, boundary::back, condition_type::dirichlet, 0, d);/* bcInfo.addCondition(1, boundary::back, condition_type::dirichlet, 0, d);bcInfo.addCondition(2, boundary::south, condition_type::dirichlet, 0, d);*/}// Neumann BC are imposed as one function 将 Neumann BC 作为一个函数bcInfo.addCondition(0, boundary::front, condition_type::neumann, &g);//bcInfo.addCondition(14, boundary::north, condition_type::neumann, &g);//=====================================================================//// Assembling & solving ////=====================================================================//// creating assembler   创建刚度矩阵?gsElasticityAssembler<real_t> assembler(geometry, basis, bcInfo, f);assembler.options().setReal("YoungsModulus", youngsModulus);assembler.options().setReal("PoissonsRatio", poissonsRatio);assembler.options().setInt("DirichletValues", dirichlet::l2Projection);gsInfo << "Assembling...\n";gsStopwatch clock;clock.restart();assembler.assemble();gsInfo << "Assembled a system with "<< assembler.numDofs() << " dofs in " << clock.stop() << "s.\n";gsInfo << "Solving...\n";clock.restart();#ifdef GISMO_WITH_PARDISOgsSparseSolver<>::PardisoLDLT solver(assembler.matrix());gsVector<> solVector = solver.solve(assembler.rhs());gsInfo << "Solved the system with PardisoLDLT solver in " << clock.stop() << "s.\n";
#elsegsSparseSolver<>::SimplicialLDLT solver(assembler.matrix());gsVector<> solVector = solver.solve(assembler.rhs());gsInfo << "Solved the system with EigenLDLT solver in " << clock.stop() << "s.\n";
#endif//=====================================================================//// Output ////=====================================================================//// constructing solution as an IGA functiongsMultiPatch<> solution;assembler.constructSolution(solVector, assembler.allFixedDofs(), solution);// constructing stressesgsPiecewiseFunction<> stresses;assembler.constructCauchyStresses(solution, stresses, stress_components::von_mises);if (numPlotPoints > 0){// constructing an IGA field (geometry + solution)gsField<> solutionField(assembler.patches(), solution);gsField<> stressField(assembler.patches(), stresses, true);// creating a container to plot all fields to one Paraview filestd::map<std::string, const gsField<>*> fields;fields["Deformation"] = &solutionField;fields["von Mises"] = &stressField;gsWriteParaviewMultiPhysics(fields, "test_le", numPlotPoints);gsInfo << "Open \"test_le.pvd\" in Paraview for visualization.\n";}return 0;
}

3维程序中的几何模型

在这里插入图片描述
在这里插入图片描述

三、xml文件的理解

1、xml文件示例

网址https://gismo.github.io/Tutorial02.html

在这里插入图片描述
在这里插入图片描述

2、gismo中二维示例文件-一个曲面(简单)

可以参考之前的博客gismo中用等几何解决线弹性问题的程序示例来理解xml文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注: 一个平面没有 interfaces这一项
对 interfaces这一项 目前还没有理解

四、三维程序中xml文件的理解

三维几何模型

在这里插入图片描述

在这里插入图片描述

边界信息

给的示例文件中有15个体组装在一起

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、三维程序运行

细化四次

运行时间:14分钟

在这里插入图片描述

细化5次

运行时间:4.58h
组总刚:1.6h
解方程组:2.98h

在这里插入图片描述

总结 #pic_center

空格         空格

二维数
1
1
1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/351729.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

30天从入门到精通TensorFlow1.x 第四天,TensorFlow中的计算图或数据流图

文章目录 一、接前一天二、计算图或数据流图1. 什么是计算图或者数据流图2. 为什么需要计算图或者数据流图3. 执行顺序和延迟加载在tf中的使用 一、接前一天 这几天主要学习了张量的创建方法&#xff0c;以及变量&#xff0c;变量命名域共享变量等概念。今天主要熟悉 数据流图…

通达信l1l2行情接口-十档行情有哪些优势?

据提供系统或用户编制的条件选股公式进行选股选定一个条件选股公式或多个组合条件后&#xff0c;计算机自动帮您选出当时或历史上某一段时间内满足条件的所有股票十档行情 英文&#xff0c;列在行情下载显示窗口&#xff0c;同时可保留成板块。 那通达信l1l2行情接口-十档行情…

ciscn 2023 初赛 pwn shell we go

ciscn 2023 初赛 pwn shell we go 这题go pwn&#xff0c;符号恢复就恢复很长时间了&#xff0c;网上的插件好多都没用 根着流程&#xff0c;可以看到这里有一个验证&#xff0c;以空格来分割&#xff0c;第一个参数会验证是否为nAcDsMicN 如果第一个参数验证通过&#xff0c…

[AHK]获取通达信软件上的股票代码

PC上的股票交易软件的自动止损、自动下单等功能比较弱&#xff0c;不如期货交易软件。 自力更生&#xff0c;程序员都是自己打造工具。 根据IPO模型&#xff08;Input 输入&#xff0c;Process处理&#xff0c;Output输出&#xff09;&#xff0c;为了方便自动化首先要获取当…

(十)服务器K8S集群部署SpringBoot项目实战

1.准备springboot项目 可以在 https://start.spring.io/网站准备一个项目&#xff0c;这里作为k8s的学习所以springboot项目中准备一个简单的访问接口即可。 2.服务器环境准备 安装Jdk 1.更新系统软件包&#xff1a; sudo yum update2.安装 OpenJDK 11&#xff1a; sudo…

毕业三年,自学软件测试到就业,我用了4个月

我转行的经历 17年毕业&#xff0c;普通专科&#xff0c;通信专业。 当初选择这个专业是因为有一个校企合作&#xff0c;承诺学生毕业之后给学生安排就业&#xff0c;在学校里面混了三年之后&#xff0c;学校也是履行了当初安排就业的承诺&#xff0c;给我“发配”到了上海&a…

Python数据攻略-DataFrame的数据计算和整理

大家好&#xff0c;我是Mr数据杨。今天&#xff0c;我们要踏上一场探索Python的旅程&#xff0c;途中我们将讲解算术运算、NumPy和SciPy函数的应用、DataFrame的排序、过滤、统计和遍历等技巧。想象一下如果《三国演义》中的诸葛亮有了Python的帮助&#xff0c;他将如何更有效地…

海睿思分享 | 企业如何加强采购风险控制

企业运营的主要流程&#xff0c;不会因为企业人员规模或者业务规模大小的差异&#xff0c;而出现巨大的差异。千万亿市值的上市公司、不足百人的新兴公司&#xff0c;面对的经营风险本质上不会有明显的区别。今天我们一起分享企业经营管理中常见的风险应对策略。 对于企业而言…

Treadlocal源码实例详解

我们都知道treadlocal维护变量时候&#xff0c;可以为每个线程维护一个独立的副本&#xff0c;改变的是自己线程的数据。 ThreadLocal公用方法有四个&#xff1a;get&#xff0c;set&#xff0c;remove&#xff0c;intiValue 既然threadLocalMap是局部变量&#xff0c;所以他存…

C++学习之旅 - new运算符

C中利用new操作符在堆区开辟数据 堆中开辟的数据由程序员手动开辟&#xff0c;手动释放&#xff0c;释放利用操作符delete 语法new 数据类型 #include <iostream>using namespace std;int *func(){int* p new int(10);return p; }int main() {int* p func();cout <&…

传奇开服教程完整版GOM引擎超详细的单机架设图文教程(小白一看就会)

准备工具 1.传奇版本和补丁2.热血传奇客户端3.DBC20004.绿盟GOM登录器 服务端安装步骤&#xff1a; 1.把下载好的传奇版本解压在你电脑的D盘 2.补丁文件夹直接解压到你的传奇客户端根目录 3.解压好DBC2000开始安装&#xff0c;安装完成后关闭DBC程序 4.打开控制面板&#xff0…

深入理解Linux虚拟内存管理(四)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核&#xff08;一&#xff09; 深入理解 Linux 内核&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;一&#xff09; Linux 设备驱动程序&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;三&#xf…

锐捷AC的部署实例

进行锐捷AC部署时&#xff0c;遇到了一些问题&#xff0c;遂记录下来&#xff0c;如若大家在项目过程中遇到类似问题可以对照解决。 写在前面&#xff08;锐捷AC的基础配置&#xff09; ac-controller //配置AC的capwap源地址信息&#xff0c;国家码等…

Nginx配置域名证书

Nginx配置域名证书 1、证书存放路径 2、nginx.conf文件中增加以下配置&#xff0c;注意路径不一样&#xff0c;访问地址目录不一样 server {listen 443 ssl http2;server_name jistest.vwatj.ap.vwg;ssl_certificate D:/home/XXX/ssl/2023/XXX.cer; ssl_certificate_key D…

在线配资平台哪家正规?排名在前的有哪些平台?

在线配资平台哪家正规&#xff1f;排名在前的有哪些平台&#xff1f; 比如有永华证券、联华证券、财盛证券、中信证券、东方证券等等这些平台。也是排名比较靠前的&#xff01; 选择平台需要投资者仔细研究不同的在线配资平台的投资风格、费用、客户服务等因素&#xff0c;并根…

《辉煌优配》科技股强势引领A股反弹 沪深两市日成交额再超万亿元

受美联储再度加息扰动&#xff0c;昨日早盘沪深两市指数低开&#xff0c;随后科技股强势拉升&#xff0c;带动商场回暖。到收盘&#xff0c;上证综指报3286.65点&#xff0c;上涨0.64%&#xff1b;深证成指报11605.29点&#xff0c;上涨0.94%&#xff1b;创业板指报2361.41点&a…

A股管家股票自动交易软件系统,功能完善强大

2013年的时候&#xff0c;有个广东的朋友说再用这款A股管家股票自动系统&#xff0c;我当时比较惊讶&#xff0c;以前想过要是有一款股票自动交易软件能偶尔代替我一下就好了&#xff0c;虽然是职业股民&#xff0c;但也经常遇到太忙的时候&#xff0c;实在没时间。然后就在朋友…

亚马逊云科技出海日,让数字经济出海扩展到更多行业和领域

数字化浪潮之下&#xff0c;中国企业的全球化步伐明显提速。从“借帆出海”到“生而全球化”&#xff0c;中国企业实现了从传统制造业“中国产品”出口&#xff0c;向创新“中国技术”和先导“中国品牌”的逐步升级。 作为全球云计算的开创者与引领者&#xff0c;亚马逊云科技…

JDK11+mybatis-plus+shardingsphere分库分表

1、引入jar dynamic-datasource-spring-boot-starter&#xff1a;2.5.6 sharding-jdbc-spring-boot-starter&#xff1a;4.1.1 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId>&…

【单目标优化算法】沙猫群优化算法(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …