我正在使用Devdept 2022。
问题是我不能在没有负雅可比误差的情况下对一个简单的圆柱曲面进行网格化。
过程:-我使用的是转换表面为Brep,然后Brep到网格,最后网格到股骨网格。我找不到更好的方法直接网格曲面。
代码:-
using devDept;
using devDept.Eyeshot;
using devDept.Eyeshot.Entities;
using devDept.Eyeshot.Fem;
using devDept.Geometry;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Rotation = devDept.Eyeshot.Fem.Rotation;
using Material = devDept.Graphics.Material;
namespace NozzleSandbox
{
public partial class Form1 : Form
{
private FemMesh fm;
private Simulation _currentSimulation;
public Form1()
{
InitializeComponent();
//event handlers
_currentSimulation = simulation1;
_currentSimulation.WorkCompleted += simulation1_WorkCompleted;
_currentSimulation.WorkFailed += _currentSimulation_WorkFailed;
}
private void _currentSimulation_WorkFailed(object sender, WorkFailedEventArgs e)
{
throw new NotImplementedException();
}
private void simulation1_WorkCompleted(object sender, WorkCompletedEventArgs e)
{
if (e.WorkUnit is SolverBase)
{
_currentSimulation.ActiveViewport.Legends[0].IsSlave = true;
// Changes the Legend color box size
_currentSimulation.ActiveViewport.Legends[0].ItemSize = new Size(9, 18);
SolverBase solver = (SolverBase)e.WorkUnit;
FemMesh fm = solver.Mesh;
// computes the selected plot
fm.PlotMode = FemMesh.plotType.VonMises;
//fm.PlotMode = FemMesh.plotType.Uy;
fm.NodalAverages = true;
fm.ComputePlot(simulation1, simulation1.ActiveViewport.Legends[0], true);
simulation1.ZoomFit();
}
}
private void Form1_Load(object sender, EventArgs e)
{
TestCylinder();
SolveSetup();
}
private void TestCylinder()
{
//use material steel
Material mat = Material.StructuralSteel;
mat.ElementThickness = 2; //2mm thickness
//draw circle for cylinder cs
Circle c1 = new Circle(Plane.XY, new Point3D(0, 0, 0), 50);
//extrude as a surface this circle c1
Surface cs = c1.ExtrudeAsSurface(250);
Brep csBrep = cs.ConvertToBrep();
Mesh msh = csBrep.ConvertToMesh(5, false);
fm = msh.ConvertToFemMesh(mat, true);
int numFaces = fm.SetPressure(Plane.ZX, 55, 0.155);
fm.FixAll(Plane.XY, 0.5);
}
private void SolveSetup()
{
Solver solver = new Solver(fm);
_currentSimulation.StartWork(solver);
}
}
}我认为这样的库最好提供强大的方法来处理曲面,因为曲面模型是轻量级的,需要更少的资源和时间来解决。
发布于 2022-06-22 06:23:22
你正在使用一个二维三角形单元在一个三维有限元网格。您需要一个3D外壳或膜元素来解决这个问题。
https://stackoverflow.com/questions/72700753
复制相似问题