gismo程序示例:边长为 8 16 32 的长方体 受均布载荷

news2024/11/30 8:40:07

文章目录

  • 前言
  • 一、
    • 一、8*32面 受均布载荷
  • 二、最小的面(8*16)受均布载荷
  • 三、最大的面受均布载荷


前言

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

一、

在这里插入图片描述

一、8*32面 受均布载荷

/// 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".
///
///  示例:边长为 8   16   32  的长方体
///  8*32面  受均布载荷
/// 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>
#include<iostream>

using namespace std;
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 = 1e5;//杨氏模量
    real_t poissonsRatio = 0.3;//泊松比
    index_t numUniRef = 0;//节点插入数
    index_t numDegElev = 1;//升阶次数
    index_t numPlotPoints = 10000;//preview软件画图的点数量


    // minimalistic user interface for terminal 终端最简用户界面
    gsCmdLine cmd("Testing the linear elasticity solver in 3D.");// 定义一个gsCmdLine类 命名为cmd
    cmd.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);   //  g = 0   0   0
    gsInfo << " f = \n " << f << "  \n ";
    // surface load, neumann BC 黎曼边界对应载荷边界条件  荷载BC   力的边界条件
    int W = 8;
    int H = 32;
    int g1 = 1e3 / (W * H);
    gsConstantFunction<> g(0, 0, g1, 3);   //  g = 0   0
    //gsConstantFunction<> g(0, 0, 100, 3);   //  g = 0   0
    gsInfo << " g = \n " << g << "  \n ";

    // boundary conditions 边界条件  黎曼边界对应载荷边界条件    dirichlete对应位移边界条件
    gsBoundaryConditions<> bcInfo;
    // Dirichlet BC are imposed separately for every component (coordinate) 对每个分量(坐标)分别施加 Dirichlet BC
    for (index_t d = 0; d < 3; d++)
    {
        bcInfo.addCondition(0, boundary::west, condition_type::dirichlet, 0, d);
    }
    // Neumann BC are imposed as one function 将 Neumann BC 作为一个函数
    bcInfo.addCondition(0, boundary::east, 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();
    //assembler.matrix();//总刚
    gsInfo << "Assembled a system with "
        << assembler.numDofs() << " dofs in " << clock.stop() << "s.\n";

    gsInfo << "Solving...\n";
    clock.restart();

#ifdef GISMO_WITH_PARDISO
    gsSparseSolver<>::PardisoLDLT solver(assembler.matrix());
    gsVector<> solVector = solver.solve(assembler.rhs());
    gsInfo << "Solved the system with PardisoLDLT solver in " << clock.stop() << "s.\n";
#else
    gsSparseSolver<>::SimplicialLDLT solver(assembler.matrix());
    gsVector<> solVector = solver.solve(assembler.rhs());
    gsInfo << "Solved the system with EigenLDLT solver in " << clock.stop() << "s.\n";
#endif

    // 输出的位移和总刚都是将   位移不变的自由度去掉得到的结果
    /*gsInfo << " 位移:solVector = \n" << solVector;
    cout << " \n ";*/
    double max = solVector.maxCoeff();
    cout << "\n 最大节点位移 solVector = \n" << max << endl;
    double Solution = 6.667e-5;
    double error = (max - Solution) / max;
    cout << "\n 误差 = " << abs(error) * 100 << "%" << endl;

    //=====================================================================//
                  // Output //
    //=====================================================================//

    // constructing solution as an IGA function
    gsMultiPatch<> solution;
    assembler.constructSolution(solVector, assembler.allFixedDofs(), solution);
    /*gsInfo << " solution = \n" << solution;
    cout << " \n ";*/
    // constructing stresses
    gsPiecewiseFunction<> 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 file
        std::map<std::string, const gsField<>*> fields;
        fields["Deformation"] = &solutionField;
        fields["von Mises"] = &stressField;
        gsWriteParaviewMultiPhysics(fields, "test3_le", numPlotPoints);
        gsInfo << "Open \"test3_le.pvd\" in Paraview for visualization.\n";
    }

    return 0;
}

二、最小的面(8*16)受均布载荷

/// 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".
///
///  示例:边长为 8   16   32  的长方体
///  最小的面(8*16)受均布载荷
/// 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>
#include<iostream>


using namespace std;
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 = 2;//节点插入数
    index_t numDegElev = 1;//升阶次数
    index_t numPlotPoints = 10000;//preview软件画图的点数量


    // minimalistic user interface for terminal 终端最简用户界面
    gsCmdLine cmd("Testing the linear elasticity solver in 3D.");// 定义一个gsCmdLine类 命名为cmd
    cmd.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);   //  g = 0   0   0
    gsInfo << " f = \n " << f << "  \n ";
    // surface load, neumann BC 黎曼边界对应载荷边界条件  荷载BC   力的边界条件
    int W = 8;
    int H = 16;
    int g1 = 2e7 / (W * H);
    gsConstantFunction<> g(g1, 0, 0, 3);   //  g = 0   0
    gsInfo << " g = \n " << g << "  \n ";

    // boundary conditions 边界条件  黎曼边界对应载荷边界条件    dirichlete对应位移边界条件
    gsBoundaryConditions<> bcInfo;
    // Dirichlet BC are imposed separately for every component (coordinate) 对每个分量(坐标)分别施加 Dirichlet BC
    for (index_t d = 0; d < 3; d++)
    {
        bcInfo.addCondition(0, boundary::south, condition_type::dirichlet, 0, d);
    }
    // Neumann BC are imposed as one function 将 Neumann BC 作为一个函数
    bcInfo.addCondition(0, 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_PARDISO
    gsSparseSolver<>::PardisoLDLT solver(assembler.matrix());
    gsVector<> solVector = solver.solve(assembler.rhs());
    gsInfo << "Solved the system with PardisoLDLT solver in " << clock.stop() << "s.\n";
#else
    gsSparseSolver<>::SimplicialLDLT solver(assembler.matrix());
    gsVector<> solVector = solver.solve(assembler.rhs());
    gsInfo << "Solved the system with EigenLDLT solver in " << clock.stop() << "s.\n";
#endif

    // 输出的位移和总刚都是将   位移不变的自由度去掉得到的结果
    /*gsInfo << " 位移:solVector = \n" << solVector;
    cout << " \n ";*/
    double max = solVector.maxCoeff();
    cout << "\n 最大节点位移 solVector = \n" << max << endl;
    double Solution = 6.667e-5;
    double error = (max - Solution) / max;
    cout << "\n 误差 = " << abs(error) * 100 << "%" << endl;

    //=====================================================================//
                  // Output //
    //=====================================================================//

    // constructing solution as an IGA function
    gsMultiPatch<> solution;
    assembler.constructSolution(solVector, assembler.allFixedDofs(), solution);
    /*gsInfo << " solution = \n" << solution;
    cout << " \n ";*/
    // constructing stresses
    gsPiecewiseFunction<> 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 file
        std::map<std::string, const gsField<>*> fields;
        fields["Deformation"] = &solutionField;
        fields["von Mises"] = &stressField;
        gsWriteParaviewMultiPhysics(fields, "test2_le", numPlotPoints);
        gsInfo << "Open \"test2_le.pvd\" in Paraview for visualization.\n";
    }

    return 0;
}

三、最大的面受均布载荷

/// 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>
#include<iostream>

using namespace std;
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 = 2;//节点插入数
    index_t numDegElev = 1;//升阶次数
    index_t numPlotPoints = 10000;//preview软件画图的点数量


    // minimalistic user interface for terminal 终端最简用户界面
    gsCmdLine cmd("Testing the linear elasticity solver in 3D.");// 定义一个gsCmdLine类 命名为cmd
    cmd.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);   //  g = 0   0   0
    gsInfo << " f = \n " << f << "  \n ";
    // surface load, neumann BC 黎曼边界对应载荷边界条件  荷载BC   力的边界条件
    int W = 16;
    int H = 32;
    int g1 = 2e7 / (W * H);
    gsConstantFunction<> g(0, g1, 0, 3); //  g = 0   0
    gsInfo << " g = \n " << g << "  \n ";

    // boundary conditions 边界条件  黎曼边界对应载荷边界条件    dirichlete对应位移边界条件
    gsBoundaryConditions<> bcInfo;
    // Dirichlet BC are imposed separately for every component (coordinate) 对每个分量(坐标)分别施加 Dirichlet BC
    for (index_t d = 0; d < 3; d++)
    {
        bcInfo.addCondition(0, boundary::back, condition_type::dirichlet, 0, d);
    }
    // Neumann BC are imposed as one function 将 Neumann BC 作为一个函数
    bcInfo.addCondition(0, boundary::front, 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_PARDISO
    gsSparseSolver<>::PardisoLDLT solver(assembler.matrix());
    gsVector<> solVector = solver.solve(assembler.rhs());
    gsInfo << "Solved the system with PardisoLDLT solver in " << clock.stop() << "s.\n";
#else
    gsSparseSolver<>::SimplicialLDLT solver(assembler.matrix());
    gsVector<> solVector = solver.solve(assembler.rhs());
    gsInfo << "Solved the system with EigenLDLT solver in " << clock.stop() << "s.\n";
#endif

    // 输出的位移和总刚都是将   位移不变的自由度去掉得到的结果
    //gsInfo << " 位移:solVector = \n" << solVector;
    //cout << " \n ";
    double max = solVector.maxCoeff();
    cout << "\n 最大节点位移 solVector = \n" << max << endl;
    double Solution = 4.696e-6;
    double error = (max - Solution) / max;
    cout << "\n 误差 = " << abs(error) * 100 << "%" << endl;

    //=====================================================================//
                  // Output //
    //=====================================================================//

    // constructing solution as an IGA function
    gsMultiPatch<> solution;
    assembler.constructSolution(solVector, assembler.allFixedDofs(), solution);
    gsInfo << " solution = \n" << solution;
    cout << " \n ";
    // constructing stresses
    gsPiecewiseFunction<> 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 file
        std::map<std::string, const gsField<>*> fields;
        fields["Deformation"] = &solutionField;
        fields["von Mises"] = &stressField;
        gsWriteParaviewMultiPhysics(fields, "test1_le", numPlotPoints);
        gsInfo << "Open \"test1_le.pvd\" in Paraview for visualization.\n";
    }

    return 0;
}

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

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

相关文章

9月7日扒面经

redis缓存用在哪里&#xff0c;用本地缓存行不行? 数据库查询缓存&#xff0c;减小数据源压力&#xff0c;提高响应速度 页面缓存&#xff1a;将页面的渲染结果缓存在Redis中&#xff0c;以减少页面生成的时间和服务器负载。 频繁计算结果缓存&#xff1a;将频繁计算的结果…

配电房能源监测系统

配电房能源监测系统是一种能够实时监测和管理配电房能源消耗的系统&#xff0c;有助于企业更好地管理能源使用&#xff0c;降低能源成本&#xff0c;提高能源利用效率。本文将详细介绍配电房能源监测系统的组成、功能和优点。 一、配电房能源监测系统的组成 配电房能源监测系统…

2023年8大在线渗透测试工具介绍与分析

随着企业参与数字化运动&#xff0c;网络安全已成为大多数董事会讨论的一个重要方面。事实上&#xff0c;最近的一份报告显示&#xff0c;2022 年网络犯罪造成的损失总额达到惊人的 103 亿美元。 这就是在线渗透测试工具在网络安全中受到关注的地方。 今天&#xff0c;我们希…

【LeetCode-中等题】40. 组合总和 II

文章目录 题目方法一&#xff1a;递归回溯去重 题目 本题需要注意的就是去重操作因为nums数组里面的元素可能存在重复&#xff1a; 不重复的版本&#xff1a;【LeetCode-中等题】39. 组合总和 不去重版 方法一&#xff1a;递归回溯去重 参考讲解视频—回溯算法中的去重&#…

从KOOM看Java内存泄漏检测

前面我们了解了LeakCanary和Matrix Resource Canary中内存泄漏的监控和解析&#xff0c;不难看出LeakCanary是只能在线下部署的&#xff0c;主要原因是因为Debug.dumpHprofData执行会冻结整个应用进程&#xff0c;造成应用进程几秒乃至十多秒不能响应的情况&#xff0c;而dump时…

异步编程 - 10 Web Servlet的异步非阻塞处理

文章目录 OverViewServlet概述Servlet 3.0提供的异步处理能力Servlet 3.1提供的非阻塞IO能力Spring Web MVC的异步处理能力基于DeferredResult的异步处理基于Callable实现异步处理 小结 OverView 我们这里主要讨论Servlet3.0规范前的同步处理模型和缺点&#xff0c;Servlet3.0…

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试

01 测试背景 Amazon Aurora MySQL 是与 MySQL 兼容的关系数据库&#xff0c;专为云而打造&#xff0c;性能和可用性与商用数据库相当&#xff0c;成本只有其 1/10。 Amazon RDS for MySQL 让您能够在云中更轻松设置、操作和扩展 MySQL 部署。借助 Amazon RDS&#xff0c;您可以…

小白备战大厂算法笔试(三)——栈、队列、双向队列

文章目录 栈栈常用操作栈的实现基于链表的实现基于数组的实现 两种实现对比栈典型应用 队列队列常用操作队列实现基于链表的实现基于数组的实现 队列典型应用 双向队列双向队列常用操作双向队列实现基于双向链表的实现基于数组的实现 双向队列应用 栈 栈是一种遵循先入后出的逻…

Java从入门到精通-流程控制(二)

习题讲解&#xff1a; 上次我们给大家留了一些流程控制的问题&#xff0c;这次给大家分析讲解一下&#xff1a; 条件语句练习&#xff1a; 1.编写Java程序&#xff0c;用于接受用户输入的数字&#xff0c;然后判断它是偶数还是奇数&#xff0c;并输出相应的消息。 import ja…

电表采集器是如何接线的?

随着社会的进步和科技的发展&#xff0c;智能化和自动化已经成为了各个行业的发展趋势。在电力系统领域&#xff0c;电表采集器的应用越来越广泛&#xff0c;它实现了电能数据的远程采集、传输和分析&#xff0c;为电力系统的稳定运行提供了重要的数据支持。那么&#xff0c;电…

广东成人高考报名将于9月14日开始!

截图来自广东省教育考试院官网* 今年的广东成人高考正式报名时间终于确定了&#xff01; 报名时间&#xff1a;2023年 9 月14—20日 准考证打印时间&#xff1a;考前一周左右 考试时间&#xff1a;2023年10月21—22日 录取时间&#xff1a;2023年12 月中上旬 报名条件: …

恒运资本:存储市场有望触底反弹 电子竞技迎催化

昨日&#xff0c;沪指早盘震动下探&#xff0c;午后拉升翻红&#xff1b;深成指、创业板指跌幅收窄&#xff1b;到收盘&#xff0c;沪指涨0.12%报3158.08点&#xff0c;深成指跌0.24%报10515.21点&#xff0c;创业板指跌0.47%报2101.4点&#xff0c;科创50指数涨0.43%&#xff…

集成快递物流平台(快递100、快递鸟、闪送)连通多个应用

场景描述&#xff1a; 基于快递物流平台&#xff08;快递100、快递鸟、闪送等&#xff09;开放能力&#xff0c;无代码集成快递物流平台与多个应用互连互通。通过Aboter可搭建业务自动化流程&#xff0c;实现多个应用之间的数据连接。 连接器&#xff1a; 快递100快递鸟闪送…

容器编排学习(五)卷的概述与存储卷管理

一 卷 1 容器化带来的问题 容器中的文件在磁盘上是临时存放的&#xff0c;这给容器中运行的重要的应用程序带来一些问题 问题1&#xff1a;当容器崩溃或重启的时候&#xff0c;kubelet 会以干净的状态(镜像的状态)重启容器&#xff0c;容器内的历史数据会丢失 问题2&…

Mediasoup本地部署

一、环境 1、nodejs、npm、mac、ssh 注意:不能使用python3&#xff0c;请用自带的python 二、代码下载 1、mediasoup-demo 包含app(客户端)、server(服务端)、broadcasters(推流模块) git clone https://github.com/versatica/mediasoup-demo.git git checkout v3 2、me…

RC-u3 兰州拉面派餐系统--睿抗2023国赛

兰州拉面是著名美食&#xff0c;其煮面很有讲究&#xff0c;不同种类的面需要煮不同的时长。拉面馆的煮面师傅的规则很简单&#xff0c;只要手头有煮面篮子是空闲的&#xff0c;就把下一份客单指定的面放到空闲篮子里煮&#xff1b;如果空闲的篮子不止一个&#xff0c;那么先放…

无涯教程-JavaScript - BITLSHIFT函数

描述 BITLSHIFT函数返回一个左移指定位数的数字。 语法 BITLSHIFT (number, shift_amount)争论 Argument描述Required/OptionalnumberNumber must be an integer greater than or equal to 0.Requiredshift_amountShift_amount must be an integer.Required Notes 向左移动…

Zenlayer 软件定义网络平台赋能海底光缆服务

上海&#xff0c;2023年9月6日&#xff0c;一年一度的印尼电信国际大会——Batic在巴厘岛隆重举行。该盛会云集了亚太地区电信及相关行业的重要领导者&#xff0c;就“共塑亚太地区数字化未来”进行了深入探讨。Zenlayer作为该会议的黄金赞助商&#xff0c;宣布将在原有L2、L3网…

Science adv | 转录因子SPIC连接胚胎干细胞中的细胞代谢与表观调控

代谢是生化反应网络的结果&#xff0c;这些反应吸收营养物质并对其进行处理&#xff0c;以满足细胞的需求&#xff0c;包括能量产生和生物合成。反应的中间体被用作各种表观基因组修饰酶的底物和辅助因子&#xff0c;因此代谢与表观遗传密切相关。代谢结合表观遗传涉及疾病&…

【特殊文本文件——Properties和xml文件】

特殊文本文件 一、Properties 是一个Map集合&#xff08;键值对集合&#xff09;&#xff0c;但是我们一般不会当集合用核心作用&#xff1a;Properties是用来代表属性文件的&#xff0c;通过Properties可以读写属性文件里的内容 1.使用Properties读取属性文件里的键值对数据…