From 7c5e6589db63b5639bfe37ad00f6201ed8757cd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=98=8E=E5=AE=8F?= Date: Thu, 22 Jun 2023 09:12:45 +0000 Subject: [PATCH] matlab code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘明宏 --- karst_cave/cavetest.m | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 karst_cave/cavetest.m diff --git a/karst_cave/cavetest.m b/karst_cave/cavetest.m new file mode 100644 index 0000000..bf68077 --- /dev/null +++ b/karst_cave/cavetest.m @@ -0,0 +1,44 @@ + +%A karst cave model is constructed from the point cloud data + +%% Extract the contour of point cloud data +% ptCloud2Curve; + +%% 3D model initialization +Comsol_with_Matlab_Start; +import com.comsol.model.util.* +model = ModelUtil.create('Model1');% ModelUtil.remove('Model'); +model.modelNode.create('mod1'); +model.geom.create('geom1', 3); +model.mesh.create('mesh1', 'geom1'); +data_dir = pwd ; + +%% Constructed Irregular 3D volumes from 2D contour curves +model = lofting(model,data_dir); + +model.component('mod1').geom('geom1').create('pare1', 'PartitionEdges'); +model.component('mod1').geom('geom1').feature('pare1').selection('edge').set({'ipc1(1)' 'ipc2(1)' 'ipc3(1)' 'ipc4(1)' 'ipc5(1)' 'ipc6(1)' 'ipc7(1)' 'ipc8(1)' 'ipc9(1)' 'ipc10(1)' ... +'ipc11(1)' 'ipc12(1)' 'ipc13(1)' 'ipc14(1)' 'ipc15(1)' 'ipc16(1)' 'ipc17(1)' 'ipc18(1)' 'ipc19(1)' 'ipc20(1)' ... +'ipc21(1)' 'ipc22(1)' 'ipc23(1)' 'ipc24(1)' 'ipc25(1)' 'ipc26(1)' 'ipc27(1)' 'ipc28(1)' 'ipc29(1)' 'ipc30(1)'}, [1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2; 1 2]); +model.component('mod1').geom('geom1').create('pare2', 'PartitionEdges'); +model.component('mod1').geom('geom1').feature('pare2').selection('edge').set({'pare1(1)' 'pare1(2)' 'pare1(3)' 'pare1(4)' 'pare1(5)' 'pare1(6)' 'pare1(7)' 'pare1(8)' 'pare1(9)' 'pare1(10)' ... +'pare1(11)' 'pare1(12)' 'pare1(13)' 'pare1(14)' 'pare1(15)' 'pare1(16)' 'pare1(17)' 'pare1(18)' 'pare1(19)' 'pare1(20)' ... +'pare1(21)' 'pare1(22)' 'pare1(23)' 'pare1(24)' 'pare1(25)' 'pare1(26)' 'pare1(27)' 'pare1(28)' 'pare1(29)' 'pare1(30)'}, [1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4]); +model.component('mod1').geom('geom1').create('pare3', 'PartitionEdges'); +model.component('mod1').geom('geom1').feature('pare3').selection('edge').set({'pare2(1)' 'pare2(2)' 'pare2(3)' 'pare2(4)' 'pare2(5)' 'pare2(6)' 'pare2(7)' 'pare2(8)' 'pare2(9)' 'pare2(10)' ... +'pare2(11)' 'pare2(12)' 'pare2(13)' 'pare2(14)' 'pare2(15)' 'pare2(16)' 'pare2(17)' 'pare2(18)' 'pare2(19)' 'pare2(20)' ... +'pare2(21)' 'pare2(22)' 'pare2(23)' 'pare2(24)' 'pare2(25)' 'pare2(26)' 'pare2(27)' 'pare2(28)' 'pare2(29)' 'pare2(30)'}, [1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8; 1 2 3 4 5 6 7 8]); + +% model.component('mod1').geom('geom1').create('loft1', 'Loft'); +model.component('mod1').geom('geom1').feature('loft1').set('facepartitioning', 'grid'); +model.component('mod1').geom('geom1').feature('loft1').selection('profile').set({'pare3'}); +model.component('mod1').geom('geom1').feature('loft1').selection('guide').set({}); +model.component('mod1').geom('geom1').run; + +mphlaunch(model) +mphsave(model,'cavetest'); + + + + +