Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
edu
mafe
Commits
f3a12ab9
Commit
f3a12ab9
authored
May 24, 2018
by
Andreas Zilian
Browse files
Merge branch 'master' of
ssh://gitlab.uni.lu:8021/edu/mafe
parents
e05e0d07
e2b122ed
Changes
2
Hide whitespace changes
Inline
Side-by-side
+mgen/MgGeoArea4LineEllipsoidalVoid.m
View file @
f3a12ab9
...
@@ -59,11 +59,22 @@ classdef MgGeoArea4LineEllipsoidalVoid < mgen.MgGeoArea4Line
...
@@ -59,11 +59,22 @@ classdef MgGeoArea4LineEllipsoidalVoid < mgen.MgGeoArea4Line
%fig = figure(1); subplot('Position',[0.05 0.05 0.90 0.90]); axis equal; hold on;
%fig = figure(1); subplot('Position',[0.05 0.05 0.90 0.90]); axis equal; hold on;
gnv
=
gridnodes
;
gnv
=
gridnodes
;
for
kk
=
1
:
4
if
self
.
geoLines
(
kk
)
.
getNumTargetGridNodes
()
-
1
==
0
warning
(
'increase the number of nodes in the %d line'
,
kk
)
end
end
dim0
=
self
.
geoLines
(
1
)
.
getNumTargetGridNodes
()
-
1
;
dim0
=
self
.
geoLines
(
1
)
.
getNumTargetGridNodes
()
-
1
;
assert
(
dim0
>
0
);
dim1
=
self
.
geoLines
(
2
)
.
getNumTargetGridNodes
()
-
1
;
dim1
=
self
.
geoLines
(
2
)
.
getNumTargetGridNodes
()
-
1
;
assert
(
dim1
>
0
);
dim2
=
self
.
geoLines
(
3
)
.
getNumTargetGridNodes
()
-
1
;
dim2
=
self
.
geoLines
(
3
)
.
getNumTargetGridNodes
()
-
1
;
assert
(
dim2
>
0
);
dim3
=
self
.
geoLines
(
4
)
.
getNumTargetGridNodes
()
-
1
;
dim3
=
self
.
geoLines
(
4
)
.
getNumTargetGridNodes
()
-
1
;
assert
(
dim3
>
0
);
dim
=
self
.
nrings
*
(
dim0
+
dim1
+
dim2
+
dim3
);
dim
=
self
.
nrings
*
(
dim0
+
dim1
+
dim2
+
dim3
);
segments
=
self
.
nrings
-
1
;
segments
=
self
.
nrings
-
1
;
run_id
=
1
+
length
(
gridnodes
);
run_id
=
1
+
length
(
gridnodes
);
...
@@ -95,18 +106,28 @@ classdef MgGeoArea4LineEllipsoidalVoid < mgen.MgGeoArea4Line
...
@@ -95,18 +106,28 @@ classdef MgGeoArea4LineEllipsoidalVoid < mgen.MgGeoArea4Line
% create grid nodes
% create grid nodes
for
mm
=
segments
:
-
1
:
1
% loop over segments from outer to inner
for
mm
=
segments
:
-
1
:
1
% loop over segments from outer to inner
% set function values
% set function values
if the normFunction is not set by
self
.
normFunction
.
vals
(
1
)
=
segments
;
% user
if
self
.
normFunction
.
vals
(
2
)
==
0
if
self
.
normFunction
.
vals
==
[
0
,
0
]
self
.
normFunction
.
vals
(
1
)
=
segments
;
self
.
normFunction
.
vals
(
1
)
=
segments
;
if
self
.
normFunction
.
vals
(
2
)
==
0
self
.
normFunction
.
vals
(
1
)
=
segments
;
end
if
self
.
normFunction
.
vals
(
1
)
==
1
self
.
normFunction
.
vals
(
2
)
=
segments
;
end
end
end
if
self
.
normFunction
.
vals
(
1
)
==
1
% some bugs occurs if user sets the type of normFunction.
self
.
normFunction
.
vals
(
2
)
=
segments
;
if
self
.
normFunction
.
vals
(
1
)
>
self
.
normFunction
.
vals
(
2
)
self
.
normFunction
.
vals
=
sort
(
self
.
normFunction
.
vals
)
end
end
scale
=
self
.
normFunction
.
eval
(
mm
/
segments
);
scale
=
self
.
normFunction
.
eval
(
mm
/
segments
);
if
isnan
(
scale
)
for
gline
=
self
.
geoLines
% loop over the four GeoLines
warning
(
'normFunction can not eval %d/%d'
,
mm
,
segments
)
end
for
gline
=
self
.
geoLines
% loop over the four GeoLines
for
ii
=
1
:
gline
.
getNumTargetGridNodes
-
1
% loop over GridNodes - 1
for
ii
=
1
:
gline
.
getNumTargetGridNodes
-
1
% loop over GridNodes - 1
...
@@ -135,10 +156,12 @@ classdef MgGeoArea4LineEllipsoidalVoid < mgen.MgGeoArea4Line
...
@@ -135,10 +156,12 @@ classdef MgGeoArea4LineEllipsoidalVoid < mgen.MgGeoArea4Line
end
end
end
end
end
end
% defensive programming: check if ringNodes is filled.
assert
(
~
isempty
(
self
.
ringNodes
))
% make sure the ring nodes represent a closed line in terms of node connectivity
% make sure the ring nodes represent a closed line in terms of node connectivity
self
.
ringNodes
(
end
+
1
)
=
self
.
ringNodes
(
1
);
self
.
ringNodes
(
end
+
1
)
=
self
.
ringNodes
(
1
);
% sort in existing nodes
% sort in existing nodes
for
gline
=
self
.
geoLines
for
gline
=
self
.
geoLines
for
ii
=
1
:
gline
.
getNumTargetGridNodes
-
1
for
ii
=
1
:
gline
.
getNumTargetGridNodes
-
1
...
...
extra/circleGeom/MeshHole.m
0 → 100644
View file @
f3a12ab9
%% Describe the goemetry of the problem for the mesh generator
% helfpul parameters (problem specific)
n
=
10
;
% should be >1! % d: length measure; n = number of grid nodes per d
% create all geo points
gp1
=
mgen
.
MgGeoPoint
(
[
-
1
,
-
1
]
);
gp2
=
mgen
.
MgGeoPoint
(
[
1
,
-
1
]
);
gp3
=
mgen
.
MgGeoPoint
(
[
1
,
1
]
);
gp4
=
mgen
.
MgGeoPoint
(
[
-
1
,
1
]
);
gcenter
=
mgen
.
MgGeoPoint
([
0.
,
0.
]);
gl1
=
mgen
.
MgGeoLine2Point
(
[
gp1
,
gp2
],
n
);
gl2
=
mgen
.
MgGeoLine2Point
(
[
gp2
,
gp3
],
n
);
gl3
=
mgen
.
MgGeoLine2Point
(
[
gp3
,
gp4
],
n
);
gl4
=
mgen
.
MgGeoLine2Point
(
[
gp4
,
gp1
],
n
);
%number of ring => refine near the circle
a
=
0.5
%
b
=
0.5
%
c
=
0
;
%ellipse rotation angle in rad
normFunc
=
mgen
.
MgNormFunction
(
mgen
.
MgNormFunctionType
.
Quadratic
);
ga1
=
mgen
.
MgGeoArea4LineEllipsoidalVoid
([
gl1
,
gl2
,
gl3
,
gl4
],
20
,
a
,
b
,
c
,
normFunc
)
% create geo object and generate the mesh
geo
=
mgen
.
MgGeo
(
[
gp1
,
gp2
,
gp3
,
gp4
],
...
[
gl1
,
gl2
,
gl3
,
gl4
],
...
[
ga1
]
);
% print geo and mesh data info
fprintf
(
geo
.
print
());
% plot mesh
cla
;
clf
;
fig
=
figure
(
1
);
subplot
(
'Position'
,[
0.05
0.05
0.90
0.90
]);
axis
equal
;
hold
on
;
geo
.
plot
();
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment