Skip to content

Commit 70ce3b7

Browse files
committed
Add new capabilities
- module -T: added -ori odf, added -orisampling, improved -domain rodrigues, added -statcell scale and voxnb, fixed -morpho cube, fixed -transform rmsat, improved geo format, cleaned code, made minor fixes and improvements. - module -M: added -statelt vol_orispace, added -meshedge, -meshface and -meshpoly, made other minor improvements. - module -S: fixed -res... '\<result>` (result overwriting), made minor improvements to the simulation directory. - general: added tutorials "Generating and Meshing a Fundamental Region of Orientation Space" and "Specifying Orientation Information for Tessellation Cells", improved installation instructions, added developer documentation, added CMAKE_INSTALL_COMPLETION.
1 parent 0994f15 commit 70ce3b7

File tree

343 files changed

+181876
-4676
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

343 files changed

+181876
-4676
lines changed

VERSIONS

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
1-
New in 4.6.2-14 (08 Nov 2023):
2-
- module -T: fixed -transform rmsat and -transform cut, added -statcell scale,
3-
added -statcell voxnb, improved geo format, made minor fixes and
4-
improvements.
5-
- module -M: made minor improvements.
6-
- module -S: fixed -res... '\<result>` (result overwriting).
7-
- documentation: made minor improvements.
8-
- general: improved installation instructions.
1+
New in 4.7.0 (17 Nov 2023):
2+
- module -T: added -ori odf, added -orisampling, improved -domain rodrigues,
3+
added -statcell scale and voxnb, fixed -morpho cube, fixed -transform rmsat,
4+
improved geo format, cleaned code, made minor fixes and improvements.
5+
- module -M: added -statelt vol_orispace, added -meshedge, -meshface and
6+
-meshpoly, made other minor improvements.
7+
- module -S: fixed -res... '\<result>` (result overwriting), made minor
8+
improvements to the simulation directory.
9+
- general: added tutorials "Generating and Meshing a Fundamental Region of
10+
Orientation Space" and "Specifying Orientation Information for Tessellation
11+
Cells", improved installation instructions, added developer documentation,
12+
added CMAKE_INSTALL_COMPLETION.
13+
14+
* Incompatible changes: In -T, now use `-orisampling uniform' in place of
15+
`-ori uniform'. Renamed CMAKE_INSTALL_PREFIX_COMPLETION into
16+
CMAKE_INSTALL_COMPLETION_PREFIX.
917

1018
New in 4.6.1 (12 Sep 2023):
1119
- module -T: fixed -domain cylinder and circle, fixed tesr reading, made minor

doc-dev/1dlaguerre.rst

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
.. _1dmeshing:
2+
3+
1-D Laguerre Tessellation
4+
=========================
5+
6+
A Voronoi tessellation use an Euclidean distance, which in 1D is
7+
8+
.. math::
9+
10+
\begin{equation}
11+
{d_E(p_i,\,q)}^2 = (p_i - q)^2.
12+
\end{equation}
13+
14+
In Laguerre geometry, the distance is
15+
16+
.. math::
17+
18+
\begin{equation}
19+
{d_L(p_i,\,q)}^2 = {d_E(p_i,\,q)}^2 - w_i.
20+
\end{equation}
21+
22+
The interface between two points :math:`p_i` and :math:`p_j`, of coordinate :math:`q`, is such
23+
that
24+
25+
.. math::
26+
27+
\begin{equation}
28+
{d_L(p_i,\,q)}^2 = {d_L(p_j,\,q)}^2,
29+
\end{equation}
30+
31+
which can be rewritten as
32+
33+
.. math::
34+
35+
\begin{equation}
36+
{d_E(p_i,\,q)}^2 - w_i = {d_E(p_j,\,q)}^2 - w_j,
37+
\end{equation}
38+
39+
and so
40+
41+
.. math::
42+
43+
\begin{equation}
44+
{(p_i - q)}^2 - w_i = {(p_j - q)}^2 - w_j,
45+
\end{equation}
46+
47+
.. math::
48+
49+
\begin{equation}
50+
{p_i}^2 - 2\,p_i\,q + q^2 - w_i
51+
= {p_j}^2 - 2\,p_j\,q + q^2 - w_j,
52+
\end{equation}
53+
54+
.. math::
55+
56+
\begin{equation}
57+
-2\,(p_i-p_j)\,q
58+
= w_i - w_j
59+
- ({p_i}^2 - {p_j}^2),
60+
\end{equation}
61+
62+
.. math::
63+
64+
\begin{equation}
65+
q
66+
= \frac{1}{2}\,(p_i + p_j)
67+
- \frac{1}{2}\,\frac{w_i - w_j}
68+
{p_i-p_j}.
69+
\end{equation}
70+
71+
It follows that
72+
73+
.. math::
74+
75+
\begin{equation}
76+
q - p_i
77+
= \frac{1}{2}\,(p_j - p_i)
78+
- \frac{1}{2}\,\frac{w_i - w_j}
79+
{p_i-p_j},
80+
\end{equation}
81+
82+
or
83+
84+
.. math::
85+
86+
\begin{equation}
87+
q - p_i
88+
= \frac{1}{2}\,(p_j - p_i)
89+
- \frac{1}{2}\,\frac{w_j - w_i}
90+
{p_j-p_i}.
91+
\end{equation}
92+

doc-dev/1dmeshing.rst

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
.. _1dmeshing:
2+
3+
1-D Meshing
4+
===========
5+
6+
We consider the 1-D meshing of a unit length segment. The variables are
7+
8+
- :math:`c_l`: the target element size,
9+
- :math:`{c_l}_1`: the characteristic length at vertex 1,
10+
- :math:`{c_l}_2`: the characteristic length at vertex 2,
11+
- :math:`p_l`: the element size progression factor.
12+
13+
We have the following identities:
14+
15+
.. math::
16+
17+
\begin{equation}
18+
0 < {c_l}_1 \leq {c_l}\hbox{,} \qquad
19+
0 < {c_l}_2 \leq {c_l}\hbox{,} \qquad
20+
{c_l}_1 \leq {c_l}_2\hbox{,} \qquad
21+
{p_l} > 1
22+
\end{equation}
23+
24+
The element size is increased following a geometric progression from the
25+
boundaries towards the body of the segment.
26+
27+
..
28+
\begin{center}
29+
\begin{figure}[htp]
30+
\begin{center}
31+
%
32+
\includegraphics{fig/1dmesh-prog.pdf}
33+
\caption{1-D mesh.}
34+
\end{center}
35+
\end{figure}
36+
\end{center}
37+
38+
.. image:: imgs/1dmesh-prog.png
39+
40+
Transition to the target characteristic length at the boundaries
41+
----------------------------------------------------------------
42+
43+
When considering mesh element size progression from one extremity, the characteristic length at node :math:`i` (:math:`i=1,\dots,n`), :math:`c_l(i)`, is given by,
44+
45+
.. math::
46+
:label: cl
47+
48+
\begin{equation}
49+
c_l (i) = {c_l}_1 \, {p_l}^{i-1}
50+
\end{equation}
51+
52+
Let :math:`x(i)` be the coordinate of point :math:`i`, :math:`c_l(x)` be the characteristic length at coordinate :math:`x`, :math:`n` be the number of nodes necessary to reach :math:`c_l/p_l` (i.e. the
53+
value necessary to enable an element size of :math:`c_l` in the rest of the edge), and :math:`l` be the length necessary to reach :math:`c_l/p_l`. It follows from Equation :eq:`cl` that
54+
55+
.. math::
56+
:label: x
57+
58+
\begin{equation}
59+
x(i) = {c_l}_1 \, \frac{{p_l}^{i-1} - 1}{p_l - 1} \qquad
60+
\left(\Leftrightarrow i = 1 + \lfloor\frac{\ln{\left(1 + \left(p_l-1\right) \, \frac{x}{{c_l}_1}\right)}}
61+
{\ln{p_l}}\rfloor \right)
62+
\end{equation}
63+
64+
.. math::
65+
:label: clx
66+
67+
\begin{equation}
68+
c_l (x) = {c_l}_1 + \left(p_l-1\right) \, x
69+
\end{equation}
70+
71+
.. math::
72+
:label: n
73+
74+
\begin{equation}
75+
n = 1 + \lceil\frac{\ln\left(c_l/{c_l}_1\right)}
76+
{\ln{p_l} }\rceil
77+
\end{equation}
78+
79+
.. math::
80+
:label: l
81+
82+
\begin{equation}
83+
l = {c_l}_1\,\frac{p_l^{n-1} - 1}{p_l - 1}
84+
\qquad \left( = \frac{c_l - {c_l}_1}{p_l - 1}\hbox{ if }n\hbox{ was real}\right)
85+
\end{equation}
86+
87+
where :math:`\lfloor\bullet\rfloor` is the largest previous integer of :math:`\bullet`.
88+
89+
Meshing
90+
-------
91+
92+
The segment mesh is subdivided into 3 parts: the :math:`c_l`-progression parts
93+
at both extremities and the body of the segment. The number of
94+
nodes/elements in each parts must be determined, as well as their
95+
coordinates.
96+
97+
The coordinate where the characteristic lengths progressed from the two
98+
extremities are equal, called :math:`I`, is given by,
99+
100+
.. math::
101+
\begin{equation}
102+
I = \frac{1}{2} \, \left[
103+
1 + \frac{p_l}{p_l - 1} \left({c_l}_2 - {c_l}_1\right)
104+
\right]
105+
\qquad
106+
\left(I \geq \frac{1}{2}\right)
107+
\end{equation}
108+
109+
- :math:`I>1`: 1 segment only
110+
111+
If :math:`I > 1`, :math:`{c_l}_2` cannot be reached using the progression
112+
factor :math:`p_l`. A greater value must be used. It follows from
113+
Equation :eq:`clx` that,
114+
115+
.. math::
116+
\begin{equation}
117+
{p_l}^\prime = 1 + {c_l}_2 - {c_l}_1
118+
\end{equation}
119+
120+
- :math:`I \leq 1`
121+
122+
The characteristic length at :math:`I`, :math:`{c_l}_I`, can be obtained from
123+
Equation :eq:`cl` and is equal to,
124+
125+
.. math::
126+
\begin{equation}
127+
{c_l}_I = {c_l}\left(I\right)
128+
= \frac{1}{2} \, \left( {c_l}_1 + {c_l}_2 + \frac{p_l - 1}{p_l} \right)
129+
\end{equation}
130+
131+
If :math:`{c_l}_I < c_l / p_l`, then the edge will be divided into two :math:`c_l`-progression parts.
132+
133+
The number of nodes in the progression parts are
134+
135+
.. math::
136+
\begin{equation}
137+
n_1 = f\left(\frac{\ln{\left({c_l}_I / {c_l}_1\right)}}
138+
{\ln{\left(p_l\right)}}
139+
\right)
140+
\qquad
141+
n_2 = f\left( \frac{\ln{\left({c_l}_I / {c_l}_2\right)}}
142+
{\ln{\left(p_l\right)}}
143+
\right)
144+
\end{equation}
145+
146+
The lengths of the progression parts can be obtained from Equation :eq:`l` and are denoted :math:`l_1` and :math:`l_2`. They are such that
147+
148+
.. math::
149+
\begin{equation}
150+
0 \leq \Delta l = 1 - \left(l_1 + l_2\right) \leq 2\,{c_l}_I
151+
\end{equation}

0 commit comments

Comments
 (0)