diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index c8c34b8c4c..6887a5b13e 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.11.2","generation_timestamp":"2025-01-10T11:47:28","documenter_version":"1.7.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.11.2","generation_timestamp":"2025-01-10T11:48:33","documenter_version":"1.7.0"}} \ No newline at end of file diff --git a/dev/changelog/index.html b/dev/changelog/index.html index 46a153ae23..10aa76ea49 100644 --- a/dev/changelog/index.html +++ b/dev/changelog/index.html @@ -111,4 +111,4 @@ + K = allocate_matrix(dh, ch)</code></pre></li></ul><h3 id="Added"><a class="docs-heading-anchor" href="#Added">Added</a><a id="Added-1"></a><a class="docs-heading-anchor-permalink" href="#Added" title="Permalink"></a></h3><ul><li><p><code>InterfaceValues</code> for computing jumps and averages over interfaces. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/743">#743</a>)</p></li><li><p><code>InterfaceIterator</code> and <code>InterfaceCache</code> for iterating over interfaces. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/747">#747</a>)</p></li><li><p><code>FacetQuadratureRule</code> implementation for <code>RefPrism</code> and <code>RefPyramid</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/779">#779</a>)</p></li><li><p>The <code>DofHandler</code> now support selectively adding fields on sub-domains (rather than the full domain). This new functionality is included with the new <code>SubDofHandler</code> struct, which, as the name suggest, is a <code>DofHandler</code> for a subdomain. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/624">#624</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/667">#667</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/735">#735</a>)</p></li><li><p>New reference shape structs <code>RefLine</code>, <code>RefTriangle</code>, <code>RefQuadrilateral</code>, <code>RefTetrahedron</code>, <code>RefHexahedron</code>, and <code>RefPrism</code> have been added. These encode the reference dimension, and will thus replace the old reference shapes for which it was necessary to always pair with an explicit dimension (i.e. <code>RefLine</code> replaces <code>(RefCube, 1)</code>, <code>RefTriangle</code> replaces <code>(RefTetrahedron, 2)</code>, etc.). For writing "dimension independent code" it is possible to use <code>Ferrite.RefHypercube{dim}</code> and <code>Ferrite.RefSimplex{dim}</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/679">#679</a>)</p></li><li><p>New methods for adding entitysets that are located on the boundary of the grid: <code>addboundaryfacetset!</code> and <code>addboundaryvertexset!</code>. These work similar to <code>addfacetset!</code> and <code>addvertexset!</code>, but filters out all instances not on the boundary (this can be used to avoid accidental inclusion of internal entities in sets used for boundary conditions, for example). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/606">#606</a>)</p></li><li><p>New interpolation <code>VectorizedInterpolation</code> which vectorizes scalar interpolations for vector-valued problems. A <code>VectorizedInterpolation</code> is created from a (scalar) interpolation <code>ip</code> using either <code>ip ^ dim</code> or <code>VectorizedInterpolation{dim}(ip)</code>. For convenience, the method <code>VectorizedInterpolation(ip)</code> vectorizes the interpolation to the reference dimension of the interpolation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/694">#694</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/736">#736</a>)</p></li><li><p>New (scalar) interpolation <code>Lagrange{RefQuadrilateral, 3}()</code>, i.e. third order Lagrange interpolation for 2D quadrilaterals. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/701">#701</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/731">#731</a>)</p></li><li><p><code>CellValues</code> now support embedded elements. Specifically you can now embed elements with reference dimension 1 into spatial dimension 2 or 3, and elements with reference dimension 2 in to spatial dimension 3. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/651">#651</a>)</p></li><li><p><code>CellValues</code> now support (vector) interpolations with dimension different from the spatial dimension. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/651">#651</a>)</p></li><li><p><code>FacetQuadratureRule</code> have been added and should be used for <code>FacetValues</code>. A <code>FacetQuadratureRule</code> for integration of the facets of e.g. a triangle can be constructed by <code>FacetQuadratureRule{RefTriangle}(order)</code> (similar to how <code>QuadratureRule</code> is constructed). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/716">#716</a>)</p></li><li><p>New functions <code>Ferrite.reference_shape_value(::Interpolation, ξ::Vec, i::Int)</code> and <code>Ferrite.reference_shape_gradient(::Interpolation, ξ::Vec, i::Int)</code> for evaluating the value/gradient of the <code>i</code>th shape function of an interpolation in local reference coordinate <code>ξ</code>. These methods are public but not exported. (Note that these methods return the value/gradient wrt. the reference coordinate <code>ξ</code>, whereas the corresponding methods for <code>CellValues</code> etc return the value/gradient wrt the spatial coordinate <code>x</code>.) (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/721">#721</a>)</p></li><li><p><code>FacetIterator</code> and <code>FacetCache</code> have been added. These work similarly to <code>CellIterator</code> and <code>CellCache</code> but are used to iterate over (boundary) face sets instead. These simplify boundary integrals in general, and in particular Neumann boundary conditions are more convenient to implement now that you can loop directly over the face set instead of checking all faces of a cell inside the element routine. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/495">#495</a>)</p></li><li><p>The <code>ConstraintHandler</code> now support adding Dirichlet boundary conditions on discontinuous interpolations. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/729">#729</a>)</p></li><li><p><code>collect_periodic_faces</code> now have a keyword argument <code>tol</code> that can be used to relax the default tolerance when necessary. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/749">#749</a>)</p></li><li><p>VTK export now work with <code>QuadraticHexahedron</code> elements. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/714">#714</a>)</p></li><li><p>The function <code>bounding_box(::AbstractGrid)</code> has been added. It computes the bounding box for a given grid (based on its node coordinates), and returns the minimum and maximum vertices of the bounding box. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/880">#880</a>)</p></li><li><p>Support for working with sparsity patterns has been added. This means that Ferrite exposes the intermediate "state" between the DofHandler and the instantiated matrix as the new struct <code>SparsityPattern</code>. This make it possible to insert custom equations or couplings in the pattern before instantiating the matrix. The function <code>create_sparsity_pattern</code> have been removed. The new function <code>allocate_matrix</code> is instead used to instantiate the matrix. Refer to the documentation for more details. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/888">#888</a>)</p><p><strong>To upgrade</strong>: if you want to recover the old functionality and don't need to work with the pattern, replace any usage of <code>create_sparsity_pattern</code> with <code>allocate_matrix</code>.</p></li><li><p>A new function, <code>geometric_interpolation</code>, is exported, which gives the geometric interpolation for each cell type. This is equivalent to the deprecated <code>Ferrite.default_interpolation</code> function. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/953">#953</a>)</p></li><li><p>CellValues and FacetValues can now store and map second order gradients (Hessians). The number of gradients computed in CellValues/FacetValues is specified using the keyword arguments <code>update_gradients::Bool</code> (default true) and <code>update_hessians::Bool</code> (default false) in the constructors, i.e. <code>CellValues(...; update_hessians=true)</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/953">#953</a>)</p></li><li><p><code>L2Projector</code> supports projecting on grids with mixed celltypes. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/949">#949</a>)</p></li></ul><h3 id="Changed"><a class="docs-heading-anchor" href="#Changed">Changed</a><a id="Changed-1"></a><a class="docs-heading-anchor-permalink" href="#Changed" title="Permalink"></a></h3><ul><li><p>It is now possible to create sparsity patterns with interface couplings, see the new function <code>add_interface_entries!</code> and the rework of sparsity pattern construction. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/710">#710</a>)</p></li><li><p>The <code>AbstractCell</code> interface has been reworked. This change should not affect user code, but may in some cases be relevant for code parsing external mesh files. In particular, the generic <code>Cell</code> struct have been removed in favor of concrete cell implementations (<code>Line</code>, <code>Triangle</code>, ...). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/679">#679</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/712">#712</a>)</p><p><strong>To upgrade</strong> replace any usage of <code>Cell{...}(...)</code> with calls to the concrete implementations.</p></li><li><p>The default geometric mapping in <code>CellValues</code> and <code>FacetValues</code> have changed. The new default is to always use <code>Lagrange{refshape, 1}()</code>, i.e. linear Lagrange polynomials, for the geometric interpolation. Previously, the function interpolation was (re) used also for the geometry interpolation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/695">#695</a>)</p><p><strong>To upgrade</strong>, if you relied on the previous default, simply pass the function interpolation also as the third argument (the geometric interpolation).</p></li><li><p>All interpolations are now categorized as either scalar or vector interpolations. All (previously) existing interpolations are scalar. (Scalar) interpolations must now be explicitly vectorized, using the new <code>VectorizedInterpolation</code>, when used for vector problems. (Previously implicit vectorization happened in the <code>CellValues</code> constructor, and when adding fields to the <code>DofHandler</code>). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/694">#694</a>)</p></li><li><p>It is now required to explicitly pass the interpolation to the <code>DofHandler</code> when adding a new field using <code>add!</code>. For vector fields the interpolation should be vectorized, instead of passing number of components as an integer. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/694">#694</a>)</p><p><strong>To upgrade</strong> don't pass the dimension as an integer, and pass the interpolation explicitly. See more details in <a href="#upgrading-code-from-ferrite-03-to-10">Upgrading code from Ferrite 0.3 to 1.0</a>.</p></li><li><p><code>Interpolation</code>s should now be constructed using the new reference shapes. Since the new reference shapes encode the reference dimension the first type parameter of interpolations have been removed. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/711">#711</a>) <strong>To upgrade</strong> replace e.g. <code>Lagrange{1, RefCube, 1}()</code> with <code>Lagrange{RefLine, 1}()</code>, and <code>Lagrange{2, RefTetrahedron, 1}()</code> with <code>Lagrange{RefTriangle, 1}()</code>, etc.</p></li><li><p><code>QuadratureRule</code>s should now be constructed using the new reference shapes. Since the new reference shapes encode the reference dimension the first type parameter of <code>QuadratureRule</code> have been removed. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/711">#711</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/716">#716</a>) <strong>To upgrade</strong> replace e.g. <code>QuadratureRule{1, RefCube}(order)</code> with <code>QuadratureRule{RefLine}(order)</code>, and <code>QuadratureRule{2, RefTetrahedron}(1)</code> with <code>Lagrange{RefTriangle}(order)</code>, etc.</p></li><li><p><code>CellScalarValues</code> and <code>CellVectorValues</code> have been merged into <code>CellValues</code>, <code>FaceScalarValues</code> and <code>FaceVectorValues</code> have been merged into <code>FacetValues</code>, and <code>PointScalarValues</code> and <code>PointVectorValues</code> have been merged into <code>PointValues</code>. The differentiation between scalar and vector have thus been moved to the interpolation (see above). Note that previously <code>CellValues</code>, <code>FaceValues</code>, and <code>PointValues</code> where abstract types, but they are now concrete implementations with <em>different type parameters</em>, except <code>FaceValues</code> which is now <code>FacetValues</code> (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/708">#708</a>) <strong>To upgrade</strong>, for scalar problems, it is enough to replace <code>CellScalarValues</code> with <code>CellValues</code>, <code>FaceScalarValues</code> with <code>FacetValues</code> and <code>PointScalarValues</code> with <code>PointValues</code>, respectively. For vector problems, make sure to vectorize the interpolation (see above) and then replace <code>CellVectorValues</code> with <code>CellValues</code>, <code>FaceVectorValues</code> with <code>FacetValues</code>, and <code>PointVectorValues</code> with <code>PointValues</code>.</p></li><li><p>The quadrature rule passed to <code>FacetValues</code> should now be of type <code>FacetQuadratureRule</code> rather than of type <code>QuadratureRule</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/716">#716</a>) <strong>To upgrade</strong> replace the quadrature rule passed to <code>FacetValues</code> with a <code>FacetQuadratureRule</code>.</p></li><li><p>Checking if a face <code>(ele_id, local_face_id) ∈ faceset</code> has been previously implemented by type piracy. In order to be invariant to the underlying <code>Set</code> datatype as well as omitting type piracy, (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/835">#835</a>) implemented <code>isequal</code> and <code>hash</code> for <code>BoundaryIndex</code> datatypes.</p></li><li><p><strong>VTK export</strong>: Ferrite no longer extends <code>WriteVTK.vtk_grid</code> and associated functions, instead the new type <code>VTKGridFile</code> should be used instead. New methods exists for writing to a <code>VTKGridFile</code>, e.g. <code>write_solution</code>, <code>write_cell_data</code>, <code>write_node_data</code>, and <code>write_projection</code>. See <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/692">#692</a>.</p></li><li><p><strong>Definitions</strong>: Previously, <code>face</code> and <code>edge</code> referred to codimension 1 relative reference shape. In Ferrite v1, <code>volume</code>, <code>face</code>, <code>edge</code>, and <code>vertex</code> refer to 3, 2, 1, and 0 dimensional entities, and <code>facet</code> replaces the old definition of <code>face</code>. No direct replacement for <code>edges</code> exits. See <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/914">#914</a> and <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/914">#914</a>. The main implications of this change are</p><ul><li><code>FaceIndex</code> -> <code>FacetIndex</code> (<code>FaceIndex</code> still exists, but has a different meaning)</li><li><code>FaceValues</code> -> <code>FacetValues</code></li><li><code>nfaces</code> -> <code>nfacets</code> (<code>nfaces</code> is now an internal method with different meaning)</li><li><code>addfaceset!</code> -> <code>addfacetset</code></li><li><code>getfaceset</code> -> <code>getfacetset</code></li></ul><p>Furthermore, subtypes of <code>Interpolation</code> should now define <code>vertexdof_indices</code>, <code>edgedof_indices</code>, <code>facedof_indices</code>, <code>volumedof_indices</code> (and similar) according to these definitions.</p></li><li><p><code>Ferrite.getdim</code> has been changed into <code>Ferrite.getrefdim</code> for getting the dimension of the reference shape and <code>Ferrite.getspatialdim</code> to get the spatial dimension (of the grid). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/943">#943</a>)</p></li><li><p><code>Ferrite.getfielddim(::AbstractDofHandler, args...)</code> has been renamed to <code>Ferrite.n_components</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/943">#943</a>)</p></li><li><p>The constructor for <code>ExclusiveTopology</code> only accept an <code>AbstractGrid</code> as input, removing the alternative of providing a <code>Vector{<:AbstractCell}</code>, as knowing the spatial dimension is required for correct code paths. Furthermore, it uses a new internal data structure, <code>ArrayOfVectorViews</code>, to store the neighborhood information more efficiently The datatype for the neighborhood has thus changed to a view of a vector, instead of the now removed <code>EntityNeighborhood</code> container. This also applies to <code>vertex_star_stencils</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/974">#974</a>).</p></li><li><p><code>project(::L2Projector, data, qr_rhs)</code> now expects data to be indexed by the cellid, as opposed to the index in the vector of cellids passed to the <code>L2Projector</code>. The data may be passed as an <code>AbstractDict{Int, <:AbstractVector}</code>, as an alternative to <code>AbstractArray{<:AbstractVector}</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/949">#949</a>)</p></li></ul><h3 id="Deprecated"><a class="docs-heading-anchor" href="#Deprecated">Deprecated</a><a id="Deprecated-1"></a><a class="docs-heading-anchor-permalink" href="#Deprecated" title="Permalink"></a></h3><ul><li><p>The rarely (if ever) used methods of <code>function_value</code>, <code>function_gradient</code>, <code>function_divergence</code>, and <code>function_curl</code> taking <em>vectorized dof values</em> as in put have been deprecated. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/698">#698</a>)</p></li><li><p>The function <code>reshape_to_nodes</code> have been deprecated in favor of <code>evaluate_at_grid_nodes</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/703">#703</a>)</p></li><li><p><code>start_assemble([n::Int])</code> has been deprecated in favor of calling <code>Ferrite.COOAssembler()</code> directly (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/916">#916</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/1058">#1058</a>).</p></li><li><p><code>start_assemble(f, K)</code> have been deprecated in favor of the "canonical" <code>start_assemble(K, f)</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/707">#707</a>)</p></li><li><p><code>assemble!(assembler, dofs, fe, Ke)</code> have been deprecated in favor of the "canonical" <code>assemble!(assembler, dofs, Ke, fe)</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/1059">#1059</a>)</p></li><li><p><code>end_assemble</code> have been deprecated in favor of <code>finish_assemble</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/754">#754</a>)</p></li><li><p><code>get_point_values</code> have been deprecated in favor of <code>evaluate_at_points</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/754">#754</a>)</p></li><li><p><code>transform!</code> have been deprecated in favor of <code>transform_coordinates!</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/754">#754</a>)</p></li><li><p><code>Ferrite.default_interpolation</code> has been deprecated in favor of <code>geometric_interpolation</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/953">#953</a>)</p></li></ul><h3 id="Removed-2"><a class="docs-heading-anchor" href="#Removed-2">Removed</a><a class="docs-heading-anchor-permalink" href="#Removed-2" title="Permalink"></a></h3><ul><li><p><code>MixedDofHandler</code> + <code>FieldHandler</code> have been removed in favor of <code>DofHandler</code> + <code>SubDofHandler</code>. Note that the syntax has changed, and note that <code>SubDofHandler</code> is much more capable compared to <code>FieldHandler</code>. Previously it was often required to pass both the <code>MixedDofHandler</code> and the <code>FieldHandler</code> to e.g. the assembly routine, but now it is enough to pass the <code>SubDofHandler</code> since it can be used for e.g. DoF queries etc. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/624">#624</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/667">#667</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/735">#735</a>)</p></li><li><p>Some old methods to construct the <code>L2Projector</code> have been removed after being deprecated for several releases. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/697">#697</a>)</p></li><li><p>The option <code>project_to_nodes</code> have been removed from <code>project(::L2Projector, ...)</code>. The returned values are now always ordered according to the projectors internal <code>DofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/699">#699</a>)</p></li><li><p>The function <code>compute_vertex_values</code> have been removed. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/700">#700</a>)</p></li><li><p>The names <code>getweights</code>, <code>getpoints</code>, <code>getcellsets</code>, <code>getnodesets</code>, <code>getfacesets</code>, <code>getedgesets</code>, and <code>getvertexsets</code> have been removed from the list of exported names. (For now you can still use them by prefixing <code>Ferrite.</code>, e.g. <code>Ferrite.getweights</code>.) (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/754">#754</a>)</p></li><li><p>The <code>onboundary</code> function (and the associated <code>boundary_matrix</code> property of the <code>Grid</code> datastructure) have been removed (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/924">#924</a>). Instead of first checking <code>onboundary</code> and then check whether a facet belong to a specific facetset, check the facetset directly. For example:</p><pre><code class="language-diff hljs">- if onboundary(cell, local_face_id) && (cell_id, local_face_id) in getfacesets(grid, "traction_boundary") + if (cell_id, local_face_id) in getfacesets(grid, "traction_boundary") # integrate the "traction_boundary" boundary - end</code></pre></li></ul><h3 id="Fixed"><a class="docs-heading-anchor" href="#Fixed">Fixed</a><a id="Fixed-1"></a><a class="docs-heading-anchor-permalink" href="#Fixed" title="Permalink"></a></h3><ul><li><p>Benchmarks now work with master branch. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/751">#751</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/855">#855</a>)</p></li><li><p>Topology construction have been generalized to, in particular, fix construction for 1D and for wedge elements. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/641">#641</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/670">#670</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/684">#684</a>)</p></li></ul><h3 id="Other-improvements"><a class="docs-heading-anchor" href="#Other-improvements">Other improvements</a><a id="Other-improvements-1"></a><a class="docs-heading-anchor-permalink" href="#Other-improvements" title="Permalink"></a></h3><ul><li><p>Documentation:</p><ul><li>The documentation is now structured according to the Diataxis framework. There is now also clear separation between tutorials (for teaching) and code gallery (for showing off). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/737">#737</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/756">#756</a>)</li><li>New section in the developer documentation that describes the (new) reference shapes and their numbering scheme. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/688">#688</a>)</li></ul></li><li><p>Performance:</p><ul><li><code>Ferrite.transform!(grid, f)</code> (for transforming the node coordinates in the <code>grid</code> according to a function <code>f</code>) is now faster and allocates less. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/675">#675</a>)</li><li>Slight performance improvement in construction of <code>PointEvalHandler</code> (faster reverse coordinate lookup). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/719">#719</a>)</li><li>Various performance improvements to topology construction. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/753">#753</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/759">#759</a>)</li></ul></li><li><p>Internal improvements:</p><ul><li>The dof distribution interface have been updated to support higher order elements (future work). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/627">#627</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/732">#732</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/733">#733</a>)</li><li>The <code>AbstractGrid</code> and <code>AbstractDofHandler</code> interfaces are now used more consistently internally. This will help with the implementation of distributed grids and DofHandlers. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/655">#655</a>)</li><li>VTK export now uses the (geometric) interpolation directly when evaluating the finite element field instead of trying to work backwards how DoFs map to nodes. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/703">#703</a>)</li><li>Improved bounds checking in <code>assemble!</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/706">#706</a>)</li><li>Internal methods <code>Ferrite.value</code> and <code>Ferrite.derivative</code> for computing the value/gradient of <em>all</em> shape functions have been removed. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/720">#720</a>)</li><li><code>Ferrite.create_incidence_matrix</code> now work with any <code>AbstractGrid</code> (not just <code>Grid</code>). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/726">#726</a>)</li></ul></li></ul><h2 id="[v0.3.14](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.14)-2023-04-03"><a class="docs-heading-anchor" href="#[v0.3.14](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.14)-2023-04-03"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.14">v0.3.14</a> - 2023-04-03</a><a id="[v0.3.14](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.14)-2023-04-03-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.14](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.14)-2023-04-03" title="Permalink"></a></h2><h3 id="Added-2"><a class="docs-heading-anchor" href="#Added-2">Added</a><a class="docs-heading-anchor-permalink" href="#Added-2" title="Permalink"></a></h3><ul><li>Support reordering dofs of a <code>MixedDofHandler</code> by the built-in orderings <code>FieldWise</code> and <code>ComponentWise</code>. This includes support for reordering dofs of fields on subdomains. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/645">#645</a>)</li><li>Support specifying the coupling between fields in a <code>MixedDofHandler</code> when creating the sparsity pattern. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/650">#650</a>)</li><li>Support Metis dof reordering with coupling information for <code>MixedDofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/650">#650</a>)</li><li>Pretty printing for <code>MixedDofHandler</code> and <code>L2Projector</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/465">#465</a>)</li></ul><h3 id="Other-improvements-2"><a class="docs-heading-anchor" href="#Other-improvements-2">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-2" title="Permalink"></a></h3><ul><li>The <code>MixedDofHandler</code> have gone through a performance review (see <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/629">#629</a>) and now performs the same as <code>DofHandler</code>. This was part of the push to merge the two DoF handlers. Since <code>MixedDofHandler</code> is strictly more flexible, and now equally performant, it will replace <code>DofHandler</code> in the next breaking release. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/637">#637</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/639">#639</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/642">#642</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/643">#643</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/656">#656</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/660">#660</a>)</li></ul><h3 id="Internal-changes"><a class="docs-heading-anchor" href="#Internal-changes">Internal changes</a><a id="Internal-changes-1"></a><a class="docs-heading-anchor-permalink" href="#Internal-changes" title="Permalink"></a></h3><p>Changes listed here should not affect regular usage, but listed here in case you have been poking into Ferrite internals:</p><ul><li><code>Ferrite.ndim(dh, fieldname)</code> has been removed, use <code>Ferrite.getfielddim(dh, fieldname)</code> instead. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/658">#658</a>)</li><li><code>Ferrite.nfields(dh)</code> has been removed, use <code>length(Ferrite.getfieldnames(dh))</code> instead. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/444">#444</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/653">#653</a>)</li><li><code>getfielddims(::FieldHandler)</code> and <code>getfieldinterpolations(::FieldHandler)</code> have been removed (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/647">#647</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/659">#659</a>)</li></ul><h2 id="[v0.3.13](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.13)-2023-03-23"><a class="docs-heading-anchor" href="#[v0.3.13](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.13)-2023-03-23"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.13">v0.3.13</a> - 2023-03-23</a><a id="[v0.3.13](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.13)-2023-03-23-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.13](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.13)-2023-03-23" title="Permalink"></a></h2><h3 id="Added-3"><a class="docs-heading-anchor" href="#Added-3">Added</a><a class="docs-heading-anchor-permalink" href="#Added-3" title="Permalink"></a></h3><ul><li>Support for classical trilinear and triquadratic wedge elements. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/581">#581</a>)</li><li>Symmetric quadrature rules up to order 10 for prismatic elements. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/581">#581</a>)</li><li>Finer granulation of dof distribution, allowing to distribute different amounts of dofs per entity. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/581">#581</a>)</li></ul><h3 id="Fixed-2"><a class="docs-heading-anchor" href="#Fixed-2">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-2" title="Permalink"></a></h3><ul><li>Dof distribution for embedded elements. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/581">#581</a>)</li><li>Improve numerical accuracy in shape function evaluation for the <code>Lagrange{2,Tetrahedron,(3|4|5)}</code> interpolations. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/582">#582</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/633">#633</a>)</li></ul><h3 id="Other-improvements-3"><a class="docs-heading-anchor" href="#Other-improvements-3">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-3" title="Permalink"></a></h3><ul><li>Documentation:<ul><li>New "Developer documentation" section in the manual for documenting Ferrite.jl internals and developer tools. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/611">#611</a>)</li><li>Fix a bug in constraint computation in Stoke's flow example. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/614">#614</a>)</li></ul></li><li>Performance:<ul><li>Benchmarking infrastructure to help tracking performance changes. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/388">#388</a>)</li><li>Performance improvements for various accessor functions for <code>MixedDofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/621">#621</a>)</li></ul></li></ul><h3 id="Internal-changes-2"><a class="docs-heading-anchor" href="#Internal-changes-2">Internal changes</a><a class="docs-heading-anchor-permalink" href="#Internal-changes-2" title="Permalink"></a></h3><ul><li>To clarify the dof management <code>vertices(ip)</code>, <code>edges(ip)</code> and <code>faces(ip)</code> has been deprecated in favor of <code>vertexdof_indices(ip)</code>, <code>edgedof_indices(ip)</code> and <code>facedof_indices(ip)</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/581">#581</a>)</li><li>Duplicate grid representation has been removed from the <code>MixedDofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/577">#577</a>)</li></ul><h2 id="[v0.3.12](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.12)-2023-02-28"><a class="docs-heading-anchor" href="#[v0.3.12](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.12)-2023-02-28"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.12">v0.3.12</a> - 2023-02-28</a><a id="[v0.3.12](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.12)-2023-02-28-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.12](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.12)-2023-02-28" title="Permalink"></a></h2><h3 id="Added-4"><a class="docs-heading-anchor" href="#Added-4">Added</a><a class="docs-heading-anchor-permalink" href="#Added-4" title="Permalink"></a></h3><ul><li>Added a basic <code>show</code> method for assemblers. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/598">#598</a>)</li></ul><h3 id="Fixed-3"><a class="docs-heading-anchor" href="#Fixed-3">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-3" title="Permalink"></a></h3><ul><li>Fix an issue in constraint application of <code>Symmetric</code>-wrapped sparse matrices (i.e. obtained from <code>create_symmatric_sparsity_pattern</code>). In particular, <code>apply!(K::Symmetric, f, ch)</code> would incorrectly modify <code>f</code> if any of the constraints were inhomogeneous. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/592">#592</a>)</li><li>Properly disable the Metis extension on Julia 1.9 instead of causing precompilation errors. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/588">#588</a>)</li><li>Fix adding Dirichlet boundary conditions on nodes when using MixedDofHandler. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/593">#593</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/594">#594</a>)</li><li>Fix accidentally slow implementation of <code>show</code> for <code>Grid</code>s. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/599">#599</a>)</li><li>Fixes to topology functionality. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/453">#453</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/518">#518</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/455">#455</a>)</li><li>Fix grid coloring for cell sets with 0 or 1 cells. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/600">#600</a>)</li></ul><h3 id="Other-improvements-4"><a class="docs-heading-anchor" href="#Other-improvements-4">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-4" title="Permalink"></a></h3><ul><li>Documentation improvements:<ul><li>Simplications and clarifications to hyperelasticity example. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/591">#591</a>)</li><li>Remove duplicate docstring entry for <code>vtk_point_data</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/602">#602</a>)</li><li>Update documentation about initial conditions. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/601">#601</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/604">#604</a>)</li></ul></li></ul><h2 id="[v0.3.11](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.11)-2023-01-17"><a class="docs-heading-anchor" href="#[v0.3.11](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.11)-2023-01-17"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.11">v0.3.11</a> - 2023-01-17</a><a id="[v0.3.11](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.11)-2023-01-17-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.11](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.11)-2023-01-17" title="Permalink"></a></h2><h3 id="Added-5"><a class="docs-heading-anchor" href="#Added-5">Added</a><a class="docs-heading-anchor-permalink" href="#Added-5" title="Permalink"></a></h3><ul><li><a href="https://github.com/JuliaSparse/Metis.jl">Metis.jl</a> extension for fill-reducing DoF permutation. This uses Julias new package extension mechanism (requires Julia 1.10) to support a new DoF renumbering order <code>DofOrder.Ext{Metis}()</code> that can be passed to <code>renumber!</code> to renumber DoFs using the Metis.jl library. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/393">#393</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/549">#549</a>)</li><li><a href="https://github.com/JuliaArrays/BlockArrays.jl">BlockArrays.jl</a> extension for creating a globally blocked system matrix. <code>create_sparsity_pattern(BlockMatrix, dh, ch; kwargs...)</code> return a matrix that is blocked by field (requires DoFs to be (re)numbered by field, i.e. <code>renumber!(dh, DofOrder.FieldWise())</code>). For custom blocking it is possible to pass an uninitialized <code>BlockMatrix</code> with the correct block sizes (see <code>BlockArrays.jl</code> docs). This functionality is useful for e.g. special solvers where individual blocks need to be extracted. Requires Julia version 1.9 or above. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/567">#567</a>)</li><li>New function <code>apply_analytical!</code> for setting the values of the degrees of freedom for a specific field according to a spatial function <code>f(x)</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/532">#532</a>)</li><li>New cache struct <code>CellCache</code> to be used when iterating over the cells in a grid or DoF handler. <code>CellCache</code> caches nodes, coordinates, and DoFs, for the cell. The cache <code>cc</code> can be re-initialized for a new cell index <code>ci</code> by calling <code>reinit!(cc, ci)</code>. This can be used as an alternative to <code>CellIterator</code> when more control over which element to loop over is needed. See documentation for <code>CellCache</code> for more information. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/546">#546</a>)</li><li>It is now possible to create the sparsity pattern without constrained entries (they will be zeroed out later anyway) by passing <code>keep_constrained=false</code> to <code>create_sparsity_pattern</code>. This naturally only works together with local condensation of constraints since there won't be space allocated in the global matrix for the full (i.e. "non-condensed") element matrix. Creating the matrix without constrained entries reduces the memory footprint, but unless a significant amount of DoFs are constrained (e.g. high mesh resolution at a boundary) the savings are negligible. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/539">#539</a>)</li></ul><h3 id="Changed-2"><a class="docs-heading-anchor" href="#Changed-2">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-2" title="Permalink"></a></h3><ul><li><code>ConstraintHandler</code>: <code>update!</code> is now called implicitly in <code>close!</code>. This was easy to miss, and somewhat of a strange requirement when solving problems without time stepping. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/459">#459</a>)</li><li>The function for computing the inhomogeneity in a <code>Dirichlet</code> constraint can now be specified as either <code>f(x)</code> or <code>f(x, t)</code>, where <code>x</code> is the spatial coordinate and <code>t</code> the time. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/459">#459</a>)</li><li>The elements of a <code>CellIterator</code> are now <code>CellCache</code> instead of the iterator itself, which was confusing in some cases. This change does not affect typical user code. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/546">#546</a>)</li></ul><h3 id="Deprecated-2"><a class="docs-heading-anchor" href="#Deprecated-2">Deprecated</a><a class="docs-heading-anchor-permalink" href="#Deprecated-2" title="Permalink"></a></h3><ul><li>Adding fields to a DoF handler with <code>push!(dh, ...)</code> has been deprecated in favor of <code>add!(dh, ...)</code>. This is to make it consistent with how constraints are added to a constraint handler. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/578">#578</a>)</li></ul><h3 id="Fixed-4"><a class="docs-heading-anchor" href="#Fixed-4">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-4" title="Permalink"></a></h3><ul><li>Fix <code>shape_value</code> for the linear, discontinuous Lagrange interpolation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/553">#553</a>)</li><li>Fix <code>reference_coordinate</code> dispatch for discontinuous Lagrange interpolations. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/559">#559</a>)</li><li>Fix <code>show(::Grid)</code> for custom cell types. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/570">#570</a>)</li><li>Fix <code>apply_zero!(Δa, ch)</code> when using inhomogeneous affine constraints (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/575">#575</a>)</li></ul><h3 id="Other-improvements-5"><a class="docs-heading-anchor" href="#Other-improvements-5">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-5" title="Permalink"></a></h3><ul><li>Internal changes defining a new global matrix/vector "interface". These changes make it easy to enable more array types (e.g. <code>BlockMatrix</code> support added in this release) and solvers in the future. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/562">#562</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/571">#571</a>)</li><li>Performance improvements:<ul><li>Reduced time and memory allocations for global sparse matrix creation (Julia >= 1.10). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/563">#563</a>)</li></ul></li><li>Documentation improvements:<ul><li>Added an overview of the Examples section. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/531">#531</a>)</li><li>Added an example showing topology optimization. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/531">#531</a>)</li><li>Various typo fixes. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/574">#574</a>)</li><li>Fix broken links. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/583">#583</a>)</li></ul></li></ul><h2 id="[v0.3.10](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.10)-2022-12-11"><a class="docs-heading-anchor" href="#[v0.3.10](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.10)-2022-12-11"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.10">v0.3.10</a> - 2022-12-11</a><a id="[v0.3.10](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.10)-2022-12-11-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.10](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.10)-2022-12-11" title="Permalink"></a></h2><h3 id="Added-6"><a class="docs-heading-anchor" href="#Added-6">Added</a><a class="docs-heading-anchor-permalink" href="#Added-6" title="Permalink"></a></h3><ul><li>New functions <code>apply_local!</code> and <code>apply_assemble!</code> for applying constraints locally on the element level before assembling to the global system. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/528">#528</a>)</li><li>New functionality to renumber DoFs by fields or by components. This is useful when you need the global matrix to be blocked. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/378">#378</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/545">#545</a>)</li><li>Functionality to renumber DoFs in DofHandler and ConstraintHandler simultaneously: <code>renumber!(dh::DofHandler, ch::ConstraintHandler, order)</code>. Previously renumbering had to be done <em>before</em> creating the ConstraintHandler since otherwise DoF numbers would be inconsistent. However, this was inconvenient in cases where the constraints impact the new DoF order permutation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/542">#542</a>)</li><li>The coupling between fields can now be specified when creating the global matrix with <code>create_sparsity_pattern</code> by passing a <code>Matrix{Bool}</code>. For example, in a problem with unknowns <code>(u, p)</code> and corresponding test functions <code>(v, q)</code>, if there is no coupling between <code>p</code> and <code>q</code> it is unnecessary to allocate entries in the global matrix corresponding to these DoFs. This can now be communicated to <code>create_sparsity_pattern</code> by passing the coupling matrix <code>[true true; true false]</code> in the keyword argument <code>coupling</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/544">#544</a>)</li></ul><h3 id="Changed-3"><a class="docs-heading-anchor" href="#Changed-3">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-3" title="Permalink"></a></h3><ul><li>Runtime and allocations for application of boundary conditions in <code>apply!</code> and <code>apply_zero!</code> have been improved. As a result, the <code>strategy</code> keyword argument is obsolete and thus ignored. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/489">#489</a>)</li><li>The internal representation of <code>Dirichlet</code> boundary conditions and <code>AffineConstraint</code>s in the <code>ConstraintHandler</code> have been unified. As a result, conflicting constraints on DoFs are handled more consistently: the constraint added last to the <code>ConstraintHandler</code> now always override any previous constraints. Conflicting constraints could previously cause problems when a DoF where prescribed by both <code>Dirichlet</code> and <code>AffineConstraint</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/529">#529</a>)</li><li>Entries in local matrix/vector are now ignored in the assembly procedure. This allows, for example, using a dense local matrix <code>[a b; c d]</code> even if no entries exist in the global matrix for the <code>d</code> block, i.e. in <code>[A B; C D]</code> the <code>D</code> block is zero, and these global entries might not exist in the sparse matrix. (Such sparsity patterns can now be created by <code>create_sparsity_pattern</code>, see <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/544">#544</a>.) (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/543">#543</a>)</li></ul><h3 id="Fixed-5"><a class="docs-heading-anchor" href="#Fixed-5">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-5" title="Permalink"></a></h3><ul><li>Fix affine constraints with prescribed DoFs in the right-hand-side. In particular, DoFs that are prescribed by just an inhomogeneity are now handled correctly, and nested affine constraints now give an error instead of silently giving the wrong result. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/530">#530</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/535">#535</a>)</li><li>Fixed internal inconsistency in edge ordering for 2nd order RefTetrahedron and RefCube. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/520">#520</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/523">#523</a>)</li></ul><h3 id="Other-improvements-6"><a class="docs-heading-anchor" href="#Other-improvements-6">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-6" title="Permalink"></a></h3><ul><li>Performance improvements:<ul><li>Reduced time and memory allocations in DoF distribution for <code>MixedDofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/533">#533</a>)</li><li>Reduced time and memory allocations reductions in <code>getcoordinates!</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/536">#536</a>)</li><li>Reduced time and memory allocations in affine constraint condensation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/537">#537</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/541">#541</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/550">#550</a>)</li></ul></li><li>Documentation improvements:<ul><li>Use <code>:static</code> scheduling for threaded <code>for</code>-loop (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/534">#534</a>)</li><li>Remove use of <code>@inbounds</code> (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/547">#547</a>)</li></ul></li><li>Unification of <code>create_sparsity_pattern</code> methods to remove code duplication between <code>DofHandler</code> and <code>MixedDofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/538">#538</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/540">#540</a>)</li></ul><h2 id="[v0.3.9](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.9)-2022-10-19"><a class="docs-heading-anchor" href="#[v0.3.9](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.9)-2022-10-19"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.9">v0.3.9</a> - 2022-10-19</a><a id="[v0.3.9](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.9)-2022-10-19-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.9](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.9)-2022-10-19" title="Permalink"></a></h2><h3 id="Added-7"><a class="docs-heading-anchor" href="#Added-7">Added</a><a class="docs-heading-anchor-permalink" href="#Added-7" title="Permalink"></a></h3><ul><li>New higher order function interpolations for triangles (<code>Lagrange{2,RefTetrahedron,3}</code>, <code>Lagrange{2,RefTetrahedron,4}</code>, and <code>Lagrange{2,RefTetrahedron,5}</code>). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/482">#482</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/512">#512</a>)</li><li>New Gaussian quadrature formula for triangles up to order 15. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/514">#514</a>)</li><li>Add debug mode for working with Ferrite internals. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/524">#524</a>)</li></ul><h3 id="Changed-4"><a class="docs-heading-anchor" href="#Changed-4">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-4" title="Permalink"></a></h3><ul><li>The default components to constrain in <code>Dirichlet</code> and <code>PeriodicDirichlet</code> have changed from component 1 to all components of the field. For scalar problems this has no effect. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/506">#506</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/509">#509</a>)</li></ul><h2 id="[v0.3.8](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.8)-2022-10-05"><a class="docs-heading-anchor" href="#[v0.3.8](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.8)-2022-10-05"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.8">v0.3.8</a> - 2022-10-05</a><a id="[v0.3.8](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.8)-2022-10-05-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.8](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.8)-2022-10-05" title="Permalink"></a></h2><h3 id="Added-8"><a class="docs-heading-anchor" href="#Added-8">Added</a><a class="docs-heading-anchor-permalink" href="#Added-8" title="Permalink"></a></h3><ul><li>Ferrite.jl now has a logo! (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/464">#464</a>)</li><li>New keyword argument <code>search_nneighbors::Int</code> in <code>PointEvalHandler</code> for specifying how many neighboring elements to consider in the kNN search. The default is still 3 (usually sufficient). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/466">#466</a>)</li><li>The IJV-assembler now support assembling non-square matrices. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/471">#471</a>)</li><li>Periodic boundary conditions have been reworked and generalized. It now supports arbitrary relations between the mirror and image boundaries (e.g. not only translations in x/y/z direction). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/478">#478</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/481">#481</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/496">#496</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/501">#501</a>)</li></ul><h3 id="Fixed-6"><a class="docs-heading-anchor" href="#Fixed-6">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-6" title="Permalink"></a></h3><ul><li>Fix <code>PointEvalHandler</code> when the first point is missing. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/466">#466</a>)</li><li>Fix the ordering of nodes on the face for <code>(Quadratic)Tetrahedron</code> cells. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/475">#475</a>)</li></ul><h3 id="Other-improvements-7"><a class="docs-heading-anchor" href="#Other-improvements-7">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-7" title="Permalink"></a></h3><ul><li>Many improvements to the documentation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/467">#467</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/473">#473</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/487">#487</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/494">#494</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/500">#500</a>)</li><li>Improved error messages in <code>reinit!</code> when number of geometric base functions and number of element coordinates mismatch. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/469">#469</a>)</li><li>Remove some unnecessary function parametrizations. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/503">#503</a>)</li><li>Remove some unnecessary allocations in grid coloring. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/505">#505</a>)</li><li>More efficient way of creating the sparsity pattern when using <code>AffineConstraints</code> and/or <code>PeriodicDirichlet</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/436">#436</a>)</li></ul><h2 id="[v0.3.7](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.7)-2022-07-05"><a class="docs-heading-anchor" href="#[v0.3.7](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.7)-2022-07-05"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.7">v0.3.7</a> - 2022-07-05</a><a id="[v0.3.7](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.7)-2022-07-05-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.7](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.7)-2022-07-05" title="Permalink"></a></h2><h3 id="Fixed-7"><a class="docs-heading-anchor" href="#Fixed-7">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-7" title="Permalink"></a></h3><ul><li>Fix tests for newer version of WriteVTK (no functional change). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/462">#462</a>)</li></ul><h3 id="Other-improvements-8"><a class="docs-heading-anchor" href="#Other-improvements-8">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-8" title="Permalink"></a></h3><ul><li>Various improvements to the heat equation example and the hyperelasticity example in the documentation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/460">#460</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/461">#461</a>)</li></ul><h2 id="[v0.3.6](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.6)-2022-06-30"><a class="docs-heading-anchor" href="#[v0.3.6](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.6)-2022-06-30"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.6">v0.3.6</a> - 2022-06-30</a><a id="[v0.3.6](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.6)-2022-06-30-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.6](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.6)-2022-06-30" title="Permalink"></a></h2><h3 id="Fixed-8"><a class="docs-heading-anchor" href="#Fixed-8">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-8" title="Permalink"></a></h3><ul><li>Fix a bug with <code>L2Projection</code> of mixed grid. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/456">#456</a>)</li></ul><h3 id="Other-improvements-9"><a class="docs-heading-anchor" href="#Other-improvements-9">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-9" title="Permalink"></a></h3><ul><li>Expanded manual section of Dirichlet BCs. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/458">#458</a>)</li></ul><h2 id="[v0.3.5](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.5)-2022-05-30"><a class="docs-heading-anchor" href="#[v0.3.5](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.5)-2022-05-30"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.5">v0.3.5</a> - 2022-05-30</a><a id="[v0.3.5](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.5)-2022-05-30-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.5](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.5)-2022-05-30" title="Permalink"></a></h2><h3 id="Added-9"><a class="docs-heading-anchor" href="#Added-9">Added</a><a class="docs-heading-anchor-permalink" href="#Added-9" title="Permalink"></a></h3><ul><li>Functionality for querying information about the grid topology (e.g. neighboring cells, boundaries, ...). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/363">#363</a>)</li></ul><h3 id="Fixed-9"><a class="docs-heading-anchor" href="#Fixed-9">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-9" title="Permalink"></a></h3><ul><li>Fix application of boundary conditions when combining RHSData and affine constraints. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/431">#431</a>)</li></ul><h2 id="[v0.3.4](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.4)-2022-02-25"><a class="docs-heading-anchor" href="#[v0.3.4](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.4)-2022-02-25"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.4">v0.3.4</a> - 2022-02-25</a><a id="[v0.3.4](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.4)-2022-02-25-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.4](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.4)-2022-02-25" title="Permalink"></a></h2><h3 id="Added-10"><a class="docs-heading-anchor" href="#Added-10">Added</a><a class="docs-heading-anchor-permalink" href="#Added-10" title="Permalink"></a></h3><ul><li>Affine (linear) constraints between degrees-of-freedom. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/401">#401</a>)</li><li>Periodic Dirichlet boundary conditions. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/418">#418</a>)</li><li>Evaluation of arbitrary quantities in FE space. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/425">#425</a>)</li></ul><h3 id="Changed-5"><a class="docs-heading-anchor" href="#Changed-5">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-5" title="Permalink"></a></h3><ul><li>Interpolation(s) and the quadrature rule are now stored as part of the <code>CellValues</code> structs (<code>cv.func_interp</code>, <code>cv.geo_interp</code>, and <code>cv.qr</code>). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/428">#428</a>)</li></ul><h2 id="[v0.3.3](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.3)-2022-02-04"><a class="docs-heading-anchor" href="#[v0.3.3](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.3)-2022-02-04"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.3">v0.3.3</a> - 2022-02-04</a><a id="[v0.3.3](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.3)-2022-02-04-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.3](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.3)-2022-02-04" title="Permalink"></a></h2><h3 id="Changed-6"><a class="docs-heading-anchor" href="#Changed-6">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-6" title="Permalink"></a></h3><ul><li>Verify user input in various functions to eliminate possible out-of-bounds accesses. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/407">#407</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/411">#411</a>)</li></ul><h2 id="[v0.3.2](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.2)-2022-01-18"><a class="docs-heading-anchor" href="#[v0.3.2](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.2)-2022-01-18"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.2">v0.3.2</a> - 2022-01-18</a><a id="[v0.3.2](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.2)-2022-01-18-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.2](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.2)-2022-01-18" title="Permalink"></a></h2><h3 id="Added-11"><a class="docs-heading-anchor" href="#Added-11">Added</a><a class="docs-heading-anchor-permalink" href="#Added-11" title="Permalink"></a></h3><ul><li>Support for new interpolation types: <code>DiscontinuousLagrange</code>, <code>BubbleEnrichedLagrange</code>, and <code>CrouzeixRaviart</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/352">#352</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/392">#392</a>)</li></ul><h3 id="Changed-7"><a class="docs-heading-anchor" href="#Changed-7">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-7" title="Permalink"></a></h3><ul><li>Julia version 1.0 is no longer supported for Ferrite versions >= 0.3.2. Use Julia version >= 1.6. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/385">#385</a>)</li><li>Quadrature data for L2 projection can now be given as a matrix of size "number of elements" x "number of quadrature points per element". (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/386">#386</a>)</li><li>Projected values from L2 projection can now be exported directly to VTK. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/390">#390</a>)</li><li>Grid coloring can now act on a subset of cells. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/402">#402</a>)</li><li>Various functions related to cell values now use traits to make it easier to extend and reuse functionality in external code. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/404">#404</a>)</li></ul><h3 id="Fixed-10"><a class="docs-heading-anchor" href="#Fixed-10">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-10" title="Permalink"></a></h3><ul><li>Exporting tensors to VTK now use correct names for the components. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/406">#406</a>)</li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Home</a><a class="docs-footer-nextpage" href="../tutorials/">Tutorials overview »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + end</code></pre></li></ul><h3 id="Fixed"><a class="docs-heading-anchor" href="#Fixed">Fixed</a><a id="Fixed-1"></a><a class="docs-heading-anchor-permalink" href="#Fixed" title="Permalink"></a></h3><ul><li><p>Benchmarks now work with master branch. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/751">#751</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/855">#855</a>)</p></li><li><p>Topology construction have been generalized to, in particular, fix construction for 1D and for wedge elements. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/641">#641</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/670">#670</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/684">#684</a>)</p></li></ul><h3 id="Other-improvements"><a class="docs-heading-anchor" href="#Other-improvements">Other improvements</a><a id="Other-improvements-1"></a><a class="docs-heading-anchor-permalink" href="#Other-improvements" title="Permalink"></a></h3><ul><li><p>Documentation:</p><ul><li>The documentation is now structured according to the Diataxis framework. There is now also clear separation between tutorials (for teaching) and code gallery (for showing off). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/737">#737</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/756">#756</a>)</li><li>New section in the developer documentation that describes the (new) reference shapes and their numbering scheme. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/688">#688</a>)</li></ul></li><li><p>Performance:</p><ul><li><code>Ferrite.transform!(grid, f)</code> (for transforming the node coordinates in the <code>grid</code> according to a function <code>f</code>) is now faster and allocates less. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/675">#675</a>)</li><li>Slight performance improvement in construction of <code>PointEvalHandler</code> (faster reverse coordinate lookup). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/719">#719</a>)</li><li>Various performance improvements to topology construction. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/753">#753</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/759">#759</a>)</li></ul></li><li><p>Internal improvements:</p><ul><li>The dof distribution interface have been updated to support higher order elements (future work). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/627">#627</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/732">#732</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/733">#733</a>)</li><li>The <code>AbstractGrid</code> and <code>AbstractDofHandler</code> interfaces are now used more consistently internally. This will help with the implementation of distributed grids and DofHandlers. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/655">#655</a>)</li><li>VTK export now uses the (geometric) interpolation directly when evaluating the finite element field instead of trying to work backwards how DoFs map to nodes. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/703">#703</a>)</li><li>Improved bounds checking in <code>assemble!</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/706">#706</a>)</li><li>Internal methods <code>Ferrite.value</code> and <code>Ferrite.derivative</code> for computing the value/gradient of <em>all</em> shape functions have been removed. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/720">#720</a>)</li><li><code>Ferrite.create_incidence_matrix</code> now work with any <code>AbstractGrid</code> (not just <code>Grid</code>). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/726">#726</a>)</li></ul></li></ul><h2 id="[v0.3.14](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.14)-2023-04-03"><a class="docs-heading-anchor" href="#[v0.3.14](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.14)-2023-04-03"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.14">v0.3.14</a> - 2023-04-03</a><a id="[v0.3.14](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.14)-2023-04-03-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.14](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.14)-2023-04-03" title="Permalink"></a></h2><h3 id="Added-2"><a class="docs-heading-anchor" href="#Added-2">Added</a><a class="docs-heading-anchor-permalink" href="#Added-2" title="Permalink"></a></h3><ul><li>Support reordering dofs of a <code>MixedDofHandler</code> by the built-in orderings <code>FieldWise</code> and <code>ComponentWise</code>. This includes support for reordering dofs of fields on subdomains. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/645">#645</a>)</li><li>Support specifying the coupling between fields in a <code>MixedDofHandler</code> when creating the sparsity pattern. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/650">#650</a>)</li><li>Support Metis dof reordering with coupling information for <code>MixedDofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/650">#650</a>)</li><li>Pretty printing for <code>MixedDofHandler</code> and <code>L2Projector</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/465">#465</a>)</li></ul><h3 id="Other-improvements-2"><a class="docs-heading-anchor" href="#Other-improvements-2">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-2" title="Permalink"></a></h3><ul><li>The <code>MixedDofHandler</code> have gone through a performance review (see <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/629">#629</a>) and now performs the same as <code>DofHandler</code>. This was part of the push to merge the two DoF handlers. Since <code>MixedDofHandler</code> is strictly more flexible, and now equally performant, it will replace <code>DofHandler</code> in the next breaking release. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/637">#637</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/639">#639</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/642">#642</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/643">#643</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/656">#656</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/660">#660</a>)</li></ul><h3 id="Internal-changes"><a class="docs-heading-anchor" href="#Internal-changes">Internal changes</a><a id="Internal-changes-1"></a><a class="docs-heading-anchor-permalink" href="#Internal-changes" title="Permalink"></a></h3><p>Changes listed here should not affect regular usage, but listed here in case you have been poking into Ferrite internals:</p><ul><li><code>Ferrite.ndim(dh, fieldname)</code> has been removed, use <code>Ferrite.getfielddim(dh, fieldname)</code> instead. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/658">#658</a>)</li><li><code>Ferrite.nfields(dh)</code> has been removed, use <code>length(Ferrite.getfieldnames(dh))</code> instead. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/444">#444</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/653">#653</a>)</li><li><code>getfielddims(::FieldHandler)</code> and <code>getfieldinterpolations(::FieldHandler)</code> have been removed (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/647">#647</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/659">#659</a>)</li></ul><h2 id="[v0.3.13](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.13)-2023-03-23"><a class="docs-heading-anchor" href="#[v0.3.13](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.13)-2023-03-23"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.13">v0.3.13</a> - 2023-03-23</a><a id="[v0.3.13](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.13)-2023-03-23-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.13](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.13)-2023-03-23" title="Permalink"></a></h2><h3 id="Added-3"><a class="docs-heading-anchor" href="#Added-3">Added</a><a class="docs-heading-anchor-permalink" href="#Added-3" title="Permalink"></a></h3><ul><li>Support for classical trilinear and triquadratic wedge elements. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/581">#581</a>)</li><li>Symmetric quadrature rules up to order 10 for prismatic elements. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/581">#581</a>)</li><li>Finer granulation of dof distribution, allowing to distribute different amounts of dofs per entity. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/581">#581</a>)</li></ul><h3 id="Fixed-2"><a class="docs-heading-anchor" href="#Fixed-2">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-2" title="Permalink"></a></h3><ul><li>Dof distribution for embedded elements. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/581">#581</a>)</li><li>Improve numerical accuracy in shape function evaluation for the <code>Lagrange{2,Tetrahedron,(3|4|5)}</code> interpolations. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/582">#582</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/633">#633</a>)</li></ul><h3 id="Other-improvements-3"><a class="docs-heading-anchor" href="#Other-improvements-3">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-3" title="Permalink"></a></h3><ul><li>Documentation:<ul><li>New "Developer documentation" section in the manual for documenting Ferrite.jl internals and developer tools. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/611">#611</a>)</li><li>Fix a bug in constraint computation in Stoke's flow example. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/614">#614</a>)</li></ul></li><li>Performance:<ul><li>Benchmarking infrastructure to help tracking performance changes. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/388">#388</a>)</li><li>Performance improvements for various accessor functions for <code>MixedDofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/621">#621</a>)</li></ul></li></ul><h3 id="Internal-changes-2"><a class="docs-heading-anchor" href="#Internal-changes-2">Internal changes</a><a class="docs-heading-anchor-permalink" href="#Internal-changes-2" title="Permalink"></a></h3><ul><li>To clarify the dof management <code>vertices(ip)</code>, <code>edges(ip)</code> and <code>faces(ip)</code> has been deprecated in favor of <code>vertexdof_indices(ip)</code>, <code>edgedof_indices(ip)</code> and <code>facedof_indices(ip)</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/581">#581</a>)</li><li>Duplicate grid representation has been removed from the <code>MixedDofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/577">#577</a>)</li></ul><h2 id="[v0.3.12](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.12)-2023-02-28"><a class="docs-heading-anchor" href="#[v0.3.12](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.12)-2023-02-28"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.12">v0.3.12</a> - 2023-02-28</a><a id="[v0.3.12](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.12)-2023-02-28-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.12](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.12)-2023-02-28" title="Permalink"></a></h2><h3 id="Added-4"><a class="docs-heading-anchor" href="#Added-4">Added</a><a class="docs-heading-anchor-permalink" href="#Added-4" title="Permalink"></a></h3><ul><li>Added a basic <code>show</code> method for assemblers. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/598">#598</a>)</li></ul><h3 id="Fixed-3"><a class="docs-heading-anchor" href="#Fixed-3">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-3" title="Permalink"></a></h3><ul><li>Fix an issue in constraint application of <code>Symmetric</code>-wrapped sparse matrices (i.e. obtained from <code>create_symmatric_sparsity_pattern</code>). In particular, <code>apply!(K::Symmetric, f, ch)</code> would incorrectly modify <code>f</code> if any of the constraints were inhomogeneous. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/592">#592</a>)</li><li>Properly disable the Metis extension on Julia 1.9 instead of causing precompilation errors. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/588">#588</a>)</li><li>Fix adding Dirichlet boundary conditions on nodes when using MixedDofHandler. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/593">#593</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/594">#594</a>)</li><li>Fix accidentally slow implementation of <code>show</code> for <code>Grid</code>s. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/599">#599</a>)</li><li>Fixes to topology functionality. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/453">#453</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/518">#518</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/455">#455</a>)</li><li>Fix grid coloring for cell sets with 0 or 1 cells. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/600">#600</a>)</li></ul><h3 id="Other-improvements-4"><a class="docs-heading-anchor" href="#Other-improvements-4">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-4" title="Permalink"></a></h3><ul><li>Documentation improvements:<ul><li>Simplications and clarifications to hyperelasticity example. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/591">#591</a>)</li><li>Remove duplicate docstring entry for <code>vtk_point_data</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/602">#602</a>)</li><li>Update documentation about initial conditions. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/601">#601</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/604">#604</a>)</li></ul></li></ul><h2 id="[v0.3.11](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.11)-2023-01-17"><a class="docs-heading-anchor" href="#[v0.3.11](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.11)-2023-01-17"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.11">v0.3.11</a> - 2023-01-17</a><a id="[v0.3.11](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.11)-2023-01-17-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.11](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.11)-2023-01-17" title="Permalink"></a></h2><h3 id="Added-5"><a class="docs-heading-anchor" href="#Added-5">Added</a><a class="docs-heading-anchor-permalink" href="#Added-5" title="Permalink"></a></h3><ul><li><a href="https://github.com/JuliaSparse/Metis.jl">Metis.jl</a> extension for fill-reducing DoF permutation. This uses Julias new package extension mechanism (requires Julia 1.10) to support a new DoF renumbering order <code>DofOrder.Ext{Metis}()</code> that can be passed to <code>renumber!</code> to renumber DoFs using the Metis.jl library. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/393">#393</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/549">#549</a>)</li><li><a href="https://github.com/JuliaArrays/BlockArrays.jl">BlockArrays.jl</a> extension for creating a globally blocked system matrix. <code>create_sparsity_pattern(BlockMatrix, dh, ch; kwargs...)</code> return a matrix that is blocked by field (requires DoFs to be (re)numbered by field, i.e. <code>renumber!(dh, DofOrder.FieldWise())</code>). For custom blocking it is possible to pass an uninitialized <code>BlockMatrix</code> with the correct block sizes (see <code>BlockArrays.jl</code> docs). This functionality is useful for e.g. special solvers where individual blocks need to be extracted. Requires Julia version 1.9 or above. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/567">#567</a>)</li><li>New function <code>apply_analytical!</code> for setting the values of the degrees of freedom for a specific field according to a spatial function <code>f(x)</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/532">#532</a>)</li><li>New cache struct <code>CellCache</code> to be used when iterating over the cells in a grid or DoF handler. <code>CellCache</code> caches nodes, coordinates, and DoFs, for the cell. The cache <code>cc</code> can be re-initialized for a new cell index <code>ci</code> by calling <code>reinit!(cc, ci)</code>. This can be used as an alternative to <code>CellIterator</code> when more control over which element to loop over is needed. See documentation for <code>CellCache</code> for more information. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/546">#546</a>)</li><li>It is now possible to create the sparsity pattern without constrained entries (they will be zeroed out later anyway) by passing <code>keep_constrained=false</code> to <code>create_sparsity_pattern</code>. This naturally only works together with local condensation of constraints since there won't be space allocated in the global matrix for the full (i.e. "non-condensed") element matrix. Creating the matrix without constrained entries reduces the memory footprint, but unless a significant amount of DoFs are constrained (e.g. high mesh resolution at a boundary) the savings are negligible. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/539">#539</a>)</li></ul><h3 id="Changed-2"><a class="docs-heading-anchor" href="#Changed-2">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-2" title="Permalink"></a></h3><ul><li><code>ConstraintHandler</code>: <code>update!</code> is now called implicitly in <code>close!</code>. This was easy to miss, and somewhat of a strange requirement when solving problems without time stepping. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/459">#459</a>)</li><li>The function for computing the inhomogeneity in a <code>Dirichlet</code> constraint can now be specified as either <code>f(x)</code> or <code>f(x, t)</code>, where <code>x</code> is the spatial coordinate and <code>t</code> the time. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/459">#459</a>)</li><li>The elements of a <code>CellIterator</code> are now <code>CellCache</code> instead of the iterator itself, which was confusing in some cases. This change does not affect typical user code. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/546">#546</a>)</li></ul><h3 id="Deprecated-2"><a class="docs-heading-anchor" href="#Deprecated-2">Deprecated</a><a class="docs-heading-anchor-permalink" href="#Deprecated-2" title="Permalink"></a></h3><ul><li>Adding fields to a DoF handler with <code>push!(dh, ...)</code> has been deprecated in favor of <code>add!(dh, ...)</code>. This is to make it consistent with how constraints are added to a constraint handler. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/578">#578</a>)</li></ul><h3 id="Fixed-4"><a class="docs-heading-anchor" href="#Fixed-4">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-4" title="Permalink"></a></h3><ul><li>Fix <code>shape_value</code> for the linear, discontinuous Lagrange interpolation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/553">#553</a>)</li><li>Fix <code>reference_coordinate</code> dispatch for discontinuous Lagrange interpolations. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/559">#559</a>)</li><li>Fix <code>show(::Grid)</code> for custom cell types. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/570">#570</a>)</li><li>Fix <code>apply_zero!(Δa, ch)</code> when using inhomogeneous affine constraints (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/575">#575</a>)</li></ul><h3 id="Other-improvements-5"><a class="docs-heading-anchor" href="#Other-improvements-5">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-5" title="Permalink"></a></h3><ul><li>Internal changes defining a new global matrix/vector "interface". These changes make it easy to enable more array types (e.g. <code>BlockMatrix</code> support added in this release) and solvers in the future. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/562">#562</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/571">#571</a>)</li><li>Performance improvements:<ul><li>Reduced time and memory allocations for global sparse matrix creation (Julia >= 1.10). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/563">#563</a>)</li></ul></li><li>Documentation improvements:<ul><li>Added an overview of the Examples section. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/531">#531</a>)</li><li>Added an example showing topology optimization. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/531">#531</a>)</li><li>Various typo fixes. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/574">#574</a>)</li><li>Fix broken links. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/583">#583</a>)</li></ul></li></ul><h2 id="[v0.3.10](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.10)-2022-12-11"><a class="docs-heading-anchor" href="#[v0.3.10](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.10)-2022-12-11"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.10">v0.3.10</a> - 2022-12-11</a><a id="[v0.3.10](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.10)-2022-12-11-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.10](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.10)-2022-12-11" title="Permalink"></a></h2><h3 id="Added-6"><a class="docs-heading-anchor" href="#Added-6">Added</a><a class="docs-heading-anchor-permalink" href="#Added-6" title="Permalink"></a></h3><ul><li>New functions <code>apply_local!</code> and <code>apply_assemble!</code> for applying constraints locally on the element level before assembling to the global system. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/528">#528</a>)</li><li>New functionality to renumber DoFs by fields or by components. This is useful when you need the global matrix to be blocked. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/378">#378</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/545">#545</a>)</li><li>Functionality to renumber DoFs in DofHandler and ConstraintHandler simultaneously: <code>renumber!(dh::DofHandler, ch::ConstraintHandler, order)</code>. Previously renumbering had to be done <em>before</em> creating the ConstraintHandler since otherwise DoF numbers would be inconsistent. However, this was inconvenient in cases where the constraints impact the new DoF order permutation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/542">#542</a>)</li><li>The coupling between fields can now be specified when creating the global matrix with <code>create_sparsity_pattern</code> by passing a <code>Matrix{Bool}</code>. For example, in a problem with unknowns <code>(u, p)</code> and corresponding test functions <code>(v, q)</code>, if there is no coupling between <code>p</code> and <code>q</code> it is unnecessary to allocate entries in the global matrix corresponding to these DoFs. This can now be communicated to <code>create_sparsity_pattern</code> by passing the coupling matrix <code>[true true; true false]</code> in the keyword argument <code>coupling</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/544">#544</a>)</li></ul><h3 id="Changed-3"><a class="docs-heading-anchor" href="#Changed-3">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-3" title="Permalink"></a></h3><ul><li>Runtime and allocations for application of boundary conditions in <code>apply!</code> and <code>apply_zero!</code> have been improved. As a result, the <code>strategy</code> keyword argument is obsolete and thus ignored. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/489">#489</a>)</li><li>The internal representation of <code>Dirichlet</code> boundary conditions and <code>AffineConstraint</code>s in the <code>ConstraintHandler</code> have been unified. As a result, conflicting constraints on DoFs are handled more consistently: the constraint added last to the <code>ConstraintHandler</code> now always override any previous constraints. Conflicting constraints could previously cause problems when a DoF where prescribed by both <code>Dirichlet</code> and <code>AffineConstraint</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/529">#529</a>)</li><li>Entries in local matrix/vector are now ignored in the assembly procedure. This allows, for example, using a dense local matrix <code>[a b; c d]</code> even if no entries exist in the global matrix for the <code>d</code> block, i.e. in <code>[A B; C D]</code> the <code>D</code> block is zero, and these global entries might not exist in the sparse matrix. (Such sparsity patterns can now be created by <code>create_sparsity_pattern</code>, see <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/544">#544</a>.) (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/543">#543</a>)</li></ul><h3 id="Fixed-5"><a class="docs-heading-anchor" href="#Fixed-5">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-5" title="Permalink"></a></h3><ul><li>Fix affine constraints with prescribed DoFs in the right-hand-side. In particular, DoFs that are prescribed by just an inhomogeneity are now handled correctly, and nested affine constraints now give an error instead of silently giving the wrong result. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/530">#530</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/535">#535</a>)</li><li>Fixed internal inconsistency in edge ordering for 2nd order RefTetrahedron and RefCube. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/520">#520</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/523">#523</a>)</li></ul><h3 id="Other-improvements-6"><a class="docs-heading-anchor" href="#Other-improvements-6">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-6" title="Permalink"></a></h3><ul><li>Performance improvements:<ul><li>Reduced time and memory allocations in DoF distribution for <code>MixedDofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/533">#533</a>)</li><li>Reduced time and memory allocations reductions in <code>getcoordinates!</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/536">#536</a>)</li><li>Reduced time and memory allocations in affine constraint condensation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/537">#537</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/541">#541</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/550">#550</a>)</li></ul></li><li>Documentation improvements:<ul><li>Use <code>:static</code> scheduling for threaded <code>for</code>-loop (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/534">#534</a>)</li><li>Remove use of <code>@inbounds</code> (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/547">#547</a>)</li></ul></li><li>Unification of <code>create_sparsity_pattern</code> methods to remove code duplication between <code>DofHandler</code> and <code>MixedDofHandler</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/538">#538</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/540">#540</a>)</li></ul><h2 id="[v0.3.9](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.9)-2022-10-19"><a class="docs-heading-anchor" href="#[v0.3.9](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.9)-2022-10-19"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.9">v0.3.9</a> - 2022-10-19</a><a id="[v0.3.9](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.9)-2022-10-19-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.9](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.9)-2022-10-19" title="Permalink"></a></h2><h3 id="Added-7"><a class="docs-heading-anchor" href="#Added-7">Added</a><a class="docs-heading-anchor-permalink" href="#Added-7" title="Permalink"></a></h3><ul><li>New higher order function interpolations for triangles (<code>Lagrange{2,RefTetrahedron,3}</code>, <code>Lagrange{2,RefTetrahedron,4}</code>, and <code>Lagrange{2,RefTetrahedron,5}</code>). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/482">#482</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/512">#512</a>)</li><li>New Gaussian quadrature formula for triangles up to order 15. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/514">#514</a>)</li><li>Add debug mode for working with Ferrite internals. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/524">#524</a>)</li></ul><h3 id="Changed-4"><a class="docs-heading-anchor" href="#Changed-4">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-4" title="Permalink"></a></h3><ul><li>The default components to constrain in <code>Dirichlet</code> and <code>PeriodicDirichlet</code> have changed from component 1 to all components of the field. For scalar problems this has no effect. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/506">#506</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/509">#509</a>)</li></ul><h2 id="[v0.3.8](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.8)-2022-10-05"><a class="docs-heading-anchor" href="#[v0.3.8](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.8)-2022-10-05"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.8">v0.3.8</a> - 2022-10-05</a><a id="[v0.3.8](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.8)-2022-10-05-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.8](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.8)-2022-10-05" title="Permalink"></a></h2><h3 id="Added-8"><a class="docs-heading-anchor" href="#Added-8">Added</a><a class="docs-heading-anchor-permalink" href="#Added-8" title="Permalink"></a></h3><ul><li>Ferrite.jl now has a logo! (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/464">#464</a>)</li><li>New keyword argument <code>search_nneighbors::Int</code> in <code>PointEvalHandler</code> for specifying how many neighboring elements to consider in the kNN search. The default is still 3 (usually sufficient). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/466">#466</a>)</li><li>The IJV-assembler now support assembling non-square matrices. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/471">#471</a>)</li><li>Periodic boundary conditions have been reworked and generalized. It now supports arbitrary relations between the mirror and image boundaries (e.g. not only translations in x/y/z direction). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/478">#478</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/481">#481</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/496">#496</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/501">#501</a>)</li></ul><h3 id="Fixed-6"><a class="docs-heading-anchor" href="#Fixed-6">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-6" title="Permalink"></a></h3><ul><li>Fix <code>PointEvalHandler</code> when the first point is missing. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/466">#466</a>)</li><li>Fix the ordering of nodes on the face for <code>(Quadratic)Tetrahedron</code> cells. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/475">#475</a>)</li></ul><h3 id="Other-improvements-7"><a class="docs-heading-anchor" href="#Other-improvements-7">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-7" title="Permalink"></a></h3><ul><li>Many improvements to the documentation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/467">#467</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/473">#473</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/487">#487</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/494">#494</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/500">#500</a>)</li><li>Improved error messages in <code>reinit!</code> when number of geometric base functions and number of element coordinates mismatch. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/469">#469</a>)</li><li>Remove some unnecessary function parametrizations. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/503">#503</a>)</li><li>Remove some unnecessary allocations in grid coloring. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/505">#505</a>)</li><li>More efficient way of creating the sparsity pattern when using <code>AffineConstraints</code> and/or <code>PeriodicDirichlet</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/436">#436</a>)</li></ul><h2 id="[v0.3.7](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.7)-2022-07-05"><a class="docs-heading-anchor" href="#[v0.3.7](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.7)-2022-07-05"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.7">v0.3.7</a> - 2022-07-05</a><a id="[v0.3.7](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.7)-2022-07-05-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.7](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.7)-2022-07-05" title="Permalink"></a></h2><h3 id="Fixed-7"><a class="docs-heading-anchor" href="#Fixed-7">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-7" title="Permalink"></a></h3><ul><li>Fix tests for newer version of WriteVTK (no functional change). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/462">#462</a>)</li></ul><h3 id="Other-improvements-8"><a class="docs-heading-anchor" href="#Other-improvements-8">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-8" title="Permalink"></a></h3><ul><li>Various improvements to the heat equation example and the hyperelasticity example in the documentation. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/460">#460</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/461">#461</a>)</li></ul><h2 id="[v0.3.6](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.6)-2022-06-30"><a class="docs-heading-anchor" href="#[v0.3.6](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.6)-2022-06-30"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.6">v0.3.6</a> - 2022-06-30</a><a id="[v0.3.6](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.6)-2022-06-30-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.6](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.6)-2022-06-30" title="Permalink"></a></h2><h3 id="Fixed-8"><a class="docs-heading-anchor" href="#Fixed-8">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-8" title="Permalink"></a></h3><ul><li>Fix a bug with <code>L2Projection</code> of mixed grid. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/456">#456</a>)</li></ul><h3 id="Other-improvements-9"><a class="docs-heading-anchor" href="#Other-improvements-9">Other improvements</a><a class="docs-heading-anchor-permalink" href="#Other-improvements-9" title="Permalink"></a></h3><ul><li>Expanded manual section of Dirichlet BCs. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/458">#458</a>)</li></ul><h2 id="[v0.3.5](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.5)-2022-05-30"><a class="docs-heading-anchor" href="#[v0.3.5](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.5)-2022-05-30"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.5">v0.3.5</a> - 2022-05-30</a><a id="[v0.3.5](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.5)-2022-05-30-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.5](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.5)-2022-05-30" title="Permalink"></a></h2><h3 id="Added-9"><a class="docs-heading-anchor" href="#Added-9">Added</a><a class="docs-heading-anchor-permalink" href="#Added-9" title="Permalink"></a></h3><ul><li>Functionality for querying information about the grid topology (e.g. neighboring cells, boundaries, ...). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/363">#363</a>)</li></ul><h3 id="Fixed-9"><a class="docs-heading-anchor" href="#Fixed-9">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-9" title="Permalink"></a></h3><ul><li>Fix application of boundary conditions when combining RHSData and affine constraints. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/431">#431</a>)</li></ul><h2 id="[v0.3.4](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.4)-2022-02-25"><a class="docs-heading-anchor" href="#[v0.3.4](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.4)-2022-02-25"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.4">v0.3.4</a> - 2022-02-25</a><a id="[v0.3.4](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.4)-2022-02-25-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.4](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.4)-2022-02-25" title="Permalink"></a></h2><h3 id="Added-10"><a class="docs-heading-anchor" href="#Added-10">Added</a><a class="docs-heading-anchor-permalink" href="#Added-10" title="Permalink"></a></h3><ul><li>Affine (linear) constraints between degrees-of-freedom. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/401">#401</a>)</li><li>Periodic Dirichlet boundary conditions. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/418">#418</a>)</li><li>Evaluation of arbitrary quantities in FE space. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/425">#425</a>)</li></ul><h3 id="Changed-5"><a class="docs-heading-anchor" href="#Changed-5">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-5" title="Permalink"></a></h3><ul><li>Interpolation(s) and the quadrature rule are now stored as part of the <code>CellValues</code> structs (<code>cv.func_interp</code>, <code>cv.geo_interp</code>, and <code>cv.qr</code>). (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/428">#428</a>)</li></ul><h2 id="[v0.3.3](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.3)-2022-02-04"><a class="docs-heading-anchor" href="#[v0.3.3](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.3)-2022-02-04"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.3">v0.3.3</a> - 2022-02-04</a><a id="[v0.3.3](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.3)-2022-02-04-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.3](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.3)-2022-02-04" title="Permalink"></a></h2><h3 id="Changed-6"><a class="docs-heading-anchor" href="#Changed-6">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-6" title="Permalink"></a></h3><ul><li>Verify user input in various functions to eliminate possible out-of-bounds accesses. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/407">#407</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/411">#411</a>)</li></ul><h2 id="[v0.3.2](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.2)-2022-01-18"><a class="docs-heading-anchor" href="#[v0.3.2](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.2)-2022-01-18"><a href="https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.2">v0.3.2</a> - 2022-01-18</a><a id="[v0.3.2](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.2)-2022-01-18-1"></a><a class="docs-heading-anchor-permalink" href="#[v0.3.2](https://github.com/Ferrite-FEM/Ferrite.jl/releases/tag/v0.3.2)-2022-01-18" title="Permalink"></a></h2><h3 id="Added-11"><a class="docs-heading-anchor" href="#Added-11">Added</a><a class="docs-heading-anchor-permalink" href="#Added-11" title="Permalink"></a></h3><ul><li>Support for new interpolation types: <code>DiscontinuousLagrange</code>, <code>BubbleEnrichedLagrange</code>, and <code>CrouzeixRaviart</code>. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/352">#352</a>, <a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/392">#392</a>)</li></ul><h3 id="Changed-7"><a class="docs-heading-anchor" href="#Changed-7">Changed</a><a class="docs-heading-anchor-permalink" href="#Changed-7" title="Permalink"></a></h3><ul><li>Julia version 1.0 is no longer supported for Ferrite versions >= 0.3.2. Use Julia version >= 1.6. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/385">#385</a>)</li><li>Quadrature data for L2 projection can now be given as a matrix of size "number of elements" x "number of quadrature points per element". (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/386">#386</a>)</li><li>Projected values from L2 projection can now be exported directly to VTK. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/390">#390</a>)</li><li>Grid coloring can now act on a subset of cells. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/402">#402</a>)</li><li>Various functions related to cell values now use traits to make it easier to extend and reuse functionality in external code. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/404">#404</a>)</li></ul><h3 id="Fixed-10"><a class="docs-heading-anchor" href="#Fixed-10">Fixed</a><a class="docs-heading-anchor-permalink" href="#Fixed-10" title="Permalink"></a></h3><ul><li>Exporting tensors to VTK now use correct names for the components. (<a href="https://github.com/Ferrite-FEM/Ferrite.jl/issues/406">#406</a>)</li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Home</a><a class="docs-footer-nextpage" href="../tutorials/">Tutorials overview »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/cited-literature/index.html b/dev/cited-literature/index.html index d48d6c0ee5..aef9166d04 100644 --- a/dev/cited-literature/index.html +++ b/dev/cited-literature/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Cited literature · Ferrite.jl</title><meta name="title" content="Cited literature · Ferrite.jl"/><meta property="og:title" content="Cited literature · Ferrite.jl"/><meta property="twitter:title" content="Cited literature · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/cited-literature/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/cited-literature/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/cited-literature/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li class="is-active"><a class="tocitem" href>Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Cited literature</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Cited literature</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/cited-literature.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Cited-literature"><a class="docs-heading-anchor" href="#Cited-literature">Cited literature</a><a id="Cited-literature-1"></a><a class="docs-heading-anchor-permalink" href="#Cited-literature" title="Permalink"></a></h1><div class="citation canonical"><dl><dt>[1]</dt><dd><div id="Hol">G. A. Holzapfel. <em>Nonlinear Solid Mechanics: A Continuum Approach for Engineering</em> (Wiley, Chichester ; New York, 2000).</div></dd><dt>[2]</dt><dd><div id="SimMie">J. Simo and C. Miehe. <a href="https://www.sciencedirect.com/science/article/pii/004578259290170O"><em>Associative coupled thermoplasticity at finite strains: Formulation, numerical analysis and implementation</em></a>. <a href="https://doi.org/10.1016/0045-7825(92)90170-O">Computer Methods in Applied Mechanics and Engineering <strong>98</strong>, 41–104</a> (1992).</div></dd><dt>[3]</dt><dd><div id="Mu">L. Mu, J. Wang, Y. Wang and X. Ye. <a href="https://www.sciencedirect.com/science/article/pii/S0377042713002999"><em>Interior penalty discontinuous Galerkin method on very general polygonal and polyhedral meshes</em></a>. <a href="https://doi.org/10.1016/j.cam.2013.06.003">Journal of Computational and Applied Mathematics <strong>255</strong>, 432–440</a> (2014).</div></dd><dt>[4]</dt><dd><div id="Cockburn">D. N. Arnold, F. Brezzi, B. Cockburn and L. D. Marini. <a href="http://www.jstor.org/stable/4101034"><em>Unified Analysis of Discontinuous Galerkin Methods for Elliptic Problems</em></a>. SIAM Journal on Numerical Analysis <strong>39</strong>, 1749–1779 (2002). Accessed on Dec 20, 2023.</div></dd><dt>[5]</dt><dd><div id="Kirby2017">R. C. Kirby. <a href="https://doi.org/10.48550/arXiv.1706.09017"><em>A general approach to transforming finite elements</em></a> (2017), <a href="https://arxiv.org/abs/1706.09017">arXiv:1706.09017 [math.NA]</a>.</div></dd><dt>[6]</dt><dd><div id="Dun">D. Dunavant. <a href="https://onlinelibrary.wiley.com/doi/abs/10.1002/nme.1620210612"><em>High degree efficient symmetrical Gaussian quadrature rules for the triangle</em></a>. <a href="https://doi.org/10.1002/nme.1620210612">International journal for numerical methods in engineering <strong>21</strong>, 1129–1148</a> (1985).</div></dd><dt>[7]</dt><dd><div id="Keast">P. Keast. <a href="https://www.sciencedirect.com/science/article/pii/0045782586900599"><em>Moderate-degree tetrahedral quadrature formulas</em></a>. <a href="https://doi.org/10.1016/0045-7825(86)90059-9">Computer methods in applied mechanics and engineering <strong>55</strong>, 339–348</a> (1986).</div></dd><dt>[8]</dt><dd><div id="WitVin">F. D. Witherden and P. E. Vincent. <em>On the identification of symmetric quadrature rules for finite element methods</em>. Computers & Mathematics with Applications <strong>69</strong>, 1232–1241 (2015).</div></dd><dt>[9]</dt><dd><div id="CroRav">M. Crouzeix and P.-A. Raviart. <em>Conforming and nonconforming finite element methods for solving the stationary Stokes equations I</em>. Revue française d'automatique informatique recherche opérationnelle. Mathématique <strong>7</strong>, 33–75 (1973).</div></dd><dt>[10]</dt><dd><div id="RanTur">R. Rannacher and S. Turek. <em>Simple nonconforming quadrilateral Stokes element</em>. Numerical Methods for Partial Differential Equations <strong>8</strong>, 97–111 (1992).</div></dd><dt>[11]</dt><dd><div id="Turcksin2016">B. Turcksin, M. Kronbichler and W. Bangerth. <a href="https://doi.org/10.1145/2851488"><em>WorkStream – A Design Pattern for Multicore-Enabled Finite Element Computations</em></a>. <a href="https://doi.org/10.1145/2851488">ACM Trans. Math. Softw. <strong>43</strong></a> (2016).</div></dd><dt>[12]</dt><dd><div id="Cenanovic2017">M. Cenanovic. <em>Finite element methods for surface problems</em>. Ph.D. Thesis, Jönköping University, School of Engineering (2017).</div></dd><dt>[13]</dt><dd><div id="Scroggs2022">M. W. Scroggs, J. S. Dokken, C. N. Richardson and G. N. Wells. <a href="https://doi.org/10.1145/3524456"><em>Construction of Arbitrary Order Finite Element Degree-of-Freedom Maps on Polygonal and Polyhedral Cell Meshes</em></a>. <a href="https://doi.org/10.1145/3524456">ACM Trans. Math. Softw. <strong>48</strong></a> (2022).</div></dd><dt>[14]</dt><dd><div id="JanHacJun2019regularizedthermotopopt">D. R. Jantos, K. Hackl and P. Junker. <a href="https://doi.org/10.1002/nme.5988"><em>An accurate and fast regularization approach to thermodynamic topology optimization</em></a>. <a href="https://doi.org/10.1002/nme.5988">International Journal for Numerical Methods in Engineering <strong>117</strong>, 991–1017</a> (2019).</div></dd><dt>[15]</dt><dd><div id="BlaJanJun2022taylorwlsthermotopopt">M. Blaszczyk, D. R. Jantos and P. Junker. <a href="https://doi.org/10.1016/j.cma.2022.114698"><em>Application of Taylor series combined with the weighted least square method to thermodynamic topology optimization</em></a>. <a href="https://doi.org/10.1016/j.cma.2022.114698">Computer Methods in Applied Mechanics and Engineering <strong>393</strong>, 114698</a> (2022).</div></dd></dl></div><!--<p>Workaround for https://github.com/JuliaDocs/DocumenterCitations.jl/issues/39</p><ul><li>[<a href="#Turcksin2016">11</a>]</li><li>[<a href="#Cenanovic2017">12</a>]</li><li>[<a href="#Scroggs2022">13</a>]</li></ul>--></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../devdocs/">« Developer documentation</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Cited literature · Ferrite.jl</title><meta name="title" content="Cited literature · Ferrite.jl"/><meta property="og:title" content="Cited literature · Ferrite.jl"/><meta property="twitter:title" content="Cited literature · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/cited-literature/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/cited-literature/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/cited-literature/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li class="is-active"><a class="tocitem" href>Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Cited literature</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Cited literature</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/cited-literature.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Cited-literature"><a class="docs-heading-anchor" href="#Cited-literature">Cited literature</a><a id="Cited-literature-1"></a><a class="docs-heading-anchor-permalink" href="#Cited-literature" title="Permalink"></a></h1><div class="citation canonical"><dl><dt>[1]</dt><dd><div id="Hol">G. A. Holzapfel. <em>Nonlinear Solid Mechanics: A Continuum Approach for Engineering</em> (Wiley, Chichester ; New York, 2000).</div></dd><dt>[2]</dt><dd><div id="SimMie">J. Simo and C. Miehe. <a href="https://www.sciencedirect.com/science/article/pii/004578259290170O"><em>Associative coupled thermoplasticity at finite strains: Formulation, numerical analysis and implementation</em></a>. <a href="https://doi.org/10.1016/0045-7825(92)90170-O">Computer Methods in Applied Mechanics and Engineering <strong>98</strong>, 41–104</a> (1992).</div></dd><dt>[3]</dt><dd><div id="Mu">L. Mu, J. Wang, Y. Wang and X. Ye. <a href="https://www.sciencedirect.com/science/article/pii/S0377042713002999"><em>Interior penalty discontinuous Galerkin method on very general polygonal and polyhedral meshes</em></a>. <a href="https://doi.org/10.1016/j.cam.2013.06.003">Journal of Computational and Applied Mathematics <strong>255</strong>, 432–440</a> (2014).</div></dd><dt>[4]</dt><dd><div id="Cockburn">D. N. Arnold, F. Brezzi, B. Cockburn and L. D. Marini. <a href="http://www.jstor.org/stable/4101034"><em>Unified Analysis of Discontinuous Galerkin Methods for Elliptic Problems</em></a>. SIAM Journal on Numerical Analysis <strong>39</strong>, 1749–1779 (2002). Accessed on Dec 20, 2023.</div></dd><dt>[5]</dt><dd><div id="Kirby2017">R. C. Kirby. <a href="https://doi.org/10.48550/arXiv.1706.09017"><em>A general approach to transforming finite elements</em></a> (2017), <a href="https://arxiv.org/abs/1706.09017">arXiv:1706.09017 [math.NA]</a>.</div></dd><dt>[6]</dt><dd><div id="Dun">D. Dunavant. <a href="https://onlinelibrary.wiley.com/doi/abs/10.1002/nme.1620210612"><em>High degree efficient symmetrical Gaussian quadrature rules for the triangle</em></a>. <a href="https://doi.org/10.1002/nme.1620210612">International journal for numerical methods in engineering <strong>21</strong>, 1129–1148</a> (1985).</div></dd><dt>[7]</dt><dd><div id="Keast">P. Keast. <a href="https://www.sciencedirect.com/science/article/pii/0045782586900599"><em>Moderate-degree tetrahedral quadrature formulas</em></a>. <a href="https://doi.org/10.1016/0045-7825(86)90059-9">Computer methods in applied mechanics and engineering <strong>55</strong>, 339–348</a> (1986).</div></dd><dt>[8]</dt><dd><div id="WitVin">F. D. Witherden and P. E. Vincent. <em>On the identification of symmetric quadrature rules for finite element methods</em>. Computers & Mathematics with Applications <strong>69</strong>, 1232–1241 (2015).</div></dd><dt>[9]</dt><dd><div id="CroRav">M. Crouzeix and P.-A. Raviart. <em>Conforming and nonconforming finite element methods for solving the stationary Stokes equations I</em>. Revue française d'automatique informatique recherche opérationnelle. Mathématique <strong>7</strong>, 33–75 (1973).</div></dd><dt>[10]</dt><dd><div id="RanTur">R. Rannacher and S. Turek. <em>Simple nonconforming quadrilateral Stokes element</em>. Numerical Methods for Partial Differential Equations <strong>8</strong>, 97–111 (1992).</div></dd><dt>[11]</dt><dd><div id="Turcksin2016">B. Turcksin, M. Kronbichler and W. Bangerth. <a href="https://doi.org/10.1145/2851488"><em>WorkStream – A Design Pattern for Multicore-Enabled Finite Element Computations</em></a>. <a href="https://doi.org/10.1145/2851488">ACM Trans. Math. Softw. <strong>43</strong></a> (2016).</div></dd><dt>[12]</dt><dd><div id="Cenanovic2017">M. Cenanovic. <em>Finite element methods for surface problems</em>. Ph.D. Thesis, Jönköping University, School of Engineering (2017).</div></dd><dt>[13]</dt><dd><div id="Scroggs2022">M. W. Scroggs, J. S. Dokken, C. N. Richardson and G. N. Wells. <a href="https://doi.org/10.1145/3524456"><em>Construction of Arbitrary Order Finite Element Degree-of-Freedom Maps on Polygonal and Polyhedral Cell Meshes</em></a>. <a href="https://doi.org/10.1145/3524456">ACM Trans. Math. Softw. <strong>48</strong></a> (2022).</div></dd><dt>[14]</dt><dd><div id="JanHacJun2019regularizedthermotopopt">D. R. Jantos, K. Hackl and P. Junker. <a href="https://doi.org/10.1002/nme.5988"><em>An accurate and fast regularization approach to thermodynamic topology optimization</em></a>. <a href="https://doi.org/10.1002/nme.5988">International Journal for Numerical Methods in Engineering <strong>117</strong>, 991–1017</a> (2019).</div></dd><dt>[15]</dt><dd><div id="BlaJanJun2022taylorwlsthermotopopt">M. Blaszczyk, D. R. Jantos and P. Junker. <a href="https://doi.org/10.1016/j.cma.2022.114698"><em>Application of Taylor series combined with the weighted least square method to thermodynamic topology optimization</em></a>. <a href="https://doi.org/10.1016/j.cma.2022.114698">Computer Methods in Applied Mechanics and Engineering <strong>393</strong>, 114698</a> (2022).</div></dd></dl></div><!--<p>Workaround for https://github.com/JuliaDocs/DocumenterCitations.jl/issues/39</p><ul><li>[<a href="#Turcksin2016">11</a>]</li><li>[<a href="#Cenanovic2017">12</a>]</li><li>[<a href="#Scroggs2022">13</a>]</li></ul>--></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../devdocs/">« Developer documentation</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/devdocs/FEValues/index.html b/dev/devdocs/FEValues/index.html index 77158cb70f..5a3968ed53 100644 --- a/dev/devdocs/FEValues/index.html +++ b/dev/devdocs/FEValues/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>FEValues · Ferrite.jl</title><meta name="title" content="FEValues · Ferrite.jl"/><meta property="og:title" content="FEValues · Ferrite.jl"/><meta property="twitter:title" content="FEValues · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/FEValues/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/FEValues/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/FEValues/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>FEValues</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>FEValues</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/FEValues.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="devdocs-fevalues"><a class="docs-heading-anchor" href="#devdocs-fevalues">FEValues</a><a id="devdocs-fevalues-1"></a><a class="docs-heading-anchor-permalink" href="#devdocs-fevalues" title="Permalink"></a></h1><h2 id="Type-definitions"><a class="docs-heading-anchor" href="#Type-definitions">Type definitions</a><a id="Type-definitions-1"></a><a class="docs-heading-anchor-permalink" href="#Type-definitions" title="Permalink"></a></h2><ul><li><code>AbstractValues</code><ul><li><code>AbstractCellValues</code><ul><li><a href="../../reference/fevalues/#Ferrite.CellValues"><code>CellValues</code></a></li></ul></li><li><code>AbstractFacetValues</code><ul><li><a href="../../reference/fevalues/#Ferrite.FacetValues"><code>FacetValues</code></a></li><li><a href="#Ferrite.BCValues"><code>BCValues</code></a></li></ul></li><li><a href="../../reference/export/#Ferrite.PointValues"><code>PointValues</code></a></li><li><a href="../../reference/fevalues/#Ferrite.InterfaceValues"><code>InterfaceValues</code></a></li></ul></li></ul><h2 id="Internal-types"><a class="docs-heading-anchor" href="#Internal-types">Internal types</a><a id="Internal-types-1"></a><a class="docs-heading-anchor-permalink" href="#Internal-types" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.GeometryMapping" href="#Ferrite.GeometryMapping"><code>Ferrite.GeometryMapping</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">GeometryMapping{DiffOrder}(::Type{T}, ip_geo, qr::QuadratureRule)</code></pre><p>Create a <code>GeometryMapping</code> object which contains the geometric</p><ul><li>shape values</li><li>gradient values (if DiffOrder ≥ 1)</li><li>hessians values (if DiffOrder ≥ 2)</li></ul><p><code>T<:AbstractFloat</code> gives the numeric type of the values.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/GeometryMapping.jl#L20-L30">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.MappingValues" href="#Ferrite.MappingValues"><code>Ferrite.MappingValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">MappingValues(J, H)</code></pre><p>The mapping values are calculated based on a <code>geometric_mapping::GeometryMapping</code> along with the cell coordinates, and the stored jacobian, <code>J</code>, and potentially hessian, <code>H</code>, are used when mapping the <code>FunctionValues</code> to the current cell during <code>reinit!</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/GeometryMapping.jl#L1-L8">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FunctionValues" href="#Ferrite.FunctionValues"><code>Ferrite.FunctionValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">FunctionValues{DiffOrder}(::Type{T}, ip_fun, qr::QuadratureRule, ip_geo::VectorizedInterpolation)</code></pre><p>Create a <code>FunctionValues</code> object containing the shape values and gradients (up to order <code>DiffOrder</code>) for both the reference cell (precalculated) and the real cell (updated in <code>reinit!</code>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/FunctionValues.jl#L38-L43">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.BCValues" href="#Ferrite.BCValues"><code>Ferrite.BCValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">BCValues(func_interpol::Interpolation, geom_interpol::Interpolation, boundary_type::Union{Type{<:BoundaryIndex}})</code></pre><p><code>BCValues</code> stores the shape values at all facet/faces/edges/vertices (depending on <code>boundary_type</code>) for the geometric interpolation (<code>geom_interpol</code>), for each dof-position determined by the <code>func_interpol</code>. Used mainly by the <code>ConstraintHandler</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/FacetValues.jl#L177-L182">source</a></section></article><h2 id="Internal-utilities"><a class="docs-heading-anchor" href="#Internal-utilities">Internal utilities</a><a id="Internal-utilities-1"></a><a class="docs-heading-anchor-permalink" href="#Internal-utilities" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.embedding_det" href="#Ferrite.embedding_det"><code>Ferrite.embedding_det</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">embedding_det(J::SMatrix{3, 2})</code></pre><p>Embedding determinant for surfaces in 3D.</p><p>TLDR: "det(J) =" ||∂x/∂ξ₁ × ∂x/∂ξ₂||₂</p><p>The transformation theorem for some function f on a 2D surface in 3D space leads to ∫ f ⋅ dS = ∫ f ⋅ (∂x/∂ξ₁ × ∂x/∂ξ₂) dξ₁dξ₂ = ∫ f ⋅ n ||∂x/∂ξ₁ × ∂x/∂ξ₂||₂ dξ₁dξ₂ where ||∂x/∂ξ₁ × ∂x/∂ξ₂||₂ is "detJ" and n is the unit normal. See e.g. https://scicomp.stackexchange.com/questions/41741/integration-of-d-1-dimensional-functions-on-finite-element-surfaces for simple explanation. For more details see e.g. the doctoral thesis by Mirza Cenanovic <strong>Tangential Calculus</strong> [<a href="../../cited-literature/#Cenanovic2017">12</a>].</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/GeometryMapping.jl#L201-L213">source</a></section><section><div><pre><code class="language-julia hljs">embedding_det(J::Union{SMatrix{2, 1}, SMatrix{3, 1}})</code></pre><p>Embedding determinant for curves in 2D and 3D.</p><p>TLDR: "det(J) =" ||∂x/∂ξ||₂</p><p>The transformation theorem for some function f on a 1D curve in 2D and 3D space leads to ∫ f ⋅ dE = ∫ f ⋅ ∂x/∂ξ dξ = ∫ f ⋅ t ||∂x/∂ξ||₂ dξ where ||∂x/∂ξ||₂ is "detJ" and t is "the unit tangent". See e.g. https://scicomp.stackexchange.com/questions/41741/integration-of-d-1-dimensional-functions-on-finite-element-surfaces for simple explanation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/GeometryMapping.jl#L216-L227">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_value_type-Tuple{Ferrite.AbstractValues}" href="#Ferrite.shape_value_type-Tuple{Ferrite.AbstractValues}"><code>Ferrite.shape_value_type</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_value_type(fe_v::AbstractValues)</code></pre><p>Return the type of <code>shape_value(fe_v, q_point, base_function)</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L163-L167">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_gradient_type" href="#Ferrite.shape_gradient_type"><code>Ferrite.shape_gradient_type</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_gradient_type(fe_v::AbstractValues)</code></pre><p>Return the type of <code>shape_gradient(fe_v, q_point, base_function)</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L215-L219">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.ValuesUpdateFlags" href="#Ferrite.ValuesUpdateFlags"><code>Ferrite.ValuesUpdateFlags</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ValuesUpdateFlags(ip_fun::Interpolation; update_gradients = Val(true), update_hessians = Val(false), update_detJdV = Val(true))</code></pre><p>Creates a singleton type for specifying what parts of the AbstractValues should be updated. Note that this is internal API used to get type-stable construction. Keyword arguments in <code>AbstractValues</code> constructors are forwarded, and the public API is passing these as <code>Bool</code>, while the <code>ValuesUpdateFlags</code> method supports both boolean and <code>Val(::Bool)</code> keyword args.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L26-L32">source</a></section></article><h2 id="Custom-FEValues"><a class="docs-heading-anchor" href="#Custom-FEValues">Custom FEValues</a><a id="Custom-FEValues-1"></a><a class="docs-heading-anchor-permalink" href="#Custom-FEValues" title="Permalink"></a></h2><p>Custom FEValues, <code>fe_v::AbstractValues</code>, should normally implement the <a href="../../reference/fevalues/#Ferrite.reinit!"><code>reinit!</code></a> method. Subtypes of <code>AbstractValues</code> have default implementations for some functions, but require some lower-level access functions, specifically</p><ul><li><a href="../../reference/fevalues/#Ferrite.function_value"><code>function_value</code></a>, requires<ul><li><a href="../../reference/fevalues/#Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_value</code></a></li><li><a href="../../reference/fevalues/#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></li><li><a href="../../reference/interpolations/#Ferrite.getnbasefunctions"><code>getnbasefunctions</code></a></li></ul></li><li><a href="../../reference/fevalues/#Ferrite.function_gradient"><code>function_gradient</code></a>, <a href="../../reference/fevalues/#Ferrite.function_divergence"><code>function_divergence</code></a>, <a href="../../reference/fevalues/#Ferrite.function_symmetric_gradient"><code>function_symmetric_gradient</code></a>, and <a href="../../reference/fevalues/#Ferrite.function_curl"><code>function_curl</code></a> requires<ul><li><a href="../../reference/fevalues/#Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_gradient</code></a></li><li><a href="../../reference/fevalues/#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></li><li><a href="../../reference/interpolations/#Ferrite.getnbasefunctions"><code>getnbasefunctions</code></a></li></ul></li><li><a href="../../reference/fevalues/#Ferrite.spatial_coordinate"><code>spatial_coordinate</code></a>, requires<ul><li><a href="../../reference/fevalues/#Ferrite.geometric_value"><code>geometric_value</code></a></li><li><code>getngeobasefunctions</code></li><li><a href="../../reference/fevalues/#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></li></ul></li></ul><h3 id="Array-bounds"><a class="docs-heading-anchor" href="#Array-bounds">Array bounds</a><a id="Array-bounds-1"></a><a class="docs-heading-anchor-permalink" href="#Array-bounds" title="Permalink"></a></h3><ul><li>Asking for the <code>n</code>th quadrature point must be inside array bounds if <code>1 <= n <= getnquadpoints(fe_v)</code>. (<code>checkquadpoint</code> can, alternatively, be dispatched to check that <code>n</code> is inbounds.)</li><li>Asking for the <code>i</code>th shape value or gradient must be inside array bounds if <code>1 <= i <= getnbasefunctions(fe_v)</code></li><li>Asking for the <code>i</code>th geometric value must be inside array bounds if <code>1 <= i <= getngeobasefunctions(fe_v)</code></li></ul></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>FEValues · Ferrite.jl</title><meta name="title" content="FEValues · Ferrite.jl"/><meta property="og:title" content="FEValues · Ferrite.jl"/><meta property="twitter:title" content="FEValues · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/FEValues/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/FEValues/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/FEValues/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>FEValues</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>FEValues</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/FEValues.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="devdocs-fevalues"><a class="docs-heading-anchor" href="#devdocs-fevalues">FEValues</a><a id="devdocs-fevalues-1"></a><a class="docs-heading-anchor-permalink" href="#devdocs-fevalues" title="Permalink"></a></h1><h2 id="Type-definitions"><a class="docs-heading-anchor" href="#Type-definitions">Type definitions</a><a id="Type-definitions-1"></a><a class="docs-heading-anchor-permalink" href="#Type-definitions" title="Permalink"></a></h2><ul><li><code>AbstractValues</code><ul><li><code>AbstractCellValues</code><ul><li><a href="../../reference/fevalues/#Ferrite.CellValues"><code>CellValues</code></a></li></ul></li><li><code>AbstractFacetValues</code><ul><li><a href="../../reference/fevalues/#Ferrite.FacetValues"><code>FacetValues</code></a></li><li><a href="#Ferrite.BCValues"><code>BCValues</code></a></li></ul></li><li><a href="../../reference/export/#Ferrite.PointValues"><code>PointValues</code></a></li><li><a href="../../reference/fevalues/#Ferrite.InterfaceValues"><code>InterfaceValues</code></a></li></ul></li></ul><h2 id="Internal-types"><a class="docs-heading-anchor" href="#Internal-types">Internal types</a><a id="Internal-types-1"></a><a class="docs-heading-anchor-permalink" href="#Internal-types" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.GeometryMapping" href="#Ferrite.GeometryMapping"><code>Ferrite.GeometryMapping</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">GeometryMapping{DiffOrder}(::Type{T}, ip_geo, qr::QuadratureRule)</code></pre><p>Create a <code>GeometryMapping</code> object which contains the geometric</p><ul><li>shape values</li><li>gradient values (if DiffOrder ≥ 1)</li><li>hessians values (if DiffOrder ≥ 2)</li></ul><p><code>T<:AbstractFloat</code> gives the numeric type of the values.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/GeometryMapping.jl#L20-L30">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.MappingValues" href="#Ferrite.MappingValues"><code>Ferrite.MappingValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">MappingValues(J, H)</code></pre><p>The mapping values are calculated based on a <code>geometric_mapping::GeometryMapping</code> along with the cell coordinates, and the stored jacobian, <code>J</code>, and potentially hessian, <code>H</code>, are used when mapping the <code>FunctionValues</code> to the current cell during <code>reinit!</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/GeometryMapping.jl#L1-L8">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FunctionValues" href="#Ferrite.FunctionValues"><code>Ferrite.FunctionValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">FunctionValues{DiffOrder}(::Type{T}, ip_fun, qr::QuadratureRule, ip_geo::VectorizedInterpolation)</code></pre><p>Create a <code>FunctionValues</code> object containing the shape values and gradients (up to order <code>DiffOrder</code>) for both the reference cell (precalculated) and the real cell (updated in <code>reinit!</code>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/FunctionValues.jl#L38-L43">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.BCValues" href="#Ferrite.BCValues"><code>Ferrite.BCValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">BCValues(func_interpol::Interpolation, geom_interpol::Interpolation, boundary_type::Union{Type{<:BoundaryIndex}})</code></pre><p><code>BCValues</code> stores the shape values at all facet/faces/edges/vertices (depending on <code>boundary_type</code>) for the geometric interpolation (<code>geom_interpol</code>), for each dof-position determined by the <code>func_interpol</code>. Used mainly by the <code>ConstraintHandler</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/FacetValues.jl#L177-L182">source</a></section></article><h2 id="Internal-utilities"><a class="docs-heading-anchor" href="#Internal-utilities">Internal utilities</a><a id="Internal-utilities-1"></a><a class="docs-heading-anchor-permalink" href="#Internal-utilities" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.embedding_det" href="#Ferrite.embedding_det"><code>Ferrite.embedding_det</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">embedding_det(J::SMatrix{3, 2})</code></pre><p>Embedding determinant for surfaces in 3D.</p><p>TLDR: "det(J) =" ||∂x/∂ξ₁ × ∂x/∂ξ₂||₂</p><p>The transformation theorem for some function f on a 2D surface in 3D space leads to ∫ f ⋅ dS = ∫ f ⋅ (∂x/∂ξ₁ × ∂x/∂ξ₂) dξ₁dξ₂ = ∫ f ⋅ n ||∂x/∂ξ₁ × ∂x/∂ξ₂||₂ dξ₁dξ₂ where ||∂x/∂ξ₁ × ∂x/∂ξ₂||₂ is "detJ" and n is the unit normal. See e.g. https://scicomp.stackexchange.com/questions/41741/integration-of-d-1-dimensional-functions-on-finite-element-surfaces for simple explanation. For more details see e.g. the doctoral thesis by Mirza Cenanovic <strong>Tangential Calculus</strong> [<a href="../../cited-literature/#Cenanovic2017">12</a>].</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/GeometryMapping.jl#L201-L213">source</a></section><section><div><pre><code class="language-julia hljs">embedding_det(J::Union{SMatrix{2, 1}, SMatrix{3, 1}})</code></pre><p>Embedding determinant for curves in 2D and 3D.</p><p>TLDR: "det(J) =" ||∂x/∂ξ||₂</p><p>The transformation theorem for some function f on a 1D curve in 2D and 3D space leads to ∫ f ⋅ dE = ∫ f ⋅ ∂x/∂ξ dξ = ∫ f ⋅ t ||∂x/∂ξ||₂ dξ where ||∂x/∂ξ||₂ is "detJ" and t is "the unit tangent". See e.g. https://scicomp.stackexchange.com/questions/41741/integration-of-d-1-dimensional-functions-on-finite-element-surfaces for simple explanation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/GeometryMapping.jl#L216-L227">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_value_type-Tuple{Ferrite.AbstractValues}" href="#Ferrite.shape_value_type-Tuple{Ferrite.AbstractValues}"><code>Ferrite.shape_value_type</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_value_type(fe_v::AbstractValues)</code></pre><p>Return the type of <code>shape_value(fe_v, q_point, base_function)</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L163-L167">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_gradient_type" href="#Ferrite.shape_gradient_type"><code>Ferrite.shape_gradient_type</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_gradient_type(fe_v::AbstractValues)</code></pre><p>Return the type of <code>shape_gradient(fe_v, q_point, base_function)</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L215-L219">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.ValuesUpdateFlags" href="#Ferrite.ValuesUpdateFlags"><code>Ferrite.ValuesUpdateFlags</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ValuesUpdateFlags(ip_fun::Interpolation; update_gradients = Val(true), update_hessians = Val(false), update_detJdV = Val(true))</code></pre><p>Creates a singleton type for specifying what parts of the AbstractValues should be updated. Note that this is internal API used to get type-stable construction. Keyword arguments in <code>AbstractValues</code> constructors are forwarded, and the public API is passing these as <code>Bool</code>, while the <code>ValuesUpdateFlags</code> method supports both boolean and <code>Val(::Bool)</code> keyword args.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L26-L32">source</a></section></article><h2 id="Custom-FEValues"><a class="docs-heading-anchor" href="#Custom-FEValues">Custom FEValues</a><a id="Custom-FEValues-1"></a><a class="docs-heading-anchor-permalink" href="#Custom-FEValues" title="Permalink"></a></h2><p>Custom FEValues, <code>fe_v::AbstractValues</code>, should normally implement the <a href="../../reference/fevalues/#Ferrite.reinit!"><code>reinit!</code></a> method. Subtypes of <code>AbstractValues</code> have default implementations for some functions, but require some lower-level access functions, specifically</p><ul><li><a href="../../reference/fevalues/#Ferrite.function_value"><code>function_value</code></a>, requires<ul><li><a href="../../reference/fevalues/#Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_value</code></a></li><li><a href="../../reference/fevalues/#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></li><li><a href="../../reference/interpolations/#Ferrite.getnbasefunctions"><code>getnbasefunctions</code></a></li></ul></li><li><a href="../../reference/fevalues/#Ferrite.function_gradient"><code>function_gradient</code></a>, <a href="../../reference/fevalues/#Ferrite.function_divergence"><code>function_divergence</code></a>, <a href="../../reference/fevalues/#Ferrite.function_symmetric_gradient"><code>function_symmetric_gradient</code></a>, and <a href="../../reference/fevalues/#Ferrite.function_curl"><code>function_curl</code></a> requires<ul><li><a href="../../reference/fevalues/#Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_gradient</code></a></li><li><a href="../../reference/fevalues/#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></li><li><a href="../../reference/interpolations/#Ferrite.getnbasefunctions"><code>getnbasefunctions</code></a></li></ul></li><li><a href="../../reference/fevalues/#Ferrite.spatial_coordinate"><code>spatial_coordinate</code></a>, requires<ul><li><a href="../../reference/fevalues/#Ferrite.geometric_value"><code>geometric_value</code></a></li><li><code>getngeobasefunctions</code></li><li><a href="../../reference/fevalues/#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></li></ul></li></ul><h3 id="Array-bounds"><a class="docs-heading-anchor" href="#Array-bounds">Array bounds</a><a id="Array-bounds-1"></a><a class="docs-heading-anchor-permalink" href="#Array-bounds" title="Permalink"></a></h3><ul><li>Asking for the <code>n</code>th quadrature point must be inside array bounds if <code>1 <= n <= getnquadpoints(fe_v)</code>. (<code>checkquadpoint</code> can, alternatively, be dispatched to check that <code>n</code> is inbounds.)</li><li>Asking for the <code>i</code>th shape value or gradient must be inside array bounds if <code>1 <= i <= getnbasefunctions(fe_v)</code></li><li>Asking for the <code>i</code>th geometric value must be inside array bounds if <code>1 <= i <= getngeobasefunctions(fe_v)</code></li></ul></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/devdocs/assembly/index.html b/dev/devdocs/assembly/index.html index 1d0a587cd6..2c7a9babd4 100644 --- a/dev/devdocs/assembly/index.html +++ b/dev/devdocs/assembly/index.html @@ -1,4 +1,4 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Assembly · Ferrite.jl</title><meta name="title" content="Assembly · Ferrite.jl"/><meta property="og:title" content="Assembly · Ferrite.jl"/><meta property="twitter:title" content="Assembly · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/assembly/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/assembly/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/assembly/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Assembly</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Assembly</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/assembly.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="devdocs-assembly"><a class="docs-heading-anchor" href="#devdocs-assembly">Assembly</a><a id="devdocs-assembly-1"></a><a class="docs-heading-anchor-permalink" href="#devdocs-assembly" title="Permalink"></a></h1><h2 id="Type-definitions"><a class="docs-heading-anchor" href="#Type-definitions">Type definitions</a><a id="Type-definitions-1"></a><a class="docs-heading-anchor-permalink" href="#Type-definitions" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.COOAssembler" href="#Ferrite.COOAssembler"><code>Ferrite.COOAssembler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">struct COOAssembler{Tv, Ti}</code></pre><p>This assembler creates a COO (<strong>coo</strong>rdinate format) representation of a sparse matrix during assembly and converts it into a <code>SparseMatrixCSC{Tv, Ti}</code> on finalization.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L4-L9">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CSCAssembler" href="#Ferrite.CSCAssembler"><code>Ferrite.CSCAssembler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Assembler for sparse matrix with CSC storage type.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L172-L174">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.SymmetricCSCAssembler" href="#Ferrite.SymmetricCSCAssembler"><code>Ferrite.SymmetricCSCAssembler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Assembler for symmetric sparse matrix with CSC storage type.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L182-L184">source</a></section></article><h2 id="Utility-functions"><a class="docs-heading-anchor" href="#Utility-functions">Utility functions</a><a id="Utility-functions-1"></a><a class="docs-heading-anchor-permalink" href="#Utility-functions" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.matrix_handle" href="#Ferrite.matrix_handle"><code>Ferrite.matrix_handle</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">matrix_handle(a::AbstractAssembler) -vector_handle(a::AbstractAssembler)</code></pre><p>Return a reference to the underlying matrix/vector of the assembler used during assembly operations.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L163-L169">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.vector_handle" href="#Ferrite.vector_handle"><code>Ferrite.vector_handle</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">matrix_handle(a::AbstractAssembler) -vector_handle(a::AbstractAssembler)</code></pre><p>Return a reference to the underlying matrix/vector of the assembler used during assembly operations.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L163-L169">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite._sortdofs_for_assembly!" href="#Ferrite._sortdofs_for_assembly!"><code>Ferrite._sortdofs_for_assembly!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">_sortdofs_for_assembly!(permutation::Vector{Int}, sorteddofs::Vector{Int}, dofs::AbstractVector)</code></pre><p>Sorts the dofs into a separate buffer and returns it together with a permutation vector.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L259-L263">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.sortperm2!" href="#Ferrite.sortperm2!"><code>Ferrite.sortperm2!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">sortperm2!(data::AbstractVector, permutation::AbstractVector)</code></pre><p>Sort the input vector inplace and compute the corresponding permutation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L382-L386">source</a></section></article></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Assembly · Ferrite.jl</title><meta name="title" content="Assembly · Ferrite.jl"/><meta property="og:title" content="Assembly · Ferrite.jl"/><meta property="twitter:title" content="Assembly · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/assembly/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/assembly/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/assembly/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Assembly</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Assembly</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/assembly.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="devdocs-assembly"><a class="docs-heading-anchor" href="#devdocs-assembly">Assembly</a><a id="devdocs-assembly-1"></a><a class="docs-heading-anchor-permalink" href="#devdocs-assembly" title="Permalink"></a></h1><h2 id="Type-definitions"><a class="docs-heading-anchor" href="#Type-definitions">Type definitions</a><a id="Type-definitions-1"></a><a class="docs-heading-anchor-permalink" href="#Type-definitions" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.COOAssembler" href="#Ferrite.COOAssembler"><code>Ferrite.COOAssembler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">struct COOAssembler{Tv, Ti}</code></pre><p>This assembler creates a COO (<strong>coo</strong>rdinate format) representation of a sparse matrix during assembly and converts it into a <code>SparseMatrixCSC{Tv, Ti}</code> on finalization.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L4-L9">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CSCAssembler" href="#Ferrite.CSCAssembler"><code>Ferrite.CSCAssembler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Assembler for sparse matrix with CSC storage type.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L172-L174">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.SymmetricCSCAssembler" href="#Ferrite.SymmetricCSCAssembler"><code>Ferrite.SymmetricCSCAssembler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Assembler for symmetric sparse matrix with CSC storage type.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L182-L184">source</a></section></article><h2 id="Utility-functions"><a class="docs-heading-anchor" href="#Utility-functions">Utility functions</a><a id="Utility-functions-1"></a><a class="docs-heading-anchor-permalink" href="#Utility-functions" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.matrix_handle" href="#Ferrite.matrix_handle"><code>Ferrite.matrix_handle</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">matrix_handle(a::AbstractAssembler) +vector_handle(a::AbstractAssembler)</code></pre><p>Return a reference to the underlying matrix/vector of the assembler used during assembly operations.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L163-L169">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.vector_handle" href="#Ferrite.vector_handle"><code>Ferrite.vector_handle</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">matrix_handle(a::AbstractAssembler) +vector_handle(a::AbstractAssembler)</code></pre><p>Return a reference to the underlying matrix/vector of the assembler used during assembly operations.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L163-L169">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite._sortdofs_for_assembly!" href="#Ferrite._sortdofs_for_assembly!"><code>Ferrite._sortdofs_for_assembly!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">_sortdofs_for_assembly!(permutation::Vector{Int}, sorteddofs::Vector{Int}, dofs::AbstractVector)</code></pre><p>Sorts the dofs into a separate buffer and returns it together with a permutation vector.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L259-L263">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.sortperm2!" href="#Ferrite.sortperm2!"><code>Ferrite.sortperm2!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">sortperm2!(data::AbstractVector, permutation::AbstractVector)</code></pre><p>Sort the input vector inplace and compute the corresponding permutation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L382-L386">source</a></section></article></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/devdocs/dofhandler/index.html b/dev/devdocs/dofhandler/index.html index 9dcd659009..bcc3316a83 100644 --- a/dev/devdocs/dofhandler/index.html +++ b/dev/devdocs/dofhandler/index.html @@ -1,9 +1,9 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Dof Handler · Ferrite.jl</title><meta name="title" content="Dof Handler · Ferrite.jl"/><meta property="og:title" content="Dof Handler · Ferrite.jl"/><meta property="twitter:title" content="Dof Handler · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/dofhandler/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/dofhandler/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/dofhandler/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Dof Handler</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Dof Handler</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/dofhandler.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="dofhandler-interpolations"><a class="docs-heading-anchor" href="#dofhandler-interpolations">Dof Handler</a><a id="dofhandler-interpolations-1"></a><a class="docs-heading-anchor-permalink" href="#dofhandler-interpolations" title="Permalink"></a></h1><h2 id="Type-definitions"><a class="docs-heading-anchor" href="#Type-definitions">Type definitions</a><a id="Type-definitions-1"></a><a class="docs-heading-anchor-permalink" href="#Type-definitions" title="Permalink"></a></h2><p>Dof handlers are subtypes of <code>AbstractDofhandler{sdim}</code>, i.e. they are parametrized by the spatial dimension. Internally a helper struct <a href="#Ferrite.InterpolationInfo"><code>InterpolationInfo</code></a> is utilized to enforce type stability during dof distribution, because the interpolations are not available as concrete types.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.InterpolationInfo" href="#Ferrite.InterpolationInfo"><code>Ferrite.InterpolationInfo</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">InterpolationInfo</code></pre><p>Gathers all the information needed to distribute dofs for a given interpolation. Note that this cache is of the same type no matter the interpolation: the purpose is to make dof-distribution type-stable.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L83-L89">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PathOrientationInfo" href="#Ferrite.PathOrientationInfo"><code>Ferrite.PathOrientationInfo</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PathOrientationInfo</code></pre><p>Orientation information for 1D entities.</p><p>The orientation for 1D entities is defined by the indices of the grid nodes associated to the vertices. To give an example, the oriented path</p><pre><code class="nohighlight hljs">1 ---> 2</code></pre><p>is called <em>regular</em>, indicated by <code>regular=true</code>, while the oriented path</p><pre><code class="nohighlight hljs">2 ---> 1</code></pre><p>is called <em>inverted</em>, indicated by <code>regular=false</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L667-L682">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.SurfaceOrientationInfo" href="#Ferrite.SurfaceOrientationInfo"><code>Ferrite.SurfaceOrientationInfo</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">SurfaceOrientationInfo</code></pre><p>Orientation information for 2D entities. Such an entity can be possibly flipped (i.e. the defining vertex order is reverse to the spanning vertex order) and the vertices can be rotated against each other. Take for example the faces</p><pre><code class="nohighlight hljs">1---2 2---3 +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Dof Handler · Ferrite.jl</title><meta name="title" content="Dof Handler · Ferrite.jl"/><meta property="og:title" content="Dof Handler · Ferrite.jl"/><meta property="twitter:title" content="Dof Handler · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/dofhandler/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/dofhandler/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/dofhandler/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Dof Handler</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Dof Handler</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/dofhandler.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="dofhandler-interpolations"><a class="docs-heading-anchor" href="#dofhandler-interpolations">Dof Handler</a><a id="dofhandler-interpolations-1"></a><a class="docs-heading-anchor-permalink" href="#dofhandler-interpolations" title="Permalink"></a></h1><h2 id="Type-definitions"><a class="docs-heading-anchor" href="#Type-definitions">Type definitions</a><a id="Type-definitions-1"></a><a class="docs-heading-anchor-permalink" href="#Type-definitions" title="Permalink"></a></h2><p>Dof handlers are subtypes of <code>AbstractDofhandler{sdim}</code>, i.e. they are parametrized by the spatial dimension. Internally a helper struct <a href="#Ferrite.InterpolationInfo"><code>InterpolationInfo</code></a> is utilized to enforce type stability during dof distribution, because the interpolations are not available as concrete types.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.InterpolationInfo" href="#Ferrite.InterpolationInfo"><code>Ferrite.InterpolationInfo</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">InterpolationInfo</code></pre><p>Gathers all the information needed to distribute dofs for a given interpolation. Note that this cache is of the same type no matter the interpolation: the purpose is to make dof-distribution type-stable.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L83-L89">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PathOrientationInfo" href="#Ferrite.PathOrientationInfo"><code>Ferrite.PathOrientationInfo</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PathOrientationInfo</code></pre><p>Orientation information for 1D entities.</p><p>The orientation for 1D entities is defined by the indices of the grid nodes associated to the vertices. To give an example, the oriented path</p><pre><code class="nohighlight hljs">1 ---> 2</code></pre><p>is called <em>regular</em>, indicated by <code>regular=true</code>, while the oriented path</p><pre><code class="nohighlight hljs">2 ---> 1</code></pre><p>is called <em>inverted</em>, indicated by <code>regular=false</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L667-L682">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.SurfaceOrientationInfo" href="#Ferrite.SurfaceOrientationInfo"><code>Ferrite.SurfaceOrientationInfo</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">SurfaceOrientationInfo</code></pre><p>Orientation information for 2D entities. Such an entity can be possibly flipped (i.e. the defining vertex order is reverse to the spanning vertex order) and the vertices can be rotated against each other. Take for example the faces</p><pre><code class="nohighlight hljs">1---2 2---3 | A | | B | 4---3 1---4</code></pre><p>which are rotated against each other by 90° (shift index is 1) or the faces</p><pre><code class="nohighlight hljs">1---2 2---1 | A | | B | -4---3 3---4</code></pre><p>which are flipped against each other. Any combination of these can happen. The combination to map this local face to the defining face is encoded with this data structure via <span>$rotate \circ flip$</span> where the rotation is indiced by the shift index. !!!NOTE TODO implement me.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L687-L710">source</a></section></article><h2 id="Internal-API"><a class="docs-heading-anchor" href="#Internal-API">Internal API</a><a id="Internal-API-1"></a><a class="docs-heading-anchor-permalink" href="#Internal-API" title="Permalink"></a></h2><p>The main entry point for dof distribution is <a href="#Ferrite.__close!"><code>__close!</code></a>.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.__close!" href="#Ferrite.__close!"><code>Ferrite.__close!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">__close!(dh::DofHandler)</code></pre><p>Internal entry point for dof distribution.</p><p>Dofs are distributed as follows: For the <code>DofHandler</code> each <code>SubDofHandler</code> is visited in the order they were added. For each field in the <code>SubDofHandler</code> create dofs for the cell. This means that dofs on a particular cell will be numbered in groups for each field, so first the dofs for field 1 are distributed, then field 2, etc. For each cell dofs are first distributed on its vertices, then on the interior of edges (if applicable), then on the interior of faces (if applicable), and finally on the cell interior. The entity ordering follows the geometrical ordering found in <a href="../elements/#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices</code></a>, <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces</code></a> and <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L338-L351">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_grid" href="#Ferrite.get_grid"><code>Ferrite.get_grid</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">get_grid(dh::AbstractDofHandler)</code></pre><p>Access some grid representation for the dof handler.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>This API function is currently not well-defined. It acts as the interface between distributed assembly and assembly on a single process, because most parts of the functionality can be handled by only acting on the locally owned cell set.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L3-L12">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.find_field" href="#Ferrite.find_field"><code>Ferrite.find_field</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">find_field(dh::DofHandler, field_name::Symbol)::NTuple{2,Int}</code></pre><p>Return the index of the field with name <code>field_name</code> in a <code>DofHandler</code>. The index is a <code>NTuple{2,Int}</code>, where the 1st entry is the index of the <code>SubDofHandler</code> within which the field was found and the 2nd entry is the index of the field within the <code>SubDofHandler</code>.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>Always finds the 1st occurrence of a field within <code>DofHandler</code>.</p></div></div><p>See also: <a href="#Ferrite.find_field"><code>find_field(sdh::SubDofHandler, field_name::Symbol)</code></a>, <a href="#Ferrite._find_field"><code>Ferrite._find_field(sdh::SubDofHandler, field_name::Symbol)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L791-L803">source</a></section><section><div><pre><code class="language-julia hljs">find_field(sdh::SubDofHandler, field_name::Symbol)::Int</code></pre><p>Return the index of the field with name <code>field_name</code> in a <code>SubDofHandler</code>. Throw an error if the field is not found.</p><p>See also: <a href="#Ferrite.find_field"><code>find_field(dh::DofHandler, field_name::Symbol)</code></a>, <a href="#Ferrite._find_field"><code>_find_field(sdh::SubDofHandler, field_name::Symbol)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L812-L819">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite._find_field" href="#Ferrite._find_field"><code>Ferrite._find_field</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">_find_field(sdh::SubDofHandler, field_name::Symbol)::Int</code></pre><p>Return the index of the field with name <code>field_name</code> in the <code>SubDofHandler</code> <code>sdh</code>. Return <code>nothing</code> if the field is not found.</p><p>See also: <a href="#Ferrite.find_field"><code>find_field(dh::DofHandler, field_name::Symbol)</code></a>, <a href="#Ferrite.find_field"><code>find_field(sdh::SubDofHandler, field_name::Symbol)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L829-L836">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite._close_subdofhandler!" href="#Ferrite._close_subdofhandler!"><code>Ferrite._close_subdofhandler!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">_close_subdofhandler!(dh::DofHandler{sdim}, sdh::SubDofHandler, sdh_index::Int, nextdof::Int, vertexdicts, edgedicts, facedicts) where {sdim}</code></pre><p>Main entry point to distribute dofs for a single <a href="../../reference/dofhandler/#Ferrite.SubDofHandler"><code>SubDofHandler</code></a> on its subdomain.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L401-L405">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite._distribute_dofs_for_cell!" href="#Ferrite._distribute_dofs_for_cell!"><code>Ferrite._distribute_dofs_for_cell!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">_distribute_dofs_for_cell!(dh::DofHandler{sdim}, cell::AbstractCell, ip_info::InterpolationInfo, nextdof::Int, vertexdict, edgedict, facedict) where {sdim}</code></pre><p>Main entry point to distribute dofs for a single cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L490-L494">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.permute_and_push!" href="#Ferrite.permute_and_push!"><code>Ferrite.permute_and_push!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">permute_and_push!</code></pre><p>For interpolations with more than one interior dof per edge it may be necessary to adjust the dofs. Since dofs are (initially) enumerated according to the local edge direction there can be a direction mismatch with the neighboring element. For example, in the following nodal interpolation example, with three interior dofs on each edge, the initial pass have distributed dofs 4, 5, 6 according to the local edge directions:</p><pre><code class="nohighlight hljs">+-----------+ +4---3 3---4</code></pre><p>which are flipped against each other. Any combination of these can happen. The combination to map this local face to the defining face is encoded with this data structure via <span>$rotate \circ flip$</span> where the rotation is indiced by the shift index. !!!NOTE TODO implement me.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L687-L710">source</a></section></article><h2 id="Internal-API"><a class="docs-heading-anchor" href="#Internal-API">Internal API</a><a id="Internal-API-1"></a><a class="docs-heading-anchor-permalink" href="#Internal-API" title="Permalink"></a></h2><p>The main entry point for dof distribution is <a href="#Ferrite.__close!"><code>__close!</code></a>.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.__close!" href="#Ferrite.__close!"><code>Ferrite.__close!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">__close!(dh::DofHandler)</code></pre><p>Internal entry point for dof distribution.</p><p>Dofs are distributed as follows: For the <code>DofHandler</code> each <code>SubDofHandler</code> is visited in the order they were added. For each field in the <code>SubDofHandler</code> create dofs for the cell. This means that dofs on a particular cell will be numbered in groups for each field, so first the dofs for field 1 are distributed, then field 2, etc. For each cell dofs are first distributed on its vertices, then on the interior of edges (if applicable), then on the interior of faces (if applicable), and finally on the cell interior. The entity ordering follows the geometrical ordering found in <a href="../elements/#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices</code></a>, <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces</code></a> and <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L338-L351">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_grid" href="#Ferrite.get_grid"><code>Ferrite.get_grid</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">get_grid(dh::AbstractDofHandler)</code></pre><p>Access some grid representation for the dof handler.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>This API function is currently not well-defined. It acts as the interface between distributed assembly and assembly on a single process, because most parts of the functionality can be handled by only acting on the locally owned cell set.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L3-L12">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.find_field" href="#Ferrite.find_field"><code>Ferrite.find_field</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">find_field(dh::DofHandler, field_name::Symbol)::NTuple{2,Int}</code></pre><p>Return the index of the field with name <code>field_name</code> in a <code>DofHandler</code>. The index is a <code>NTuple{2,Int}</code>, where the 1st entry is the index of the <code>SubDofHandler</code> within which the field was found and the 2nd entry is the index of the field within the <code>SubDofHandler</code>.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>Always finds the 1st occurrence of a field within <code>DofHandler</code>.</p></div></div><p>See also: <a href="#Ferrite.find_field"><code>find_field(sdh::SubDofHandler, field_name::Symbol)</code></a>, <a href="#Ferrite._find_field"><code>Ferrite._find_field(sdh::SubDofHandler, field_name::Symbol)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L791-L803">source</a></section><section><div><pre><code class="language-julia hljs">find_field(sdh::SubDofHandler, field_name::Symbol)::Int</code></pre><p>Return the index of the field with name <code>field_name</code> in a <code>SubDofHandler</code>. Throw an error if the field is not found.</p><p>See also: <a href="#Ferrite.find_field"><code>find_field(dh::DofHandler, field_name::Symbol)</code></a>, <a href="#Ferrite._find_field"><code>_find_field(sdh::SubDofHandler, field_name::Symbol)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L812-L819">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite._find_field" href="#Ferrite._find_field"><code>Ferrite._find_field</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">_find_field(sdh::SubDofHandler, field_name::Symbol)::Int</code></pre><p>Return the index of the field with name <code>field_name</code> in the <code>SubDofHandler</code> <code>sdh</code>. Return <code>nothing</code> if the field is not found.</p><p>See also: <a href="#Ferrite.find_field"><code>find_field(dh::DofHandler, field_name::Symbol)</code></a>, <a href="#Ferrite.find_field"><code>find_field(sdh::SubDofHandler, field_name::Symbol)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L829-L836">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite._close_subdofhandler!" href="#Ferrite._close_subdofhandler!"><code>Ferrite._close_subdofhandler!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">_close_subdofhandler!(dh::DofHandler{sdim}, sdh::SubDofHandler, sdh_index::Int, nextdof::Int, vertexdicts, edgedicts, facedicts) where {sdim}</code></pre><p>Main entry point to distribute dofs for a single <a href="../../reference/dofhandler/#Ferrite.SubDofHandler"><code>SubDofHandler</code></a> on its subdomain.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L401-L405">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite._distribute_dofs_for_cell!" href="#Ferrite._distribute_dofs_for_cell!"><code>Ferrite._distribute_dofs_for_cell!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">_distribute_dofs_for_cell!(dh::DofHandler{sdim}, cell::AbstractCell, ip_info::InterpolationInfo, nextdof::Int, vertexdict, edgedict, facedict) where {sdim}</code></pre><p>Main entry point to distribute dofs for a single cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L490-L494">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.permute_and_push!" href="#Ferrite.permute_and_push!"><code>Ferrite.permute_and_push!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">permute_and_push!</code></pre><p>For interpolations with more than one interior dof per edge it may be necessary to adjust the dofs. Since dofs are (initially) enumerated according to the local edge direction there can be a direction mismatch with the neighboring element. For example, in the following nodal interpolation example, with three interior dofs on each edge, the initial pass have distributed dofs 4, 5, 6 according to the local edge directions:</p><pre><code class="nohighlight hljs">+-----------+ | A | +--4--5--6->+ local edge on element A @@ -11,6 +11,6 @@ +<-6--5--4--+ local edge on element B | B | -+-----------+</code></pre><p>For most scalar-valued interpolations we can simply compensate for this by reversing the numbering on all edges that do not match the global edge direction, i.e. for the edge on element B in the example.</p><p>In addition, we also have to preserve the ordering at each dof location.</p><p>For more details we refer to Scroggs et al. [<a href="../../cited-literature/#Scroggs2022">13</a>] as we follow the methodology described therein.</p><p><strong>References</strong></p><ul><li>[<a href="../../cited-literature/#Scroggs2022">13</a>] Scroggs et al. ACM Trans. Math. Softw. 48 (2022).</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L605-L637">source</a></section><section><div><pre><code class="language-julia hljs">!!!NOTE TODO implement me.</code></pre><p>For more details we refer to [1] as we follow the methodology described therein.</p><p>[1] Scroggs, M. W., Dokken, J. S., Richardson, C. N., & Wells, G. N. (2022). Construction of arbitrary order finite element degree-of-freedom maps on polygonal and polyhedral cell meshes. ACM Transactions on Mathematical Software (TOMS), 48(2), 1-23.</p><pre><code class="nohighlight hljs">!!!TODO citation via software. ++-----------+</code></pre><p>For most scalar-valued interpolations we can simply compensate for this by reversing the numbering on all edges that do not match the global edge direction, i.e. for the edge on element B in the example.</p><p>In addition, we also have to preserve the ordering at each dof location.</p><p>For more details we refer to Scroggs et al. [<a href="../../cited-literature/#Scroggs2022">13</a>] as we follow the methodology described therein.</p><p><strong>References</strong></p><ul><li>[<a href="../../cited-literature/#Scroggs2022">13</a>] Scroggs et al. ACM Trans. Math. Softw. 48 (2022).</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L605-L637">source</a></section><section><div><pre><code class="language-julia hljs">!!!NOTE TODO implement me.</code></pre><p>For more details we refer to [1] as we follow the methodology described therein.</p><p>[1] Scroggs, M. W., Dokken, J. S., Richardson, C. N., & Wells, G. N. (2022). Construction of arbitrary order finite element degree-of-freedom maps on polygonal and polyhedral cell meshes. ACM Transactions on Mathematical Software (TOMS), 48(2), 1-23.</p><pre><code class="nohighlight hljs">!!!TODO citation via software. -!!!TODO Investigate if we can somehow pass the interpolation into this function in a typestable way.</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L705-L718">source</a></section></article></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +!!!TODO Investigate if we can somehow pass the interpolation into this function in a typestable way.</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L705-L718">source</a></section></article></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/devdocs/elements/index.html b/dev/devdocs/elements/index.html index d09e534040..b9ae87a7f1 100644 --- a/dev/devdocs/elements/index.html +++ b/dev/devdocs/elements/index.html @@ -1,15 +1,15 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Elements and cells · Ferrite.jl</title><meta name="title" content="Elements and cells · Ferrite.jl"/><meta property="og:title" content="Elements and cells · Ferrite.jl"/><meta property="twitter:title" content="Elements and cells · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/elements/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/elements/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/elements/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Elements and cells</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Elements and cells</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/elements.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="devdocs-elements"><a class="docs-heading-anchor" href="#devdocs-elements">Elements and cells</a><a id="devdocs-elements-1"></a><a class="docs-heading-anchor-permalink" href="#devdocs-elements" title="Permalink"></a></h1><h2 id="Type-definitions"><a class="docs-heading-anchor" href="#Type-definitions">Type definitions</a><a id="Type-definitions-1"></a><a class="docs-heading-anchor-permalink" href="#Type-definitions" title="Permalink"></a></h2><p>Elements or cells are subtypes of <code>AbstractCell{<:AbstractRefShape}</code>. As shown, they are parametrized by the associated reference element.</p><h3 id="Required-methods-to-implement-for-all-subtypes-of-AbstractCell-to-define-a-new-element"><a class="docs-heading-anchor" href="#Required-methods-to-implement-for-all-subtypes-of-AbstractCell-to-define-a-new-element">Required methods to implement for all subtypes of <code>AbstractCell</code> to define a new element</a><a id="Required-methods-to-implement-for-all-subtypes-of-AbstractCell-to-define-a-new-element-1"></a><a class="docs-heading-anchor-permalink" href="#Required-methods-to-implement-for-all-subtypes-of-AbstractCell-to-define-a-new-element" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_node_ids" href="#Ferrite.get_node_ids"><code>Ferrite.get_node_ids</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.get_node_ids(c::AbstractCell)</code></pre><p>Return the node id's for cell <code>c</code> in the order determined by the cell's reference cell.</p><p>Default implementation: <code>c.nodes</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L165-L171">source</a></section></article><h3 id="Common-utilities-and-definitions-when-working-with-grids-internally."><a class="docs-heading-anchor" href="#Common-utilities-and-definitions-when-working-with-grids-internally.">Common utilities and definitions when working with grids internally.</a><a id="Common-utilities-and-definitions-when-working-with-grids-internally.-1"></a><a class="docs-heading-anchor-permalink" href="#Common-utilities-and-definitions-when-working-with-grids-internally." title="Permalink"></a></h3><p>First we have some topological queries on the element</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.vertices-Tuple{Ferrite.AbstractCell}" href="#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>Ferrite.vertices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.vertices(::AbstractCell)</code></pre><p>Returns a tuple with the node indices (of the nodes in a grid) for each vertex in a given cell. This function induces the <a href="../../reference/grid/#Ferrite.VertexIndex"><code>VertexIndex</code></a>, where the second index corresponds to the local index into this tuple.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L69-L75">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.edges-Tuple{Ferrite.AbstractCell}" href="#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>Ferrite.edges</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.edges(::AbstractCell)</code></pre><p>Returns a tuple of 2-tuples containing the ordered node indices (of the nodes in a grid) corresponding to the vertices that define an <em>oriented edge</em>. This function induces the <a href="../../reference/grid/#Ferrite.EdgeIndex"><code>EdgeIndex</code></a>, where the second index corresponds to the local index into this tuple.</p><p>Note that the vertices are sufficient to define an edge uniquely.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L87-L95">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.faces-Tuple{Ferrite.AbstractCell}" href="#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>Ferrite.faces</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.faces(::AbstractCell)</code></pre><p>Returns a tuple of n-tuples containing the ordered node indices (of the nodes in a grid) corresponding to the vertices that define an <em>oriented face</em>. This function induces the <a href="../../reference/grid/#Ferrite.FaceIndex"><code>FaceIndex</code></a>, where the second index corresponds to the local index into this tuple.</p><p>An <em>oriented face</em> is a face with the first node having the local index and the other nodes spanning such that the normal to the face is pointing outwards.</p><p>Note that the vertices are sufficient to define a face uniquely.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L107-L118">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.facets-Tuple{Ferrite.AbstractCell}" href="#Ferrite.facets-Tuple{Ferrite.AbstractCell}"><code>Ferrite.facets</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.facets(::AbstractCell)</code></pre><p>Returns a tuple of n-tuples containing the ordered node indices (of the nodes in a grid) corresponding to the vertices that define an oriented facet. This function induces the <a href="../../reference/grid/#Ferrite.FacetIndex"><code>FacetIndex</code></a>, where the second index corresponds to the local index into this tuple.</p><p>See also <a href="#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices</code></a>, <a href="#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges</code></a>, and <a href="#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces</code></a></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L121-L129">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.boundaryfunction-Tuple{Type{<:Ferrite.BoundaryIndex}}" href="#Ferrite.boundaryfunction-Tuple{Type{<:Ferrite.BoundaryIndex}}"><code>Ferrite.boundaryfunction</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">boundaryfunction(::Type{<:BoundaryIndex})</code></pre><p>Helper function to dispatch on the correct entity from a given boundary index.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L632-L636">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_vertices-Tuple{Ferrite.AbstractCell}" href="#Ferrite.reference_vertices-Tuple{Ferrite.AbstractCell}"><code>Ferrite.reference_vertices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_vertices(::Type{<:AbstractRefShape}) -reference_vertices(::AbstractCell)</code></pre><p>Returns a tuple of integers containing the local node indices corresponding to the vertices (i.e. corners or endpoints) of the cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L60-L66">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_edges-Tuple{Ferrite.AbstractCell}" href="#Ferrite.reference_edges-Tuple{Ferrite.AbstractCell}"><code>Ferrite.reference_edges</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_edges(::Type{<:AbstractRefShape}) -reference_edges(::AbstractCell)</code></pre><p>Returns a tuple of 2-tuples containing the ordered local node indices (corresponding to the vertices) that define an edge.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L78-L84">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_faces-Tuple{Ferrite.AbstractCell}" href="#Ferrite.reference_faces-Tuple{Ferrite.AbstractCell}"><code>Ferrite.reference_faces</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_faces(::Type{<:AbstractRefShape}) -reference_faces(::AbstractCell)</code></pre><p>Returns a tuple of n-tuples containing the ordered local node indices (corresponding to the vertices) that define a face.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L98-L104">source</a></section></article><p>and some generic utils which are commonly found in finite element codes</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.BoundaryIndex" href="#Ferrite.BoundaryIndex"><code>Ferrite.BoundaryIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Abstract type which is used as identifier for faces, edges and verices</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Ferrite.jl#L70-L72">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_coordinate_eltype-Tuple{Ferrite.AbstractGrid}" href="#Ferrite.get_coordinate_eltype-Tuple{Ferrite.AbstractGrid}"><code>Ferrite.get_coordinate_eltype</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Return the number type of the nodal coordinates.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L499">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_coordinate_eltype-Tuple{Node}" href="#Ferrite.get_coordinate_eltype-Tuple{Node}"><code>Ferrite.get_coordinate_eltype</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">get_coordinate_eltype(::Node)</code></pre><p>Get the data type of the components of the nodes coordinate.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L31-L35">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.toglobal" href="#Ferrite.toglobal"><code>Ferrite.toglobal</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">toglobal(grid::AbstractGrid, vertexidx::VertexIndex) -> Int -toglobal(grid::AbstractGrid, vertexidx::Vector{VertexIndex}) -> Vector{Int}</code></pre><p>This function takes the local vertex representation (a <code>VertexIndex</code>) and looks up the unique global id (an <code>Int</code>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L422-L426">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.sortface" href="#Ferrite.sortface"><code>Ferrite.sortface</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">sortface(face::Tuple{Int}) +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Elements and cells · Ferrite.jl</title><meta name="title" content="Elements and cells · Ferrite.jl"/><meta property="og:title" content="Elements and cells · Ferrite.jl"/><meta property="twitter:title" content="Elements and cells · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/elements/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/elements/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/elements/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Elements and cells</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Elements and cells</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/elements.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="devdocs-elements"><a class="docs-heading-anchor" href="#devdocs-elements">Elements and cells</a><a id="devdocs-elements-1"></a><a class="docs-heading-anchor-permalink" href="#devdocs-elements" title="Permalink"></a></h1><h2 id="Type-definitions"><a class="docs-heading-anchor" href="#Type-definitions">Type definitions</a><a id="Type-definitions-1"></a><a class="docs-heading-anchor-permalink" href="#Type-definitions" title="Permalink"></a></h2><p>Elements or cells are subtypes of <code>AbstractCell{<:AbstractRefShape}</code>. As shown, they are parametrized by the associated reference element.</p><h3 id="Required-methods-to-implement-for-all-subtypes-of-AbstractCell-to-define-a-new-element"><a class="docs-heading-anchor" href="#Required-methods-to-implement-for-all-subtypes-of-AbstractCell-to-define-a-new-element">Required methods to implement for all subtypes of <code>AbstractCell</code> to define a new element</a><a id="Required-methods-to-implement-for-all-subtypes-of-AbstractCell-to-define-a-new-element-1"></a><a class="docs-heading-anchor-permalink" href="#Required-methods-to-implement-for-all-subtypes-of-AbstractCell-to-define-a-new-element" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_node_ids" href="#Ferrite.get_node_ids"><code>Ferrite.get_node_ids</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.get_node_ids(c::AbstractCell)</code></pre><p>Return the node id's for cell <code>c</code> in the order determined by the cell's reference cell.</p><p>Default implementation: <code>c.nodes</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L165-L171">source</a></section></article><h3 id="Common-utilities-and-definitions-when-working-with-grids-internally."><a class="docs-heading-anchor" href="#Common-utilities-and-definitions-when-working-with-grids-internally.">Common utilities and definitions when working with grids internally.</a><a id="Common-utilities-and-definitions-when-working-with-grids-internally.-1"></a><a class="docs-heading-anchor-permalink" href="#Common-utilities-and-definitions-when-working-with-grids-internally." title="Permalink"></a></h3><p>First we have some topological queries on the element</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.vertices-Tuple{Ferrite.AbstractCell}" href="#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>Ferrite.vertices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.vertices(::AbstractCell)</code></pre><p>Returns a tuple with the node indices (of the nodes in a grid) for each vertex in a given cell. This function induces the <a href="../../reference/grid/#Ferrite.VertexIndex"><code>VertexIndex</code></a>, where the second index corresponds to the local index into this tuple.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L69-L75">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.edges-Tuple{Ferrite.AbstractCell}" href="#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>Ferrite.edges</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.edges(::AbstractCell)</code></pre><p>Returns a tuple of 2-tuples containing the ordered node indices (of the nodes in a grid) corresponding to the vertices that define an <em>oriented edge</em>. This function induces the <a href="../../reference/grid/#Ferrite.EdgeIndex"><code>EdgeIndex</code></a>, where the second index corresponds to the local index into this tuple.</p><p>Note that the vertices are sufficient to define an edge uniquely.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L87-L95">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.faces-Tuple{Ferrite.AbstractCell}" href="#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>Ferrite.faces</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.faces(::AbstractCell)</code></pre><p>Returns a tuple of n-tuples containing the ordered node indices (of the nodes in a grid) corresponding to the vertices that define an <em>oriented face</em>. This function induces the <a href="../../reference/grid/#Ferrite.FaceIndex"><code>FaceIndex</code></a>, where the second index corresponds to the local index into this tuple.</p><p>An <em>oriented face</em> is a face with the first node having the local index and the other nodes spanning such that the normal to the face is pointing outwards.</p><p>Note that the vertices are sufficient to define a face uniquely.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L107-L118">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.facets-Tuple{Ferrite.AbstractCell}" href="#Ferrite.facets-Tuple{Ferrite.AbstractCell}"><code>Ferrite.facets</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.facets(::AbstractCell)</code></pre><p>Returns a tuple of n-tuples containing the ordered node indices (of the nodes in a grid) corresponding to the vertices that define an oriented facet. This function induces the <a href="../../reference/grid/#Ferrite.FacetIndex"><code>FacetIndex</code></a>, where the second index corresponds to the local index into this tuple.</p><p>See also <a href="#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices</code></a>, <a href="#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges</code></a>, and <a href="#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces</code></a></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L121-L129">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.boundaryfunction-Tuple{Type{<:Ferrite.BoundaryIndex}}" href="#Ferrite.boundaryfunction-Tuple{Type{<:Ferrite.BoundaryIndex}}"><code>Ferrite.boundaryfunction</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">boundaryfunction(::Type{<:BoundaryIndex})</code></pre><p>Helper function to dispatch on the correct entity from a given boundary index.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L632-L636">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_vertices-Tuple{Ferrite.AbstractCell}" href="#Ferrite.reference_vertices-Tuple{Ferrite.AbstractCell}"><code>Ferrite.reference_vertices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_vertices(::Type{<:AbstractRefShape}) +reference_vertices(::AbstractCell)</code></pre><p>Returns a tuple of integers containing the local node indices corresponding to the vertices (i.e. corners or endpoints) of the cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L60-L66">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_edges-Tuple{Ferrite.AbstractCell}" href="#Ferrite.reference_edges-Tuple{Ferrite.AbstractCell}"><code>Ferrite.reference_edges</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_edges(::Type{<:AbstractRefShape}) +reference_edges(::AbstractCell)</code></pre><p>Returns a tuple of 2-tuples containing the ordered local node indices (corresponding to the vertices) that define an edge.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L78-L84">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_faces-Tuple{Ferrite.AbstractCell}" href="#Ferrite.reference_faces-Tuple{Ferrite.AbstractCell}"><code>Ferrite.reference_faces</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_faces(::Type{<:AbstractRefShape}) +reference_faces(::AbstractCell)</code></pre><p>Returns a tuple of n-tuples containing the ordered local node indices (corresponding to the vertices) that define a face.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L98-L104">source</a></section></article><p>and some generic utils which are commonly found in finite element codes</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.BoundaryIndex" href="#Ferrite.BoundaryIndex"><code>Ferrite.BoundaryIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Abstract type which is used as identifier for faces, edges and verices</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Ferrite.jl#L70-L72">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_coordinate_eltype-Tuple{Ferrite.AbstractGrid}" href="#Ferrite.get_coordinate_eltype-Tuple{Ferrite.AbstractGrid}"><code>Ferrite.get_coordinate_eltype</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Return the number type of the nodal coordinates.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L499">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_coordinate_eltype-Tuple{Node}" href="#Ferrite.get_coordinate_eltype-Tuple{Node}"><code>Ferrite.get_coordinate_eltype</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">get_coordinate_eltype(::Node)</code></pre><p>Get the data type of the components of the nodes coordinate.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L31-L35">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.toglobal" href="#Ferrite.toglobal"><code>Ferrite.toglobal</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">toglobal(grid::AbstractGrid, vertexidx::VertexIndex) -> Int +toglobal(grid::AbstractGrid, vertexidx::Vector{VertexIndex}) -> Vector{Int}</code></pre><p>This function takes the local vertex representation (a <code>VertexIndex</code>) and looks up the unique global id (an <code>Int</code>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L422-L426">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.sortface" href="#Ferrite.sortface"><code>Ferrite.sortface</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">sortface(face::Tuple{Int}) sortface(face::Tuple{Int,Int}) sortface(face::Tuple{Int,Int,Int}) -sortface(face::Tuple{Int,Int,Int,Int})</code></pre><p>Returns the unique representation of a face. Here the unique representation is the sorted node index tuple. Note that in 3D we only need indices to uniquely identify a face, so the unique representation is always a tuple length 3.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L679-L689">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.sortface_fast" href="#Ferrite.sortface_fast"><code>Ferrite.sortface_fast</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">sortface_fast(face::Tuple{Int}) +sortface(face::Tuple{Int,Int,Int,Int})</code></pre><p>Returns the unique representation of a face. Here the unique representation is the sorted node index tuple. Note that in 3D we only need indices to uniquely identify a face, so the unique representation is always a tuple length 3.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L679-L689">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.sortface_fast" href="#Ferrite.sortface_fast"><code>Ferrite.sortface_fast</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">sortface_fast(face::Tuple{Int}) sortface_fast(face::Tuple{Int,Int}) sortface_fast(face::Tuple{Int,Int,Int}) -sortface_fast(face::Tuple{Int,Int,Int,Int})</code></pre><p>Returns the unique representation of a face. Here the unique representation is the sorted node index tuple. Note that in 3D we only need indices to uniquely identify a face, so the unique representation is always a tuple length 3.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L692-L702">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.sortedge" href="#Ferrite.sortedge"><code>Ferrite.sortedge</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">sortedge(edge::Tuple{Int,Int})</code></pre><p>Returns the unique representation of an edge and its orientation. Here the unique representation is the sorted node index tuple. The orientation is <code>true</code> if the edge is not flipped, where it is <code>false</code> if the edge is flipped.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L655-L662">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.sortedge_fast" href="#Ferrite.sortedge_fast"><code>Ferrite.sortedge_fast</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>sortedge_fast(edge::Tuple{Int,Int})</p><p>Returns the unique representation of an edge. Here the unique representation is the sorted node index tuple.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L668-L673">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.element_to_facet_transformation" href="#Ferrite.element_to_facet_transformation"><code>Ferrite.element_to_facet_transformation</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">element_to_facet_transformation(point::AbstractVector, ::Type{<:AbstractRefShape}, facet::Int)</code></pre><p>Transform quadrature point from the cell's coordinates to the facet's reference coordinates, decreasing the number of dimensions by one. This is the inverse of <code>facet_to_element_transformation</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/facet_integrals.jl#L9-L14">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.facet_to_element_transformation" href="#Ferrite.facet_to_element_transformation"><code>Ferrite.facet_to_element_transformation</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">facet_to_element_transformation(point::Vec, ::Type{<:AbstractRefShape}, facet::Int)</code></pre><p>Transform quadrature point from the facet's reference coordinates to coordinates on the cell's facet, increasing the number of dimensions by one.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/facet_integrals.jl#L1-L6">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.InterfaceOrientationInfo" href="#Ferrite.InterfaceOrientationInfo"><code>Ferrite.InterfaceOrientationInfo</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">InterfaceOrientationInfo</code></pre><p>Relative orientation information for 1D and 2D interfaces in 2D and 3D elements respectively. This information is used to construct the transformation matrix to transform the quadrature points from facet<em>a to facet</em>b achieving synced spatial coordinates. Facet B's orientation relative to Facet A's can possibly be flipped (i.e. the vertices indices order is reversed) and the vertices can be rotated against each other. The reference orientation of facet B is such that the first node has the lowest vertex index. Thus, this structure also stores the shift of the lowest vertex index which is used to reorient the facet in case of flipping <a href="#Ferrite.transform_interface_points!"><code>transform_interface_points!</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L393-L406">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.transform_interface_points!" href="#Ferrite.transform_interface_points!"><code>Ferrite.transform_interface_points!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">transform_interface_points!(dst::AbstractVector{Vec{3, Float64}}, points::AbstractVector{Vec{3, Float64}}, interface_transformation::InterfaceOrientationInfo)</code></pre><p>Transform the points from facet A to facet B using the orientation information of the interface and store it in the vector dst. For 3D, the facets are transformed into regular polygons such that the rotation angle is the shift in reference node index × 2π ÷ number of edges in facet. If the facet is flipped then the flipping is about the axis that preserves the position of the first node (which is the reference node after being rotated to be in the first position, it's rotated back in the opposite direction after flipping). Take for example the interface</p><pre><code class="nohighlight hljs"> 2 3 +sortface_fast(face::Tuple{Int,Int,Int,Int})</code></pre><p>Returns the unique representation of a face. Here the unique representation is the sorted node index tuple. Note that in 3D we only need indices to uniquely identify a face, so the unique representation is always a tuple length 3.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L692-L702">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.sortedge" href="#Ferrite.sortedge"><code>Ferrite.sortedge</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">sortedge(edge::Tuple{Int,Int})</code></pre><p>Returns the unique representation of an edge and its orientation. Here the unique representation is the sorted node index tuple. The orientation is <code>true</code> if the edge is not flipped, where it is <code>false</code> if the edge is flipped.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L655-L662">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.sortedge_fast" href="#Ferrite.sortedge_fast"><code>Ferrite.sortedge_fast</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>sortedge_fast(edge::Tuple{Int,Int})</p><p>Returns the unique representation of an edge. Here the unique representation is the sorted node index tuple.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L668-L673">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.element_to_facet_transformation" href="#Ferrite.element_to_facet_transformation"><code>Ferrite.element_to_facet_transformation</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">element_to_facet_transformation(point::AbstractVector, ::Type{<:AbstractRefShape}, facet::Int)</code></pre><p>Transform quadrature point from the cell's coordinates to the facet's reference coordinates, decreasing the number of dimensions by one. This is the inverse of <code>facet_to_element_transformation</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/facet_integrals.jl#L9-L14">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.facet_to_element_transformation" href="#Ferrite.facet_to_element_transformation"><code>Ferrite.facet_to_element_transformation</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">facet_to_element_transformation(point::Vec, ::Type{<:AbstractRefShape}, facet::Int)</code></pre><p>Transform quadrature point from the facet's reference coordinates to coordinates on the cell's facet, increasing the number of dimensions by one.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/facet_integrals.jl#L1-L6">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.InterfaceOrientationInfo" href="#Ferrite.InterfaceOrientationInfo"><code>Ferrite.InterfaceOrientationInfo</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">InterfaceOrientationInfo</code></pre><p>Relative orientation information for 1D and 2D interfaces in 2D and 3D elements respectively. This information is used to construct the transformation matrix to transform the quadrature points from facet<em>a to facet</em>b achieving synced spatial coordinates. Facet B's orientation relative to Facet A's can possibly be flipped (i.e. the vertices indices order is reversed) and the vertices can be rotated against each other. The reference orientation of facet B is such that the first node has the lowest vertex index. Thus, this structure also stores the shift of the lowest vertex index which is used to reorient the facet in case of flipping <a href="#Ferrite.transform_interface_points!"><code>transform_interface_points!</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L393-L406">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.transform_interface_points!" href="#Ferrite.transform_interface_points!"><code>Ferrite.transform_interface_points!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">transform_interface_points!(dst::AbstractVector{Vec{3, Float64}}, points::AbstractVector{Vec{3, Float64}}, interface_transformation::InterfaceOrientationInfo)</code></pre><p>Transform the points from facet A to facet B using the orientation information of the interface and store it in the vector dst. For 3D, the facets are transformed into regular polygons such that the rotation angle is the shift in reference node index × 2π ÷ number of edges in facet. If the facet is flipped then the flipping is about the axis that preserves the position of the first node (which is the reference node after being rotated to be in the first position, it's rotated back in the opposite direction after flipping). Take for example the interface</p><pre><code class="nohighlight hljs"> 2 3 | \ | \ | \ | \ y | A \ | B \ @@ -43,4 +43,4 @@ | \ y | \ ↑ | \ -→ x 1-----2</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L485-L546">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_transformation_matrix" href="#Ferrite.get_transformation_matrix"><code>Ferrite.get_transformation_matrix</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">get_transformation_matrix(interface_transformation::InterfaceOrientationInfo)</code></pre><p>Returns the transformation matrix corresponding to the interface orientation information stored in <code>InterfaceOrientationInfo</code>. The transformation matrix is constructed using a combination of affine transformations defined for each interface reference shape. The transformation for a flipped facet is a function of both relative orientation and the orientation of the second facet. If the facet is not flipped then the transformation is a function of relative orientation only.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L433-L440">source</a></section></article></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +→ x 1-----2</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L485-L546">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_transformation_matrix" href="#Ferrite.get_transformation_matrix"><code>Ferrite.get_transformation_matrix</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">get_transformation_matrix(interface_transformation::InterfaceOrientationInfo)</code></pre><p>Returns the transformation matrix corresponding to the interface orientation information stored in <code>InterfaceOrientationInfo</code>. The transformation matrix is constructed using a combination of affine transformations defined for each interface reference shape. The transformation for a flipped facet is a function of both relative orientation and the orientation of the second facet. If the facet is not flipped then the transformation is a function of relative orientation only.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L433-L440">source</a></section></article></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/devdocs/index.html b/dev/devdocs/index.html index 3548f56fb5..7fb684ed87 100644 --- a/dev/devdocs/index.html +++ b/dev/devdocs/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Developer documentation · Ferrite.jl</title><meta name="title" content="Developer documentation · Ferrite.jl"/><meta property="og:title" content="Developer documentation · Ferrite.jl"/><meta property="twitter:title" content="Developer documentation · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li class="is-active"><a class="tocitem" href>Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Developer documentation</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Developer documentation</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Developer-documentation"><a class="docs-heading-anchor" href="#Developer-documentation">Developer documentation</a><a id="Developer-documentation-1"></a><a class="docs-heading-anchor-permalink" href="#Developer-documentation" title="Permalink"></a></h1><p>Here you can find some documentation of the internals of Ferrite which are useful when developing the library.</p><ul><li><a href="reference_cells/#Reference-cells">Reference cells</a></li><li><a href="interpolations/#devdocs-interpolations">Interpolations</a></li><li><a href="elements/#devdocs-elements">Elements and cells</a></li><li><a href="FEValues/#devdocs-fevalues">FEValues</a></li><li><a href="dofhandler/#dofhandler-interpolations">Dof Handler</a></li><li><a href="assembly/#devdocs-assembly">Assembly</a></li><li><a href="performance/#devdocs-performance">Performance analysis</a></li><li><a href="special_datastructures/#Special-data-structures">Special data structures</a></li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../gallery/">« Code gallery</a><a class="docs-footer-nextpage" href="../cited-literature/">Cited literature »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Developer documentation · Ferrite.jl</title><meta name="title" content="Developer documentation · Ferrite.jl"/><meta property="og:title" content="Developer documentation · Ferrite.jl"/><meta property="twitter:title" content="Developer documentation · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li class="is-active"><a class="tocitem" href>Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Developer documentation</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Developer documentation</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Developer-documentation"><a class="docs-heading-anchor" href="#Developer-documentation">Developer documentation</a><a id="Developer-documentation-1"></a><a class="docs-heading-anchor-permalink" href="#Developer-documentation" title="Permalink"></a></h1><p>Here you can find some documentation of the internals of Ferrite which are useful when developing the library.</p><ul><li><a href="reference_cells/#Reference-cells">Reference cells</a></li><li><a href="interpolations/#devdocs-interpolations">Interpolations</a></li><li><a href="elements/#devdocs-elements">Elements and cells</a></li><li><a href="FEValues/#devdocs-fevalues">FEValues</a></li><li><a href="dofhandler/#dofhandler-interpolations">Dof Handler</a></li><li><a href="assembly/#devdocs-assembly">Assembly</a></li><li><a href="performance/#devdocs-performance">Performance analysis</a></li><li><a href="special_datastructures/#Special-data-structures">Special data structures</a></li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../gallery/">« Code gallery</a><a class="docs-footer-nextpage" href="../cited-literature/">Cited literature »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/devdocs/interpolations/index.html b/dev/devdocs/interpolations/index.html index a406eefb01..23ad2fd0f9 100644 --- a/dev/devdocs/interpolations/index.html +++ b/dev/devdocs/interpolations/index.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Interpolations · Ferrite.jl</title><meta name="title" content="Interpolations · Ferrite.jl"/><meta property="og:title" content="Interpolations · Ferrite.jl"/><meta property="twitter:title" content="Interpolations · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/interpolations/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/interpolations/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/interpolations/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Interpolations</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Interpolations</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/interpolations.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="devdocs-interpolations"><a class="docs-heading-anchor" href="#devdocs-interpolations">Interpolations</a><a id="devdocs-interpolations-1"></a><a class="docs-heading-anchor-permalink" href="#devdocs-interpolations" title="Permalink"></a></h1><h2 id="Type-definitions"><a class="docs-heading-anchor" href="#Type-definitions">Type definitions</a><a id="Type-definitions-1"></a><a class="docs-heading-anchor-permalink" href="#Type-definitions" title="Permalink"></a></h2><p>Interpolations are subtypes of <code>Interpolation{shape, order}</code>, i.e. they are parametrized by the reference element and its characteristic order.</p><h3 id="Fallback-methods-applicable-for-all-subtypes-of-Interpolation"><a class="docs-heading-anchor" href="#Fallback-methods-applicable-for-all-subtypes-of-Interpolation">Fallback methods applicable for all subtypes of <code>Interpolation</code></a><a id="Fallback-methods-applicable-for-all-subtypes-of-Interpolation-1"></a><a class="docs-heading-anchor-permalink" href="#Fallback-methods-applicable-for-all-subtypes-of-Interpolation" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getrefshape-Tuple{Interpolation}" href="#Ferrite.getrefshape-Tuple{Interpolation}"><code>Ferrite.getrefshape</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getrefshape(::Interpolation)::AbstractRefShape</code></pre><p>Return the reference element shape of the interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L129-L133">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getorder-Tuple{Interpolation}" href="#Ferrite.getorder-Tuple{Interpolation}"><code>Ferrite.getorder</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getorder(::Interpolation)</code></pre><p>Return order of the interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L136-L140">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_gradient-Tuple{Interpolation, Vec, Int64}" href="#Ferrite.reference_shape_gradient-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_gradient</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_gradient(ip::Interpolation, ξ::Vec, i::Int)</code></pre><p>Evaluate the gradient of the <code>i</code>th shape function of the interpolation <code>ip</code> in reference coordinate <code>ξ</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L234-L239">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_gradient_and_value-Tuple{Interpolation, Vec, Int64}" href="#Ferrite.reference_shape_gradient_and_value-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_gradient_and_value</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_gradient_and_value(ip::Interpolation, ξ::Vec, i::Int)</code></pre><p>Optimized version combining the evaluation <a href="#Ferrite.reference_shape_value-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_value(::Interpolation)</code></a> and <a href="#Ferrite.reference_shape_gradient-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_gradient(::Interpolation)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L244-L249">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_hessian_gradient_and_value-Tuple{Interpolation, Vec, Int64}" href="#Ferrite.reference_shape_hessian_gradient_and_value-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_hessian_gradient_and_value</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_hessian_gradient_and_value(ip::Interpolation, ξ::Vec, i::Int)</code></pre><p>Optimized version combining the evaluation <a href="#Ferrite.reference_shape_value-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_value(::Interpolation)</code></a>, <a href="#Ferrite.reference_shape_gradient-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_gradient(::Interpolation)</code></a>, and the gradient of the latter.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L254-L259">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.boundarydof_indices" href="#Ferrite.boundarydof_indices"><code>Ferrite.boundarydof_indices</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">boundarydof_indices(::Type{<:BoundaryIndex})</code></pre><p>Helper function to generically dispatch on the correct dof sets of a boundary entity.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L394-L398">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.dirichlet_boundarydof_indices" href="#Ferrite.dirichlet_boundarydof_indices"><code>Ferrite.dirichlet_boundarydof_indices</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">dirichlet_boundarydof_indices(::Type{<:BoundaryIndex})</code></pre><p>Helper function to generically dispatch on the correct dof sets of a boundary entity. Used internally in <a href="../../reference/boundary_conditions/#Ferrite.ConstraintHandler"><code>ConstraintHandler</code></a> and defaults to <a href="#Ferrite.boundarydof_indices"><code>boundarydof_indices(ip::Interpolation)</code></a> for continuous interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L428-L433">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_values!" href="#Ferrite.reference_shape_values!"><code>Ferrite.reference_shape_values!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_values!(values::AbstractArray{T}, ip::Interpolation, ξ::Vec)</code></pre><p>Evaluate all shape functions of <code>ip</code> at once at the reference point <code>ξ</code> and store them in <code>values</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L161-L166">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_gradients!" href="#Ferrite.reference_shape_gradients!"><code>Ferrite.reference_shape_gradients!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_gradients!(gradients::AbstractArray, ip::Interpolation, ξ::Vec)</code></pre><p>Evaluate all shape function gradients of <code>ip</code> at once at the reference point <code>ξ</code> and store them in <code>gradients</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L175-L180">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_gradients_and_values!" href="#Ferrite.reference_shape_gradients_and_values!"><code>Ferrite.reference_shape_gradients_and_values!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_gradients_and_values!(gradients::AbstractArray, values::AbstractArray, ip::Interpolation, ξ::Vec)</code></pre><p>Evaluate all shape function gradients and values of <code>ip</code> at once at the reference point <code>ξ</code> and store them in <code>values</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L189-L194">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_hessians_gradients_and_values!" href="#Ferrite.reference_shape_hessians_gradients_and_values!"><code>Ferrite.reference_shape_hessians_gradients_and_values!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_hessians_gradients_and_values!(hessians::AbstractVector, gradients::AbstractVector, values::AbstractVector, ip::Interpolation, ξ::Vec)</code></pre><p>Evaluate all shape function hessians, gradients and values of <code>ip</code> at once at the reference point <code>ξ</code> and store them in <code>hessians</code>, <code>gradients</code>, and <code>values</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L204-L209">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_value_type-Union{Tuple{T}, Tuple{Interpolation, Type{T}}} where T<:Number" href="#Ferrite.shape_value_type-Union{Tuple{T}, Tuple{Interpolation, Type{T}}} where T<:Number"><code>Ferrite.shape_value_type</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_value_type(ip::Interpolation, ::Type{T}) where T<:Number</code></pre><p>Return the type of <code>shape_value(ip::Interpolation, ξ::Vec, ib::Int)</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L60-L64">source</a></section></article><h3 id="Required-methods-to-implement-for-all-subtypes-of-Interpolation-to-define-a-new-finite-element"><a class="docs-heading-anchor" href="#Required-methods-to-implement-for-all-subtypes-of-Interpolation-to-define-a-new-finite-element">Required methods to implement for all subtypes of <code>Interpolation</code> to define a new finite element</a><a id="Required-methods-to-implement-for-all-subtypes-of-Interpolation-to-define-a-new-finite-element-1"></a><a class="docs-heading-anchor-permalink" href="#Required-methods-to-implement-for-all-subtypes-of-Interpolation-to-define-a-new-finite-element" title="Permalink"></a></h3><p>Depending on the dimension of the reference element the following functions have to be implemented</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_value-Tuple{Interpolation, Vec, Int64}" href="#Ferrite.reference_shape_value-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_value</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_value(ip::Interpolation, ξ::Vec, i::Int)</code></pre><p>Evaluate the value of the <code>i</code>th shape function of the interpolation <code>ip</code> at a point <code>ξ</code> on the reference element. The index <code>i</code> must match the index in <a href="../elements/#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices(::Interpolation)</code></a>, <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces(::Interpolation)</code></a> and <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges(::Interpolation)</code></a>.</p><p>For nodal interpolations the indices also must match the indices of <a href="#Ferrite.reference_coordinates-Tuple{Interpolation}"><code>reference_coordinates(::Interpolation)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L221-L231">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.vertexdof_indices-Tuple{Interpolation}" href="#Ferrite.vertexdof_indices-Tuple{Interpolation}"><code>Ferrite.vertexdof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">vertexdof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of local dof indices for the respective vertex in local enumeration on a cell defined by <a href="../elements/#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices(::Cell)</code></a>. The vertex enumeration must match the vertex enumeration of the corresponding geometrical cell.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The dofs appearing in the tuple must be continuous and increasing! The first dof must be the 1, as vertex dofs are enumerated first.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L278-L288">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.dirichlet_vertexdof_indices-Tuple{Interpolation}" href="#Ferrite.dirichlet_vertexdof_indices-Tuple{Interpolation}"><code>Ferrite.dirichlet_vertexdof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">dirichlet_vertexdof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of local dof indices for the respective vertex in local enumeration on a cell defined by <a href="../elements/#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices(::Cell)</code></a>. The vertex enumeration must match the vertex enumeration of the corresponding geometrical cell. Used internally in <a href="../../reference/boundary_conditions/#Ferrite.ConstraintHandler"><code>ConstraintHandler</code></a> and defaults to <a href="#Ferrite.vertexdof_indices-Tuple{Interpolation}"><code>vertexdof_indices(ip::Interpolation)</code></a> for continuous interpolation.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The dofs appearing in the tuple must be continuous and increasing! The first dof must be the 1, as vertex dofs are enumerated first.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L291-L302">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.facedof_indices-Tuple{Interpolation}" href="#Ferrite.facedof_indices-Tuple{Interpolation}"><code>Ferrite.facedof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">facedof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of all local dof indices for the respective face in local enumeration on a cell defined by <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces(::Cell)</code></a>. The face enumeration must match the face enumeration of the corresponding geometrical cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L344-L350">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.dirichlet_facedof_indices-Tuple{Interpolation}" href="#Ferrite.dirichlet_facedof_indices-Tuple{Interpolation}"><code>Ferrite.dirichlet_facedof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">dirichlet_facedof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of all local dof indices for the respective face in local enumeration on a cell defined by <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces(::Cell)</code></a>. The face enumeration must match the face enumeration of the corresponding geometrical cell. Used internally in <a href="../../reference/boundary_conditions/#Ferrite.ConstraintHandler"><code>ConstraintHandler</code></a> and defaults to <a href="#Ferrite.facedof_indices-Tuple{Interpolation}"><code>facedof_indices(ip::Interpolation)</code></a> for continuous interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L353-L360">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.facedof_interior_indices-Tuple{Interpolation}" href="#Ferrite.facedof_interior_indices-Tuple{Interpolation}"><code>Ferrite.facedof_interior_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">facedof_interior_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of the local dof indices on the interior of the respective face in local enumeration on a cell defined by <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces(::Cell)</code></a>. The face enumeration must match the face enumeration of the corresponding geometrical cell. Note that the vertex and edge dofs are included here.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The dofs appearing in the tuple must be continuous and increasing! The first dof must be the computed via "last edge interior dof index + 1", if face dofs exist.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L363-L374">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.edgedof_indices-Tuple{Interpolation}" href="#Ferrite.edgedof_indices-Tuple{Interpolation}"><code>Ferrite.edgedof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">edgedof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of local dof indices for the respective edge in local enumeration on a cell defined by <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges(::Cell)</code></a>. The edge enumeration must match the edge enumeration of the corresponding geometrical cell.</p><p>The dofs are guaranteed to be aligned with the local ordering of the entities on the oriented edge. Here the first entries are the vertex dofs, followed by the edge interior dofs.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L305-L314">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.dirichlet_edgedof_indices-Tuple{Interpolation}" href="#Ferrite.dirichlet_edgedof_indices-Tuple{Interpolation}"><code>Ferrite.dirichlet_edgedof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">dirichlet_edgedof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of local dof indices for the respective edge in local enumeration on a cell defined by <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges(::Cell)</code></a>. The edge enumeration must match the edge enumeration of the corresponding geometrical cell. Used internally in <a href="../../reference/boundary_conditions/#Ferrite.ConstraintHandler"><code>ConstraintHandler</code></a> and defaults to <a href="#Ferrite.edgedof_indices-Tuple{Interpolation}"><code>edgedof_indices(ip::Interpolation)</code></a> for continuous interpolation.</p><p>The dofs are guaranteed to be aligned with the local ordering of the entities on the oriented edge. Here the first entries are the vertex dofs, followed by the edge interior dofs.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L317-L327">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.edgedof_interior_indices-Tuple{Interpolation}" href="#Ferrite.edgedof_interior_indices-Tuple{Interpolation}"><code>Ferrite.edgedof_interior_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">edgedof_interior_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of the local dof indices on the interior of the respective edge in local enumeration on a cell defined by <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges(::Cell)</code></a>. The edge enumeration must match the edge enumeration of the corresponding geometrical cell. Note that the vertex dofs are included here.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The dofs appearing in the tuple must be continuous and increasing! The first dof must be computed via "last vertex dof index + 1", if edge dofs exist.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L330-L341">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.volumedof_interior_indices-Tuple{Interpolation}" href="#Ferrite.volumedof_interior_indices-Tuple{Interpolation}"><code>Ferrite.volumedof_interior_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">volumedof_interior_indices(ip::Interpolation)</code></pre><p>Tuple containing the dof indices associated with the interior of a volume.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The dofs appearing in the tuple must be continuous and increasing, volumedofs are enumerated last.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L377-L385">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnbasefunctions-Tuple{Interpolation}" href="#Ferrite.getnbasefunctions-Tuple{Interpolation}"><code>Ferrite.getnbasefunctions</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getnbasefunctions(ip::Interpolation)</code></pre><p>Return the number of base functions for the interpolation <code>ip</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L148-L152">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_coordinates-Tuple{Interpolation}" href="#Ferrite.reference_coordinates-Tuple{Interpolation}"><code>Ferrite.reference_coordinates</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_coordinates(ip::Interpolation)</code></pre><p>Returns a vector of coordinates with length <a href="#Ferrite.getnbasefunctions-Tuple{Interpolation}"><code>getnbasefunctions(::Interpolation)</code></a> and indices corresponding to the indices of a dof in <a href="../elements/#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices</code></a>, <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces</code></a> and <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges</code></a>.</p><pre><code class="nohighlight hljs">Only required for nodal interpolations. +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Interpolations · Ferrite.jl</title><meta name="title" content="Interpolations · Ferrite.jl"/><meta property="og:title" content="Interpolations · Ferrite.jl"/><meta property="twitter:title" content="Interpolations · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/interpolations/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/interpolations/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/interpolations/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Interpolations</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Interpolations</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/interpolations.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="devdocs-interpolations"><a class="docs-heading-anchor" href="#devdocs-interpolations">Interpolations</a><a id="devdocs-interpolations-1"></a><a class="docs-heading-anchor-permalink" href="#devdocs-interpolations" title="Permalink"></a></h1><h2 id="Type-definitions"><a class="docs-heading-anchor" href="#Type-definitions">Type definitions</a><a id="Type-definitions-1"></a><a class="docs-heading-anchor-permalink" href="#Type-definitions" title="Permalink"></a></h2><p>Interpolations are subtypes of <code>Interpolation{shape, order}</code>, i.e. they are parametrized by the reference element and its characteristic order.</p><h3 id="Fallback-methods-applicable-for-all-subtypes-of-Interpolation"><a class="docs-heading-anchor" href="#Fallback-methods-applicable-for-all-subtypes-of-Interpolation">Fallback methods applicable for all subtypes of <code>Interpolation</code></a><a id="Fallback-methods-applicable-for-all-subtypes-of-Interpolation-1"></a><a class="docs-heading-anchor-permalink" href="#Fallback-methods-applicable-for-all-subtypes-of-Interpolation" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getrefshape-Tuple{Interpolation}" href="#Ferrite.getrefshape-Tuple{Interpolation}"><code>Ferrite.getrefshape</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getrefshape(::Interpolation)::AbstractRefShape</code></pre><p>Return the reference element shape of the interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L129-L133">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getorder-Tuple{Interpolation}" href="#Ferrite.getorder-Tuple{Interpolation}"><code>Ferrite.getorder</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getorder(::Interpolation)</code></pre><p>Return order of the interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L136-L140">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_gradient-Tuple{Interpolation, Vec, Int64}" href="#Ferrite.reference_shape_gradient-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_gradient</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_gradient(ip::Interpolation, ξ::Vec, i::Int)</code></pre><p>Evaluate the gradient of the <code>i</code>th shape function of the interpolation <code>ip</code> in reference coordinate <code>ξ</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L234-L239">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_gradient_and_value-Tuple{Interpolation, Vec, Int64}" href="#Ferrite.reference_shape_gradient_and_value-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_gradient_and_value</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_gradient_and_value(ip::Interpolation, ξ::Vec, i::Int)</code></pre><p>Optimized version combining the evaluation <a href="#Ferrite.reference_shape_value-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_value(::Interpolation)</code></a> and <a href="#Ferrite.reference_shape_gradient-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_gradient(::Interpolation)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L244-L249">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_hessian_gradient_and_value-Tuple{Interpolation, Vec, Int64}" href="#Ferrite.reference_shape_hessian_gradient_and_value-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_hessian_gradient_and_value</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_hessian_gradient_and_value(ip::Interpolation, ξ::Vec, i::Int)</code></pre><p>Optimized version combining the evaluation <a href="#Ferrite.reference_shape_value-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_value(::Interpolation)</code></a>, <a href="#Ferrite.reference_shape_gradient-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_gradient(::Interpolation)</code></a>, and the gradient of the latter.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L254-L259">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.boundarydof_indices" href="#Ferrite.boundarydof_indices"><code>Ferrite.boundarydof_indices</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">boundarydof_indices(::Type{<:BoundaryIndex})</code></pre><p>Helper function to generically dispatch on the correct dof sets of a boundary entity.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L394-L398">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.dirichlet_boundarydof_indices" href="#Ferrite.dirichlet_boundarydof_indices"><code>Ferrite.dirichlet_boundarydof_indices</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">dirichlet_boundarydof_indices(::Type{<:BoundaryIndex})</code></pre><p>Helper function to generically dispatch on the correct dof sets of a boundary entity. Used internally in <a href="../../reference/boundary_conditions/#Ferrite.ConstraintHandler"><code>ConstraintHandler</code></a> and defaults to <a href="#Ferrite.boundarydof_indices"><code>boundarydof_indices(ip::Interpolation)</code></a> for continuous interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L428-L433">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_values!" href="#Ferrite.reference_shape_values!"><code>Ferrite.reference_shape_values!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_values!(values::AbstractArray{T}, ip::Interpolation, ξ::Vec)</code></pre><p>Evaluate all shape functions of <code>ip</code> at once at the reference point <code>ξ</code> and store them in <code>values</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L161-L166">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_gradients!" href="#Ferrite.reference_shape_gradients!"><code>Ferrite.reference_shape_gradients!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_gradients!(gradients::AbstractArray, ip::Interpolation, ξ::Vec)</code></pre><p>Evaluate all shape function gradients of <code>ip</code> at once at the reference point <code>ξ</code> and store them in <code>gradients</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L175-L180">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_gradients_and_values!" href="#Ferrite.reference_shape_gradients_and_values!"><code>Ferrite.reference_shape_gradients_and_values!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_gradients_and_values!(gradients::AbstractArray, values::AbstractArray, ip::Interpolation, ξ::Vec)</code></pre><p>Evaluate all shape function gradients and values of <code>ip</code> at once at the reference point <code>ξ</code> and store them in <code>values</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L189-L194">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_hessians_gradients_and_values!" href="#Ferrite.reference_shape_hessians_gradients_and_values!"><code>Ferrite.reference_shape_hessians_gradients_and_values!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_hessians_gradients_and_values!(hessians::AbstractVector, gradients::AbstractVector, values::AbstractVector, ip::Interpolation, ξ::Vec)</code></pre><p>Evaluate all shape function hessians, gradients and values of <code>ip</code> at once at the reference point <code>ξ</code> and store them in <code>hessians</code>, <code>gradients</code>, and <code>values</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L204-L209">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_value_type-Union{Tuple{T}, Tuple{Interpolation, Type{T}}} where T<:Number" href="#Ferrite.shape_value_type-Union{Tuple{T}, Tuple{Interpolation, Type{T}}} where T<:Number"><code>Ferrite.shape_value_type</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_value_type(ip::Interpolation, ::Type{T}) where T<:Number</code></pre><p>Return the type of <code>shape_value(ip::Interpolation, ξ::Vec, ib::Int)</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L60-L64">source</a></section></article><h3 id="Required-methods-to-implement-for-all-subtypes-of-Interpolation-to-define-a-new-finite-element"><a class="docs-heading-anchor" href="#Required-methods-to-implement-for-all-subtypes-of-Interpolation-to-define-a-new-finite-element">Required methods to implement for all subtypes of <code>Interpolation</code> to define a new finite element</a><a id="Required-methods-to-implement-for-all-subtypes-of-Interpolation-to-define-a-new-finite-element-1"></a><a class="docs-heading-anchor-permalink" href="#Required-methods-to-implement-for-all-subtypes-of-Interpolation-to-define-a-new-finite-element" title="Permalink"></a></h3><p>Depending on the dimension of the reference element the following functions have to be implemented</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_shape_value-Tuple{Interpolation, Vec, Int64}" href="#Ferrite.reference_shape_value-Tuple{Interpolation, Vec, Int64}"><code>Ferrite.reference_shape_value</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_shape_value(ip::Interpolation, ξ::Vec, i::Int)</code></pre><p>Evaluate the value of the <code>i</code>th shape function of the interpolation <code>ip</code> at a point <code>ξ</code> on the reference element. The index <code>i</code> must match the index in <a href="../elements/#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices(::Interpolation)</code></a>, <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces(::Interpolation)</code></a> and <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges(::Interpolation)</code></a>.</p><p>For nodal interpolations the indices also must match the indices of <a href="#Ferrite.reference_coordinates-Tuple{Interpolation}"><code>reference_coordinates(::Interpolation)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L221-L231">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.vertexdof_indices-Tuple{Interpolation}" href="#Ferrite.vertexdof_indices-Tuple{Interpolation}"><code>Ferrite.vertexdof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">vertexdof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of local dof indices for the respective vertex in local enumeration on a cell defined by <a href="../elements/#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices(::Cell)</code></a>. The vertex enumeration must match the vertex enumeration of the corresponding geometrical cell.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The dofs appearing in the tuple must be continuous and increasing! The first dof must be the 1, as vertex dofs are enumerated first.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L278-L288">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.dirichlet_vertexdof_indices-Tuple{Interpolation}" href="#Ferrite.dirichlet_vertexdof_indices-Tuple{Interpolation}"><code>Ferrite.dirichlet_vertexdof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">dirichlet_vertexdof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of local dof indices for the respective vertex in local enumeration on a cell defined by <a href="../elements/#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices(::Cell)</code></a>. The vertex enumeration must match the vertex enumeration of the corresponding geometrical cell. Used internally in <a href="../../reference/boundary_conditions/#Ferrite.ConstraintHandler"><code>ConstraintHandler</code></a> and defaults to <a href="#Ferrite.vertexdof_indices-Tuple{Interpolation}"><code>vertexdof_indices(ip::Interpolation)</code></a> for continuous interpolation.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The dofs appearing in the tuple must be continuous and increasing! The first dof must be the 1, as vertex dofs are enumerated first.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L291-L302">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.facedof_indices-Tuple{Interpolation}" href="#Ferrite.facedof_indices-Tuple{Interpolation}"><code>Ferrite.facedof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">facedof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of all local dof indices for the respective face in local enumeration on a cell defined by <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces(::Cell)</code></a>. The face enumeration must match the face enumeration of the corresponding geometrical cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L344-L350">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.dirichlet_facedof_indices-Tuple{Interpolation}" href="#Ferrite.dirichlet_facedof_indices-Tuple{Interpolation}"><code>Ferrite.dirichlet_facedof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">dirichlet_facedof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of all local dof indices for the respective face in local enumeration on a cell defined by <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces(::Cell)</code></a>. The face enumeration must match the face enumeration of the corresponding geometrical cell. Used internally in <a href="../../reference/boundary_conditions/#Ferrite.ConstraintHandler"><code>ConstraintHandler</code></a> and defaults to <a href="#Ferrite.facedof_indices-Tuple{Interpolation}"><code>facedof_indices(ip::Interpolation)</code></a> for continuous interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L353-L360">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.facedof_interior_indices-Tuple{Interpolation}" href="#Ferrite.facedof_interior_indices-Tuple{Interpolation}"><code>Ferrite.facedof_interior_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">facedof_interior_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of the local dof indices on the interior of the respective face in local enumeration on a cell defined by <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces(::Cell)</code></a>. The face enumeration must match the face enumeration of the corresponding geometrical cell. Note that the vertex and edge dofs are included here.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The dofs appearing in the tuple must be continuous and increasing! The first dof must be the computed via "last edge interior dof index + 1", if face dofs exist.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L363-L374">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.edgedof_indices-Tuple{Interpolation}" href="#Ferrite.edgedof_indices-Tuple{Interpolation}"><code>Ferrite.edgedof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">edgedof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of local dof indices for the respective edge in local enumeration on a cell defined by <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges(::Cell)</code></a>. The edge enumeration must match the edge enumeration of the corresponding geometrical cell.</p><p>The dofs are guaranteed to be aligned with the local ordering of the entities on the oriented edge. Here the first entries are the vertex dofs, followed by the edge interior dofs.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L305-L314">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.dirichlet_edgedof_indices-Tuple{Interpolation}" href="#Ferrite.dirichlet_edgedof_indices-Tuple{Interpolation}"><code>Ferrite.dirichlet_edgedof_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">dirichlet_edgedof_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of local dof indices for the respective edge in local enumeration on a cell defined by <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges(::Cell)</code></a>. The edge enumeration must match the edge enumeration of the corresponding geometrical cell. Used internally in <a href="../../reference/boundary_conditions/#Ferrite.ConstraintHandler"><code>ConstraintHandler</code></a> and defaults to <a href="#Ferrite.edgedof_indices-Tuple{Interpolation}"><code>edgedof_indices(ip::Interpolation)</code></a> for continuous interpolation.</p><p>The dofs are guaranteed to be aligned with the local ordering of the entities on the oriented edge. Here the first entries are the vertex dofs, followed by the edge interior dofs.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L317-L327">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.edgedof_interior_indices-Tuple{Interpolation}" href="#Ferrite.edgedof_interior_indices-Tuple{Interpolation}"><code>Ferrite.edgedof_interior_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">edgedof_interior_indices(ip::Interpolation)</code></pre><p>A tuple containing tuples of the local dof indices on the interior of the respective edge in local enumeration on a cell defined by <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges(::Cell)</code></a>. The edge enumeration must match the edge enumeration of the corresponding geometrical cell. Note that the vertex dofs are included here.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The dofs appearing in the tuple must be continuous and increasing! The first dof must be computed via "last vertex dof index + 1", if edge dofs exist.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L330-L341">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.volumedof_interior_indices-Tuple{Interpolation}" href="#Ferrite.volumedof_interior_indices-Tuple{Interpolation}"><code>Ferrite.volumedof_interior_indices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">volumedof_interior_indices(ip::Interpolation)</code></pre><p>Tuple containing the dof indices associated with the interior of a volume.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The dofs appearing in the tuple must be continuous and increasing, volumedofs are enumerated last.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L377-L385">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnbasefunctions-Tuple{Interpolation}" href="#Ferrite.getnbasefunctions-Tuple{Interpolation}"><code>Ferrite.getnbasefunctions</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getnbasefunctions(ip::Interpolation)</code></pre><p>Return the number of base functions for the interpolation <code>ip</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L148-L152">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_coordinates-Tuple{Interpolation}" href="#Ferrite.reference_coordinates-Tuple{Interpolation}"><code>Ferrite.reference_coordinates</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_coordinates(ip::Interpolation)</code></pre><p>Returns a vector of coordinates with length <a href="#Ferrite.getnbasefunctions-Tuple{Interpolation}"><code>getnbasefunctions(::Interpolation)</code></a> and indices corresponding to the indices of a dof in <a href="../elements/#Ferrite.vertices-Tuple{Ferrite.AbstractCell}"><code>vertices</code></a>, <a href="../elements/#Ferrite.faces-Tuple{Ferrite.AbstractCell}"><code>faces</code></a> and <a href="../elements/#Ferrite.edges-Tuple{Ferrite.AbstractCell}"><code>edges</code></a>.</p><pre><code class="nohighlight hljs">Only required for nodal interpolations. -TODO: Separate nodal and non-nodal interpolations.</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L265-L275">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.is_discontinuous-Tuple{Interpolation}" href="#Ferrite.is_discontinuous-Tuple{Interpolation}"><code>Ferrite.is_discontinuous</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">is_discontinuous(::Interpolation) -is_discontinuous(::Type{<:Interpolation})</code></pre><p>Checks whether the interpolation is discontinuous (i.e. <code>DiscontinuousLagrange</code>)</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L419-L424">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.adjust_dofs_during_distribution-Tuple{Interpolation}" href="#Ferrite.adjust_dofs_during_distribution-Tuple{Interpolation}"><code>Ferrite.adjust_dofs_during_distribution</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">adjust_dofs_during_distribution(::Interpolation)</code></pre><p>This function must return <code>true</code> if the dofs should be adjusted (i.e. permuted) during dof distribution. This is in contrast to i) adjusting the dofs during <a href="../../reference/fevalues/#Ferrite.reinit!"><code>reinit!</code></a> in the assembly loop, or ii) not adjusting at all (which is not needed for low order interpolations, generally).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L73-L80">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.mapping_type" href="#Ferrite.mapping_type"><code>Ferrite.mapping_type</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">mapping_type(ip::Interpolation)</code></pre><p>Get the type of mapping from the reference cell to the real cell for an interpolation <code>ip</code>. Subtypes of <code>ScalarInterpolation</code> and <code>VectorizedInterpolation</code> return <code>IdentityMapping()</code>, but other non-scalar interpolations may request different mapping types.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L1765-L1772">source</a></section></article><p>for all entities which exist on that reference element. The dof functions default to having no dofs defined on a specific entity. Hence, not overloading of the dof functions will result in an element with zero dofs. Also, it should always be double checked that everything is consistent as specified in the docstring of the corresponding function, as inconsistent implementations can lead to bugs which are really difficult to track down.</p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +TODO: Separate nodal and non-nodal interpolations.</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L265-L275">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.is_discontinuous-Tuple{Interpolation}" href="#Ferrite.is_discontinuous-Tuple{Interpolation}"><code>Ferrite.is_discontinuous</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">is_discontinuous(::Interpolation) +is_discontinuous(::Type{<:Interpolation})</code></pre><p>Checks whether the interpolation is discontinuous (i.e. <code>DiscontinuousLagrange</code>)</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L419-L424">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.adjust_dofs_during_distribution-Tuple{Interpolation}" href="#Ferrite.adjust_dofs_during_distribution-Tuple{Interpolation}"><code>Ferrite.adjust_dofs_during_distribution</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">adjust_dofs_during_distribution(::Interpolation)</code></pre><p>This function must return <code>true</code> if the dofs should be adjusted (i.e. permuted) during dof distribution. This is in contrast to i) adjusting the dofs during <a href="../../reference/fevalues/#Ferrite.reinit!"><code>reinit!</code></a> in the assembly loop, or ii) not adjusting at all (which is not needed for low order interpolations, generally).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L73-L80">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.mapping_type" href="#Ferrite.mapping_type"><code>Ferrite.mapping_type</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">mapping_type(ip::Interpolation)</code></pre><p>Get the type of mapping from the reference cell to the real cell for an interpolation <code>ip</code>. Subtypes of <code>ScalarInterpolation</code> and <code>VectorizedInterpolation</code> return <code>IdentityMapping()</code>, but other non-scalar interpolations may request different mapping types.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L1765-L1772">source</a></section></article><p>for all entities which exist on that reference element. The dof functions default to having no dofs defined on a specific entity. Hence, not overloading of the dof functions will result in an element with zero dofs. Also, it should always be double checked that everything is consistent as specified in the docstring of the corresponding function, as inconsistent implementations can lead to bugs which are really difficult to track down.</p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/devdocs/performance/index.html b/dev/devdocs/performance/index.html index 3d590ceab3..723bf52ccd 100644 --- a/dev/devdocs/performance/index.html +++ b/dev/devdocs/performance/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Performance analysis · Ferrite.jl</title><meta name="title" content="Performance analysis · Ferrite.jl"/><meta property="og:title" content="Performance analysis · Ferrite.jl"/><meta property="twitter:title" content="Performance analysis · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/performance/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/performance/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/performance/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Performance analysis</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Performance analysis</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/performance.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="devdocs-performance"><a class="docs-heading-anchor" href="#devdocs-performance">Performance analysis</a><a id="devdocs-performance-1"></a><a class="docs-heading-anchor-permalink" href="#devdocs-performance" title="Permalink"></a></h1><p>In the benchmark folder we provide basic infrastructure to analyze the performance of Ferrite to help tracking down performance regression issues. Two basic tools can be directly executed via make: A basic benchmark for the current branch and a comparison between two commits. To execute the benchmark on the current branch only open a shell in the benchmark folder and call</p><pre><code class="nohighlight hljs">make benchmark</code></pre><p>whereas for the comparison of two commits simply call</p><pre><code class="nohighlight hljs">make compare target=<target-commit> baseline=<baseline-commit></code></pre><p>If you have a custom julia executable that is not accessible via the <code>julia</code> command, then you can pass the executable via</p><pre><code class="nohighlight hljs">JULIA_CMD=<path-to-julia-executable> make compare target=<target-commit> baseline=<baseline-commit></code></pre><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>For the performance comparison between two commits you must not have any uncommitted or untracked files in your Ferrite.jl folder! Otherwise the <code>PkgBenchmark.jl</code> will fail to setup the comparison.</p></div></div><p>For more fine grained control you can run subsets of the benchmarks via by appending <code>-<subset></code> to compare or benchmark, e.g.</p><pre><code class="nohighlight hljs">make benchmark-mesh</code></pre><p>to benchmark only the mesh functionality. The following subsets are currently available:</p><ul><li><code>assembly</code></li><li><code>boundary-conditions</code></li><li><code>dofs</code></li><li><code>mesh</code></li></ul><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>It is recommended to run all benchmarks before running subsets to get the correct tuning parameters for each benchmark.</p></div></div></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Performance analysis · Ferrite.jl</title><meta name="title" content="Performance analysis · Ferrite.jl"/><meta property="og:title" content="Performance analysis · Ferrite.jl"/><meta property="twitter:title" content="Performance analysis · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/performance/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/performance/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/performance/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Performance analysis</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Performance analysis</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/performance.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="devdocs-performance"><a class="docs-heading-anchor" href="#devdocs-performance">Performance analysis</a><a id="devdocs-performance-1"></a><a class="docs-heading-anchor-permalink" href="#devdocs-performance" title="Permalink"></a></h1><p>In the benchmark folder we provide basic infrastructure to analyze the performance of Ferrite to help tracking down performance regression issues. Two basic tools can be directly executed via make: A basic benchmark for the current branch and a comparison between two commits. To execute the benchmark on the current branch only open a shell in the benchmark folder and call</p><pre><code class="nohighlight hljs">make benchmark</code></pre><p>whereas for the comparison of two commits simply call</p><pre><code class="nohighlight hljs">make compare target=<target-commit> baseline=<baseline-commit></code></pre><p>If you have a custom julia executable that is not accessible via the <code>julia</code> command, then you can pass the executable via</p><pre><code class="nohighlight hljs">JULIA_CMD=<path-to-julia-executable> make compare target=<target-commit> baseline=<baseline-commit></code></pre><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>For the performance comparison between two commits you must not have any uncommitted or untracked files in your Ferrite.jl folder! Otherwise the <code>PkgBenchmark.jl</code> will fail to setup the comparison.</p></div></div><p>For more fine grained control you can run subsets of the benchmarks via by appending <code>-<subset></code> to compare or benchmark, e.g.</p><pre><code class="nohighlight hljs">make benchmark-mesh</code></pre><p>to benchmark only the mesh functionality. The following subsets are currently available:</p><ul><li><code>assembly</code></li><li><code>boundary-conditions</code></li><li><code>dofs</code></li><li><code>mesh</code></li></ul><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>It is recommended to run all benchmarks before running subsets to get the correct tuning parameters for each benchmark.</p></div></div></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/devdocs/reference_cells/index.html b/dev/devdocs/reference_cells/index.html index c7a8961c75..8a636e07d0 100644 --- a/dev/devdocs/reference_cells/index.html +++ b/dev/devdocs/reference_cells/index.html @@ -1,12 +1,12 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Reference cells · Ferrite.jl</title><meta name="title" content="Reference cells · Ferrite.jl"/><meta property="og:title" content="Reference cells · Ferrite.jl"/><meta property="twitter:title" content="Reference cells · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/reference_cells/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/reference_cells/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/reference_cells/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Reference cells</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Reference cells</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/reference_cells.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Reference-cells"><a class="docs-heading-anchor" href="#Reference-cells">Reference cells</a><a id="Reference-cells-1"></a><a class="docs-heading-anchor-permalink" href="#Reference-cells" title="Permalink"></a></h1><p>The reference cells are used to i) define grid cells, ii) define shape functions, and iii) define quadrature rules. The numbering of vertices, edges, faces are visualized below. See also <a href="https://ferrite-fem.github.io/FerriteViz.jl/dev/api/#FerriteViz.elementinfo"><code>FerriteViz.elementinfo</code></a>.</p><h3 id="AbstractRefShape-subtypes"><a class="docs-heading-anchor" href="#AbstractRefShape-subtypes"><code>AbstractRefShape</code> subtypes</a><a id="AbstractRefShape-subtypes-1"></a><a class="docs-heading-anchor-permalink" href="#AbstractRefShape-subtypes" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.AbstractRefShape" href="#Ferrite.AbstractRefShape"><code>Ferrite.AbstractRefShape</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">AbstractRefShape{refdim}</code></pre><p>Supertype for all reference shapes, with reference dimension <code>refdim</code>. Reference shapes are used to define grid cells, shape functions, and quadrature rules. Currently existing reference shapes are: <a href="#Ferrite.RefLine"><code>RefLine</code></a>, <a href="#Ferrite.RefTriangle"><code>RefTriangle</code></a>, <a href="#Ferrite.RefQuadrilateral"><code>RefQuadrilateral</code></a>, <a href="#Ferrite.RefTetrahedron"><code>RefTetrahedron</code></a>, <a href="#Ferrite.RefHexahedron"><code>RefHexahedron</code></a>, <a href="#Ferrite.RefPrism"><code>RefPrism</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Ferrite.jl#L35-L42">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefLine" href="#Ferrite.RefLine"><code>Ferrite.RefLine</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefLine <: AbstractRefShape{1}</code></pre><p>Reference line/interval, reference dimension 1.</p><pre><code class="nohighlight hljs">----------------+-------------------- +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Reference cells · Ferrite.jl</title><meta name="title" content="Reference cells · Ferrite.jl"/><meta property="og:title" content="Reference cells · Ferrite.jl"/><meta property="twitter:title" content="Reference cells · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/reference_cells/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/reference_cells/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/devdocs/reference_cells/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Reference cells</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Reference cells</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/devdocs/reference_cells.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Reference-cells"><a class="docs-heading-anchor" href="#Reference-cells">Reference cells</a><a id="Reference-cells-1"></a><a class="docs-heading-anchor-permalink" href="#Reference-cells" title="Permalink"></a></h1><p>The reference cells are used to i) define grid cells, ii) define shape functions, and iii) define quadrature rules. The numbering of vertices, edges, faces are visualized below. See also <a href="https://ferrite-fem.github.io/FerriteViz.jl/dev/api/#FerriteViz.elementinfo"><code>FerriteViz.elementinfo</code></a>.</p><h3 id="AbstractRefShape-subtypes"><a class="docs-heading-anchor" href="#AbstractRefShape-subtypes"><code>AbstractRefShape</code> subtypes</a><a id="AbstractRefShape-subtypes-1"></a><a class="docs-heading-anchor-permalink" href="#AbstractRefShape-subtypes" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.AbstractRefShape" href="#Ferrite.AbstractRefShape"><code>Ferrite.AbstractRefShape</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">AbstractRefShape{refdim}</code></pre><p>Supertype for all reference shapes, with reference dimension <code>refdim</code>. Reference shapes are used to define grid cells, shape functions, and quadrature rules. Currently existing reference shapes are: <a href="#Ferrite.RefLine"><code>RefLine</code></a>, <a href="#Ferrite.RefTriangle"><code>RefTriangle</code></a>, <a href="#Ferrite.RefQuadrilateral"><code>RefQuadrilateral</code></a>, <a href="#Ferrite.RefTetrahedron"><code>RefTetrahedron</code></a>, <a href="#Ferrite.RefHexahedron"><code>RefHexahedron</code></a>, <a href="#Ferrite.RefPrism"><code>RefPrism</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Ferrite.jl#L35-L42">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefLine" href="#Ferrite.RefLine"><code>Ferrite.RefLine</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefLine <: AbstractRefShape{1}</code></pre><p>Reference line/interval, reference dimension 1.</p><pre><code class="nohighlight hljs">----------------+-------------------- Vertex numbers: | Vertex coordinates: 1-------2 | v1: 𝛏 = (-1.0,) --> ξ₁ | v2: 𝛏 = ( 1.0,) ----------------+-------------------- Edge numbers: | Edge identifiers: +---1---+ | e1: (v1, v2) -----------------+--------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/docs.jl#L5-L19">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefTriangle" href="#Ferrite.RefTriangle"><code>Ferrite.RefTriangle</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefTriangle <: AbstractRefShape{2}</code></pre><p>Reference triangle, reference dimension 2.</p><pre><code class="nohighlight hljs">----------------+-------------------- +----------------+--------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/docs.jl#L5-L19">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefTriangle" href="#Ferrite.RefTriangle"><code>Ferrite.RefTriangle</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefTriangle <: AbstractRefShape{2}</code></pre><p>Reference triangle, reference dimension 2.</p><pre><code class="nohighlight hljs">----------------+-------------------- Vertex numbers: | Vertex coordinates: 2 | | \ | v1: 𝛏 = (1.0, 0.0) @@ -28,7 +28,7 @@ | \ | f1: (v1, v2, v3) | 1 \ | +-------+ | -----------------+--------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/docs.jl#L22-L51">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefQuadrilateral" href="#Ferrite.RefQuadrilateral"><code>Ferrite.RefQuadrilateral</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefQuadrilateral <: AbstractRefShape{2}</code></pre><p>Reference quadrilateral, reference dimension 2.</p><pre><code class="nohighlight hljs">----------------+--------------------- +----------------+--------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/docs.jl#L22-L51">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefQuadrilateral" href="#Ferrite.RefQuadrilateral"><code>Ferrite.RefQuadrilateral</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefQuadrilateral <: AbstractRefShape{2}</code></pre><p>Reference quadrilateral, reference dimension 2.</p><pre><code class="nohighlight hljs">----------------+--------------------- Vertex numbers: | Vertex coordinates: 4-------3 | | | | v1: 𝛏 = (-1.0, -1.0) @@ -50,7 +50,7 @@ | 1 | | f1: (v1, v2, v3, v4) | | | +-------+ | -----------------+---------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/docs.jl#L54-L83">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefTetrahedron" href="#Ferrite.RefTetrahedron"><code>Ferrite.RefTetrahedron</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefTetrahedron <: AbstractRefShape{3}</code></pre><p>Reference tetrahedron, reference dimension 3.</p><pre><code class="nohighlight hljs">---------------------------------------+------------------------- +----------------+---------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/docs.jl#L54-L83">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefTetrahedron" href="#Ferrite.RefTetrahedron"><code>Ferrite.RefTetrahedron</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefTetrahedron <: AbstractRefShape{3}</code></pre><p>Reference tetrahedron, reference dimension 3.</p><pre><code class="nohighlight hljs">---------------------------------------+------------------------- Vertex numbers: | Vertex coordinates: 4 4 | ^ ξ₃ / \ /| \ | v1: 𝛏 = (0.0, 0.0, 0.0) @@ -74,7 +74,7 @@ / 3 \ /2 +___ \ | f3: (v2, v3, v4) / __--+ / / 1 __‾-+ | f4: (v1, v4, v3) + __--‾‾ +/__--‾‾ | ----------------------------------------+-------------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/docs.jl#L86-L117">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefHexahedron" href="#Ferrite.RefHexahedron"><code>Ferrite.RefHexahedron</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefHexahedron <: AbstractRefShape{3}</code></pre><p>Reference hexahedron, reference dimension 3.</p><pre><code class="nohighlight hljs">-----------------------------------------+---------------------------- +---------------------------------------+-------------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/docs.jl#L86-L117">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefHexahedron" href="#Ferrite.RefHexahedron"><code>Ferrite.RefHexahedron</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefHexahedron <: AbstractRefShape{3}</code></pre><p>Reference hexahedron, reference dimension 3.</p><pre><code class="nohighlight hljs">-----------------------------------------+---------------------------- Vertex numbers: | Vertex coordinates: 5--------8 5--------8 | v1: 𝛏 = (-1.0, -1.0, -1.0) / /| /| | | v2: 𝛏 = ( 1.0, -1.0, -1.0) @@ -104,7 +104,7 @@ | 3 | / | / / | f5: (v1, v5, v8, v4) | |/ |/ 1 / | f6: (v5, v6, v7, v8) +--------+ +--------+ | ------------------------------------------+-----------------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/docs.jl#L120-L157">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefPrism" href="#Ferrite.RefPrism"><code>Ferrite.RefPrism</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefPrism <: AbstractRefShape{3}</code></pre><p>Reference prism, reference dimension 3.</p><pre><code class="nohighlight hljs">-----------------------------------------+---------------------------- +-----------------------------------------+-----------------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/docs.jl#L120-L157">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RefPrism" href="#Ferrite.RefPrism"><code>Ferrite.RefPrism</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RefPrism <: AbstractRefShape{3}</code></pre><p>Reference prism, reference dimension 3.</p><pre><code class="nohighlight hljs">-----------------------------------------+---------------------------- Vertex numbers: | Vertex coordinates: 4-------/6 4--------6 | / / | /| | | v1: 𝛏 = (0.0, 0.0, 0.0) @@ -134,8 +134,8 @@ | / | / 1 / | f5: (v4, v5, v6) | / |/ / | + / + / | ------------------------------------------+----------------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/docs.jl#L160-L197">source</a></section></article><h3 id="Required-methods-to-implement-for-all-subtypes-of-AbstractRefShape-to-define-a-new-reference-shape"><a class="docs-heading-anchor" href="#Required-methods-to-implement-for-all-subtypes-of-AbstractRefShape-to-define-a-new-reference-shape">Required methods to implement for all subtypes of <code>AbstractRefShape</code> to define a new reference shape</a><a id="Required-methods-to-implement-for-all-subtypes-of-AbstractRefShape-to-define-a-new-reference-shape-1"></a><a class="docs-heading-anchor-permalink" href="#Required-methods-to-implement-for-all-subtypes-of-AbstractRefShape-to-define-a-new-reference-shape" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_vertices-Tuple{Type{<:Ferrite.AbstractRefShape}}" href="#Ferrite.reference_vertices-Tuple{Type{<:Ferrite.AbstractRefShape}}"><code>Ferrite.reference_vertices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_vertices(::Type{<:AbstractRefShape}) -reference_vertices(::AbstractCell)</code></pre><p>Returns a tuple of integers containing the local node indices corresponding to the vertices (i.e. corners or endpoints) of the cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L60-L66">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_edges-Tuple{Type{<:Ferrite.AbstractRefShape}}" href="#Ferrite.reference_edges-Tuple{Type{<:Ferrite.AbstractRefShape}}"><code>Ferrite.reference_edges</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_edges(::Type{<:AbstractRefShape}) -reference_edges(::AbstractCell)</code></pre><p>Returns a tuple of 2-tuples containing the ordered local node indices (corresponding to the vertices) that define an edge.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L78-L84">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_faces-Tuple{Type{<:Ferrite.AbstractRefShape}}" href="#Ferrite.reference_faces-Tuple{Type{<:Ferrite.AbstractRefShape}}"><code>Ferrite.reference_faces</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_faces(::Type{<:AbstractRefShape}) -reference_faces(::AbstractCell)</code></pre><p>Returns a tuple of n-tuples containing the ordered local node indices (corresponding to the vertices) that define a face.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L98-L104">source</a></section></article><p>which automatically defines</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_facets-Tuple{Type{<:Ferrite.AbstractRefShape}}" href="#Ferrite.reference_facets-Tuple{Type{<:Ferrite.AbstractRefShape}}"><code>Ferrite.reference_facets</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.reference_facets(::Type{<:AbstractRefShape}) -Ferrite.reference_facets(::AbstractCell)</code></pre><p>Returns a tuple of n-tuples containing the ordered local node indices (corresponding to the vertices) that define a facet.</p><p>See also <a href="../elements/#Ferrite.reference_vertices-Tuple{Ferrite.AbstractCell}"><code>reference_vertices</code></a>, <a href="../elements/#Ferrite.reference_edges-Tuple{Ferrite.AbstractCell}"><code>reference_edges</code></a>, and <a href="../elements/#Ferrite.reference_faces-Tuple{Ferrite.AbstractCell}"><code>reference_faces</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L136-L144">source</a></section></article><h3 id="Applicable-methods-to-AbstractRefShapes"><a class="docs-heading-anchor" href="#Applicable-methods-to-AbstractRefShapes">Applicable methods to <code>AbstractRefShape</code>s</a><a id="Applicable-methods-to-AbstractRefShapes-1"></a><a class="docs-heading-anchor-permalink" href="#Applicable-methods-to-AbstractRefShapes" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getrefdim-Tuple{Type{<:Ferrite.AbstractRefShape}}" href="#Ferrite.getrefdim-Tuple{Type{<:Ferrite.AbstractRefShape}}"><code>Ferrite.getrefdim</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getrefdim(RefShape::Type{<:AbstractRefShape})</code></pre><p>Get the dimension of the reference shape</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Ferrite.jl#L56-L60">source</a></section></article></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +-----------------------------------------+----------------------------</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/docs.jl#L160-L197">source</a></section></article><h3 id="Required-methods-to-implement-for-all-subtypes-of-AbstractRefShape-to-define-a-new-reference-shape"><a class="docs-heading-anchor" href="#Required-methods-to-implement-for-all-subtypes-of-AbstractRefShape-to-define-a-new-reference-shape">Required methods to implement for all subtypes of <code>AbstractRefShape</code> to define a new reference shape</a><a id="Required-methods-to-implement-for-all-subtypes-of-AbstractRefShape-to-define-a-new-reference-shape-1"></a><a class="docs-heading-anchor-permalink" href="#Required-methods-to-implement-for-all-subtypes-of-AbstractRefShape-to-define-a-new-reference-shape" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_vertices-Tuple{Type{<:Ferrite.AbstractRefShape}}" href="#Ferrite.reference_vertices-Tuple{Type{<:Ferrite.AbstractRefShape}}"><code>Ferrite.reference_vertices</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_vertices(::Type{<:AbstractRefShape}) +reference_vertices(::AbstractCell)</code></pre><p>Returns a tuple of integers containing the local node indices corresponding to the vertices (i.e. corners or endpoints) of the cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L60-L66">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_edges-Tuple{Type{<:Ferrite.AbstractRefShape}}" href="#Ferrite.reference_edges-Tuple{Type{<:Ferrite.AbstractRefShape}}"><code>Ferrite.reference_edges</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_edges(::Type{<:AbstractRefShape}) +reference_edges(::AbstractCell)</code></pre><p>Returns a tuple of 2-tuples containing the ordered local node indices (corresponding to the vertices) that define an edge.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L78-L84">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_faces-Tuple{Type{<:Ferrite.AbstractRefShape}}" href="#Ferrite.reference_faces-Tuple{Type{<:Ferrite.AbstractRefShape}}"><code>Ferrite.reference_faces</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reference_faces(::Type{<:AbstractRefShape}) +reference_faces(::AbstractCell)</code></pre><p>Returns a tuple of n-tuples containing the ordered local node indices (corresponding to the vertices) that define a face.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L98-L104">source</a></section></article><p>which automatically defines</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reference_facets-Tuple{Type{<:Ferrite.AbstractRefShape}}" href="#Ferrite.reference_facets-Tuple{Type{<:Ferrite.AbstractRefShape}}"><code>Ferrite.reference_facets</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.reference_facets(::Type{<:AbstractRefShape}) +Ferrite.reference_facets(::AbstractCell)</code></pre><p>Returns a tuple of n-tuples containing the ordered local node indices (corresponding to the vertices) that define a facet.</p><p>See also <a href="../elements/#Ferrite.reference_vertices-Tuple{Ferrite.AbstractCell}"><code>reference_vertices</code></a>, <a href="../elements/#Ferrite.reference_edges-Tuple{Ferrite.AbstractCell}"><code>reference_edges</code></a>, and <a href="../elements/#Ferrite.reference_faces-Tuple{Ferrite.AbstractCell}"><code>reference_faces</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L136-L144">source</a></section></article><h3 id="Applicable-methods-to-AbstractRefShapes"><a class="docs-heading-anchor" href="#Applicable-methods-to-AbstractRefShapes">Applicable methods to <code>AbstractRefShape</code>s</a><a id="Applicable-methods-to-AbstractRefShapes-1"></a><a class="docs-heading-anchor-permalink" href="#Applicable-methods-to-AbstractRefShapes" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getrefdim-Tuple{Type{<:Ferrite.AbstractRefShape}}" href="#Ferrite.getrefdim-Tuple{Type{<:Ferrite.AbstractRefShape}}"><code>Ferrite.getrefdim</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getrefdim(RefShape::Type{<:AbstractRefShape})</code></pre><p>Get the dimension of the reference shape</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Ferrite.jl#L56-L60">source</a></section></article></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/devdocs/special_datastructures/index.html b/dev/devdocs/special_datastructures/index.html index 237d2ce710..46824e89e1 100644 --- a/dev/devdocs/special_datastructures/index.html +++ b/dev/devdocs/special_datastructures/index.html @@ -3,4 +3,4 @@ for (ind, val) in some_data push_at_index!(buffer, val, ind) end -end</code></pre><p><code>sizehint</code> tells how much space to allocate for the index <code>ind</code> if no <code>val</code> has been added to that index before, or how much more space to allocate in case all previously allocated space for <code>ind</code> has been used up.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/CollectionsOfViews.jl#L85-L104">source</a></section><section><div><pre><code class="language-julia hljs">ArrayOfVectorViews(b::CollectionsOfViews.ConstructionBuffer)</code></pre><p>Creates the <code>ArrayOfVectorViews</code> directly from the <code>ConstructionBuffer</code> that was manually created and filled.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/CollectionsOfViews.jl#L112-L116">source</a></section><section><div><pre><code class="language-julia hljs">ArrayOfVectorViews(indices::Vector{Int}, data::Vector{T}, lin_idx::LinearIndices{N}; checkargs = true)</code></pre><p>Creates the <code>ArrayOfVectorViews</code> directly where the user is responsible for having the correct input data. Checking of the argument dimensions can be elided by setting <code>checkargs = false</code>, but incorrect dimensions may lead to illegal out of bounds access later.</p><p><code>data</code> is indexed by <code>indices[i]:indices[i+1]</code>, where <code>i = lin_idx[idx...]</code> and <code>idx...</code> are the user-provided indices to the <code>ArrayOfVectorViews</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/CollectionsOfViews.jl#L137-L146">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CollectionsOfViews.ConstructionBuffer" href="#Ferrite.CollectionsOfViews.ConstructionBuffer"><code>Ferrite.CollectionsOfViews.ConstructionBuffer</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ConstructionBuffer(data::Vector, dims::NTuple{N, Int}, sizehint)</code></pre><p>Create a buffer for creating an <a href="#ArrayOfVectorViews"><code>ArrayOfVectorViews</code></a>, representing an array with <code>N</code> axes. <code>sizehint</code> sets the number of elements in <code>data</code> allocated when a new index is added via <code>push_at_index!</code>, or when the current storage for the index is full, how much many additional elements are reserved for that index. Any content in <code>data</code> is overwritten, but performance is improved by pre-allocating it to a reasonable size or by <code>sizehint!</code>ing it.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/CollectionsOfViews.jl#L19-L27">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CollectionsOfViews.push_at_index!" href="#Ferrite.CollectionsOfViews.push_at_index!"><code>Ferrite.CollectionsOfViews.push_at_index!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">push_at_index!(b::ConstructionBuffer, val, indices::Int...)</code></pre><p><code>push!</code> the value <code>val</code> to the <code>Vector</code> view at the index given by <code>indices</code>, typically called inside the <a href="#ArrayOfVectorViews"><code>ArrayOfVectorViews</code></a> constructor do-block. But can also be used when manually creating a <code>ConstructionBuffer</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/CollectionsOfViews.jl#L33-L39">source</a></section></article></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end</code></pre><p><code>sizehint</code> tells how much space to allocate for the index <code>ind</code> if no <code>val</code> has been added to that index before, or how much more space to allocate in case all previously allocated space for <code>ind</code> has been used up.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/CollectionsOfViews.jl#L85-L104">source</a></section><section><div><pre><code class="language-julia hljs">ArrayOfVectorViews(b::CollectionsOfViews.ConstructionBuffer)</code></pre><p>Creates the <code>ArrayOfVectorViews</code> directly from the <code>ConstructionBuffer</code> that was manually created and filled.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/CollectionsOfViews.jl#L112-L116">source</a></section><section><div><pre><code class="language-julia hljs">ArrayOfVectorViews(indices::Vector{Int}, data::Vector{T}, lin_idx::LinearIndices{N}; checkargs = true)</code></pre><p>Creates the <code>ArrayOfVectorViews</code> directly where the user is responsible for having the correct input data. Checking of the argument dimensions can be elided by setting <code>checkargs = false</code>, but incorrect dimensions may lead to illegal out of bounds access later.</p><p><code>data</code> is indexed by <code>indices[i]:indices[i+1]</code>, where <code>i = lin_idx[idx...]</code> and <code>idx...</code> are the user-provided indices to the <code>ArrayOfVectorViews</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/CollectionsOfViews.jl#L137-L146">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CollectionsOfViews.ConstructionBuffer" href="#Ferrite.CollectionsOfViews.ConstructionBuffer"><code>Ferrite.CollectionsOfViews.ConstructionBuffer</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ConstructionBuffer(data::Vector, dims::NTuple{N, Int}, sizehint)</code></pre><p>Create a buffer for creating an <a href="#ArrayOfVectorViews"><code>ArrayOfVectorViews</code></a>, representing an array with <code>N</code> axes. <code>sizehint</code> sets the number of elements in <code>data</code> allocated when a new index is added via <code>push_at_index!</code>, or when the current storage for the index is full, how much many additional elements are reserved for that index. Any content in <code>data</code> is overwritten, but performance is improved by pre-allocating it to a reasonable size or by <code>sizehint!</code>ing it.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/CollectionsOfViews.jl#L19-L27">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CollectionsOfViews.push_at_index!" href="#Ferrite.CollectionsOfViews.push_at_index!"><code>Ferrite.CollectionsOfViews.push_at_index!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">push_at_index!(b::ConstructionBuffer, val, indices::Int...)</code></pre><p><code>push!</code> the value <code>val</code> to the <code>Vector</code> view at the index given by <code>indices</code>, typically called inside the <a href="#ArrayOfVectorViews"><code>ArrayOfVectorViews</code></a> constructor do-block. But can also be used when manually creating a <code>ConstructionBuffer</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/CollectionsOfViews.jl#L33-L39">source</a></section></article></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/gallery/helmholtz/index.html b/dev/gallery/helmholtz/index.html index a112aaf6c6..e614a039d3 100644 --- a/dev/gallery/helmholtz/index.html +++ b/dev/gallery/helmholtz/index.html @@ -108,4 +108,4 @@ vtk = VTKGridFile("helmholtz", dh) write_solution(vtk, dh, u) close(vtk) -println("Helmholtz successful")</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">Helmholtz successful</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +println("Helmholtz successful")</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">Helmholtz successful</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/gallery/index.html b/dev/gallery/index.html index 950750ac95..a4329ffa24 100644 --- a/dev/gallery/index.html +++ b/dev/gallery/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Code gallery · Ferrite.jl</title><meta name="title" content="Code gallery · Ferrite.jl"/><meta property="og:title" content="Code gallery · Ferrite.jl"/><meta property="twitter:title" content="Code gallery · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/gallery/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/gallery/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/gallery/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li class="is-active"><a class="tocitem" href>Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Code gallery</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Code gallery</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/gallery/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Code-gallery"><a class="docs-heading-anchor" href="#Code-gallery">Code gallery</a><a id="Code-gallery-1"></a><a class="docs-heading-anchor-permalink" href="#Code-gallery" title="Permalink"></a></h1><p>This page gives an overview of the code gallery. Compared to the tutorials, these programs do not focus on teaching Ferrite, but rather focus on showing how Ferrite can be used "in the wild".</p><div class="admonition is-info"><header class="admonition-header">Contribute to the gallery!</header><div class="admonition-body"><p>Most of the gallery is user contributed. If you use Ferrite, and have something you want to share, please contribute to the gallery! This could, for example, be your research code for a published paper, some interesting application, or just some nice trick.</p></div></div><hr/><h4 id="[Helmholtz-equation](helmholtz.md)"><a class="docs-heading-anchor" href="#[Helmholtz-equation](helmholtz.md)"><a href="helmholtz/">Helmholtz equation</a></a><a id="[Helmholtz-equation](helmholtz.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Helmholtz-equation](helmholtz.md)" title="Permalink"></a></h4><p>Solves the Helmholtz equation on the unit square using a combination of Dirichlet and Neumann boundary conditions and the method of manufactured solutions.</p><p><em>Contributed by</em>: Kristoffer Carlsson (<a href="https://github.com/KristofferC">@KristofferC</a>).</p><hr/><h4 id="[Nearly-incompressible-hyperelasticity](quasi_incompressible_hyperelasticity.md)"><a class="docs-heading-anchor" href="#[Nearly-incompressible-hyperelasticity](quasi_incompressible_hyperelasticity.md)"><a href="quasi_incompressible_hyperelasticity/">Nearly incompressible hyperelasticity</a></a><a id="[Nearly-incompressible-hyperelasticity](quasi_incompressible_hyperelasticity.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Nearly-incompressible-hyperelasticity](quasi_incompressible_hyperelasticity.md)" title="Permalink"></a></h4><p>This program combines the ideas from <a href="../tutorials/incompressible_elasticity/">Tutorial 3: Incompressible elasticity</a> and <a href="../tutorials/incompressible_elasticity/">Tutorial 4: Hyperelasticity</a> to construct a mixed element solving three-dimensional displacement-pressure equations.</p><p><em>Contributed by</em>: Bhavesh Shrimali (<a href="https://github.com/bhaveshshrimali">@bhaveshshrimali</a>).</p><hr/><h4 id="[Ginzburg-Landau-model-energy-minimization](landau.md)"><a class="docs-heading-anchor" href="#[Ginzburg-Landau-model-energy-minimization](landau.md)"><a href="landau/">Ginzburg-Landau model energy minimization</a></a><a id="[Ginzburg-Landau-model-energy-minimization](landau.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Ginzburg-Landau-model-energy-minimization](landau.md)" title="Permalink"></a></h4><p>A basic Ginzburg-Landau model is solved. <a href="https://github.com/JuliaDiff/ForwardDiff.jl">ForwardDiff.jl</a> is used to compute the gradient and hessian of the energy function. Multi-threading is used to parallelize the assembly procedure.</p><p><em>Contributed by</em>: Louis Ponet (<a href="https://github.com/louisponet">@louisponet</a>).</p><hr/><h4 id="[Topology-optimization](topology_optimization.md)"><a class="docs-heading-anchor" href="#[Topology-optimization](topology_optimization.md)"><a href="topology_optimization/">Topology optimization</a></a><a id="[Topology-optimization](topology_optimization.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Topology-optimization](topology_optimization.md)" title="Permalink"></a></h4><p>Topology optimization is shown for the bending problem by using a SIMP material model. To avoid numerical instabilities, a regularization scheme requiring the calculation of the Laplacian is imposed, which is done by using the grid topology functionalities.</p><p><em>Contributed by</em>: Mischa Blaszczyk (<a href="https://github.com/blaszm">@blaszm</a>).</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../howto/threaded_assembly/">« Multi-threaded assembly</a><a class="docs-footer-nextpage" href="../devdocs/">Developer documentation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Code gallery · Ferrite.jl</title><meta name="title" content="Code gallery · Ferrite.jl"/><meta property="og:title" content="Code gallery · Ferrite.jl"/><meta property="twitter:title" content="Code gallery · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/gallery/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/gallery/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/gallery/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li class="is-active"><a class="tocitem" href>Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Code gallery</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Code gallery</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/gallery/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Code-gallery"><a class="docs-heading-anchor" href="#Code-gallery">Code gallery</a><a id="Code-gallery-1"></a><a class="docs-heading-anchor-permalink" href="#Code-gallery" title="Permalink"></a></h1><p>This page gives an overview of the code gallery. Compared to the tutorials, these programs do not focus on teaching Ferrite, but rather focus on showing how Ferrite can be used "in the wild".</p><div class="admonition is-info"><header class="admonition-header">Contribute to the gallery!</header><div class="admonition-body"><p>Most of the gallery is user contributed. If you use Ferrite, and have something you want to share, please contribute to the gallery! This could, for example, be your research code for a published paper, some interesting application, or just some nice trick.</p></div></div><hr/><h4 id="[Helmholtz-equation](helmholtz.md)"><a class="docs-heading-anchor" href="#[Helmholtz-equation](helmholtz.md)"><a href="helmholtz/">Helmholtz equation</a></a><a id="[Helmholtz-equation](helmholtz.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Helmholtz-equation](helmholtz.md)" title="Permalink"></a></h4><p>Solves the Helmholtz equation on the unit square using a combination of Dirichlet and Neumann boundary conditions and the method of manufactured solutions.</p><p><em>Contributed by</em>: Kristoffer Carlsson (<a href="https://github.com/KristofferC">@KristofferC</a>).</p><hr/><h4 id="[Nearly-incompressible-hyperelasticity](quasi_incompressible_hyperelasticity.md)"><a class="docs-heading-anchor" href="#[Nearly-incompressible-hyperelasticity](quasi_incompressible_hyperelasticity.md)"><a href="quasi_incompressible_hyperelasticity/">Nearly incompressible hyperelasticity</a></a><a id="[Nearly-incompressible-hyperelasticity](quasi_incompressible_hyperelasticity.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Nearly-incompressible-hyperelasticity](quasi_incompressible_hyperelasticity.md)" title="Permalink"></a></h4><p>This program combines the ideas from <a href="../tutorials/incompressible_elasticity/">Tutorial 3: Incompressible elasticity</a> and <a href="../tutorials/incompressible_elasticity/">Tutorial 4: Hyperelasticity</a> to construct a mixed element solving three-dimensional displacement-pressure equations.</p><p><em>Contributed by</em>: Bhavesh Shrimali (<a href="https://github.com/bhaveshshrimali">@bhaveshshrimali</a>).</p><hr/><h4 id="[Ginzburg-Landau-model-energy-minimization](landau.md)"><a class="docs-heading-anchor" href="#[Ginzburg-Landau-model-energy-minimization](landau.md)"><a href="landau/">Ginzburg-Landau model energy minimization</a></a><a id="[Ginzburg-Landau-model-energy-minimization](landau.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Ginzburg-Landau-model-energy-minimization](landau.md)" title="Permalink"></a></h4><p>A basic Ginzburg-Landau model is solved. <a href="https://github.com/JuliaDiff/ForwardDiff.jl">ForwardDiff.jl</a> is used to compute the gradient and hessian of the energy function. Multi-threading is used to parallelize the assembly procedure.</p><p><em>Contributed by</em>: Louis Ponet (<a href="https://github.com/louisponet">@louisponet</a>).</p><hr/><h4 id="[Topology-optimization](topology_optimization.md)"><a class="docs-heading-anchor" href="#[Topology-optimization](topology_optimization.md)"><a href="topology_optimization/">Topology optimization</a></a><a id="[Topology-optimization](topology_optimization.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Topology-optimization](topology_optimization.md)" title="Permalink"></a></h4><p>Topology optimization is shown for the bending problem by using a SIMP material model. To avoid numerical instabilities, a regularization scheme requiring the calculation of the Laplacian is imposed, which is done by using the grid topology functionalities.</p><p><em>Contributed by</em>: Mischa Blaszczyk (<a href="https://github.com/blaszm">@blaszm</a>).</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../howto/threaded_assembly/">« Multi-threaded assembly</a><a class="docs-footer-nextpage" href="../devdocs/">Developer documentation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/gallery/landau.ipynb b/dev/gallery/landau.ipynb index d4eb4d1721..0adc03cd97 100644 --- a/dev/gallery/landau.ipynb +++ b/dev/gallery/landau.ipynb @@ -596,32 +596,32 @@ "text": [ "Iter Function value Gradient norm \n", " 0 2.127588e+06 3.597094e+02\n", - " * time: 0.028956890106201172\n", + " * time: 0.029977083206176758\n", " 1 3.786155e+05 1.047687e+02\n", - " * time: 3.771064043045044\n", + " * time: 3.7992539405822754\n", " 2 5.306125e+04 2.978953e+01\n", - " * time: 6.721739053726196\n", + " * time: 6.779293060302734\n", " 3 -2.642320e+03 7.943136e+00\n", - " * time: 9.63821005821228\n", + " * time: 9.712316036224365\n", " 4 -1.027484e+04 1.752693e+00\n", - " * time: 12.550831079483032\n", + " * time: 12.650713920593262\n", " 5 -1.084925e+04 2.157295e-01\n", - " * time: 15.484035968780518\n", + " * time: 15.602653980255127\n", " 6 -1.085880e+04 5.288877e-03\n", - " * time: 18.406095027923584\n", + " * time: 18.560922861099243\n", " 7 -1.085881e+04 3.478176e-06\n", - " * time: 21.31130290031433\n", + " * time: 21.508105039596558\n", " 8 -1.085881e+04 1.596091e-12\n", - " * time: 24.253534078598022\n", + " * time: 24.4543399810791\n", " 9 -1.085881e+04 1.444882e-12\n", - " * time: 27.229179859161377\n", + " * time: 27.474772930145264\n", " 10 -1.085881e+04 1.548831e-13\n", - " * time: 30.17466902732849\n", + " * time: 30.436681985855103\n", " 11 -1.085881e+04 1.548831e-13\n", - " * time: 33.20905804634094\n", + " * time: 33.468302965164185\n", " 12 -1.085881e+04 1.508030e-13\n", - " * time: 33.658751010894775\n", - " 40.847445 seconds (14.89 M allocations: 4.060 GiB, 1.29% gc time, 12.96% compilation time)\n" + " * time: 33.90928888320923\n", + " 41.380651 seconds (14.89 M allocations: 4.060 GiB, 1.29% gc time, 13.21% compilation time)\n" ] } ], diff --git a/dev/gallery/landau/index.html b/dev/gallery/landau/index.html index 721f029e8c..07fb2b99c0 100644 --- a/dev/gallery/landau/index.html +++ b/dev/gallery/landau/index.html @@ -190,29 +190,29 @@ @time minimize!(model) save_landau("landaufinal", model)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">Iter Function value Gradient norm 0 2.127588e+06 3.597094e+02 - * time: 7.581710815429688e-5 + * time: 8.296966552734375e-5 1 3.786155e+05 1.047687e+02 - * time: 3.3353970050811768 + * time: 2.9563701152801514 2 5.306125e+04 2.978953e+01 - * time: 6.266424894332886 + * time: 5.893932104110718 3 -2.642320e+03 7.943136e+00 - * time: 9.223273992538452 + * time: 8.82431697845459 4 -1.027484e+04 1.752693e+00 - * time: 12.1903657913208 + * time: 11.74088191986084 5 -1.084925e+04 2.157295e-01 - * time: 15.144420862197876 + * time: 14.664075136184692 6 -1.085880e+04 5.288877e-03 - * time: 18.095075845718384 + * time: 17.596476078033447 7 -1.085881e+04 3.478176e-06 - * time: 21.055737018585205 + * time: 20.54066514968872 8 -1.085881e+04 1.596091e-12 - * time: 24.023859977722168 + * time: 23.463698148727417 9 -1.085881e+04 1.444882e-12 - * time: 27.008771896362305 + * time: 26.4148371219635 10 -1.085881e+04 1.548831e-13 - * time: 29.970186948776245 + * time: 29.3373019695282 11 -1.085881e+04 1.548831e-13 - * time: 33.00416588783264 + * time: 32.33782601356506 12 -1.085881e+04 1.508030e-13 - * time: 33.470629930496216 - 39.441095 seconds (11.21 M allocations: 3.880 GiB, 1.38% gc time, 7.97% compilation time)</code></pre><p>as we can see this runs very quickly even for relatively large gridsizes. The key to get high performance like this is to minimize the allocations inside the threaded loops, ideally to 0.</p><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + * time: 32.7883460521698 + 39.308007 seconds (11.21 M allocations: 3.880 GiB, 1.34% gc time, 8.63% compilation time)</code></pre><p>as we can see this runs very quickly even for relatively large gridsizes. The key to get high performance like this is to minimize the allocations inside the threaded loops, ideally to 0.</p><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/gallery/quasi_incompressible_hyperelasticity/index.html b/dev/gallery/quasi_incompressible_hyperelasticity/index.html index 737daa6d66..43a3011de0 100644 --- a/dev/gallery/quasi_incompressible_hyperelasticity/index.html +++ b/dev/gallery/quasi_incompressible_hyperelasticity/index.html @@ -485,4 +485,4 @@ quadratic_u = Lagrange{RefTetrahedron, 2}()^3 linear_p = Lagrange{RefTetrahedron, 1}() -vol_def = solve(quadratic_u, linear_p)</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +vol_def = solve(quadratic_u, linear_p)</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/gallery/topology_optimization.ipynb b/dev/gallery/topology_optimization.ipynb index 5e5bd38b94..685dba1589 100644 --- a/dev/gallery/topology_optimization.ipynb +++ b/dev/gallery/topology_optimization.ipynb @@ -827,7 +827,7 @@ " Starting Newton iterations\n", "Converged at iteration number: 65\n", "Rel. stiffness: 4.8466 \n", - " 4.635604 seconds (2.45 M allocations: 2.016 GiB, 1.94% gc time, 6.47% compilation time)\n" + " 4.590804 seconds (2.45 M allocations: 2.016 GiB, 1.95% gc time, 6.62% compilation time)\n" ] } ], diff --git a/dev/gallery/topology_optimization/index.html b/dev/gallery/topology_optimization/index.html index c80a06cfd5..70800aa298 100644 --- a/dev/gallery/topology_optimization/index.html +++ b/dev/gallery/topology_optimization/index.html @@ -365,7 +365,7 @@ Starting Newton iterations Converged at iteration number: 65 Rel. stiffness: 4.8466 - 4.437066 seconds (2.24 M allocations: 2.005 GiB, 2.10% gc time, 1.95% compilation time)</code></pre><p>We observe, that the stiffness for the lower value of <span>$ra$</span> is higher, but also requires more iterations until convergence and finer structures to be manufactured, as can be seen in Figure 2:</p><p><img src="../bending.png" alt/></p><p><em>Figure 2</em>: Optimization results of the bending beam for smaller (left) and larger (right) value of the regularization parameter <span>$\beta$</span>.</p><p>To prove mesh independence, the user could vary the mesh resolution and compare the results.</p><h2 id="References"><a class="docs-heading-anchor" href="#References">References</a><a id="References-1"></a><a class="docs-heading-anchor-permalink" href="#References" title="Permalink"></a></h2><div class="citation noncanonical"><dl><dt>[14]</dt><dd><div>D. R. Jantos, K. Hackl and P. Junker. <a href="https://doi.org/10.1002/nme.5988"><em>An accurate and fast regularization approach to thermodynamic topology optimization</em></a>. <a href="https://doi.org/10.1002/nme.5988">International Journal for Numerical Methods in Engineering <strong>117</strong>, 991–1017</a> (2019).</div></dd><dt>[15]</dt><dd><div>M. Blaszczyk, D. R. Jantos and P. Junker. <a href="https://doi.org/10.1016/j.cma.2022.114698"><em>Application of Taylor series combined with the weighted least square method to thermodynamic topology optimization</em></a>. <a href="https://doi.org/10.1016/j.cma.2022.114698">Computer Methods in Applied Mechanics and Engineering <strong>393</strong>, 114698</a> (2022).</div></dd></dl></div><h2 id="topology_optimization-plain-program"><a class="docs-heading-anchor" href="#topology_optimization-plain-program">Plain program</a><a id="topology_optimization-plain-program-1"></a><a class="docs-heading-anchor-permalink" href="#topology_optimization-plain-program" title="Permalink"></a></h2><p>Here follows a version of the program without any comments. The file is also available here: <a href="../topology_optimization.jl"><code>topology_optimization.jl</code></a>.</p><pre><code class="language-julia hljs">using Ferrite, SparseArrays, LinearAlgebra, Tensors, Printf + 4.456553 seconds (2.24 M allocations: 2.005 GiB, 2.18% gc time, 1.83% compilation time)</code></pre><p>We observe, that the stiffness for the lower value of <span>$ra$</span> is higher, but also requires more iterations until convergence and finer structures to be manufactured, as can be seen in Figure 2:</p><p><img src="../bending.png" alt/></p><p><em>Figure 2</em>: Optimization results of the bending beam for smaller (left) and larger (right) value of the regularization parameter <span>$\beta$</span>.</p><p>To prove mesh independence, the user could vary the mesh resolution and compare the results.</p><h2 id="References"><a class="docs-heading-anchor" href="#References">References</a><a id="References-1"></a><a class="docs-heading-anchor-permalink" href="#References" title="Permalink"></a></h2><div class="citation noncanonical"><dl><dt>[14]</dt><dd><div>D. R. Jantos, K. Hackl and P. Junker. <a href="https://doi.org/10.1002/nme.5988"><em>An accurate and fast regularization approach to thermodynamic topology optimization</em></a>. <a href="https://doi.org/10.1002/nme.5988">International Journal for Numerical Methods in Engineering <strong>117</strong>, 991–1017</a> (2019).</div></dd><dt>[15]</dt><dd><div>M. Blaszczyk, D. R. Jantos and P. Junker. <a href="https://doi.org/10.1016/j.cma.2022.114698"><em>Application of Taylor series combined with the weighted least square method to thermodynamic topology optimization</em></a>. <a href="https://doi.org/10.1016/j.cma.2022.114698">Computer Methods in Applied Mechanics and Engineering <strong>393</strong>, 114698</a> (2022).</div></dd></dl></div><h2 id="topology_optimization-plain-program"><a class="docs-heading-anchor" href="#topology_optimization-plain-program">Plain program</a><a id="topology_optimization-plain-program-1"></a><a class="docs-heading-anchor-permalink" href="#topology_optimization-plain-program" title="Permalink"></a></h2><p>Here follows a version of the program without any comments. The file is also available here: <a href="../topology_optimization.jl"><code>topology_optimization.jl</code></a>.</p><pre><code class="language-julia hljs">using Ferrite, SparseArrays, LinearAlgebra, Tensors, Printf function create_grid(n) corners = [ @@ -755,4 +755,4 @@ end @time topopt(0.03, 0.5, 60, "large_radius"; output = :false); -#topopt(0.02, 0.5, 60, "topopt_animation"; output=:true); # can be used to create animations</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +#topopt(0.02, 0.5, 60, "topopt_animation"; output=:true); # can be used to create animations</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/howto/index.html b/dev/howto/index.html index 14e11c13e5..4ac32618c0 100644 --- a/dev/howto/index.html +++ b/dev/howto/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>How-to guide overview · Ferrite.jl</title><meta name="title" content="How-to guide overview · Ferrite.jl"/><meta property="og:title" content="How-to guide overview · Ferrite.jl"/><meta property="twitter:title" content="How-to guide overview · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/howto/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/howto/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/howto/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox" checked/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li class="is-active"><a class="tocitem" href>How-to guide overview</a></li><li><a class="tocitem" href="postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">How-to guides</a></li><li class="is-active"><a href>How-to guide overview</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>How-to guide overview</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/howto/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="How-to-guides"><a class="docs-heading-anchor" href="#How-to-guides">How-to guides</a><a id="How-to-guides-1"></a><a class="docs-heading-anchor-permalink" href="#How-to-guides" title="Permalink"></a></h1><p>This page gives an overview of the <em>how-to guides</em>. How-to guides address various common tasks one might want to do in a finite element program. Many of the guides are extensions, or build on top of, the tutorials and, therefore, some familiarity with Ferrite is assumed.</p><hr/><h4 id="[Post-processing-and-visualization](postprocessing.md)"><a class="docs-heading-anchor" href="#[Post-processing-and-visualization](postprocessing.md)"><a href="postprocessing/">Post processing and visualization</a></a><a id="[Post-processing-and-visualization](postprocessing.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Post-processing-and-visualization](postprocessing.md)" title="Permalink"></a></h4><p>This guide builds on top of <a href="../tutorials/heat_equation/">Tutorial 1: Heat equation</a> and discusses various post processsing techniques with the goal of visualizing primary fields (the finite element solution) and secondary quantities (e.g. fluxes, stresses, etc.). Concretely, this guide answers:</p><ul><li>How to visualize data from quadrature points?</li><li>How to evaluate the finite element solution, or secondary quantities, in arbitrary points of the domain?</li></ul><hr/><h4 id="[Multi-threaded-assembly](threaded_assembly.md)"><a class="docs-heading-anchor" href="#[Multi-threaded-assembly](threaded_assembly.md)"><a href="threaded_assembly/">Multi-threaded assembly</a></a><a id="[Multi-threaded-assembly](threaded_assembly.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Multi-threaded-assembly](threaded_assembly.md)" title="Permalink"></a></h4><p>This guide modifies <a href="../tutorials/linear_elasticity/">Tutorial 2: Linear elasticity</a> such that the program is using multi-threading to parallelize the assembly procedure. Concretely this shows how to use grid coloring and "scratch values" in order to use multi-threading without running into race-conditions.</p><hr/></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../reference/utils/">« Development utility functions</a><a class="docs-footer-nextpage" href="postprocessing/">Post processing and visualization »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>How-to guide overview · Ferrite.jl</title><meta name="title" content="How-to guide overview · Ferrite.jl"/><meta property="og:title" content="How-to guide overview · Ferrite.jl"/><meta property="twitter:title" content="How-to guide overview · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/howto/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/howto/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/howto/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox" checked/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li class="is-active"><a class="tocitem" href>How-to guide overview</a></li><li><a class="tocitem" href="postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">How-to guides</a></li><li class="is-active"><a href>How-to guide overview</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>How-to guide overview</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/howto/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="How-to-guides"><a class="docs-heading-anchor" href="#How-to-guides">How-to guides</a><a id="How-to-guides-1"></a><a class="docs-heading-anchor-permalink" href="#How-to-guides" title="Permalink"></a></h1><p>This page gives an overview of the <em>how-to guides</em>. How-to guides address various common tasks one might want to do in a finite element program. Many of the guides are extensions, or build on top of, the tutorials and, therefore, some familiarity with Ferrite is assumed.</p><hr/><h4 id="[Post-processing-and-visualization](postprocessing.md)"><a class="docs-heading-anchor" href="#[Post-processing-and-visualization](postprocessing.md)"><a href="postprocessing/">Post processing and visualization</a></a><a id="[Post-processing-and-visualization](postprocessing.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Post-processing-and-visualization](postprocessing.md)" title="Permalink"></a></h4><p>This guide builds on top of <a href="../tutorials/heat_equation/">Tutorial 1: Heat equation</a> and discusses various post processsing techniques with the goal of visualizing primary fields (the finite element solution) and secondary quantities (e.g. fluxes, stresses, etc.). Concretely, this guide answers:</p><ul><li>How to visualize data from quadrature points?</li><li>How to evaluate the finite element solution, or secondary quantities, in arbitrary points of the domain?</li></ul><hr/><h4 id="[Multi-threaded-assembly](threaded_assembly.md)"><a class="docs-heading-anchor" href="#[Multi-threaded-assembly](threaded_assembly.md)"><a href="threaded_assembly/">Multi-threaded assembly</a></a><a id="[Multi-threaded-assembly](threaded_assembly.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Multi-threaded-assembly](threaded_assembly.md)" title="Permalink"></a></h4><p>This guide modifies <a href="../tutorials/linear_elasticity/">Tutorial 2: Linear elasticity</a> such that the program is using multi-threading to parallelize the assembly procedure. Concretely this shows how to use grid coloring and "scratch values" in order to use multi-threading without running into race-conditions.</p><hr/></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../reference/utils/">« Development utility functions</a><a class="docs-footer-nextpage" href="postprocessing/">Post processing and visualization »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/howto/postprocessing.ipynb b/dev/howto/postprocessing.ipynb index 91fc9dd411..3a7eb833e7 100644 --- a/dev/howto/postprocessing.ipynb +++ b/dev/howto/postprocessing.ipynb @@ -301,94 +301,94 @@ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", "<defs>\n", - " <clipPath id=\"clip960\">\n", + " <clipPath id=\"clip570\">\n", " <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip960)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip570)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip961\">\n", + " <clipPath id=\"clip571\">\n", " <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip960)\" d=\"M279.704 1423.18 L2352.76 1423.18 L2352.76 47.2441 L279.704 47.2441 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip570)\" d=\"M279.704 1423.18 L2352.76 1423.18 L2352.76 47.2441 L279.704 47.2441 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip962\">\n", + " <clipPath id=\"clip572\">\n", " <rect x=\"279\" y=\"47\" width=\"2074\" height=\"1377\"/>\n", " </clipPath>\n", "</defs>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"338.375,1423.18 338.375,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"827.303,1423.18 827.303,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1316.23,1423.18 1316.23,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1805.16,1423.18 1805.16,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2294.08,1423.18 2294.08,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,1384.24 2352.76,1384.24 \"/>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,1150.76 2352.76,1150.76 \"/>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,917.284 2352.76,917.284 \"/>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,683.806 2352.76,683.806 \"/>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,450.329 2352.76,450.329 \"/>\n", - "<polyline clip-path=\"url(#clip962)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,216.852 2352.76,216.852 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1423.18 2352.76,1423.18 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"338.375,1423.18 338.375,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"827.303,1423.18 827.303,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1316.23,1423.18 1316.23,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1805.16,1423.18 1805.16,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2294.08,1423.18 2294.08,1404.28 \"/>\n", - "<path clip-path=\"url(#clip960)\" d=\"M284.903 1468.75 L314.579 1468.75 L314.579 1472.69 L284.903 1472.69 L284.903 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M325.482 1481.64 L333.121 1481.64 L333.121 1455.28 L324.81 1456.95 L324.81 1452.69 L333.074 1451.02 L337.75 1451.02 L337.75 1481.64 L345.389 1481.64 L345.389 1485.58 L325.482 1485.58 L325.482 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M354.833 1479.7 L359.718 1479.7 L359.718 1485.58 L354.833 1485.58 L354.833 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M379.903 1454.1 Q376.292 1454.1 374.463 1457.66 Q372.657 1461.2 372.657 1468.33 Q372.657 1475.44 374.463 1479.01 Q376.292 1482.55 379.903 1482.55 Q383.537 1482.55 385.343 1479.01 Q387.171 1475.44 387.171 1468.33 Q387.171 1461.2 385.343 1457.66 Q383.537 1454.1 379.903 1454.1 M379.903 1450.39 Q385.713 1450.39 388.768 1455 Q391.847 1459.58 391.847 1468.33 Q391.847 1477.06 388.768 1481.67 Q385.713 1486.25 379.903 1486.25 Q374.093 1486.25 371.014 1481.67 Q367.958 1477.06 367.958 1468.33 Q367.958 1459.58 371.014 1455 Q374.093 1450.39 379.903 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M774.328 1468.75 L804.004 1468.75 L804.004 1472.69 L774.328 1472.69 L774.328 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M824.097 1454.1 Q820.485 1454.1 818.657 1457.66 Q816.851 1461.2 816.851 1468.33 Q816.851 1475.44 818.657 1479.01 Q820.485 1482.55 824.097 1482.55 Q827.731 1482.55 829.536 1479.01 Q831.365 1475.44 831.365 1468.33 Q831.365 1461.2 829.536 1457.66 Q827.731 1454.1 824.097 1454.1 M824.097 1450.39 Q829.907 1450.39 832.962 1455 Q836.041 1459.58 836.041 1468.33 Q836.041 1477.06 832.962 1481.67 Q829.907 1486.25 824.097 1486.25 Q818.286 1486.25 815.208 1481.67 Q812.152 1477.06 812.152 1468.33 Q812.152 1459.58 815.208 1455 Q818.286 1450.39 824.097 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M844.258 1479.7 L849.143 1479.7 L849.143 1485.58 L844.258 1485.58 L844.258 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M859.374 1451.02 L877.731 1451.02 L877.731 1454.96 L863.657 1454.96 L863.657 1463.43 Q864.675 1463.08 865.694 1462.92 Q866.712 1462.73 867.731 1462.73 Q873.518 1462.73 876.897 1465.9 Q880.277 1469.08 880.277 1474.49 Q880.277 1480.07 876.805 1483.17 Q873.332 1486.25 867.013 1486.25 Q864.837 1486.25 862.569 1485.88 Q860.323 1485.51 857.916 1484.77 L857.916 1480.07 Q859.999 1481.2 862.221 1481.76 Q864.444 1482.32 866.92 1482.32 Q870.925 1482.32 873.263 1480.21 Q875.601 1478.1 875.601 1474.49 Q875.601 1470.88 873.263 1468.77 Q870.925 1466.67 866.92 1466.67 Q865.045 1466.67 863.17 1467.08 Q861.319 1467.5 859.374 1468.38 L859.374 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1293.61 1454.1 Q1290 1454.1 1288.17 1457.66 Q1286.37 1461.2 1286.37 1468.33 Q1286.37 1475.44 1288.17 1479.01 Q1290 1482.55 1293.61 1482.55 Q1297.25 1482.55 1299.05 1479.01 Q1300.88 1475.44 1300.88 1468.33 Q1300.88 1461.2 1299.05 1457.66 Q1297.25 1454.1 1293.61 1454.1 M1293.61 1450.39 Q1299.42 1450.39 1302.48 1455 Q1305.56 1459.58 1305.56 1468.33 Q1305.56 1477.06 1302.48 1481.67 Q1299.42 1486.25 1293.61 1486.25 Q1287.8 1486.25 1284.73 1481.67 Q1281.67 1477.06 1281.67 1468.33 Q1281.67 1459.58 1284.73 1455 Q1287.8 1450.39 1293.61 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1313.78 1479.7 L1318.66 1479.7 L1318.66 1485.58 L1313.78 1485.58 L1313.78 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1338.85 1454.1 Q1335.23 1454.1 1333.41 1457.66 Q1331.6 1461.2 1331.6 1468.33 Q1331.6 1475.44 1333.41 1479.01 Q1335.23 1482.55 1338.85 1482.55 Q1342.48 1482.55 1344.29 1479.01 Q1346.11 1475.44 1346.11 1468.33 Q1346.11 1461.2 1344.29 1457.66 Q1342.48 1454.1 1338.85 1454.1 M1338.85 1450.39 Q1344.66 1450.39 1347.71 1455 Q1350.79 1459.58 1350.79 1468.33 Q1350.79 1477.06 1347.71 1481.67 Q1344.66 1486.25 1338.85 1486.25 Q1333.04 1486.25 1329.96 1481.67 Q1326.9 1477.06 1326.9 1468.33 Q1326.9 1459.58 1329.96 1455 Q1333.04 1450.39 1338.85 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1783.04 1454.1 Q1779.43 1454.1 1777.6 1457.66 Q1775.79 1461.2 1775.79 1468.33 Q1775.79 1475.44 1777.6 1479.01 Q1779.43 1482.55 1783.04 1482.55 Q1786.67 1482.55 1788.48 1479.01 Q1790.31 1475.44 1790.31 1468.33 Q1790.31 1461.2 1788.48 1457.66 Q1786.67 1454.1 1783.04 1454.1 M1783.04 1450.39 Q1788.85 1450.39 1791.91 1455 Q1794.98 1459.58 1794.98 1468.33 Q1794.98 1477.06 1791.91 1481.67 Q1788.85 1486.25 1783.04 1486.25 Q1777.23 1486.25 1774.15 1481.67 Q1771.09 1477.06 1771.09 1468.33 Q1771.09 1459.58 1774.15 1455 Q1777.23 1450.39 1783.04 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1803.2 1479.7 L1808.09 1479.7 L1808.09 1485.58 L1803.2 1485.58 L1803.2 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1818.32 1451.02 L1836.67 1451.02 L1836.67 1454.96 L1822.6 1454.96 L1822.6 1463.43 Q1823.62 1463.08 1824.64 1462.92 Q1825.65 1462.73 1826.67 1462.73 Q1832.46 1462.73 1835.84 1465.9 Q1839.22 1469.08 1839.22 1474.49 Q1839.22 1480.07 1835.75 1483.17 Q1832.28 1486.25 1825.96 1486.25 Q1823.78 1486.25 1821.51 1485.88 Q1819.27 1485.51 1816.86 1484.77 L1816.86 1480.07 Q1818.94 1481.2 1821.16 1481.76 Q1823.39 1482.32 1825.86 1482.32 Q1829.87 1482.32 1832.21 1480.21 Q1834.54 1478.1 1834.54 1474.49 Q1834.54 1470.88 1832.21 1468.77 Q1829.87 1466.67 1825.86 1466.67 Q1823.99 1466.67 1822.11 1467.08 Q1820.26 1467.5 1818.32 1468.38 L1818.32 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M2261.24 1481.64 L2268.88 1481.64 L2268.88 1455.28 L2260.57 1456.95 L2260.57 1452.69 L2268.83 1451.02 L2273.51 1451.02 L2273.51 1481.64 L2281.14 1481.64 L2281.14 1485.58 L2261.24 1485.58 L2261.24 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M2290.59 1479.7 L2295.47 1479.7 L2295.47 1485.58 L2290.59 1485.58 L2290.59 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M2315.66 1454.1 Q2312.05 1454.1 2310.22 1457.66 Q2308.41 1461.2 2308.41 1468.33 Q2308.41 1475.44 2310.22 1479.01 Q2312.05 1482.55 2315.66 1482.55 Q2319.29 1482.55 2321.1 1479.01 Q2322.93 1475.44 2322.93 1468.33 Q2322.93 1461.2 2321.1 1457.66 Q2319.29 1454.1 2315.66 1454.1 M2315.66 1450.39 Q2321.47 1450.39 2324.52 1455 Q2327.6 1459.58 2327.6 1468.33 Q2327.6 1477.06 2324.52 1481.67 Q2321.47 1486.25 2315.66 1486.25 Q2309.85 1486.25 2306.77 1481.67 Q2303.71 1477.06 2303.71 1468.33 Q2303.71 1459.58 2306.77 1455 Q2309.85 1450.39 2315.66 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1124.96 1532.4 L1112.07 1549.74 L1125.62 1568.04 L1118.72 1568.04 L1108.34 1554.04 L1097.97 1568.04 L1091.06 1568.04 L1104.9 1549.39 L1092.24 1532.4 L1099.14 1532.4 L1108.6 1545.1 L1118.05 1532.4 L1124.96 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1168.69 1518.58 Q1164.42 1525.9 1162.35 1533.06 Q1160.29 1540.23 1160.29 1547.58 Q1160.29 1554.93 1162.35 1562.16 Q1164.46 1569.35 1168.69 1576.64 L1163.6 1576.64 Q1158.82 1569.16 1156.43 1561.93 Q1154.08 1554.71 1154.08 1547.58 Q1154.08 1540.48 1156.43 1533.29 Q1158.79 1526.09 1163.6 1518.58 L1168.69 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1205.71 1533.76 L1205.71 1539.24 Q1203.22 1537.87 1200.71 1537.2 Q1198.23 1536.5 1195.68 1536.5 Q1189.98 1536.5 1186.83 1540.13 Q1183.68 1543.73 1183.68 1550.25 Q1183.68 1556.78 1186.83 1560.4 Q1189.98 1564 1195.68 1564 Q1198.23 1564 1200.71 1563.33 Q1203.22 1562.63 1205.71 1561.26 L1205.71 1566.68 Q1203.25 1567.82 1200.61 1568.39 Q1198 1568.97 1195.04 1568.97 Q1186.99 1568.97 1182.25 1563.91 Q1177.51 1558.85 1177.51 1550.25 Q1177.51 1541.53 1182.28 1536.53 Q1187.09 1531.54 1195.42 1531.54 Q1198.13 1531.54 1200.71 1532.11 Q1203.29 1532.65 1205.71 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1229.7 1536.5 Q1224.99 1536.5 1222.26 1540.19 Q1219.52 1543.85 1219.52 1550.25 Q1219.52 1556.65 1222.22 1560.34 Q1224.96 1564 1229.7 1564 Q1234.38 1564 1237.12 1560.31 Q1239.86 1556.62 1239.86 1550.25 Q1239.86 1543.92 1237.12 1540.23 Q1234.38 1536.5 1229.7 1536.5 M1229.7 1531.54 Q1237.34 1531.54 1241.7 1536.5 Q1246.06 1541.47 1246.06 1550.25 Q1246.06 1559 1241.7 1564 Q1237.34 1568.97 1229.7 1568.97 Q1222.03 1568.97 1217.67 1564 Q1213.34 1559 1213.34 1550.25 Q1213.34 1541.47 1217.67 1536.5 Q1222.03 1531.54 1229.7 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1269.59 1536.5 Q1264.87 1536.5 1262.14 1540.19 Q1259.4 1543.85 1259.4 1550.25 Q1259.4 1556.65 1262.11 1560.34 Q1264.84 1564 1269.59 1564 Q1274.26 1564 1277 1560.31 Q1279.74 1556.62 1279.74 1550.25 Q1279.74 1543.92 1277 1540.23 Q1274.26 1536.5 1269.59 1536.5 M1269.59 1531.54 Q1277.22 1531.54 1281.58 1536.5 Q1285.95 1541.47 1285.95 1550.25 Q1285.95 1559 1281.58 1564 Q1277.22 1568.97 1269.59 1568.97 Q1261.91 1568.97 1257.55 1564 Q1253.23 1559 1253.23 1550.25 Q1253.23 1541.47 1257.55 1536.5 Q1261.91 1531.54 1269.59 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1316.31 1537.87 Q1315.32 1537.3 1314.15 1537.04 Q1313 1536.76 1311.6 1536.76 Q1306.63 1536.76 1303.96 1540 Q1301.32 1543.22 1301.32 1549.27 L1301.32 1568.04 L1295.43 1568.04 L1295.43 1532.4 L1301.32 1532.4 L1301.32 1537.93 Q1303.16 1534.69 1306.12 1533.13 Q1309.08 1531.54 1313.32 1531.54 Q1313.92 1531.54 1314.65 1531.63 Q1315.39 1531.7 1316.28 1531.85 L1316.31 1537.87 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1344.76 1537.81 L1344.76 1518.52 L1350.62 1518.52 L1350.62 1568.04 L1344.76 1568.04 L1344.76 1562.7 Q1342.92 1565.88 1340.09 1567.44 Q1337.28 1568.97 1333.34 1568.97 Q1326.88 1568.97 1322.8 1563.81 Q1318.76 1558.65 1318.76 1550.25 Q1318.76 1541.85 1322.8 1536.69 Q1326.88 1531.54 1333.34 1531.54 Q1337.28 1531.54 1340.09 1533.1 Q1342.92 1534.62 1344.76 1537.81 M1324.81 1550.25 Q1324.81 1556.71 1327.45 1560.4 Q1330.12 1564.07 1334.77 1564.07 Q1339.42 1564.07 1342.09 1560.4 Q1344.76 1556.71 1344.76 1550.25 Q1344.76 1543.79 1342.09 1540.13 Q1339.42 1536.44 1334.77 1536.44 Q1330.12 1536.44 1327.45 1540.13 Q1324.81 1543.79 1324.81 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1362.68 1532.4 L1368.54 1532.4 L1368.54 1568.04 L1362.68 1568.04 L1362.68 1532.4 M1362.68 1518.52 L1368.54 1518.52 L1368.54 1525.93 L1362.68 1525.93 L1362.68 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1410.43 1546.53 L1410.43 1568.04 L1404.57 1568.04 L1404.57 1546.72 Q1404.57 1541.66 1402.6 1539.14 Q1400.62 1536.63 1396.68 1536.63 Q1391.93 1536.63 1389.2 1539.65 Q1386.46 1542.68 1386.46 1547.9 L1386.46 1568.04 L1380.57 1568.04 L1380.57 1532.4 L1386.46 1532.4 L1386.46 1537.93 Q1388.56 1534.72 1391.39 1533.13 Q1394.26 1531.54 1397.98 1531.54 Q1404.12 1531.54 1407.28 1535.36 Q1410.43 1539.14 1410.43 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1438.31 1550.12 Q1431.21 1550.12 1428.47 1551.75 Q1425.74 1553.37 1425.74 1557.29 Q1425.74 1560.4 1427.77 1562.25 Q1429.84 1564.07 1433.37 1564.07 Q1438.24 1564.07 1441.17 1560.63 Q1444.13 1557.16 1444.13 1551.43 L1444.13 1550.12 L1438.31 1550.12 M1449.99 1547.71 L1449.99 1568.04 L1444.13 1568.04 L1444.13 1562.63 Q1442.13 1565.88 1439.14 1567.44 Q1436.14 1568.97 1431.82 1568.97 Q1426.34 1568.97 1423.09 1565.91 Q1419.88 1562.82 1419.88 1557.67 Q1419.88 1551.65 1423.89 1548.6 Q1427.93 1545.54 1435.92 1545.54 L1444.13 1545.54 L1444.13 1544.97 Q1444.13 1540.93 1441.46 1538.73 Q1438.82 1536.5 1434.01 1536.5 Q1430.96 1536.5 1428.06 1537.23 Q1425.16 1537.97 1422.49 1539.43 L1422.49 1534.02 Q1425.7 1532.78 1428.73 1532.17 Q1431.75 1531.54 1434.62 1531.54 Q1442.35 1531.54 1446.17 1535.55 Q1449.99 1539.56 1449.99 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1467.85 1522.27 L1467.85 1532.4 L1479.91 1532.4 L1479.91 1536.95 L1467.85 1536.95 L1467.85 1556.3 Q1467.85 1560.66 1469.02 1561.9 Q1470.23 1563.14 1473.89 1563.14 L1479.91 1563.14 L1479.91 1568.04 L1473.89 1568.04 Q1467.11 1568.04 1464.53 1565.53 Q1461.96 1562.98 1461.96 1556.3 L1461.96 1536.95 L1457.66 1536.95 L1457.66 1532.4 L1461.96 1532.4 L1461.96 1522.27 L1467.85 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1518.1 1548.76 L1518.1 1551.62 L1491.18 1551.62 Q1491.56 1557.67 1494.8 1560.85 Q1498.08 1564 1503.91 1564 Q1507.28 1564 1510.43 1563.17 Q1513.61 1562.35 1516.73 1560.69 L1516.73 1566.23 Q1513.58 1567.57 1510.27 1568.27 Q1506.96 1568.97 1503.56 1568.97 Q1495.03 1568.97 1490.03 1564 Q1485.06 1559.04 1485.06 1550.57 Q1485.06 1541.82 1489.77 1536.69 Q1494.52 1531.54 1502.54 1531.54 Q1509.73 1531.54 1513.9 1536.18 Q1518.1 1540.8 1518.1 1548.76 M1512.25 1547.04 Q1512.18 1542.23 1509.54 1539.37 Q1506.93 1536.5 1502.6 1536.5 Q1497.7 1536.5 1494.74 1539.27 Q1491.81 1542.04 1491.37 1547.07 L1512.25 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M1526.79 1518.58 L1531.88 1518.58 Q1536.66 1526.09 1539.01 1533.29 Q1541.4 1540.48 1541.4 1547.58 Q1541.4 1554.71 1539.01 1561.93 Q1536.66 1569.16 1531.88 1576.64 L1526.79 1576.64 Q1531.02 1569.35 1533.09 1562.16 Q1535.19 1554.93 1535.19 1547.58 Q1535.19 1540.23 1533.09 1533.06 Q1531.02 1525.9 1526.79 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1423.18 279.704,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1384.24 298.602,1384.24 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1150.76 298.602,1150.76 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,917.284 298.602,917.284 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,683.806 298.602,683.806 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,450.329 298.602,450.329 \"/>\n", - "<polyline clip-path=\"url(#clip960)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,216.852 298.602,216.852 \"/>\n", - "<path clip-path=\"url(#clip960)\" d=\"M126.205 1370.04 Q122.593 1370.04 120.765 1373.6 Q118.959 1377.14 118.959 1384.27 Q118.959 1391.38 120.765 1394.94 Q122.593 1398.49 126.205 1398.49 Q129.839 1398.49 131.644 1394.94 Q133.473 1391.38 133.473 1384.27 Q133.473 1377.14 131.644 1373.6 Q129.839 1370.04 126.205 1370.04 M126.205 1366.33 Q132.015 1366.33 135.07 1370.94 Q138.149 1375.52 138.149 1384.27 Q138.149 1393 135.07 1397.61 Q132.015 1402.19 126.205 1402.19 Q120.394 1402.19 117.316 1397.61 Q114.26 1393 114.26 1384.27 Q114.26 1375.52 117.316 1370.94 Q120.394 1366.33 126.205 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M146.366 1395.64 L151.251 1395.64 L151.251 1401.52 L146.366 1401.52 L146.366 1395.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M171.436 1370.04 Q167.825 1370.04 165.996 1373.6 Q164.19 1377.14 164.19 1384.27 Q164.19 1391.38 165.996 1394.94 Q167.825 1398.49 171.436 1398.49 Q175.07 1398.49 176.876 1394.94 Q178.704 1391.38 178.704 1384.27 Q178.704 1377.14 176.876 1373.6 Q175.07 1370.04 171.436 1370.04 M171.436 1366.33 Q177.246 1366.33 180.301 1370.94 Q183.38 1375.52 183.38 1384.27 Q183.38 1393 180.301 1397.61 Q177.246 1402.19 171.436 1402.19 Q165.626 1402.19 162.547 1397.61 Q159.491 1393 159.491 1384.27 Q159.491 1375.52 162.547 1370.94 Q165.626 1366.33 171.436 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M201.598 1370.04 Q197.987 1370.04 196.158 1373.6 Q194.352 1377.14 194.352 1384.27 Q194.352 1391.38 196.158 1394.94 Q197.987 1398.49 201.598 1398.49 Q205.232 1398.49 207.037 1394.94 Q208.866 1391.38 208.866 1384.27 Q208.866 1377.14 207.037 1373.6 Q205.232 1370.04 201.598 1370.04 M201.598 1366.33 Q207.408 1366.33 210.463 1370.94 Q213.542 1375.52 213.542 1384.27 Q213.542 1393 210.463 1397.61 Q207.408 1402.19 201.598 1402.19 Q195.787 1402.19 192.709 1397.61 Q189.653 1393 189.653 1384.27 Q189.653 1375.52 192.709 1370.94 Q195.787 1366.33 201.598 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M231.76 1370.04 Q228.148 1370.04 226.32 1373.6 Q224.514 1377.14 224.514 1384.27 Q224.514 1391.38 226.32 1394.94 Q228.148 1398.49 231.76 1398.49 Q235.394 1398.49 237.199 1394.94 Q239.028 1391.38 239.028 1384.27 Q239.028 1377.14 237.199 1373.6 Q235.394 1370.04 231.76 1370.04 M231.76 1366.33 Q237.57 1366.33 240.625 1370.94 Q243.704 1375.52 243.704 1384.27 Q243.704 1393 240.625 1397.61 Q237.57 1402.19 231.76 1402.19 Q225.949 1402.19 222.871 1397.61 Q219.815 1393 219.815 1384.27 Q219.815 1375.52 222.871 1370.94 Q225.949 1366.33 231.76 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M127.2 1136.56 Q123.589 1136.56 121.76 1140.12 Q119.955 1143.67 119.955 1150.8 Q119.955 1157.9 121.76 1161.47 Q123.589 1165.01 127.2 1165.01 Q130.834 1165.01 132.64 1161.47 Q134.468 1157.9 134.468 1150.8 Q134.468 1143.67 132.64 1140.12 Q130.834 1136.56 127.2 1136.56 M127.2 1132.86 Q133.01 1132.86 136.066 1137.46 Q139.144 1142.05 139.144 1150.8 Q139.144 1159.52 136.066 1164.13 Q133.01 1168.71 127.2 1168.71 Q121.39 1168.71 118.311 1164.13 Q115.256 1159.52 115.256 1150.8 Q115.256 1142.05 118.311 1137.46 Q121.39 1132.86 127.2 1132.86 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M147.362 1162.16 L152.246 1162.16 L152.246 1168.04 L147.362 1168.04 L147.362 1162.16 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M172.431 1136.56 Q168.82 1136.56 166.991 1140.12 Q165.186 1143.67 165.186 1150.8 Q165.186 1157.9 166.991 1161.47 Q168.82 1165.01 172.431 1165.01 Q176.065 1165.01 177.871 1161.47 Q179.7 1157.9 179.7 1150.8 Q179.7 1143.67 177.871 1140.12 Q176.065 1136.56 172.431 1136.56 M172.431 1132.86 Q178.241 1132.86 181.297 1137.46 Q184.376 1142.05 184.376 1150.8 Q184.376 1159.52 181.297 1164.13 Q178.241 1168.71 172.431 1168.71 Q166.621 1168.71 163.542 1164.13 Q160.487 1159.52 160.487 1150.8 Q160.487 1142.05 163.542 1137.46 Q166.621 1132.86 172.431 1132.86 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M196.621 1164.11 L212.94 1164.11 L212.94 1168.04 L190.996 1168.04 L190.996 1164.11 Q193.658 1161.35 198.241 1156.72 Q202.848 1152.07 204.028 1150.73 Q206.274 1148.2 207.153 1146.47 Q208.056 1144.71 208.056 1143.02 Q208.056 1140.26 206.112 1138.53 Q204.19 1136.79 201.088 1136.79 Q198.889 1136.79 196.436 1137.55 Q194.005 1138.32 191.227 1139.87 L191.227 1135.15 Q194.051 1134.01 196.505 1133.43 Q198.959 1132.86 200.996 1132.86 Q206.366 1132.86 209.561 1135.54 Q212.755 1138.23 212.755 1142.72 Q212.755 1144.85 211.945 1146.77 Q211.158 1148.67 209.051 1151.26 Q208.473 1151.93 205.371 1155.15 Q202.269 1158.34 196.621 1164.11 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M222.801 1133.48 L241.158 1133.48 L241.158 1137.42 L227.084 1137.42 L227.084 1145.89 Q228.102 1145.54 229.121 1145.38 Q230.139 1145.19 231.158 1145.19 Q236.945 1145.19 240.324 1148.37 Q243.704 1151.54 243.704 1156.95 Q243.704 1162.53 240.232 1165.63 Q236.76 1168.71 230.44 1168.71 Q228.264 1168.71 225.996 1168.34 Q223.75 1167.97 221.343 1167.23 L221.343 1162.53 Q223.426 1163.67 225.648 1164.22 Q227.871 1164.78 230.347 1164.78 Q234.352 1164.78 236.69 1162.67 Q239.028 1160.56 239.028 1156.95 Q239.028 1153.34 236.69 1151.24 Q234.352 1149.13 230.347 1149.13 Q228.473 1149.13 226.598 1149.55 Q224.746 1149.96 222.801 1150.84 L222.801 1133.48 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M126.205 903.082 Q122.593 903.082 120.765 906.647 Q118.959 910.189 118.959 917.318 Q118.959 924.425 120.765 927.99 Q122.593 931.531 126.205 931.531 Q129.839 931.531 131.644 927.99 Q133.473 924.425 133.473 917.318 Q133.473 910.189 131.644 906.647 Q129.839 903.082 126.205 903.082 M126.205 899.379 Q132.015 899.379 135.07 903.985 Q138.149 908.568 138.149 917.318 Q138.149 926.045 135.07 930.652 Q132.015 935.235 126.205 935.235 Q120.394 935.235 117.316 930.652 Q114.26 926.045 114.26 917.318 Q114.26 908.568 117.316 903.985 Q120.394 899.379 126.205 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M146.366 928.684 L151.251 928.684 L151.251 934.564 L146.366 934.564 L146.366 928.684 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M171.436 903.082 Q167.825 903.082 165.996 906.647 Q164.19 910.189 164.19 917.318 Q164.19 924.425 165.996 927.99 Q167.825 931.531 171.436 931.531 Q175.07 931.531 176.876 927.99 Q178.704 924.425 178.704 917.318 Q178.704 910.189 176.876 906.647 Q175.07 903.082 171.436 903.082 M171.436 899.379 Q177.246 899.379 180.301 903.985 Q183.38 908.568 183.38 917.318 Q183.38 926.045 180.301 930.652 Q177.246 935.235 171.436 935.235 Q165.626 935.235 162.547 930.652 Q159.491 926.045 159.491 917.318 Q159.491 908.568 162.547 903.985 Q165.626 899.379 171.436 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M191.644 900.004 L210 900.004 L210 903.939 L195.926 903.939 L195.926 912.411 Q196.945 912.064 197.963 911.902 Q198.982 911.716 200 911.716 Q205.787 911.716 209.167 914.888 Q212.547 918.059 212.547 923.476 Q212.547 929.054 209.074 932.156 Q205.602 935.235 199.283 935.235 Q197.107 935.235 194.838 934.865 Q192.593 934.494 190.186 933.753 L190.186 929.054 Q192.269 930.189 194.491 930.744 Q196.713 931.3 199.19 931.3 Q203.195 931.3 205.533 929.193 Q207.871 927.087 207.871 923.476 Q207.871 919.865 205.533 917.758 Q203.195 915.652 199.19 915.652 Q197.315 915.652 195.44 916.068 Q193.588 916.485 191.644 917.365 L191.644 900.004 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M231.76 903.082 Q228.148 903.082 226.32 906.647 Q224.514 910.189 224.514 917.318 Q224.514 924.425 226.32 927.99 Q228.148 931.531 231.76 931.531 Q235.394 931.531 237.199 927.99 Q239.028 924.425 239.028 917.318 Q239.028 910.189 237.199 906.647 Q235.394 903.082 231.76 903.082 M231.76 899.379 Q237.57 899.379 240.625 903.985 Q243.704 908.568 243.704 917.318 Q243.704 926.045 240.625 930.652 Q237.57 935.235 231.76 935.235 Q225.949 935.235 222.871 930.652 Q219.815 926.045 219.815 917.318 Q219.815 908.568 222.871 903.985 Q225.949 899.379 231.76 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M127.2 669.605 Q123.589 669.605 121.76 673.17 Q119.955 676.711 119.955 683.841 Q119.955 690.947 121.76 694.512 Q123.589 698.054 127.2 698.054 Q130.834 698.054 132.64 694.512 Q134.468 690.947 134.468 683.841 Q134.468 676.711 132.64 673.17 Q130.834 669.605 127.2 669.605 M127.2 665.901 Q133.01 665.901 136.066 670.508 Q139.144 675.091 139.144 683.841 Q139.144 692.568 136.066 697.174 Q133.01 701.758 127.2 701.758 Q121.39 701.758 118.311 697.174 Q115.256 692.568 115.256 683.841 Q115.256 675.091 118.311 670.508 Q121.39 665.901 127.2 665.901 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M147.362 695.207 L152.246 695.207 L152.246 701.086 L147.362 701.086 L147.362 695.207 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M172.431 669.605 Q168.82 669.605 166.991 673.17 Q165.186 676.711 165.186 683.841 Q165.186 690.947 166.991 694.512 Q168.82 698.054 172.431 698.054 Q176.065 698.054 177.871 694.512 Q179.7 690.947 179.7 683.841 Q179.7 676.711 177.871 673.17 Q176.065 669.605 172.431 669.605 M172.431 665.901 Q178.241 665.901 181.297 670.508 Q184.376 675.091 184.376 683.841 Q184.376 692.568 181.297 697.174 Q178.241 701.758 172.431 701.758 Q166.621 701.758 163.542 697.174 Q160.487 692.568 160.487 683.841 Q160.487 675.091 163.542 670.508 Q166.621 665.901 172.431 665.901 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M191.413 666.526 L213.635 666.526 L213.635 668.517 L201.088 701.086 L196.204 701.086 L208.01 670.461 L191.413 670.461 L191.413 666.526 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M222.801 666.526 L241.158 666.526 L241.158 670.461 L227.084 670.461 L227.084 678.934 Q228.102 678.586 229.121 678.424 Q230.139 678.239 231.158 678.239 Q236.945 678.239 240.324 681.41 Q243.704 684.582 243.704 689.998 Q243.704 695.577 240.232 698.679 Q236.76 701.758 230.44 701.758 Q228.264 701.758 225.996 701.387 Q223.75 701.017 221.343 700.276 L221.343 695.577 Q223.426 696.711 225.648 697.267 Q227.871 697.822 230.347 697.822 Q234.352 697.822 236.69 695.716 Q239.028 693.609 239.028 689.998 Q239.028 686.387 236.69 684.281 Q234.352 682.174 230.347 682.174 Q228.473 682.174 226.598 682.591 Q224.746 683.008 222.801 683.887 L222.801 666.526 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M126.205 436.128 Q122.593 436.128 120.765 439.692 Q118.959 443.234 118.959 450.364 Q118.959 457.47 120.765 461.035 Q122.593 464.577 126.205 464.577 Q129.839 464.577 131.644 461.035 Q133.473 457.47 133.473 450.364 Q133.473 443.234 131.644 439.692 Q129.839 436.128 126.205 436.128 M126.205 432.424 Q132.015 432.424 135.07 437.03 Q138.149 441.614 138.149 450.364 Q138.149 459.09 135.07 463.697 Q132.015 468.28 126.205 468.28 Q120.394 468.28 117.316 463.697 Q114.26 459.09 114.26 450.364 Q114.26 441.614 117.316 437.03 Q120.394 432.424 126.205 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M146.366 461.729 L151.251 461.729 L151.251 467.609 L146.366 467.609 L146.366 461.729 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M162.246 463.674 L169.885 463.674 L169.885 437.308 L161.575 438.975 L161.575 434.716 L169.839 433.049 L174.514 433.049 L174.514 463.674 L182.153 463.674 L182.153 467.609 L162.246 467.609 L162.246 463.674 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M201.598 436.128 Q197.987 436.128 196.158 439.692 Q194.352 443.234 194.352 450.364 Q194.352 457.47 196.158 461.035 Q197.987 464.577 201.598 464.577 Q205.232 464.577 207.037 461.035 Q208.866 457.47 208.866 450.364 Q208.866 443.234 207.037 439.692 Q205.232 436.128 201.598 436.128 M201.598 432.424 Q207.408 432.424 210.463 437.03 Q213.542 441.614 213.542 450.364 Q213.542 459.09 210.463 463.697 Q207.408 468.28 201.598 468.28 Q195.787 468.28 192.709 463.697 Q189.653 459.09 189.653 450.364 Q189.653 441.614 192.709 437.03 Q195.787 432.424 201.598 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M231.76 436.128 Q228.148 436.128 226.32 439.692 Q224.514 443.234 224.514 450.364 Q224.514 457.47 226.32 461.035 Q228.148 464.577 231.76 464.577 Q235.394 464.577 237.199 461.035 Q239.028 457.47 239.028 450.364 Q239.028 443.234 237.199 439.692 Q235.394 436.128 231.76 436.128 M231.76 432.424 Q237.57 432.424 240.625 437.03 Q243.704 441.614 243.704 450.364 Q243.704 459.09 240.625 463.697 Q237.57 468.28 231.76 468.28 Q225.949 468.28 222.871 463.697 Q219.815 459.09 219.815 450.364 Q219.815 441.614 222.871 437.03 Q225.949 432.424 231.76 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M127.2 202.65 Q123.589 202.65 121.76 206.215 Q119.955 209.757 119.955 216.886 Q119.955 223.993 121.76 227.558 Q123.589 231.099 127.2 231.099 Q130.834 231.099 132.64 227.558 Q134.468 223.993 134.468 216.886 Q134.468 209.757 132.64 206.215 Q130.834 202.65 127.2 202.65 M127.2 198.947 Q133.01 198.947 136.066 203.553 Q139.144 208.136 139.144 216.886 Q139.144 225.613 136.066 230.22 Q133.01 234.803 127.2 234.803 Q121.39 234.803 118.311 230.22 Q115.256 225.613 115.256 216.886 Q115.256 208.136 118.311 203.553 Q121.39 198.947 127.2 198.947 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M147.362 228.252 L152.246 228.252 L152.246 234.132 L147.362 234.132 L147.362 228.252 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M163.241 230.196 L170.88 230.196 L170.88 203.831 L162.57 205.497 L162.57 201.238 L170.834 199.572 L175.51 199.572 L175.51 230.196 L183.149 230.196 L183.149 234.132 L163.241 234.132 L163.241 230.196 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M196.621 230.196 L212.94 230.196 L212.94 234.132 L190.996 234.132 L190.996 230.196 Q193.658 227.442 198.241 222.812 Q202.848 218.159 204.028 216.817 Q206.274 214.294 207.153 212.558 Q208.056 210.798 208.056 209.109 Q208.056 206.354 206.112 204.618 Q204.19 202.882 201.088 202.882 Q198.889 202.882 196.436 203.646 Q194.005 204.41 191.227 205.96 L191.227 201.238 Q194.051 200.104 196.505 199.525 Q198.959 198.947 200.996 198.947 Q206.366 198.947 209.561 201.632 Q212.755 204.317 212.755 208.808 Q212.755 210.937 211.945 212.859 Q211.158 214.757 209.051 217.349 Q208.473 218.021 205.371 221.238 Q202.269 224.433 196.621 230.196 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M222.801 199.572 L241.158 199.572 L241.158 203.507 L227.084 203.507 L227.084 211.979 Q228.102 211.632 229.121 211.47 Q230.139 211.284 231.158 211.284 Q236.945 211.284 240.324 214.456 Q243.704 217.627 243.704 223.044 Q243.704 228.622 240.232 231.724 Q236.76 234.803 230.44 234.803 Q228.264 234.803 225.996 234.433 Q223.75 234.062 221.343 233.321 L221.343 228.622 Q223.426 229.757 225.648 230.312 Q227.871 230.868 230.347 230.868 Q234.352 230.868 236.69 228.761 Q239.028 226.655 239.028 223.044 Q239.028 219.433 236.69 217.326 Q234.352 215.22 230.347 215.22 Q228.473 215.22 226.598 215.636 Q224.746 216.053 222.801 216.933 L222.801 199.572 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M49.9359 990.954 L28.3562 990.954 L28.3562 985.098 L49.7131 985.098 Q54.7739 985.098 57.3202 983.124 Q59.8346 981.151 59.8346 977.204 Q59.8346 972.462 56.8109 969.725 Q53.7872 966.956 48.5673 966.956 L28.3562 966.956 L28.3562 961.099 L64.0042 961.099 L64.0042 966.956 L58.5296 966.956 Q61.7762 969.088 63.3676 971.921 Q64.9272 974.722 64.9272 978.446 Q64.9272 984.589 61.1078 987.771 Q57.2883 990.954 49.9359 990.954 M27.4968 976.218 L27.4968 976.218 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M14.5426 914.247 Q21.8632 918.512 29.0246 920.581 Q36.186 922.65 43.5384 922.65 Q50.8908 922.65 58.1159 920.581 Q65.3091 918.481 72.5979 914.247 L72.5979 919.34 Q65.1182 924.114 57.8931 926.501 Q50.668 928.857 43.5384 928.857 Q36.4406 928.857 29.2474 926.501 Q22.0542 924.146 14.5426 919.34 L14.5426 914.247 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M18.2347 897.092 L28.3562 897.092 L28.3562 885.029 L32.9077 885.029 L32.9077 897.092 L52.2594 897.092 Q56.6199 897.092 57.8613 895.914 Q59.1026 894.705 59.1026 891.044 L59.1026 885.029 L64.0042 885.029 L64.0042 891.044 Q64.0042 897.824 61.4897 900.402 Q58.9434 902.98 52.2594 902.98 L32.9077 902.98 L32.9077 907.277 L28.3562 907.277 L28.3562 902.98 L18.2347 902.98 L18.2347 897.092 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M44.7161 846.835 L47.5806 846.835 L47.5806 873.762 Q53.6281 873.38 56.8109 870.133 Q59.9619 866.855 59.9619 861.03 Q59.9619 857.656 59.1344 854.505 Q58.3069 851.322 56.6518 848.203 L62.1899 848.203 Q63.5267 851.354 64.227 854.664 Q64.9272 857.975 64.9272 861.38 Q64.9272 869.91 59.9619 874.907 Q54.9967 879.873 46.5303 879.873 Q37.7774 879.873 32.6531 875.162 Q27.4968 870.42 27.4968 862.399 Q27.4968 855.206 32.1438 851.036 Q36.7589 846.835 44.7161 846.835 M42.9973 852.691 Q38.1912 852.755 35.3266 855.397 Q32.4621 858.006 32.4621 862.335 Q32.4621 867.237 35.2312 870.197 Q38.0002 873.125 43.0292 873.571 L42.9973 852.691 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M35.1993 809.468 Q31.2526 807.272 29.3747 804.216 Q27.4968 801.161 27.4968 797.023 Q27.4968 791.453 31.4117 788.429 Q35.2948 785.406 42.4881 785.406 L64.0042 785.406 L64.0042 791.294 L42.679 791.294 Q37.5546 791.294 35.072 793.108 Q32.5894 794.922 32.5894 798.646 Q32.5894 803.198 35.6131 805.839 Q38.6368 808.481 43.8567 808.481 L64.0042 808.481 L64.0042 814.37 L42.679 814.37 Q37.5228 814.37 35.072 816.184 Q32.5894 817.998 32.5894 821.786 Q32.5894 826.273 35.6449 828.915 Q38.6686 831.557 43.8567 831.557 L64.0042 831.557 L64.0042 837.445 L28.3562 837.445 L28.3562 831.557 L33.8944 831.557 Q30.616 829.552 29.0564 826.751 Q27.4968 823.95 27.4968 820.099 Q27.4968 816.216 29.4702 813.51 Q31.4436 810.773 35.1993 809.468 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M58.657 768.059 L77.5631 768.059 L77.5631 773.947 L28.3562 773.947 L28.3562 768.059 L33.7671 768.059 Q30.5842 766.213 29.0564 763.412 Q27.4968 760.579 27.4968 756.664 Q27.4968 750.171 32.6531 746.129 Q37.8093 742.055 46.212 742.055 Q54.6147 742.055 59.771 746.129 Q64.9272 750.171 64.9272 756.664 Q64.9272 760.579 63.3994 763.412 Q61.8398 766.213 58.657 768.059 M46.212 748.134 Q39.7508 748.134 36.0905 750.808 Q32.3984 753.45 32.3984 758.097 Q32.3984 762.744 36.0905 765.417 Q39.7508 768.059 46.212 768.059 Q52.6732 768.059 56.3653 765.417 Q60.0256 762.744 60.0256 758.097 Q60.0256 753.45 56.3653 750.808 Q52.6732 748.134 46.212 748.134 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M44.7161 701.856 L47.5806 701.856 L47.5806 728.783 Q53.6281 728.401 56.8109 725.154 Q59.9619 721.876 59.9619 716.051 Q59.9619 712.677 59.1344 709.526 Q58.3069 706.343 56.6518 703.224 L62.1899 703.224 Q63.5267 706.375 64.227 709.685 Q64.9272 712.996 64.9272 716.401 Q64.9272 724.931 59.9619 729.928 Q54.9967 734.894 46.5303 734.894 Q37.7774 734.894 32.6531 730.183 Q27.4968 725.441 27.4968 717.42 Q27.4968 710.227 32.1438 706.057 Q36.7589 701.856 44.7161 701.856 M42.9973 707.712 Q38.1912 707.776 35.3266 710.418 Q32.4621 713.027 32.4621 717.356 Q32.4621 722.258 35.2312 725.218 Q38.0002 728.146 43.0292 728.592 L42.9973 707.712 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M33.8307 671.587 Q33.2578 672.573 33.0032 673.751 Q32.7167 674.897 32.7167 676.297 Q32.7167 681.263 35.9632 683.936 Q39.1779 686.578 45.2253 686.578 L64.0042 686.578 L64.0042 692.466 L28.3562 692.466 L28.3562 686.578 L33.8944 686.578 Q30.6479 684.732 29.0883 681.772 Q27.4968 678.812 27.4968 674.579 Q27.4968 673.974 27.5923 673.242 Q27.656 672.51 27.8151 671.619 L33.8307 671.587 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M46.0847 649.243 Q46.0847 656.341 47.7079 659.078 Q49.3312 661.815 53.2461 661.815 Q56.3653 661.815 58.2114 659.778 Q60.0256 657.709 60.0256 654.177 Q60.0256 649.307 56.5881 646.379 Q53.1188 643.418 47.3897 643.418 L46.0847 643.418 L46.0847 649.243 M43.6657 637.562 L64.0042 637.562 L64.0042 643.418 L58.5933 643.418 Q61.8398 645.424 63.3994 648.416 Q64.9272 651.407 64.9272 655.736 Q64.9272 661.211 61.8716 664.457 Q58.7843 667.672 53.6281 667.672 Q47.6125 667.672 44.5569 663.661 Q41.5014 659.619 41.5014 651.63 L41.5014 643.418 L40.9285 643.418 Q36.8862 643.418 34.6901 646.092 Q32.4621 648.734 32.4621 653.54 Q32.4621 656.595 33.1941 659.492 Q33.9262 662.388 35.3903 665.062 L29.9795 665.062 Q28.7381 661.847 28.1334 658.823 Q27.4968 655.8 27.4968 652.935 Q27.4968 645.201 31.5072 641.381 Q35.5176 637.562 43.6657 637.562 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M18.2347 619.706 L28.3562 619.706 L28.3562 607.643 L32.9077 607.643 L32.9077 619.706 L52.2594 619.706 Q56.6199 619.706 57.8613 618.529 Q59.1026 617.319 59.1026 613.659 L59.1026 607.643 L64.0042 607.643 L64.0042 613.659 Q64.0042 620.438 61.4897 623.016 Q58.9434 625.595 52.2594 625.595 L32.9077 625.595 L32.9077 629.891 L28.3562 629.891 L28.3562 625.595 L18.2347 625.595 L18.2347 619.706 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M49.9359 600.545 L28.3562 600.545 L28.3562 594.689 L49.7131 594.689 Q54.7739 594.689 57.3202 592.716 Q59.8346 590.742 59.8346 586.796 Q59.8346 582.053 56.8109 579.316 Q53.7872 576.547 48.5673 576.547 L28.3562 576.547 L28.3562 570.69 L64.0042 570.69 L64.0042 576.547 L58.5296 576.547 Q61.7762 578.679 63.3676 581.512 Q64.9272 584.313 64.9272 588.037 Q64.9272 594.18 61.1078 597.363 Q57.2883 600.545 49.9359 600.545 M27.4968 585.809 L27.4968 585.809 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M33.8307 537.971 Q33.2578 538.957 33.0032 540.135 Q32.7167 541.281 32.7167 542.681 Q32.7167 547.646 35.9632 550.32 Q39.1779 552.962 45.2253 552.962 L64.0042 552.962 L64.0042 558.85 L28.3562 558.85 L28.3562 552.962 L33.8944 552.962 Q30.6479 551.116 29.0883 548.156 Q27.4968 545.196 27.4968 540.962 Q27.4968 540.358 27.5923 539.626 Q27.656 538.894 27.8151 538.002 L33.8307 537.971 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M44.7161 502.768 L47.5806 502.768 L47.5806 529.695 Q53.6281 529.313 56.8109 526.067 Q59.9619 522.788 59.9619 516.964 Q59.9619 513.59 59.1344 510.439 Q58.3069 507.256 56.6518 504.137 L62.1899 504.137 Q63.5267 507.288 64.227 510.598 Q64.9272 513.908 64.9272 517.314 Q64.9272 525.844 59.9619 530.841 Q54.9967 535.806 46.5303 535.806 Q37.7774 535.806 32.6531 531.096 Q27.4968 526.353 27.4968 518.332 Q27.4968 511.139 32.1438 506.97 Q36.7589 502.768 44.7161 502.768 M42.9973 508.625 Q38.1912 508.688 35.3266 511.33 Q32.4621 513.94 32.4621 518.269 Q32.4621 523.17 35.2312 526.13 Q38.0002 529.059 43.0292 529.504 L42.9973 508.625 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip960)\" d=\"M14.5426 494.079 L14.5426 488.986 Q22.0542 484.212 29.2474 481.857 Q36.4406 479.47 43.5384 479.47 Q50.668 479.47 57.8931 481.857 Q65.1182 484.212 72.5979 488.986 L72.5979 494.079 Q65.3091 489.846 58.1159 487.777 Q50.8908 485.676 43.5384 485.676 Q36.186 485.676 29.0246 487.777 Q21.8632 489.846 14.5426 494.079 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip962)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"338.375,1384.24 357.932,1319.8 377.489,1255.35 397.046,1190.91 416.604,1126.47 436.161,1062.03 455.718,1011.9 475.275,961.77 494.832,911.642 514.389,861.515 533.946,811.387 553.503,772.017 573.06,732.648 592.617,693.279 612.175,653.909 631.732,614.54 651.289,583.444 670.846,552.349 690.403,521.254 709.96,490.158 729.517,459.063 749.074,434.627 768.631,410.192 788.188,385.756 807.745,361.32 827.303,336.885 846.86,318.026 866.417,299.168 885.974,280.31 905.531,261.452 925.088,242.594 944.645,228.572 964.202,214.55 983.759,200.528 1003.32,186.505 1022.87,172.483 1042.43,162.792 1061.99,153.1 1081.54,143.408 1101.1,133.717 1120.66,124.025 1140.22,118.334 1159.77,112.643 1179.33,106.952 1198.89,101.261 1218.44,95.5699 1238,93.693 1257.56,91.8162 1277.12,89.9394 1296.67,88.0625 1316.23,86.1857 1335.79,88.0625 1355.34,89.9394 1374.9,91.8162 1394.46,93.693 1414.02,95.5699 1433.57,101.261 1453.13,106.952 1472.69,112.643 1492.24,118.334 1511.8,124.025 1531.36,133.717 1550.92,143.408 1570.47,153.1 1590.03,162.792 1609.59,172.483 1629.14,186.505 1648.7,200.528 1668.26,214.55 1687.81,228.572 1707.37,242.594 1726.93,261.452 1746.49,280.31 1766.04,299.168 1785.6,318.026 1805.16,336.885 1824.71,361.32 1844.27,385.756 1863.83,410.192 1883.39,434.627 1902.94,459.063 1922.5,490.158 1942.06,521.254 1961.61,552.349 1981.17,583.444 2000.73,614.54 2020.29,653.909 2039.84,693.279 2059.4,732.648 2078.96,772.017 2098.51,811.387 2118.07,861.515 2137.63,911.642 2157.18,961.77 2176.74,1011.9 2196.3,1062.03 2215.86,1126.47 2235.41,1190.91 2254.97,1255.35 2274.53,1319.8 2294.08,1384.24 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"338.375,1423.18 338.375,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"827.303,1423.18 827.303,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1316.23,1423.18 1316.23,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1805.16,1423.18 1805.16,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2294.08,1423.18 2294.08,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,1384.24 2352.76,1384.24 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,1150.76 2352.76,1150.76 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,917.284 2352.76,917.284 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,683.806 2352.76,683.806 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,450.329 2352.76,450.329 \"/>\n", + "<polyline clip-path=\"url(#clip572)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,216.852 2352.76,216.852 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1423.18 2352.76,1423.18 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"338.375,1423.18 338.375,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"827.303,1423.18 827.303,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1316.23,1423.18 1316.23,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1805.16,1423.18 1805.16,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2294.08,1423.18 2294.08,1404.28 \"/>\n", + "<path clip-path=\"url(#clip570)\" d=\"M284.903 1468.75 L314.579 1468.75 L314.579 1472.69 L284.903 1472.69 L284.903 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M325.482 1481.64 L333.121 1481.64 L333.121 1455.28 L324.81 1456.95 L324.81 1452.69 L333.074 1451.02 L337.75 1451.02 L337.75 1481.64 L345.389 1481.64 L345.389 1485.58 L325.482 1485.58 L325.482 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M354.833 1479.7 L359.718 1479.7 L359.718 1485.58 L354.833 1485.58 L354.833 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M379.903 1454.1 Q376.292 1454.1 374.463 1457.66 Q372.657 1461.2 372.657 1468.33 Q372.657 1475.44 374.463 1479.01 Q376.292 1482.55 379.903 1482.55 Q383.537 1482.55 385.343 1479.01 Q387.171 1475.44 387.171 1468.33 Q387.171 1461.2 385.343 1457.66 Q383.537 1454.1 379.903 1454.1 M379.903 1450.39 Q385.713 1450.39 388.768 1455 Q391.847 1459.58 391.847 1468.33 Q391.847 1477.06 388.768 1481.67 Q385.713 1486.25 379.903 1486.25 Q374.093 1486.25 371.014 1481.67 Q367.958 1477.06 367.958 1468.33 Q367.958 1459.58 371.014 1455 Q374.093 1450.39 379.903 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M774.328 1468.75 L804.004 1468.75 L804.004 1472.69 L774.328 1472.69 L774.328 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M824.097 1454.1 Q820.485 1454.1 818.657 1457.66 Q816.851 1461.2 816.851 1468.33 Q816.851 1475.44 818.657 1479.01 Q820.485 1482.55 824.097 1482.55 Q827.731 1482.55 829.536 1479.01 Q831.365 1475.44 831.365 1468.33 Q831.365 1461.2 829.536 1457.66 Q827.731 1454.1 824.097 1454.1 M824.097 1450.39 Q829.907 1450.39 832.962 1455 Q836.041 1459.58 836.041 1468.33 Q836.041 1477.06 832.962 1481.67 Q829.907 1486.25 824.097 1486.25 Q818.286 1486.25 815.208 1481.67 Q812.152 1477.06 812.152 1468.33 Q812.152 1459.58 815.208 1455 Q818.286 1450.39 824.097 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M844.258 1479.7 L849.143 1479.7 L849.143 1485.58 L844.258 1485.58 L844.258 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M859.374 1451.02 L877.731 1451.02 L877.731 1454.96 L863.657 1454.96 L863.657 1463.43 Q864.675 1463.08 865.694 1462.92 Q866.712 1462.73 867.731 1462.73 Q873.518 1462.73 876.897 1465.9 Q880.277 1469.08 880.277 1474.49 Q880.277 1480.07 876.805 1483.17 Q873.332 1486.25 867.013 1486.25 Q864.837 1486.25 862.569 1485.88 Q860.323 1485.51 857.916 1484.77 L857.916 1480.07 Q859.999 1481.2 862.221 1481.76 Q864.444 1482.32 866.92 1482.32 Q870.925 1482.32 873.263 1480.21 Q875.601 1478.1 875.601 1474.49 Q875.601 1470.88 873.263 1468.77 Q870.925 1466.67 866.92 1466.67 Q865.045 1466.67 863.17 1467.08 Q861.319 1467.5 859.374 1468.38 L859.374 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1293.61 1454.1 Q1290 1454.1 1288.17 1457.66 Q1286.37 1461.2 1286.37 1468.33 Q1286.37 1475.44 1288.17 1479.01 Q1290 1482.55 1293.61 1482.55 Q1297.25 1482.55 1299.05 1479.01 Q1300.88 1475.44 1300.88 1468.33 Q1300.88 1461.2 1299.05 1457.66 Q1297.25 1454.1 1293.61 1454.1 M1293.61 1450.39 Q1299.42 1450.39 1302.48 1455 Q1305.56 1459.58 1305.56 1468.33 Q1305.56 1477.06 1302.48 1481.67 Q1299.42 1486.25 1293.61 1486.25 Q1287.8 1486.25 1284.73 1481.67 Q1281.67 1477.06 1281.67 1468.33 Q1281.67 1459.58 1284.73 1455 Q1287.8 1450.39 1293.61 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1313.78 1479.7 L1318.66 1479.7 L1318.66 1485.58 L1313.78 1485.58 L1313.78 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1338.85 1454.1 Q1335.23 1454.1 1333.41 1457.66 Q1331.6 1461.2 1331.6 1468.33 Q1331.6 1475.44 1333.41 1479.01 Q1335.23 1482.55 1338.85 1482.55 Q1342.48 1482.55 1344.29 1479.01 Q1346.11 1475.44 1346.11 1468.33 Q1346.11 1461.2 1344.29 1457.66 Q1342.48 1454.1 1338.85 1454.1 M1338.85 1450.39 Q1344.66 1450.39 1347.71 1455 Q1350.79 1459.58 1350.79 1468.33 Q1350.79 1477.06 1347.71 1481.67 Q1344.66 1486.25 1338.85 1486.25 Q1333.04 1486.25 1329.96 1481.67 Q1326.9 1477.06 1326.9 1468.33 Q1326.9 1459.58 1329.96 1455 Q1333.04 1450.39 1338.85 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1783.04 1454.1 Q1779.43 1454.1 1777.6 1457.66 Q1775.79 1461.2 1775.79 1468.33 Q1775.79 1475.44 1777.6 1479.01 Q1779.43 1482.55 1783.04 1482.55 Q1786.67 1482.55 1788.48 1479.01 Q1790.31 1475.44 1790.31 1468.33 Q1790.31 1461.2 1788.48 1457.66 Q1786.67 1454.1 1783.04 1454.1 M1783.04 1450.39 Q1788.85 1450.39 1791.91 1455 Q1794.98 1459.58 1794.98 1468.33 Q1794.98 1477.06 1791.91 1481.67 Q1788.85 1486.25 1783.04 1486.25 Q1777.23 1486.25 1774.15 1481.67 Q1771.09 1477.06 1771.09 1468.33 Q1771.09 1459.58 1774.15 1455 Q1777.23 1450.39 1783.04 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1803.2 1479.7 L1808.09 1479.7 L1808.09 1485.58 L1803.2 1485.58 L1803.2 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1818.32 1451.02 L1836.67 1451.02 L1836.67 1454.96 L1822.6 1454.96 L1822.6 1463.43 Q1823.62 1463.08 1824.64 1462.92 Q1825.65 1462.73 1826.67 1462.73 Q1832.46 1462.73 1835.84 1465.9 Q1839.22 1469.08 1839.22 1474.49 Q1839.22 1480.07 1835.75 1483.17 Q1832.28 1486.25 1825.96 1486.25 Q1823.78 1486.25 1821.51 1485.88 Q1819.27 1485.51 1816.86 1484.77 L1816.86 1480.07 Q1818.94 1481.2 1821.16 1481.76 Q1823.39 1482.32 1825.86 1482.32 Q1829.87 1482.32 1832.21 1480.21 Q1834.54 1478.1 1834.54 1474.49 Q1834.54 1470.88 1832.21 1468.77 Q1829.87 1466.67 1825.86 1466.67 Q1823.99 1466.67 1822.11 1467.08 Q1820.26 1467.5 1818.32 1468.38 L1818.32 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M2261.24 1481.64 L2268.88 1481.64 L2268.88 1455.28 L2260.57 1456.95 L2260.57 1452.69 L2268.83 1451.02 L2273.51 1451.02 L2273.51 1481.64 L2281.14 1481.64 L2281.14 1485.58 L2261.24 1485.58 L2261.24 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M2290.59 1479.7 L2295.47 1479.7 L2295.47 1485.58 L2290.59 1485.58 L2290.59 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M2315.66 1454.1 Q2312.05 1454.1 2310.22 1457.66 Q2308.41 1461.2 2308.41 1468.33 Q2308.41 1475.44 2310.22 1479.01 Q2312.05 1482.55 2315.66 1482.55 Q2319.29 1482.55 2321.1 1479.01 Q2322.93 1475.44 2322.93 1468.33 Q2322.93 1461.2 2321.1 1457.66 Q2319.29 1454.1 2315.66 1454.1 M2315.66 1450.39 Q2321.47 1450.39 2324.52 1455 Q2327.6 1459.58 2327.6 1468.33 Q2327.6 1477.06 2324.52 1481.67 Q2321.47 1486.25 2315.66 1486.25 Q2309.85 1486.25 2306.77 1481.67 Q2303.71 1477.06 2303.71 1468.33 Q2303.71 1459.58 2306.77 1455 Q2309.85 1450.39 2315.66 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1124.96 1532.4 L1112.07 1549.74 L1125.62 1568.04 L1118.72 1568.04 L1108.34 1554.04 L1097.97 1568.04 L1091.06 1568.04 L1104.9 1549.39 L1092.24 1532.4 L1099.14 1532.4 L1108.6 1545.1 L1118.05 1532.4 L1124.96 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1168.69 1518.58 Q1164.42 1525.9 1162.35 1533.06 Q1160.29 1540.23 1160.29 1547.58 Q1160.29 1554.93 1162.35 1562.16 Q1164.46 1569.35 1168.69 1576.64 L1163.6 1576.64 Q1158.82 1569.16 1156.43 1561.93 Q1154.08 1554.71 1154.08 1547.58 Q1154.08 1540.48 1156.43 1533.29 Q1158.79 1526.09 1163.6 1518.58 L1168.69 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1205.71 1533.76 L1205.71 1539.24 Q1203.22 1537.87 1200.71 1537.2 Q1198.23 1536.5 1195.68 1536.5 Q1189.98 1536.5 1186.83 1540.13 Q1183.68 1543.73 1183.68 1550.25 Q1183.68 1556.78 1186.83 1560.4 Q1189.98 1564 1195.68 1564 Q1198.23 1564 1200.71 1563.33 Q1203.22 1562.63 1205.71 1561.26 L1205.71 1566.68 Q1203.25 1567.82 1200.61 1568.39 Q1198 1568.97 1195.04 1568.97 Q1186.99 1568.97 1182.25 1563.91 Q1177.51 1558.85 1177.51 1550.25 Q1177.51 1541.53 1182.28 1536.53 Q1187.09 1531.54 1195.42 1531.54 Q1198.13 1531.54 1200.71 1532.11 Q1203.29 1532.65 1205.71 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1229.7 1536.5 Q1224.99 1536.5 1222.26 1540.19 Q1219.52 1543.85 1219.52 1550.25 Q1219.52 1556.65 1222.22 1560.34 Q1224.96 1564 1229.7 1564 Q1234.38 1564 1237.12 1560.31 Q1239.86 1556.62 1239.86 1550.25 Q1239.86 1543.92 1237.12 1540.23 Q1234.38 1536.5 1229.7 1536.5 M1229.7 1531.54 Q1237.34 1531.54 1241.7 1536.5 Q1246.06 1541.47 1246.06 1550.25 Q1246.06 1559 1241.7 1564 Q1237.34 1568.97 1229.7 1568.97 Q1222.03 1568.97 1217.67 1564 Q1213.34 1559 1213.34 1550.25 Q1213.34 1541.47 1217.67 1536.5 Q1222.03 1531.54 1229.7 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1269.59 1536.5 Q1264.87 1536.5 1262.14 1540.19 Q1259.4 1543.85 1259.4 1550.25 Q1259.4 1556.65 1262.11 1560.34 Q1264.84 1564 1269.59 1564 Q1274.26 1564 1277 1560.31 Q1279.74 1556.62 1279.74 1550.25 Q1279.74 1543.92 1277 1540.23 Q1274.26 1536.5 1269.59 1536.5 M1269.59 1531.54 Q1277.22 1531.54 1281.58 1536.5 Q1285.95 1541.47 1285.95 1550.25 Q1285.95 1559 1281.58 1564 Q1277.22 1568.97 1269.59 1568.97 Q1261.91 1568.97 1257.55 1564 Q1253.23 1559 1253.23 1550.25 Q1253.23 1541.47 1257.55 1536.5 Q1261.91 1531.54 1269.59 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1316.31 1537.87 Q1315.32 1537.3 1314.15 1537.04 Q1313 1536.76 1311.6 1536.76 Q1306.63 1536.76 1303.96 1540 Q1301.32 1543.22 1301.32 1549.27 L1301.32 1568.04 L1295.43 1568.04 L1295.43 1532.4 L1301.32 1532.4 L1301.32 1537.93 Q1303.16 1534.69 1306.12 1533.13 Q1309.08 1531.54 1313.32 1531.54 Q1313.92 1531.54 1314.65 1531.63 Q1315.39 1531.7 1316.28 1531.85 L1316.31 1537.87 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1344.76 1537.81 L1344.76 1518.52 L1350.62 1518.52 L1350.62 1568.04 L1344.76 1568.04 L1344.76 1562.7 Q1342.92 1565.88 1340.09 1567.44 Q1337.28 1568.97 1333.34 1568.97 Q1326.88 1568.97 1322.8 1563.81 Q1318.76 1558.65 1318.76 1550.25 Q1318.76 1541.85 1322.8 1536.69 Q1326.88 1531.54 1333.34 1531.54 Q1337.28 1531.54 1340.09 1533.1 Q1342.92 1534.62 1344.76 1537.81 M1324.81 1550.25 Q1324.81 1556.71 1327.45 1560.4 Q1330.12 1564.07 1334.77 1564.07 Q1339.42 1564.07 1342.09 1560.4 Q1344.76 1556.71 1344.76 1550.25 Q1344.76 1543.79 1342.09 1540.13 Q1339.42 1536.44 1334.77 1536.44 Q1330.12 1536.44 1327.45 1540.13 Q1324.81 1543.79 1324.81 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1362.68 1532.4 L1368.54 1532.4 L1368.54 1568.04 L1362.68 1568.04 L1362.68 1532.4 M1362.68 1518.52 L1368.54 1518.52 L1368.54 1525.93 L1362.68 1525.93 L1362.68 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1410.43 1546.53 L1410.43 1568.04 L1404.57 1568.04 L1404.57 1546.72 Q1404.57 1541.66 1402.6 1539.14 Q1400.62 1536.63 1396.68 1536.63 Q1391.93 1536.63 1389.2 1539.65 Q1386.46 1542.68 1386.46 1547.9 L1386.46 1568.04 L1380.57 1568.04 L1380.57 1532.4 L1386.46 1532.4 L1386.46 1537.93 Q1388.56 1534.72 1391.39 1533.13 Q1394.26 1531.54 1397.98 1531.54 Q1404.12 1531.54 1407.28 1535.36 Q1410.43 1539.14 1410.43 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1438.31 1550.12 Q1431.21 1550.12 1428.47 1551.75 Q1425.74 1553.37 1425.74 1557.29 Q1425.74 1560.4 1427.77 1562.25 Q1429.84 1564.07 1433.37 1564.07 Q1438.24 1564.07 1441.17 1560.63 Q1444.13 1557.16 1444.13 1551.43 L1444.13 1550.12 L1438.31 1550.12 M1449.99 1547.71 L1449.99 1568.04 L1444.13 1568.04 L1444.13 1562.63 Q1442.13 1565.88 1439.14 1567.44 Q1436.14 1568.97 1431.82 1568.97 Q1426.34 1568.97 1423.09 1565.91 Q1419.88 1562.82 1419.88 1557.67 Q1419.88 1551.65 1423.89 1548.6 Q1427.93 1545.54 1435.92 1545.54 L1444.13 1545.54 L1444.13 1544.97 Q1444.13 1540.93 1441.46 1538.73 Q1438.82 1536.5 1434.01 1536.5 Q1430.96 1536.5 1428.06 1537.23 Q1425.16 1537.97 1422.49 1539.43 L1422.49 1534.02 Q1425.7 1532.78 1428.73 1532.17 Q1431.75 1531.54 1434.62 1531.54 Q1442.35 1531.54 1446.17 1535.55 Q1449.99 1539.56 1449.99 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1467.85 1522.27 L1467.85 1532.4 L1479.91 1532.4 L1479.91 1536.95 L1467.85 1536.95 L1467.85 1556.3 Q1467.85 1560.66 1469.02 1561.9 Q1470.23 1563.14 1473.89 1563.14 L1479.91 1563.14 L1479.91 1568.04 L1473.89 1568.04 Q1467.11 1568.04 1464.53 1565.53 Q1461.96 1562.98 1461.96 1556.3 L1461.96 1536.95 L1457.66 1536.95 L1457.66 1532.4 L1461.96 1532.4 L1461.96 1522.27 L1467.85 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1518.1 1548.76 L1518.1 1551.62 L1491.18 1551.62 Q1491.56 1557.67 1494.8 1560.85 Q1498.08 1564 1503.91 1564 Q1507.28 1564 1510.43 1563.17 Q1513.61 1562.35 1516.73 1560.69 L1516.73 1566.23 Q1513.58 1567.57 1510.27 1568.27 Q1506.96 1568.97 1503.56 1568.97 Q1495.03 1568.97 1490.03 1564 Q1485.06 1559.04 1485.06 1550.57 Q1485.06 1541.82 1489.77 1536.69 Q1494.52 1531.54 1502.54 1531.54 Q1509.73 1531.54 1513.9 1536.18 Q1518.1 1540.8 1518.1 1548.76 M1512.25 1547.04 Q1512.18 1542.23 1509.54 1539.37 Q1506.93 1536.5 1502.6 1536.5 Q1497.7 1536.5 1494.74 1539.27 Q1491.81 1542.04 1491.37 1547.07 L1512.25 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M1526.79 1518.58 L1531.88 1518.58 Q1536.66 1526.09 1539.01 1533.29 Q1541.4 1540.48 1541.4 1547.58 Q1541.4 1554.71 1539.01 1561.93 Q1536.66 1569.16 1531.88 1576.64 L1526.79 1576.64 Q1531.02 1569.35 1533.09 1562.16 Q1535.19 1554.93 1535.19 1547.58 Q1535.19 1540.23 1533.09 1533.06 Q1531.02 1525.9 1526.79 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1423.18 279.704,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1384.24 298.602,1384.24 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1150.76 298.602,1150.76 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,917.284 298.602,917.284 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,683.806 298.602,683.806 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,450.329 298.602,450.329 \"/>\n", + "<polyline clip-path=\"url(#clip570)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,216.852 298.602,216.852 \"/>\n", + "<path clip-path=\"url(#clip570)\" d=\"M126.205 1370.04 Q122.593 1370.04 120.765 1373.6 Q118.959 1377.14 118.959 1384.27 Q118.959 1391.38 120.765 1394.94 Q122.593 1398.49 126.205 1398.49 Q129.839 1398.49 131.644 1394.94 Q133.473 1391.38 133.473 1384.27 Q133.473 1377.14 131.644 1373.6 Q129.839 1370.04 126.205 1370.04 M126.205 1366.33 Q132.015 1366.33 135.07 1370.94 Q138.149 1375.52 138.149 1384.27 Q138.149 1393 135.07 1397.61 Q132.015 1402.19 126.205 1402.19 Q120.394 1402.19 117.316 1397.61 Q114.26 1393 114.26 1384.27 Q114.26 1375.52 117.316 1370.94 Q120.394 1366.33 126.205 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M146.366 1395.64 L151.251 1395.64 L151.251 1401.52 L146.366 1401.52 L146.366 1395.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M171.436 1370.04 Q167.825 1370.04 165.996 1373.6 Q164.19 1377.14 164.19 1384.27 Q164.19 1391.38 165.996 1394.94 Q167.825 1398.49 171.436 1398.49 Q175.07 1398.49 176.876 1394.94 Q178.704 1391.38 178.704 1384.27 Q178.704 1377.14 176.876 1373.6 Q175.07 1370.04 171.436 1370.04 M171.436 1366.33 Q177.246 1366.33 180.301 1370.94 Q183.38 1375.52 183.38 1384.27 Q183.38 1393 180.301 1397.61 Q177.246 1402.19 171.436 1402.19 Q165.626 1402.19 162.547 1397.61 Q159.491 1393 159.491 1384.27 Q159.491 1375.52 162.547 1370.94 Q165.626 1366.33 171.436 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M201.598 1370.04 Q197.987 1370.04 196.158 1373.6 Q194.352 1377.14 194.352 1384.27 Q194.352 1391.38 196.158 1394.94 Q197.987 1398.49 201.598 1398.49 Q205.232 1398.49 207.037 1394.94 Q208.866 1391.38 208.866 1384.27 Q208.866 1377.14 207.037 1373.6 Q205.232 1370.04 201.598 1370.04 M201.598 1366.33 Q207.408 1366.33 210.463 1370.94 Q213.542 1375.52 213.542 1384.27 Q213.542 1393 210.463 1397.61 Q207.408 1402.19 201.598 1402.19 Q195.787 1402.19 192.709 1397.61 Q189.653 1393 189.653 1384.27 Q189.653 1375.52 192.709 1370.94 Q195.787 1366.33 201.598 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M231.76 1370.04 Q228.148 1370.04 226.32 1373.6 Q224.514 1377.14 224.514 1384.27 Q224.514 1391.38 226.32 1394.94 Q228.148 1398.49 231.76 1398.49 Q235.394 1398.49 237.199 1394.94 Q239.028 1391.38 239.028 1384.27 Q239.028 1377.14 237.199 1373.6 Q235.394 1370.04 231.76 1370.04 M231.76 1366.33 Q237.57 1366.33 240.625 1370.94 Q243.704 1375.52 243.704 1384.27 Q243.704 1393 240.625 1397.61 Q237.57 1402.19 231.76 1402.19 Q225.949 1402.19 222.871 1397.61 Q219.815 1393 219.815 1384.27 Q219.815 1375.52 222.871 1370.94 Q225.949 1366.33 231.76 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M127.2 1136.56 Q123.589 1136.56 121.76 1140.12 Q119.955 1143.67 119.955 1150.8 Q119.955 1157.9 121.76 1161.47 Q123.589 1165.01 127.2 1165.01 Q130.834 1165.01 132.64 1161.47 Q134.468 1157.9 134.468 1150.8 Q134.468 1143.67 132.64 1140.12 Q130.834 1136.56 127.2 1136.56 M127.2 1132.86 Q133.01 1132.86 136.066 1137.46 Q139.144 1142.05 139.144 1150.8 Q139.144 1159.52 136.066 1164.13 Q133.01 1168.71 127.2 1168.71 Q121.39 1168.71 118.311 1164.13 Q115.256 1159.52 115.256 1150.8 Q115.256 1142.05 118.311 1137.46 Q121.39 1132.86 127.2 1132.86 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M147.362 1162.16 L152.246 1162.16 L152.246 1168.04 L147.362 1168.04 L147.362 1162.16 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M172.431 1136.56 Q168.82 1136.56 166.991 1140.12 Q165.186 1143.67 165.186 1150.8 Q165.186 1157.9 166.991 1161.47 Q168.82 1165.01 172.431 1165.01 Q176.065 1165.01 177.871 1161.47 Q179.7 1157.9 179.7 1150.8 Q179.7 1143.67 177.871 1140.12 Q176.065 1136.56 172.431 1136.56 M172.431 1132.86 Q178.241 1132.86 181.297 1137.46 Q184.376 1142.05 184.376 1150.8 Q184.376 1159.52 181.297 1164.13 Q178.241 1168.71 172.431 1168.71 Q166.621 1168.71 163.542 1164.13 Q160.487 1159.52 160.487 1150.8 Q160.487 1142.05 163.542 1137.46 Q166.621 1132.86 172.431 1132.86 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M196.621 1164.11 L212.94 1164.11 L212.94 1168.04 L190.996 1168.04 L190.996 1164.11 Q193.658 1161.35 198.241 1156.72 Q202.848 1152.07 204.028 1150.73 Q206.274 1148.2 207.153 1146.47 Q208.056 1144.71 208.056 1143.02 Q208.056 1140.26 206.112 1138.53 Q204.19 1136.79 201.088 1136.79 Q198.889 1136.79 196.436 1137.55 Q194.005 1138.32 191.227 1139.87 L191.227 1135.15 Q194.051 1134.01 196.505 1133.43 Q198.959 1132.86 200.996 1132.86 Q206.366 1132.86 209.561 1135.54 Q212.755 1138.23 212.755 1142.72 Q212.755 1144.85 211.945 1146.77 Q211.158 1148.67 209.051 1151.26 Q208.473 1151.93 205.371 1155.15 Q202.269 1158.34 196.621 1164.11 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M222.801 1133.48 L241.158 1133.48 L241.158 1137.42 L227.084 1137.42 L227.084 1145.89 Q228.102 1145.54 229.121 1145.38 Q230.139 1145.19 231.158 1145.19 Q236.945 1145.19 240.324 1148.37 Q243.704 1151.54 243.704 1156.95 Q243.704 1162.53 240.232 1165.63 Q236.76 1168.71 230.44 1168.71 Q228.264 1168.71 225.996 1168.34 Q223.75 1167.97 221.343 1167.23 L221.343 1162.53 Q223.426 1163.67 225.648 1164.22 Q227.871 1164.78 230.347 1164.78 Q234.352 1164.78 236.69 1162.67 Q239.028 1160.56 239.028 1156.95 Q239.028 1153.34 236.69 1151.24 Q234.352 1149.13 230.347 1149.13 Q228.473 1149.13 226.598 1149.55 Q224.746 1149.96 222.801 1150.84 L222.801 1133.48 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M126.205 903.082 Q122.593 903.082 120.765 906.647 Q118.959 910.189 118.959 917.318 Q118.959 924.425 120.765 927.99 Q122.593 931.531 126.205 931.531 Q129.839 931.531 131.644 927.99 Q133.473 924.425 133.473 917.318 Q133.473 910.189 131.644 906.647 Q129.839 903.082 126.205 903.082 M126.205 899.379 Q132.015 899.379 135.07 903.985 Q138.149 908.568 138.149 917.318 Q138.149 926.045 135.07 930.652 Q132.015 935.235 126.205 935.235 Q120.394 935.235 117.316 930.652 Q114.26 926.045 114.26 917.318 Q114.26 908.568 117.316 903.985 Q120.394 899.379 126.205 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M146.366 928.684 L151.251 928.684 L151.251 934.564 L146.366 934.564 L146.366 928.684 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M171.436 903.082 Q167.825 903.082 165.996 906.647 Q164.19 910.189 164.19 917.318 Q164.19 924.425 165.996 927.99 Q167.825 931.531 171.436 931.531 Q175.07 931.531 176.876 927.99 Q178.704 924.425 178.704 917.318 Q178.704 910.189 176.876 906.647 Q175.07 903.082 171.436 903.082 M171.436 899.379 Q177.246 899.379 180.301 903.985 Q183.38 908.568 183.38 917.318 Q183.38 926.045 180.301 930.652 Q177.246 935.235 171.436 935.235 Q165.626 935.235 162.547 930.652 Q159.491 926.045 159.491 917.318 Q159.491 908.568 162.547 903.985 Q165.626 899.379 171.436 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M191.644 900.004 L210 900.004 L210 903.939 L195.926 903.939 L195.926 912.411 Q196.945 912.064 197.963 911.902 Q198.982 911.716 200 911.716 Q205.787 911.716 209.167 914.888 Q212.547 918.059 212.547 923.476 Q212.547 929.054 209.074 932.156 Q205.602 935.235 199.283 935.235 Q197.107 935.235 194.838 934.865 Q192.593 934.494 190.186 933.753 L190.186 929.054 Q192.269 930.189 194.491 930.744 Q196.713 931.3 199.19 931.3 Q203.195 931.3 205.533 929.193 Q207.871 927.087 207.871 923.476 Q207.871 919.865 205.533 917.758 Q203.195 915.652 199.19 915.652 Q197.315 915.652 195.44 916.068 Q193.588 916.485 191.644 917.365 L191.644 900.004 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M231.76 903.082 Q228.148 903.082 226.32 906.647 Q224.514 910.189 224.514 917.318 Q224.514 924.425 226.32 927.99 Q228.148 931.531 231.76 931.531 Q235.394 931.531 237.199 927.99 Q239.028 924.425 239.028 917.318 Q239.028 910.189 237.199 906.647 Q235.394 903.082 231.76 903.082 M231.76 899.379 Q237.57 899.379 240.625 903.985 Q243.704 908.568 243.704 917.318 Q243.704 926.045 240.625 930.652 Q237.57 935.235 231.76 935.235 Q225.949 935.235 222.871 930.652 Q219.815 926.045 219.815 917.318 Q219.815 908.568 222.871 903.985 Q225.949 899.379 231.76 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M127.2 669.605 Q123.589 669.605 121.76 673.17 Q119.955 676.711 119.955 683.841 Q119.955 690.947 121.76 694.512 Q123.589 698.054 127.2 698.054 Q130.834 698.054 132.64 694.512 Q134.468 690.947 134.468 683.841 Q134.468 676.711 132.64 673.17 Q130.834 669.605 127.2 669.605 M127.2 665.901 Q133.01 665.901 136.066 670.508 Q139.144 675.091 139.144 683.841 Q139.144 692.568 136.066 697.174 Q133.01 701.758 127.2 701.758 Q121.39 701.758 118.311 697.174 Q115.256 692.568 115.256 683.841 Q115.256 675.091 118.311 670.508 Q121.39 665.901 127.2 665.901 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M147.362 695.207 L152.246 695.207 L152.246 701.086 L147.362 701.086 L147.362 695.207 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M172.431 669.605 Q168.82 669.605 166.991 673.17 Q165.186 676.711 165.186 683.841 Q165.186 690.947 166.991 694.512 Q168.82 698.054 172.431 698.054 Q176.065 698.054 177.871 694.512 Q179.7 690.947 179.7 683.841 Q179.7 676.711 177.871 673.17 Q176.065 669.605 172.431 669.605 M172.431 665.901 Q178.241 665.901 181.297 670.508 Q184.376 675.091 184.376 683.841 Q184.376 692.568 181.297 697.174 Q178.241 701.758 172.431 701.758 Q166.621 701.758 163.542 697.174 Q160.487 692.568 160.487 683.841 Q160.487 675.091 163.542 670.508 Q166.621 665.901 172.431 665.901 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M191.413 666.526 L213.635 666.526 L213.635 668.517 L201.088 701.086 L196.204 701.086 L208.01 670.461 L191.413 670.461 L191.413 666.526 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M222.801 666.526 L241.158 666.526 L241.158 670.461 L227.084 670.461 L227.084 678.934 Q228.102 678.586 229.121 678.424 Q230.139 678.239 231.158 678.239 Q236.945 678.239 240.324 681.41 Q243.704 684.582 243.704 689.998 Q243.704 695.577 240.232 698.679 Q236.76 701.758 230.44 701.758 Q228.264 701.758 225.996 701.387 Q223.75 701.017 221.343 700.276 L221.343 695.577 Q223.426 696.711 225.648 697.267 Q227.871 697.822 230.347 697.822 Q234.352 697.822 236.69 695.716 Q239.028 693.609 239.028 689.998 Q239.028 686.387 236.69 684.281 Q234.352 682.174 230.347 682.174 Q228.473 682.174 226.598 682.591 Q224.746 683.008 222.801 683.887 L222.801 666.526 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M126.205 436.128 Q122.593 436.128 120.765 439.692 Q118.959 443.234 118.959 450.364 Q118.959 457.47 120.765 461.035 Q122.593 464.577 126.205 464.577 Q129.839 464.577 131.644 461.035 Q133.473 457.47 133.473 450.364 Q133.473 443.234 131.644 439.692 Q129.839 436.128 126.205 436.128 M126.205 432.424 Q132.015 432.424 135.07 437.03 Q138.149 441.614 138.149 450.364 Q138.149 459.09 135.07 463.697 Q132.015 468.28 126.205 468.28 Q120.394 468.28 117.316 463.697 Q114.26 459.09 114.26 450.364 Q114.26 441.614 117.316 437.03 Q120.394 432.424 126.205 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M146.366 461.729 L151.251 461.729 L151.251 467.609 L146.366 467.609 L146.366 461.729 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M162.246 463.674 L169.885 463.674 L169.885 437.308 L161.575 438.975 L161.575 434.716 L169.839 433.049 L174.514 433.049 L174.514 463.674 L182.153 463.674 L182.153 467.609 L162.246 467.609 L162.246 463.674 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M201.598 436.128 Q197.987 436.128 196.158 439.692 Q194.352 443.234 194.352 450.364 Q194.352 457.47 196.158 461.035 Q197.987 464.577 201.598 464.577 Q205.232 464.577 207.037 461.035 Q208.866 457.47 208.866 450.364 Q208.866 443.234 207.037 439.692 Q205.232 436.128 201.598 436.128 M201.598 432.424 Q207.408 432.424 210.463 437.03 Q213.542 441.614 213.542 450.364 Q213.542 459.09 210.463 463.697 Q207.408 468.28 201.598 468.28 Q195.787 468.28 192.709 463.697 Q189.653 459.09 189.653 450.364 Q189.653 441.614 192.709 437.03 Q195.787 432.424 201.598 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M231.76 436.128 Q228.148 436.128 226.32 439.692 Q224.514 443.234 224.514 450.364 Q224.514 457.47 226.32 461.035 Q228.148 464.577 231.76 464.577 Q235.394 464.577 237.199 461.035 Q239.028 457.47 239.028 450.364 Q239.028 443.234 237.199 439.692 Q235.394 436.128 231.76 436.128 M231.76 432.424 Q237.57 432.424 240.625 437.03 Q243.704 441.614 243.704 450.364 Q243.704 459.09 240.625 463.697 Q237.57 468.28 231.76 468.28 Q225.949 468.28 222.871 463.697 Q219.815 459.09 219.815 450.364 Q219.815 441.614 222.871 437.03 Q225.949 432.424 231.76 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M127.2 202.65 Q123.589 202.65 121.76 206.215 Q119.955 209.757 119.955 216.886 Q119.955 223.993 121.76 227.558 Q123.589 231.099 127.2 231.099 Q130.834 231.099 132.64 227.558 Q134.468 223.993 134.468 216.886 Q134.468 209.757 132.64 206.215 Q130.834 202.65 127.2 202.65 M127.2 198.947 Q133.01 198.947 136.066 203.553 Q139.144 208.136 139.144 216.886 Q139.144 225.613 136.066 230.22 Q133.01 234.803 127.2 234.803 Q121.39 234.803 118.311 230.22 Q115.256 225.613 115.256 216.886 Q115.256 208.136 118.311 203.553 Q121.39 198.947 127.2 198.947 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M147.362 228.252 L152.246 228.252 L152.246 234.132 L147.362 234.132 L147.362 228.252 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M163.241 230.196 L170.88 230.196 L170.88 203.831 L162.57 205.497 L162.57 201.238 L170.834 199.572 L175.51 199.572 L175.51 230.196 L183.149 230.196 L183.149 234.132 L163.241 234.132 L163.241 230.196 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M196.621 230.196 L212.94 230.196 L212.94 234.132 L190.996 234.132 L190.996 230.196 Q193.658 227.442 198.241 222.812 Q202.848 218.159 204.028 216.817 Q206.274 214.294 207.153 212.558 Q208.056 210.798 208.056 209.109 Q208.056 206.354 206.112 204.618 Q204.19 202.882 201.088 202.882 Q198.889 202.882 196.436 203.646 Q194.005 204.41 191.227 205.96 L191.227 201.238 Q194.051 200.104 196.505 199.525 Q198.959 198.947 200.996 198.947 Q206.366 198.947 209.561 201.632 Q212.755 204.317 212.755 208.808 Q212.755 210.937 211.945 212.859 Q211.158 214.757 209.051 217.349 Q208.473 218.021 205.371 221.238 Q202.269 224.433 196.621 230.196 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M222.801 199.572 L241.158 199.572 L241.158 203.507 L227.084 203.507 L227.084 211.979 Q228.102 211.632 229.121 211.47 Q230.139 211.284 231.158 211.284 Q236.945 211.284 240.324 214.456 Q243.704 217.627 243.704 223.044 Q243.704 228.622 240.232 231.724 Q236.76 234.803 230.44 234.803 Q228.264 234.803 225.996 234.433 Q223.75 234.062 221.343 233.321 L221.343 228.622 Q223.426 229.757 225.648 230.312 Q227.871 230.868 230.347 230.868 Q234.352 230.868 236.69 228.761 Q239.028 226.655 239.028 223.044 Q239.028 219.433 236.69 217.326 Q234.352 215.22 230.347 215.22 Q228.473 215.22 226.598 215.636 Q224.746 216.053 222.801 216.933 L222.801 199.572 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M49.9359 990.954 L28.3562 990.954 L28.3562 985.098 L49.7131 985.098 Q54.7739 985.098 57.3202 983.124 Q59.8346 981.151 59.8346 977.204 Q59.8346 972.462 56.8109 969.725 Q53.7872 966.956 48.5673 966.956 L28.3562 966.956 L28.3562 961.099 L64.0042 961.099 L64.0042 966.956 L58.5296 966.956 Q61.7762 969.088 63.3676 971.921 Q64.9272 974.722 64.9272 978.446 Q64.9272 984.589 61.1078 987.771 Q57.2883 990.954 49.9359 990.954 M27.4968 976.218 L27.4968 976.218 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M14.5426 914.247 Q21.8632 918.512 29.0246 920.581 Q36.186 922.65 43.5384 922.65 Q50.8908 922.65 58.1159 920.581 Q65.3091 918.481 72.5979 914.247 L72.5979 919.34 Q65.1182 924.114 57.8931 926.501 Q50.668 928.857 43.5384 928.857 Q36.4406 928.857 29.2474 926.501 Q22.0542 924.146 14.5426 919.34 L14.5426 914.247 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M18.2347 897.092 L28.3562 897.092 L28.3562 885.029 L32.9077 885.029 L32.9077 897.092 L52.2594 897.092 Q56.6199 897.092 57.8613 895.914 Q59.1026 894.705 59.1026 891.044 L59.1026 885.029 L64.0042 885.029 L64.0042 891.044 Q64.0042 897.824 61.4897 900.402 Q58.9434 902.98 52.2594 902.98 L32.9077 902.98 L32.9077 907.277 L28.3562 907.277 L28.3562 902.98 L18.2347 902.98 L18.2347 897.092 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M44.7161 846.835 L47.5806 846.835 L47.5806 873.762 Q53.6281 873.38 56.8109 870.133 Q59.9619 866.855 59.9619 861.03 Q59.9619 857.656 59.1344 854.505 Q58.3069 851.322 56.6518 848.203 L62.1899 848.203 Q63.5267 851.354 64.227 854.664 Q64.9272 857.975 64.9272 861.38 Q64.9272 869.91 59.9619 874.907 Q54.9967 879.873 46.5303 879.873 Q37.7774 879.873 32.6531 875.162 Q27.4968 870.42 27.4968 862.399 Q27.4968 855.206 32.1438 851.036 Q36.7589 846.835 44.7161 846.835 M42.9973 852.691 Q38.1912 852.755 35.3266 855.397 Q32.4621 858.006 32.4621 862.335 Q32.4621 867.237 35.2312 870.197 Q38.0002 873.125 43.0292 873.571 L42.9973 852.691 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M35.1993 809.468 Q31.2526 807.272 29.3747 804.216 Q27.4968 801.161 27.4968 797.023 Q27.4968 791.453 31.4117 788.429 Q35.2948 785.406 42.4881 785.406 L64.0042 785.406 L64.0042 791.294 L42.679 791.294 Q37.5546 791.294 35.072 793.108 Q32.5894 794.922 32.5894 798.646 Q32.5894 803.198 35.6131 805.839 Q38.6368 808.481 43.8567 808.481 L64.0042 808.481 L64.0042 814.37 L42.679 814.37 Q37.5228 814.37 35.072 816.184 Q32.5894 817.998 32.5894 821.786 Q32.5894 826.273 35.6449 828.915 Q38.6686 831.557 43.8567 831.557 L64.0042 831.557 L64.0042 837.445 L28.3562 837.445 L28.3562 831.557 L33.8944 831.557 Q30.616 829.552 29.0564 826.751 Q27.4968 823.95 27.4968 820.099 Q27.4968 816.216 29.4702 813.51 Q31.4436 810.773 35.1993 809.468 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M58.657 768.059 L77.5631 768.059 L77.5631 773.947 L28.3562 773.947 L28.3562 768.059 L33.7671 768.059 Q30.5842 766.213 29.0564 763.412 Q27.4968 760.579 27.4968 756.664 Q27.4968 750.171 32.6531 746.129 Q37.8093 742.055 46.212 742.055 Q54.6147 742.055 59.771 746.129 Q64.9272 750.171 64.9272 756.664 Q64.9272 760.579 63.3994 763.412 Q61.8398 766.213 58.657 768.059 M46.212 748.134 Q39.7508 748.134 36.0905 750.808 Q32.3984 753.45 32.3984 758.097 Q32.3984 762.744 36.0905 765.417 Q39.7508 768.059 46.212 768.059 Q52.6732 768.059 56.3653 765.417 Q60.0256 762.744 60.0256 758.097 Q60.0256 753.45 56.3653 750.808 Q52.6732 748.134 46.212 748.134 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M44.7161 701.856 L47.5806 701.856 L47.5806 728.783 Q53.6281 728.401 56.8109 725.154 Q59.9619 721.876 59.9619 716.051 Q59.9619 712.677 59.1344 709.526 Q58.3069 706.343 56.6518 703.224 L62.1899 703.224 Q63.5267 706.375 64.227 709.685 Q64.9272 712.996 64.9272 716.401 Q64.9272 724.931 59.9619 729.928 Q54.9967 734.894 46.5303 734.894 Q37.7774 734.894 32.6531 730.183 Q27.4968 725.441 27.4968 717.42 Q27.4968 710.227 32.1438 706.057 Q36.7589 701.856 44.7161 701.856 M42.9973 707.712 Q38.1912 707.776 35.3266 710.418 Q32.4621 713.027 32.4621 717.356 Q32.4621 722.258 35.2312 725.218 Q38.0002 728.146 43.0292 728.592 L42.9973 707.712 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M33.8307 671.587 Q33.2578 672.573 33.0032 673.751 Q32.7167 674.897 32.7167 676.297 Q32.7167 681.263 35.9632 683.936 Q39.1779 686.578 45.2253 686.578 L64.0042 686.578 L64.0042 692.466 L28.3562 692.466 L28.3562 686.578 L33.8944 686.578 Q30.6479 684.732 29.0883 681.772 Q27.4968 678.812 27.4968 674.579 Q27.4968 673.974 27.5923 673.242 Q27.656 672.51 27.8151 671.619 L33.8307 671.587 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M46.0847 649.243 Q46.0847 656.341 47.7079 659.078 Q49.3312 661.815 53.2461 661.815 Q56.3653 661.815 58.2114 659.778 Q60.0256 657.709 60.0256 654.177 Q60.0256 649.307 56.5881 646.379 Q53.1188 643.418 47.3897 643.418 L46.0847 643.418 L46.0847 649.243 M43.6657 637.562 L64.0042 637.562 L64.0042 643.418 L58.5933 643.418 Q61.8398 645.424 63.3994 648.416 Q64.9272 651.407 64.9272 655.736 Q64.9272 661.211 61.8716 664.457 Q58.7843 667.672 53.6281 667.672 Q47.6125 667.672 44.5569 663.661 Q41.5014 659.619 41.5014 651.63 L41.5014 643.418 L40.9285 643.418 Q36.8862 643.418 34.6901 646.092 Q32.4621 648.734 32.4621 653.54 Q32.4621 656.595 33.1941 659.492 Q33.9262 662.388 35.3903 665.062 L29.9795 665.062 Q28.7381 661.847 28.1334 658.823 Q27.4968 655.8 27.4968 652.935 Q27.4968 645.201 31.5072 641.381 Q35.5176 637.562 43.6657 637.562 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M18.2347 619.706 L28.3562 619.706 L28.3562 607.643 L32.9077 607.643 L32.9077 619.706 L52.2594 619.706 Q56.6199 619.706 57.8613 618.529 Q59.1026 617.319 59.1026 613.659 L59.1026 607.643 L64.0042 607.643 L64.0042 613.659 Q64.0042 620.438 61.4897 623.016 Q58.9434 625.595 52.2594 625.595 L32.9077 625.595 L32.9077 629.891 L28.3562 629.891 L28.3562 625.595 L18.2347 625.595 L18.2347 619.706 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M49.9359 600.545 L28.3562 600.545 L28.3562 594.689 L49.7131 594.689 Q54.7739 594.689 57.3202 592.716 Q59.8346 590.742 59.8346 586.796 Q59.8346 582.053 56.8109 579.316 Q53.7872 576.547 48.5673 576.547 L28.3562 576.547 L28.3562 570.69 L64.0042 570.69 L64.0042 576.547 L58.5296 576.547 Q61.7762 578.679 63.3676 581.512 Q64.9272 584.313 64.9272 588.037 Q64.9272 594.18 61.1078 597.363 Q57.2883 600.545 49.9359 600.545 M27.4968 585.809 L27.4968 585.809 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M33.8307 537.971 Q33.2578 538.957 33.0032 540.135 Q32.7167 541.281 32.7167 542.681 Q32.7167 547.646 35.9632 550.32 Q39.1779 552.962 45.2253 552.962 L64.0042 552.962 L64.0042 558.85 L28.3562 558.85 L28.3562 552.962 L33.8944 552.962 Q30.6479 551.116 29.0883 548.156 Q27.4968 545.196 27.4968 540.962 Q27.4968 540.358 27.5923 539.626 Q27.656 538.894 27.8151 538.002 L33.8307 537.971 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M44.7161 502.768 L47.5806 502.768 L47.5806 529.695 Q53.6281 529.313 56.8109 526.067 Q59.9619 522.788 59.9619 516.964 Q59.9619 513.59 59.1344 510.439 Q58.3069 507.256 56.6518 504.137 L62.1899 504.137 Q63.5267 507.288 64.227 510.598 Q64.9272 513.908 64.9272 517.314 Q64.9272 525.844 59.9619 530.841 Q54.9967 535.806 46.5303 535.806 Q37.7774 535.806 32.6531 531.096 Q27.4968 526.353 27.4968 518.332 Q27.4968 511.139 32.1438 506.97 Q36.7589 502.768 44.7161 502.768 M42.9973 508.625 Q38.1912 508.688 35.3266 511.33 Q32.4621 513.94 32.4621 518.269 Q32.4621 523.17 35.2312 526.13 Q38.0002 529.059 43.0292 529.504 L42.9973 508.625 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip570)\" d=\"M14.5426 494.079 L14.5426 488.986 Q22.0542 484.212 29.2474 481.857 Q36.4406 479.47 43.5384 479.47 Q50.668 479.47 57.8931 481.857 Q65.1182 484.212 72.5979 488.986 L72.5979 494.079 Q65.3091 489.846 58.1159 487.777 Q50.8908 485.676 43.5384 485.676 Q36.186 485.676 29.0246 487.777 Q21.8632 489.846 14.5426 494.079 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip572)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"338.375,1384.24 357.932,1319.8 377.489,1255.35 397.046,1190.91 416.604,1126.47 436.161,1062.03 455.718,1011.9 475.275,961.77 494.832,911.642 514.389,861.515 533.946,811.387 553.503,772.017 573.06,732.648 592.617,693.279 612.175,653.909 631.732,614.54 651.289,583.444 670.846,552.349 690.403,521.254 709.96,490.158 729.517,459.063 749.074,434.627 768.631,410.192 788.188,385.756 807.745,361.32 827.303,336.885 846.86,318.026 866.417,299.168 885.974,280.31 905.531,261.452 925.088,242.594 944.645,228.572 964.202,214.55 983.759,200.528 1003.32,186.505 1022.87,172.483 1042.43,162.792 1061.99,153.1 1081.54,143.408 1101.1,133.717 1120.66,124.025 1140.22,118.334 1159.77,112.643 1179.33,106.952 1198.89,101.261 1218.44,95.5699 1238,93.693 1257.56,91.8162 1277.12,89.9394 1296.67,88.0625 1316.23,86.1857 1335.79,88.0625 1355.34,89.9394 1374.9,91.8162 1394.46,93.693 1414.02,95.5699 1433.57,101.261 1453.13,106.952 1472.69,112.643 1492.24,118.334 1511.8,124.025 1531.36,133.717 1550.92,143.408 1570.47,153.1 1590.03,162.792 1609.59,172.483 1629.14,186.505 1648.7,200.528 1668.26,214.55 1687.81,228.572 1707.37,242.594 1726.93,261.452 1746.49,280.31 1766.04,299.168 1785.6,318.026 1805.16,336.885 1824.71,361.32 1844.27,385.756 1863.83,410.192 1883.39,434.627 1902.94,459.063 1922.5,490.158 1942.06,521.254 1961.61,552.349 1981.17,583.444 2000.73,614.54 2020.29,653.909 2039.84,693.279 2059.4,732.648 2078.96,772.017 2098.51,811.387 2118.07,861.515 2137.63,911.642 2157.18,961.77 2176.74,1011.9 2196.3,1062.03 2215.86,1126.47 2235.41,1190.91 2254.97,1255.35 2274.53,1319.8 2294.08,1384.24 \"/>\n", "</svg>\n" ], "image/svg+xml": [ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", "<defs>\n", - " <clipPath id=\"clip930\">\n", + " <clipPath id=\"clip540\">\n", " <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip930)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip540)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip931\">\n", + " <clipPath id=\"clip541\">\n", " <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip930)\" d=\"M279.704 1423.18 L2352.76 1423.18 L2352.76 47.2441 L279.704 47.2441 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip540)\" d=\"M279.704 1423.18 L2352.76 1423.18 L2352.76 47.2441 L279.704 47.2441 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip932\">\n", + " <clipPath id=\"clip542\">\n", " <rect x=\"279\" y=\"47\" width=\"2074\" height=\"1377\"/>\n", " </clipPath>\n", "</defs>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"338.375,1423.18 338.375,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"827.303,1423.18 827.303,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1316.23,1423.18 1316.23,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1805.16,1423.18 1805.16,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2294.08,1423.18 2294.08,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,1384.24 2352.76,1384.24 \"/>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,1150.76 2352.76,1150.76 \"/>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,917.284 2352.76,917.284 \"/>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,683.806 2352.76,683.806 \"/>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,450.329 2352.76,450.329 \"/>\n", - "<polyline clip-path=\"url(#clip932)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,216.852 2352.76,216.852 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1423.18 2352.76,1423.18 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"338.375,1423.18 338.375,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"827.303,1423.18 827.303,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1316.23,1423.18 1316.23,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1805.16,1423.18 1805.16,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2294.08,1423.18 2294.08,1404.28 \"/>\n", - "<path clip-path=\"url(#clip930)\" d=\"M284.903 1468.75 L314.579 1468.75 L314.579 1472.69 L284.903 1472.69 L284.903 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M325.482 1481.64 L333.121 1481.64 L333.121 1455.28 L324.81 1456.95 L324.81 1452.69 L333.074 1451.02 L337.75 1451.02 L337.75 1481.64 L345.389 1481.64 L345.389 1485.58 L325.482 1485.58 L325.482 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M354.833 1479.7 L359.718 1479.7 L359.718 1485.58 L354.833 1485.58 L354.833 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M379.903 1454.1 Q376.292 1454.1 374.463 1457.66 Q372.657 1461.2 372.657 1468.33 Q372.657 1475.44 374.463 1479.01 Q376.292 1482.55 379.903 1482.55 Q383.537 1482.55 385.343 1479.01 Q387.171 1475.44 387.171 1468.33 Q387.171 1461.2 385.343 1457.66 Q383.537 1454.1 379.903 1454.1 M379.903 1450.39 Q385.713 1450.39 388.768 1455 Q391.847 1459.58 391.847 1468.33 Q391.847 1477.06 388.768 1481.67 Q385.713 1486.25 379.903 1486.25 Q374.093 1486.25 371.014 1481.67 Q367.958 1477.06 367.958 1468.33 Q367.958 1459.58 371.014 1455 Q374.093 1450.39 379.903 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M774.328 1468.75 L804.004 1468.75 L804.004 1472.69 L774.328 1472.69 L774.328 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M824.097 1454.1 Q820.485 1454.1 818.657 1457.66 Q816.851 1461.2 816.851 1468.33 Q816.851 1475.44 818.657 1479.01 Q820.485 1482.55 824.097 1482.55 Q827.731 1482.55 829.536 1479.01 Q831.365 1475.44 831.365 1468.33 Q831.365 1461.2 829.536 1457.66 Q827.731 1454.1 824.097 1454.1 M824.097 1450.39 Q829.907 1450.39 832.962 1455 Q836.041 1459.58 836.041 1468.33 Q836.041 1477.06 832.962 1481.67 Q829.907 1486.25 824.097 1486.25 Q818.286 1486.25 815.208 1481.67 Q812.152 1477.06 812.152 1468.33 Q812.152 1459.58 815.208 1455 Q818.286 1450.39 824.097 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M844.258 1479.7 L849.143 1479.7 L849.143 1485.58 L844.258 1485.58 L844.258 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M859.374 1451.02 L877.731 1451.02 L877.731 1454.96 L863.657 1454.96 L863.657 1463.43 Q864.675 1463.08 865.694 1462.92 Q866.712 1462.73 867.731 1462.73 Q873.518 1462.73 876.897 1465.9 Q880.277 1469.08 880.277 1474.49 Q880.277 1480.07 876.805 1483.17 Q873.332 1486.25 867.013 1486.25 Q864.837 1486.25 862.569 1485.88 Q860.323 1485.51 857.916 1484.77 L857.916 1480.07 Q859.999 1481.2 862.221 1481.76 Q864.444 1482.32 866.92 1482.32 Q870.925 1482.32 873.263 1480.21 Q875.601 1478.1 875.601 1474.49 Q875.601 1470.88 873.263 1468.77 Q870.925 1466.67 866.92 1466.67 Q865.045 1466.67 863.17 1467.08 Q861.319 1467.5 859.374 1468.38 L859.374 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1293.61 1454.1 Q1290 1454.1 1288.17 1457.66 Q1286.37 1461.2 1286.37 1468.33 Q1286.37 1475.44 1288.17 1479.01 Q1290 1482.55 1293.61 1482.55 Q1297.25 1482.55 1299.05 1479.01 Q1300.88 1475.44 1300.88 1468.33 Q1300.88 1461.2 1299.05 1457.66 Q1297.25 1454.1 1293.61 1454.1 M1293.61 1450.39 Q1299.42 1450.39 1302.48 1455 Q1305.56 1459.58 1305.56 1468.33 Q1305.56 1477.06 1302.48 1481.67 Q1299.42 1486.25 1293.61 1486.25 Q1287.8 1486.25 1284.73 1481.67 Q1281.67 1477.06 1281.67 1468.33 Q1281.67 1459.58 1284.73 1455 Q1287.8 1450.39 1293.61 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1313.78 1479.7 L1318.66 1479.7 L1318.66 1485.58 L1313.78 1485.58 L1313.78 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1338.85 1454.1 Q1335.23 1454.1 1333.41 1457.66 Q1331.6 1461.2 1331.6 1468.33 Q1331.6 1475.44 1333.41 1479.01 Q1335.23 1482.55 1338.85 1482.55 Q1342.48 1482.55 1344.29 1479.01 Q1346.11 1475.44 1346.11 1468.33 Q1346.11 1461.2 1344.29 1457.66 Q1342.48 1454.1 1338.85 1454.1 M1338.85 1450.39 Q1344.66 1450.39 1347.71 1455 Q1350.79 1459.58 1350.79 1468.33 Q1350.79 1477.06 1347.71 1481.67 Q1344.66 1486.25 1338.85 1486.25 Q1333.04 1486.25 1329.96 1481.67 Q1326.9 1477.06 1326.9 1468.33 Q1326.9 1459.58 1329.96 1455 Q1333.04 1450.39 1338.85 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1783.04 1454.1 Q1779.43 1454.1 1777.6 1457.66 Q1775.79 1461.2 1775.79 1468.33 Q1775.79 1475.44 1777.6 1479.01 Q1779.43 1482.55 1783.04 1482.55 Q1786.67 1482.55 1788.48 1479.01 Q1790.31 1475.44 1790.31 1468.33 Q1790.31 1461.2 1788.48 1457.66 Q1786.67 1454.1 1783.04 1454.1 M1783.04 1450.39 Q1788.85 1450.39 1791.91 1455 Q1794.98 1459.58 1794.98 1468.33 Q1794.98 1477.06 1791.91 1481.67 Q1788.85 1486.25 1783.04 1486.25 Q1777.23 1486.25 1774.15 1481.67 Q1771.09 1477.06 1771.09 1468.33 Q1771.09 1459.58 1774.15 1455 Q1777.23 1450.39 1783.04 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1803.2 1479.7 L1808.09 1479.7 L1808.09 1485.58 L1803.2 1485.58 L1803.2 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1818.32 1451.02 L1836.67 1451.02 L1836.67 1454.96 L1822.6 1454.96 L1822.6 1463.43 Q1823.62 1463.08 1824.64 1462.92 Q1825.65 1462.73 1826.67 1462.73 Q1832.46 1462.73 1835.84 1465.9 Q1839.22 1469.08 1839.22 1474.49 Q1839.22 1480.07 1835.75 1483.17 Q1832.28 1486.25 1825.96 1486.25 Q1823.78 1486.25 1821.51 1485.88 Q1819.27 1485.51 1816.86 1484.77 L1816.86 1480.07 Q1818.94 1481.2 1821.16 1481.76 Q1823.39 1482.32 1825.86 1482.32 Q1829.87 1482.32 1832.21 1480.21 Q1834.54 1478.1 1834.54 1474.49 Q1834.54 1470.88 1832.21 1468.77 Q1829.87 1466.67 1825.86 1466.67 Q1823.99 1466.67 1822.11 1467.08 Q1820.26 1467.5 1818.32 1468.38 L1818.32 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M2261.24 1481.64 L2268.88 1481.64 L2268.88 1455.28 L2260.57 1456.95 L2260.57 1452.69 L2268.83 1451.02 L2273.51 1451.02 L2273.51 1481.64 L2281.14 1481.64 L2281.14 1485.58 L2261.24 1485.58 L2261.24 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M2290.59 1479.7 L2295.47 1479.7 L2295.47 1485.58 L2290.59 1485.58 L2290.59 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M2315.66 1454.1 Q2312.05 1454.1 2310.22 1457.66 Q2308.41 1461.2 2308.41 1468.33 Q2308.41 1475.44 2310.22 1479.01 Q2312.05 1482.55 2315.66 1482.55 Q2319.29 1482.55 2321.1 1479.01 Q2322.93 1475.44 2322.93 1468.33 Q2322.93 1461.2 2321.1 1457.66 Q2319.29 1454.1 2315.66 1454.1 M2315.66 1450.39 Q2321.47 1450.39 2324.52 1455 Q2327.6 1459.58 2327.6 1468.33 Q2327.6 1477.06 2324.52 1481.67 Q2321.47 1486.25 2315.66 1486.25 Q2309.85 1486.25 2306.77 1481.67 Q2303.71 1477.06 2303.71 1468.33 Q2303.71 1459.58 2306.77 1455 Q2309.85 1450.39 2315.66 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1124.96 1532.4 L1112.07 1549.74 L1125.62 1568.04 L1118.72 1568.04 L1108.34 1554.04 L1097.97 1568.04 L1091.06 1568.04 L1104.9 1549.39 L1092.24 1532.4 L1099.14 1532.4 L1108.6 1545.1 L1118.05 1532.4 L1124.96 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1168.69 1518.58 Q1164.42 1525.9 1162.35 1533.06 Q1160.29 1540.23 1160.29 1547.58 Q1160.29 1554.93 1162.35 1562.16 Q1164.46 1569.35 1168.69 1576.64 L1163.6 1576.64 Q1158.82 1569.16 1156.43 1561.93 Q1154.08 1554.71 1154.08 1547.58 Q1154.08 1540.48 1156.43 1533.29 Q1158.79 1526.09 1163.6 1518.58 L1168.69 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1205.71 1533.76 L1205.71 1539.24 Q1203.22 1537.87 1200.71 1537.2 Q1198.23 1536.5 1195.68 1536.5 Q1189.98 1536.5 1186.83 1540.13 Q1183.68 1543.73 1183.68 1550.25 Q1183.68 1556.78 1186.83 1560.4 Q1189.98 1564 1195.68 1564 Q1198.23 1564 1200.71 1563.33 Q1203.22 1562.63 1205.71 1561.26 L1205.71 1566.68 Q1203.25 1567.82 1200.61 1568.39 Q1198 1568.97 1195.04 1568.97 Q1186.99 1568.97 1182.25 1563.91 Q1177.51 1558.85 1177.51 1550.25 Q1177.51 1541.53 1182.28 1536.53 Q1187.09 1531.54 1195.42 1531.54 Q1198.13 1531.54 1200.71 1532.11 Q1203.29 1532.65 1205.71 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1229.7 1536.5 Q1224.99 1536.5 1222.26 1540.19 Q1219.52 1543.85 1219.52 1550.25 Q1219.52 1556.65 1222.22 1560.34 Q1224.96 1564 1229.7 1564 Q1234.38 1564 1237.12 1560.31 Q1239.86 1556.62 1239.86 1550.25 Q1239.86 1543.92 1237.12 1540.23 Q1234.38 1536.5 1229.7 1536.5 M1229.7 1531.54 Q1237.34 1531.54 1241.7 1536.5 Q1246.06 1541.47 1246.06 1550.25 Q1246.06 1559 1241.7 1564 Q1237.34 1568.97 1229.7 1568.97 Q1222.03 1568.97 1217.67 1564 Q1213.34 1559 1213.34 1550.25 Q1213.34 1541.47 1217.67 1536.5 Q1222.03 1531.54 1229.7 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1269.59 1536.5 Q1264.87 1536.5 1262.14 1540.19 Q1259.4 1543.85 1259.4 1550.25 Q1259.4 1556.65 1262.11 1560.34 Q1264.84 1564 1269.59 1564 Q1274.26 1564 1277 1560.31 Q1279.74 1556.62 1279.74 1550.25 Q1279.74 1543.92 1277 1540.23 Q1274.26 1536.5 1269.59 1536.5 M1269.59 1531.54 Q1277.22 1531.54 1281.58 1536.5 Q1285.95 1541.47 1285.95 1550.25 Q1285.95 1559 1281.58 1564 Q1277.22 1568.97 1269.59 1568.97 Q1261.91 1568.97 1257.55 1564 Q1253.23 1559 1253.23 1550.25 Q1253.23 1541.47 1257.55 1536.5 Q1261.91 1531.54 1269.59 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1316.31 1537.87 Q1315.32 1537.3 1314.15 1537.04 Q1313 1536.76 1311.6 1536.76 Q1306.63 1536.76 1303.96 1540 Q1301.32 1543.22 1301.32 1549.27 L1301.32 1568.04 L1295.43 1568.04 L1295.43 1532.4 L1301.32 1532.4 L1301.32 1537.93 Q1303.16 1534.69 1306.12 1533.13 Q1309.08 1531.54 1313.32 1531.54 Q1313.92 1531.54 1314.65 1531.63 Q1315.39 1531.7 1316.28 1531.85 L1316.31 1537.87 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1344.76 1537.81 L1344.76 1518.52 L1350.62 1518.52 L1350.62 1568.04 L1344.76 1568.04 L1344.76 1562.7 Q1342.92 1565.88 1340.09 1567.44 Q1337.28 1568.97 1333.34 1568.97 Q1326.88 1568.97 1322.8 1563.81 Q1318.76 1558.65 1318.76 1550.25 Q1318.76 1541.85 1322.8 1536.69 Q1326.88 1531.54 1333.34 1531.54 Q1337.28 1531.54 1340.09 1533.1 Q1342.92 1534.62 1344.76 1537.81 M1324.81 1550.25 Q1324.81 1556.71 1327.45 1560.4 Q1330.12 1564.07 1334.77 1564.07 Q1339.42 1564.07 1342.09 1560.4 Q1344.76 1556.71 1344.76 1550.25 Q1344.76 1543.79 1342.09 1540.13 Q1339.42 1536.44 1334.77 1536.44 Q1330.12 1536.44 1327.45 1540.13 Q1324.81 1543.79 1324.81 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1362.68 1532.4 L1368.54 1532.4 L1368.54 1568.04 L1362.68 1568.04 L1362.68 1532.4 M1362.68 1518.52 L1368.54 1518.52 L1368.54 1525.93 L1362.68 1525.93 L1362.68 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1410.43 1546.53 L1410.43 1568.04 L1404.57 1568.04 L1404.57 1546.72 Q1404.57 1541.66 1402.6 1539.14 Q1400.62 1536.63 1396.68 1536.63 Q1391.93 1536.63 1389.2 1539.65 Q1386.46 1542.68 1386.46 1547.9 L1386.46 1568.04 L1380.57 1568.04 L1380.57 1532.4 L1386.46 1532.4 L1386.46 1537.93 Q1388.56 1534.72 1391.39 1533.13 Q1394.26 1531.54 1397.98 1531.54 Q1404.12 1531.54 1407.28 1535.36 Q1410.43 1539.14 1410.43 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1438.31 1550.12 Q1431.21 1550.12 1428.47 1551.75 Q1425.74 1553.37 1425.74 1557.29 Q1425.74 1560.4 1427.77 1562.25 Q1429.84 1564.07 1433.37 1564.07 Q1438.24 1564.07 1441.17 1560.63 Q1444.13 1557.16 1444.13 1551.43 L1444.13 1550.12 L1438.31 1550.12 M1449.99 1547.71 L1449.99 1568.04 L1444.13 1568.04 L1444.13 1562.63 Q1442.13 1565.88 1439.14 1567.44 Q1436.14 1568.97 1431.82 1568.97 Q1426.34 1568.97 1423.09 1565.91 Q1419.88 1562.82 1419.88 1557.67 Q1419.88 1551.65 1423.89 1548.6 Q1427.93 1545.54 1435.92 1545.54 L1444.13 1545.54 L1444.13 1544.97 Q1444.13 1540.93 1441.46 1538.73 Q1438.82 1536.5 1434.01 1536.5 Q1430.96 1536.5 1428.06 1537.23 Q1425.16 1537.97 1422.49 1539.43 L1422.49 1534.02 Q1425.7 1532.78 1428.73 1532.17 Q1431.75 1531.54 1434.62 1531.54 Q1442.35 1531.54 1446.17 1535.55 Q1449.99 1539.56 1449.99 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1467.85 1522.27 L1467.85 1532.4 L1479.91 1532.4 L1479.91 1536.95 L1467.85 1536.95 L1467.85 1556.3 Q1467.85 1560.66 1469.02 1561.9 Q1470.23 1563.14 1473.89 1563.14 L1479.91 1563.14 L1479.91 1568.04 L1473.89 1568.04 Q1467.11 1568.04 1464.53 1565.53 Q1461.96 1562.98 1461.96 1556.3 L1461.96 1536.95 L1457.66 1536.95 L1457.66 1532.4 L1461.96 1532.4 L1461.96 1522.27 L1467.85 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1518.1 1548.76 L1518.1 1551.62 L1491.18 1551.62 Q1491.56 1557.67 1494.8 1560.85 Q1498.08 1564 1503.91 1564 Q1507.28 1564 1510.43 1563.17 Q1513.61 1562.35 1516.73 1560.69 L1516.73 1566.23 Q1513.58 1567.57 1510.27 1568.27 Q1506.96 1568.97 1503.56 1568.97 Q1495.03 1568.97 1490.03 1564 Q1485.06 1559.04 1485.06 1550.57 Q1485.06 1541.82 1489.77 1536.69 Q1494.52 1531.54 1502.54 1531.54 Q1509.73 1531.54 1513.9 1536.18 Q1518.1 1540.8 1518.1 1548.76 M1512.25 1547.04 Q1512.18 1542.23 1509.54 1539.37 Q1506.93 1536.5 1502.6 1536.5 Q1497.7 1536.5 1494.74 1539.27 Q1491.81 1542.04 1491.37 1547.07 L1512.25 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M1526.79 1518.58 L1531.88 1518.58 Q1536.66 1526.09 1539.01 1533.29 Q1541.4 1540.48 1541.4 1547.58 Q1541.4 1554.71 1539.01 1561.93 Q1536.66 1569.16 1531.88 1576.64 L1526.79 1576.64 Q1531.02 1569.35 1533.09 1562.16 Q1535.19 1554.93 1535.19 1547.58 Q1535.19 1540.23 1533.09 1533.06 Q1531.02 1525.9 1526.79 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1423.18 279.704,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1384.24 298.602,1384.24 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1150.76 298.602,1150.76 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,917.284 298.602,917.284 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,683.806 298.602,683.806 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,450.329 298.602,450.329 \"/>\n", - "<polyline clip-path=\"url(#clip930)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,216.852 298.602,216.852 \"/>\n", - "<path clip-path=\"url(#clip930)\" d=\"M126.205 1370.04 Q122.593 1370.04 120.765 1373.6 Q118.959 1377.14 118.959 1384.27 Q118.959 1391.38 120.765 1394.94 Q122.593 1398.49 126.205 1398.49 Q129.839 1398.49 131.644 1394.94 Q133.473 1391.38 133.473 1384.27 Q133.473 1377.14 131.644 1373.6 Q129.839 1370.04 126.205 1370.04 M126.205 1366.33 Q132.015 1366.33 135.07 1370.94 Q138.149 1375.52 138.149 1384.27 Q138.149 1393 135.07 1397.61 Q132.015 1402.19 126.205 1402.19 Q120.394 1402.19 117.316 1397.61 Q114.26 1393 114.26 1384.27 Q114.26 1375.52 117.316 1370.94 Q120.394 1366.33 126.205 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M146.366 1395.64 L151.251 1395.64 L151.251 1401.52 L146.366 1401.52 L146.366 1395.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M171.436 1370.04 Q167.825 1370.04 165.996 1373.6 Q164.19 1377.14 164.19 1384.27 Q164.19 1391.38 165.996 1394.94 Q167.825 1398.49 171.436 1398.49 Q175.07 1398.49 176.876 1394.94 Q178.704 1391.38 178.704 1384.27 Q178.704 1377.14 176.876 1373.6 Q175.07 1370.04 171.436 1370.04 M171.436 1366.33 Q177.246 1366.33 180.301 1370.94 Q183.38 1375.52 183.38 1384.27 Q183.38 1393 180.301 1397.61 Q177.246 1402.19 171.436 1402.19 Q165.626 1402.19 162.547 1397.61 Q159.491 1393 159.491 1384.27 Q159.491 1375.52 162.547 1370.94 Q165.626 1366.33 171.436 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M201.598 1370.04 Q197.987 1370.04 196.158 1373.6 Q194.352 1377.14 194.352 1384.27 Q194.352 1391.38 196.158 1394.94 Q197.987 1398.49 201.598 1398.49 Q205.232 1398.49 207.037 1394.94 Q208.866 1391.38 208.866 1384.27 Q208.866 1377.14 207.037 1373.6 Q205.232 1370.04 201.598 1370.04 M201.598 1366.33 Q207.408 1366.33 210.463 1370.94 Q213.542 1375.52 213.542 1384.27 Q213.542 1393 210.463 1397.61 Q207.408 1402.19 201.598 1402.19 Q195.787 1402.19 192.709 1397.61 Q189.653 1393 189.653 1384.27 Q189.653 1375.52 192.709 1370.94 Q195.787 1366.33 201.598 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M231.76 1370.04 Q228.148 1370.04 226.32 1373.6 Q224.514 1377.14 224.514 1384.27 Q224.514 1391.38 226.32 1394.94 Q228.148 1398.49 231.76 1398.49 Q235.394 1398.49 237.199 1394.94 Q239.028 1391.38 239.028 1384.27 Q239.028 1377.14 237.199 1373.6 Q235.394 1370.04 231.76 1370.04 M231.76 1366.33 Q237.57 1366.33 240.625 1370.94 Q243.704 1375.52 243.704 1384.27 Q243.704 1393 240.625 1397.61 Q237.57 1402.19 231.76 1402.19 Q225.949 1402.19 222.871 1397.61 Q219.815 1393 219.815 1384.27 Q219.815 1375.52 222.871 1370.94 Q225.949 1366.33 231.76 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M127.2 1136.56 Q123.589 1136.56 121.76 1140.12 Q119.955 1143.67 119.955 1150.8 Q119.955 1157.9 121.76 1161.47 Q123.589 1165.01 127.2 1165.01 Q130.834 1165.01 132.64 1161.47 Q134.468 1157.9 134.468 1150.8 Q134.468 1143.67 132.64 1140.12 Q130.834 1136.56 127.2 1136.56 M127.2 1132.86 Q133.01 1132.86 136.066 1137.46 Q139.144 1142.05 139.144 1150.8 Q139.144 1159.52 136.066 1164.13 Q133.01 1168.71 127.2 1168.71 Q121.39 1168.71 118.311 1164.13 Q115.256 1159.52 115.256 1150.8 Q115.256 1142.05 118.311 1137.46 Q121.39 1132.86 127.2 1132.86 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M147.362 1162.16 L152.246 1162.16 L152.246 1168.04 L147.362 1168.04 L147.362 1162.16 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M172.431 1136.56 Q168.82 1136.56 166.991 1140.12 Q165.186 1143.67 165.186 1150.8 Q165.186 1157.9 166.991 1161.47 Q168.82 1165.01 172.431 1165.01 Q176.065 1165.01 177.871 1161.47 Q179.7 1157.9 179.7 1150.8 Q179.7 1143.67 177.871 1140.12 Q176.065 1136.56 172.431 1136.56 M172.431 1132.86 Q178.241 1132.86 181.297 1137.46 Q184.376 1142.05 184.376 1150.8 Q184.376 1159.52 181.297 1164.13 Q178.241 1168.71 172.431 1168.71 Q166.621 1168.71 163.542 1164.13 Q160.487 1159.52 160.487 1150.8 Q160.487 1142.05 163.542 1137.46 Q166.621 1132.86 172.431 1132.86 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M196.621 1164.11 L212.94 1164.11 L212.94 1168.04 L190.996 1168.04 L190.996 1164.11 Q193.658 1161.35 198.241 1156.72 Q202.848 1152.07 204.028 1150.73 Q206.274 1148.2 207.153 1146.47 Q208.056 1144.71 208.056 1143.02 Q208.056 1140.26 206.112 1138.53 Q204.19 1136.79 201.088 1136.79 Q198.889 1136.79 196.436 1137.55 Q194.005 1138.32 191.227 1139.87 L191.227 1135.15 Q194.051 1134.01 196.505 1133.43 Q198.959 1132.86 200.996 1132.86 Q206.366 1132.86 209.561 1135.54 Q212.755 1138.23 212.755 1142.72 Q212.755 1144.85 211.945 1146.77 Q211.158 1148.67 209.051 1151.26 Q208.473 1151.93 205.371 1155.15 Q202.269 1158.34 196.621 1164.11 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M222.801 1133.48 L241.158 1133.48 L241.158 1137.42 L227.084 1137.42 L227.084 1145.89 Q228.102 1145.54 229.121 1145.38 Q230.139 1145.19 231.158 1145.19 Q236.945 1145.19 240.324 1148.37 Q243.704 1151.54 243.704 1156.95 Q243.704 1162.53 240.232 1165.63 Q236.76 1168.71 230.44 1168.71 Q228.264 1168.71 225.996 1168.34 Q223.75 1167.97 221.343 1167.23 L221.343 1162.53 Q223.426 1163.67 225.648 1164.22 Q227.871 1164.78 230.347 1164.78 Q234.352 1164.78 236.69 1162.67 Q239.028 1160.56 239.028 1156.95 Q239.028 1153.34 236.69 1151.24 Q234.352 1149.13 230.347 1149.13 Q228.473 1149.13 226.598 1149.55 Q224.746 1149.96 222.801 1150.84 L222.801 1133.48 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M126.205 903.082 Q122.593 903.082 120.765 906.647 Q118.959 910.189 118.959 917.318 Q118.959 924.425 120.765 927.99 Q122.593 931.531 126.205 931.531 Q129.839 931.531 131.644 927.99 Q133.473 924.425 133.473 917.318 Q133.473 910.189 131.644 906.647 Q129.839 903.082 126.205 903.082 M126.205 899.379 Q132.015 899.379 135.07 903.985 Q138.149 908.568 138.149 917.318 Q138.149 926.045 135.07 930.652 Q132.015 935.235 126.205 935.235 Q120.394 935.235 117.316 930.652 Q114.26 926.045 114.26 917.318 Q114.26 908.568 117.316 903.985 Q120.394 899.379 126.205 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M146.366 928.684 L151.251 928.684 L151.251 934.564 L146.366 934.564 L146.366 928.684 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M171.436 903.082 Q167.825 903.082 165.996 906.647 Q164.19 910.189 164.19 917.318 Q164.19 924.425 165.996 927.99 Q167.825 931.531 171.436 931.531 Q175.07 931.531 176.876 927.99 Q178.704 924.425 178.704 917.318 Q178.704 910.189 176.876 906.647 Q175.07 903.082 171.436 903.082 M171.436 899.379 Q177.246 899.379 180.301 903.985 Q183.38 908.568 183.38 917.318 Q183.38 926.045 180.301 930.652 Q177.246 935.235 171.436 935.235 Q165.626 935.235 162.547 930.652 Q159.491 926.045 159.491 917.318 Q159.491 908.568 162.547 903.985 Q165.626 899.379 171.436 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M191.644 900.004 L210 900.004 L210 903.939 L195.926 903.939 L195.926 912.411 Q196.945 912.064 197.963 911.902 Q198.982 911.716 200 911.716 Q205.787 911.716 209.167 914.888 Q212.547 918.059 212.547 923.476 Q212.547 929.054 209.074 932.156 Q205.602 935.235 199.283 935.235 Q197.107 935.235 194.838 934.865 Q192.593 934.494 190.186 933.753 L190.186 929.054 Q192.269 930.189 194.491 930.744 Q196.713 931.3 199.19 931.3 Q203.195 931.3 205.533 929.193 Q207.871 927.087 207.871 923.476 Q207.871 919.865 205.533 917.758 Q203.195 915.652 199.19 915.652 Q197.315 915.652 195.44 916.068 Q193.588 916.485 191.644 917.365 L191.644 900.004 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M231.76 903.082 Q228.148 903.082 226.32 906.647 Q224.514 910.189 224.514 917.318 Q224.514 924.425 226.32 927.99 Q228.148 931.531 231.76 931.531 Q235.394 931.531 237.199 927.99 Q239.028 924.425 239.028 917.318 Q239.028 910.189 237.199 906.647 Q235.394 903.082 231.76 903.082 M231.76 899.379 Q237.57 899.379 240.625 903.985 Q243.704 908.568 243.704 917.318 Q243.704 926.045 240.625 930.652 Q237.57 935.235 231.76 935.235 Q225.949 935.235 222.871 930.652 Q219.815 926.045 219.815 917.318 Q219.815 908.568 222.871 903.985 Q225.949 899.379 231.76 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M127.2 669.605 Q123.589 669.605 121.76 673.17 Q119.955 676.711 119.955 683.841 Q119.955 690.947 121.76 694.512 Q123.589 698.054 127.2 698.054 Q130.834 698.054 132.64 694.512 Q134.468 690.947 134.468 683.841 Q134.468 676.711 132.64 673.17 Q130.834 669.605 127.2 669.605 M127.2 665.901 Q133.01 665.901 136.066 670.508 Q139.144 675.091 139.144 683.841 Q139.144 692.568 136.066 697.174 Q133.01 701.758 127.2 701.758 Q121.39 701.758 118.311 697.174 Q115.256 692.568 115.256 683.841 Q115.256 675.091 118.311 670.508 Q121.39 665.901 127.2 665.901 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M147.362 695.207 L152.246 695.207 L152.246 701.086 L147.362 701.086 L147.362 695.207 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M172.431 669.605 Q168.82 669.605 166.991 673.17 Q165.186 676.711 165.186 683.841 Q165.186 690.947 166.991 694.512 Q168.82 698.054 172.431 698.054 Q176.065 698.054 177.871 694.512 Q179.7 690.947 179.7 683.841 Q179.7 676.711 177.871 673.17 Q176.065 669.605 172.431 669.605 M172.431 665.901 Q178.241 665.901 181.297 670.508 Q184.376 675.091 184.376 683.841 Q184.376 692.568 181.297 697.174 Q178.241 701.758 172.431 701.758 Q166.621 701.758 163.542 697.174 Q160.487 692.568 160.487 683.841 Q160.487 675.091 163.542 670.508 Q166.621 665.901 172.431 665.901 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M191.413 666.526 L213.635 666.526 L213.635 668.517 L201.088 701.086 L196.204 701.086 L208.01 670.461 L191.413 670.461 L191.413 666.526 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M222.801 666.526 L241.158 666.526 L241.158 670.461 L227.084 670.461 L227.084 678.934 Q228.102 678.586 229.121 678.424 Q230.139 678.239 231.158 678.239 Q236.945 678.239 240.324 681.41 Q243.704 684.582 243.704 689.998 Q243.704 695.577 240.232 698.679 Q236.76 701.758 230.44 701.758 Q228.264 701.758 225.996 701.387 Q223.75 701.017 221.343 700.276 L221.343 695.577 Q223.426 696.711 225.648 697.267 Q227.871 697.822 230.347 697.822 Q234.352 697.822 236.69 695.716 Q239.028 693.609 239.028 689.998 Q239.028 686.387 236.69 684.281 Q234.352 682.174 230.347 682.174 Q228.473 682.174 226.598 682.591 Q224.746 683.008 222.801 683.887 L222.801 666.526 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M126.205 436.128 Q122.593 436.128 120.765 439.692 Q118.959 443.234 118.959 450.364 Q118.959 457.47 120.765 461.035 Q122.593 464.577 126.205 464.577 Q129.839 464.577 131.644 461.035 Q133.473 457.47 133.473 450.364 Q133.473 443.234 131.644 439.692 Q129.839 436.128 126.205 436.128 M126.205 432.424 Q132.015 432.424 135.07 437.03 Q138.149 441.614 138.149 450.364 Q138.149 459.09 135.07 463.697 Q132.015 468.28 126.205 468.28 Q120.394 468.28 117.316 463.697 Q114.26 459.09 114.26 450.364 Q114.26 441.614 117.316 437.03 Q120.394 432.424 126.205 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M146.366 461.729 L151.251 461.729 L151.251 467.609 L146.366 467.609 L146.366 461.729 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M162.246 463.674 L169.885 463.674 L169.885 437.308 L161.575 438.975 L161.575 434.716 L169.839 433.049 L174.514 433.049 L174.514 463.674 L182.153 463.674 L182.153 467.609 L162.246 467.609 L162.246 463.674 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M201.598 436.128 Q197.987 436.128 196.158 439.692 Q194.352 443.234 194.352 450.364 Q194.352 457.47 196.158 461.035 Q197.987 464.577 201.598 464.577 Q205.232 464.577 207.037 461.035 Q208.866 457.47 208.866 450.364 Q208.866 443.234 207.037 439.692 Q205.232 436.128 201.598 436.128 M201.598 432.424 Q207.408 432.424 210.463 437.03 Q213.542 441.614 213.542 450.364 Q213.542 459.09 210.463 463.697 Q207.408 468.28 201.598 468.28 Q195.787 468.28 192.709 463.697 Q189.653 459.09 189.653 450.364 Q189.653 441.614 192.709 437.03 Q195.787 432.424 201.598 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M231.76 436.128 Q228.148 436.128 226.32 439.692 Q224.514 443.234 224.514 450.364 Q224.514 457.47 226.32 461.035 Q228.148 464.577 231.76 464.577 Q235.394 464.577 237.199 461.035 Q239.028 457.47 239.028 450.364 Q239.028 443.234 237.199 439.692 Q235.394 436.128 231.76 436.128 M231.76 432.424 Q237.57 432.424 240.625 437.03 Q243.704 441.614 243.704 450.364 Q243.704 459.09 240.625 463.697 Q237.57 468.28 231.76 468.28 Q225.949 468.28 222.871 463.697 Q219.815 459.09 219.815 450.364 Q219.815 441.614 222.871 437.03 Q225.949 432.424 231.76 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M127.2 202.65 Q123.589 202.65 121.76 206.215 Q119.955 209.757 119.955 216.886 Q119.955 223.993 121.76 227.558 Q123.589 231.099 127.2 231.099 Q130.834 231.099 132.64 227.558 Q134.468 223.993 134.468 216.886 Q134.468 209.757 132.64 206.215 Q130.834 202.65 127.2 202.65 M127.2 198.947 Q133.01 198.947 136.066 203.553 Q139.144 208.136 139.144 216.886 Q139.144 225.613 136.066 230.22 Q133.01 234.803 127.2 234.803 Q121.39 234.803 118.311 230.22 Q115.256 225.613 115.256 216.886 Q115.256 208.136 118.311 203.553 Q121.39 198.947 127.2 198.947 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M147.362 228.252 L152.246 228.252 L152.246 234.132 L147.362 234.132 L147.362 228.252 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M163.241 230.196 L170.88 230.196 L170.88 203.831 L162.57 205.497 L162.57 201.238 L170.834 199.572 L175.51 199.572 L175.51 230.196 L183.149 230.196 L183.149 234.132 L163.241 234.132 L163.241 230.196 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M196.621 230.196 L212.94 230.196 L212.94 234.132 L190.996 234.132 L190.996 230.196 Q193.658 227.442 198.241 222.812 Q202.848 218.159 204.028 216.817 Q206.274 214.294 207.153 212.558 Q208.056 210.798 208.056 209.109 Q208.056 206.354 206.112 204.618 Q204.19 202.882 201.088 202.882 Q198.889 202.882 196.436 203.646 Q194.005 204.41 191.227 205.96 L191.227 201.238 Q194.051 200.104 196.505 199.525 Q198.959 198.947 200.996 198.947 Q206.366 198.947 209.561 201.632 Q212.755 204.317 212.755 208.808 Q212.755 210.937 211.945 212.859 Q211.158 214.757 209.051 217.349 Q208.473 218.021 205.371 221.238 Q202.269 224.433 196.621 230.196 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M222.801 199.572 L241.158 199.572 L241.158 203.507 L227.084 203.507 L227.084 211.979 Q228.102 211.632 229.121 211.47 Q230.139 211.284 231.158 211.284 Q236.945 211.284 240.324 214.456 Q243.704 217.627 243.704 223.044 Q243.704 228.622 240.232 231.724 Q236.76 234.803 230.44 234.803 Q228.264 234.803 225.996 234.433 Q223.75 234.062 221.343 233.321 L221.343 228.622 Q223.426 229.757 225.648 230.312 Q227.871 230.868 230.347 230.868 Q234.352 230.868 236.69 228.761 Q239.028 226.655 239.028 223.044 Q239.028 219.433 236.69 217.326 Q234.352 215.22 230.347 215.22 Q228.473 215.22 226.598 215.636 Q224.746 216.053 222.801 216.933 L222.801 199.572 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M49.9359 990.954 L28.3562 990.954 L28.3562 985.098 L49.7131 985.098 Q54.7739 985.098 57.3202 983.124 Q59.8346 981.151 59.8346 977.204 Q59.8346 972.462 56.8109 969.725 Q53.7872 966.956 48.5673 966.956 L28.3562 966.956 L28.3562 961.099 L64.0042 961.099 L64.0042 966.956 L58.5296 966.956 Q61.7762 969.088 63.3676 971.921 Q64.9272 974.722 64.9272 978.446 Q64.9272 984.589 61.1078 987.771 Q57.2883 990.954 49.9359 990.954 M27.4968 976.218 L27.4968 976.218 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M14.5426 914.247 Q21.8632 918.512 29.0246 920.581 Q36.186 922.65 43.5384 922.65 Q50.8908 922.65 58.1159 920.581 Q65.3091 918.481 72.5979 914.247 L72.5979 919.34 Q65.1182 924.114 57.8931 926.501 Q50.668 928.857 43.5384 928.857 Q36.4406 928.857 29.2474 926.501 Q22.0542 924.146 14.5426 919.34 L14.5426 914.247 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M18.2347 897.092 L28.3562 897.092 L28.3562 885.029 L32.9077 885.029 L32.9077 897.092 L52.2594 897.092 Q56.6199 897.092 57.8613 895.914 Q59.1026 894.705 59.1026 891.044 L59.1026 885.029 L64.0042 885.029 L64.0042 891.044 Q64.0042 897.824 61.4897 900.402 Q58.9434 902.98 52.2594 902.98 L32.9077 902.98 L32.9077 907.277 L28.3562 907.277 L28.3562 902.98 L18.2347 902.98 L18.2347 897.092 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M44.7161 846.835 L47.5806 846.835 L47.5806 873.762 Q53.6281 873.38 56.8109 870.133 Q59.9619 866.855 59.9619 861.03 Q59.9619 857.656 59.1344 854.505 Q58.3069 851.322 56.6518 848.203 L62.1899 848.203 Q63.5267 851.354 64.227 854.664 Q64.9272 857.975 64.9272 861.38 Q64.9272 869.91 59.9619 874.907 Q54.9967 879.873 46.5303 879.873 Q37.7774 879.873 32.6531 875.162 Q27.4968 870.42 27.4968 862.399 Q27.4968 855.206 32.1438 851.036 Q36.7589 846.835 44.7161 846.835 M42.9973 852.691 Q38.1912 852.755 35.3266 855.397 Q32.4621 858.006 32.4621 862.335 Q32.4621 867.237 35.2312 870.197 Q38.0002 873.125 43.0292 873.571 L42.9973 852.691 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M35.1993 809.468 Q31.2526 807.272 29.3747 804.216 Q27.4968 801.161 27.4968 797.023 Q27.4968 791.453 31.4117 788.429 Q35.2948 785.406 42.4881 785.406 L64.0042 785.406 L64.0042 791.294 L42.679 791.294 Q37.5546 791.294 35.072 793.108 Q32.5894 794.922 32.5894 798.646 Q32.5894 803.198 35.6131 805.839 Q38.6368 808.481 43.8567 808.481 L64.0042 808.481 L64.0042 814.37 L42.679 814.37 Q37.5228 814.37 35.072 816.184 Q32.5894 817.998 32.5894 821.786 Q32.5894 826.273 35.6449 828.915 Q38.6686 831.557 43.8567 831.557 L64.0042 831.557 L64.0042 837.445 L28.3562 837.445 L28.3562 831.557 L33.8944 831.557 Q30.616 829.552 29.0564 826.751 Q27.4968 823.95 27.4968 820.099 Q27.4968 816.216 29.4702 813.51 Q31.4436 810.773 35.1993 809.468 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M58.657 768.059 L77.5631 768.059 L77.5631 773.947 L28.3562 773.947 L28.3562 768.059 L33.7671 768.059 Q30.5842 766.213 29.0564 763.412 Q27.4968 760.579 27.4968 756.664 Q27.4968 750.171 32.6531 746.129 Q37.8093 742.055 46.212 742.055 Q54.6147 742.055 59.771 746.129 Q64.9272 750.171 64.9272 756.664 Q64.9272 760.579 63.3994 763.412 Q61.8398 766.213 58.657 768.059 M46.212 748.134 Q39.7508 748.134 36.0905 750.808 Q32.3984 753.45 32.3984 758.097 Q32.3984 762.744 36.0905 765.417 Q39.7508 768.059 46.212 768.059 Q52.6732 768.059 56.3653 765.417 Q60.0256 762.744 60.0256 758.097 Q60.0256 753.45 56.3653 750.808 Q52.6732 748.134 46.212 748.134 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M44.7161 701.856 L47.5806 701.856 L47.5806 728.783 Q53.6281 728.401 56.8109 725.154 Q59.9619 721.876 59.9619 716.051 Q59.9619 712.677 59.1344 709.526 Q58.3069 706.343 56.6518 703.224 L62.1899 703.224 Q63.5267 706.375 64.227 709.685 Q64.9272 712.996 64.9272 716.401 Q64.9272 724.931 59.9619 729.928 Q54.9967 734.894 46.5303 734.894 Q37.7774 734.894 32.6531 730.183 Q27.4968 725.441 27.4968 717.42 Q27.4968 710.227 32.1438 706.057 Q36.7589 701.856 44.7161 701.856 M42.9973 707.712 Q38.1912 707.776 35.3266 710.418 Q32.4621 713.027 32.4621 717.356 Q32.4621 722.258 35.2312 725.218 Q38.0002 728.146 43.0292 728.592 L42.9973 707.712 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M33.8307 671.587 Q33.2578 672.573 33.0032 673.751 Q32.7167 674.897 32.7167 676.297 Q32.7167 681.263 35.9632 683.936 Q39.1779 686.578 45.2253 686.578 L64.0042 686.578 L64.0042 692.466 L28.3562 692.466 L28.3562 686.578 L33.8944 686.578 Q30.6479 684.732 29.0883 681.772 Q27.4968 678.812 27.4968 674.579 Q27.4968 673.974 27.5923 673.242 Q27.656 672.51 27.8151 671.619 L33.8307 671.587 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M46.0847 649.243 Q46.0847 656.341 47.7079 659.078 Q49.3312 661.815 53.2461 661.815 Q56.3653 661.815 58.2114 659.778 Q60.0256 657.709 60.0256 654.177 Q60.0256 649.307 56.5881 646.379 Q53.1188 643.418 47.3897 643.418 L46.0847 643.418 L46.0847 649.243 M43.6657 637.562 L64.0042 637.562 L64.0042 643.418 L58.5933 643.418 Q61.8398 645.424 63.3994 648.416 Q64.9272 651.407 64.9272 655.736 Q64.9272 661.211 61.8716 664.457 Q58.7843 667.672 53.6281 667.672 Q47.6125 667.672 44.5569 663.661 Q41.5014 659.619 41.5014 651.63 L41.5014 643.418 L40.9285 643.418 Q36.8862 643.418 34.6901 646.092 Q32.4621 648.734 32.4621 653.54 Q32.4621 656.595 33.1941 659.492 Q33.9262 662.388 35.3903 665.062 L29.9795 665.062 Q28.7381 661.847 28.1334 658.823 Q27.4968 655.8 27.4968 652.935 Q27.4968 645.201 31.5072 641.381 Q35.5176 637.562 43.6657 637.562 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M18.2347 619.706 L28.3562 619.706 L28.3562 607.643 L32.9077 607.643 L32.9077 619.706 L52.2594 619.706 Q56.6199 619.706 57.8613 618.529 Q59.1026 617.319 59.1026 613.659 L59.1026 607.643 L64.0042 607.643 L64.0042 613.659 Q64.0042 620.438 61.4897 623.016 Q58.9434 625.595 52.2594 625.595 L32.9077 625.595 L32.9077 629.891 L28.3562 629.891 L28.3562 625.595 L18.2347 625.595 L18.2347 619.706 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M49.9359 600.545 L28.3562 600.545 L28.3562 594.689 L49.7131 594.689 Q54.7739 594.689 57.3202 592.716 Q59.8346 590.742 59.8346 586.796 Q59.8346 582.053 56.8109 579.316 Q53.7872 576.547 48.5673 576.547 L28.3562 576.547 L28.3562 570.69 L64.0042 570.69 L64.0042 576.547 L58.5296 576.547 Q61.7762 578.679 63.3676 581.512 Q64.9272 584.313 64.9272 588.037 Q64.9272 594.18 61.1078 597.363 Q57.2883 600.545 49.9359 600.545 M27.4968 585.809 L27.4968 585.809 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M33.8307 537.971 Q33.2578 538.957 33.0032 540.135 Q32.7167 541.281 32.7167 542.681 Q32.7167 547.646 35.9632 550.32 Q39.1779 552.962 45.2253 552.962 L64.0042 552.962 L64.0042 558.85 L28.3562 558.85 L28.3562 552.962 L33.8944 552.962 Q30.6479 551.116 29.0883 548.156 Q27.4968 545.196 27.4968 540.962 Q27.4968 540.358 27.5923 539.626 Q27.656 538.894 27.8151 538.002 L33.8307 537.971 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M44.7161 502.768 L47.5806 502.768 L47.5806 529.695 Q53.6281 529.313 56.8109 526.067 Q59.9619 522.788 59.9619 516.964 Q59.9619 513.59 59.1344 510.439 Q58.3069 507.256 56.6518 504.137 L62.1899 504.137 Q63.5267 507.288 64.227 510.598 Q64.9272 513.908 64.9272 517.314 Q64.9272 525.844 59.9619 530.841 Q54.9967 535.806 46.5303 535.806 Q37.7774 535.806 32.6531 531.096 Q27.4968 526.353 27.4968 518.332 Q27.4968 511.139 32.1438 506.97 Q36.7589 502.768 44.7161 502.768 M42.9973 508.625 Q38.1912 508.688 35.3266 511.33 Q32.4621 513.94 32.4621 518.269 Q32.4621 523.17 35.2312 526.13 Q38.0002 529.059 43.0292 529.504 L42.9973 508.625 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip930)\" d=\"M14.5426 494.079 L14.5426 488.986 Q22.0542 484.212 29.2474 481.857 Q36.4406 479.47 43.5384 479.47 Q50.668 479.47 57.8931 481.857 Q65.1182 484.212 72.5979 488.986 L72.5979 494.079 Q65.3091 489.846 58.1159 487.777 Q50.8908 485.676 43.5384 485.676 Q36.186 485.676 29.0246 487.777 Q21.8632 489.846 14.5426 494.079 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip932)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"338.375,1384.24 357.932,1319.8 377.489,1255.35 397.046,1190.91 416.604,1126.47 436.161,1062.03 455.718,1011.9 475.275,961.77 494.832,911.642 514.389,861.515 533.946,811.387 553.503,772.017 573.06,732.648 592.617,693.279 612.175,653.909 631.732,614.54 651.289,583.444 670.846,552.349 690.403,521.254 709.96,490.158 729.517,459.063 749.074,434.627 768.631,410.192 788.188,385.756 807.745,361.32 827.303,336.885 846.86,318.026 866.417,299.168 885.974,280.31 905.531,261.452 925.088,242.594 944.645,228.572 964.202,214.55 983.759,200.528 1003.32,186.505 1022.87,172.483 1042.43,162.792 1061.99,153.1 1081.54,143.408 1101.1,133.717 1120.66,124.025 1140.22,118.334 1159.77,112.643 1179.33,106.952 1198.89,101.261 1218.44,95.5699 1238,93.693 1257.56,91.8162 1277.12,89.9394 1296.67,88.0625 1316.23,86.1857 1335.79,88.0625 1355.34,89.9394 1374.9,91.8162 1394.46,93.693 1414.02,95.5699 1433.57,101.261 1453.13,106.952 1472.69,112.643 1492.24,118.334 1511.8,124.025 1531.36,133.717 1550.92,143.408 1570.47,153.1 1590.03,162.792 1609.59,172.483 1629.14,186.505 1648.7,200.528 1668.26,214.55 1687.81,228.572 1707.37,242.594 1726.93,261.452 1746.49,280.31 1766.04,299.168 1785.6,318.026 1805.16,336.885 1824.71,361.32 1844.27,385.756 1863.83,410.192 1883.39,434.627 1902.94,459.063 1922.5,490.158 1942.06,521.254 1961.61,552.349 1981.17,583.444 2000.73,614.54 2020.29,653.909 2039.84,693.279 2059.4,732.648 2078.96,772.017 2098.51,811.387 2118.07,861.515 2137.63,911.642 2157.18,961.77 2176.74,1011.9 2196.3,1062.03 2215.86,1126.47 2235.41,1190.91 2254.97,1255.35 2274.53,1319.8 2294.08,1384.24 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"338.375,1423.18 338.375,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"827.303,1423.18 827.303,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1316.23,1423.18 1316.23,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1805.16,1423.18 1805.16,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2294.08,1423.18 2294.08,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,1384.24 2352.76,1384.24 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,1150.76 2352.76,1150.76 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,917.284 2352.76,917.284 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,683.806 2352.76,683.806 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,450.329 2352.76,450.329 \"/>\n", + "<polyline clip-path=\"url(#clip542)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"279.704,216.852 2352.76,216.852 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1423.18 2352.76,1423.18 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"338.375,1423.18 338.375,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"827.303,1423.18 827.303,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1316.23,1423.18 1316.23,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1805.16,1423.18 1805.16,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2294.08,1423.18 2294.08,1404.28 \"/>\n", + "<path clip-path=\"url(#clip540)\" d=\"M284.903 1468.75 L314.579 1468.75 L314.579 1472.69 L284.903 1472.69 L284.903 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M325.482 1481.64 L333.121 1481.64 L333.121 1455.28 L324.81 1456.95 L324.81 1452.69 L333.074 1451.02 L337.75 1451.02 L337.75 1481.64 L345.389 1481.64 L345.389 1485.58 L325.482 1485.58 L325.482 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M354.833 1479.7 L359.718 1479.7 L359.718 1485.58 L354.833 1485.58 L354.833 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M379.903 1454.1 Q376.292 1454.1 374.463 1457.66 Q372.657 1461.2 372.657 1468.33 Q372.657 1475.44 374.463 1479.01 Q376.292 1482.55 379.903 1482.55 Q383.537 1482.55 385.343 1479.01 Q387.171 1475.44 387.171 1468.33 Q387.171 1461.2 385.343 1457.66 Q383.537 1454.1 379.903 1454.1 M379.903 1450.39 Q385.713 1450.39 388.768 1455 Q391.847 1459.58 391.847 1468.33 Q391.847 1477.06 388.768 1481.67 Q385.713 1486.25 379.903 1486.25 Q374.093 1486.25 371.014 1481.67 Q367.958 1477.06 367.958 1468.33 Q367.958 1459.58 371.014 1455 Q374.093 1450.39 379.903 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M774.328 1468.75 L804.004 1468.75 L804.004 1472.69 L774.328 1472.69 L774.328 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M824.097 1454.1 Q820.485 1454.1 818.657 1457.66 Q816.851 1461.2 816.851 1468.33 Q816.851 1475.44 818.657 1479.01 Q820.485 1482.55 824.097 1482.55 Q827.731 1482.55 829.536 1479.01 Q831.365 1475.44 831.365 1468.33 Q831.365 1461.2 829.536 1457.66 Q827.731 1454.1 824.097 1454.1 M824.097 1450.39 Q829.907 1450.39 832.962 1455 Q836.041 1459.58 836.041 1468.33 Q836.041 1477.06 832.962 1481.67 Q829.907 1486.25 824.097 1486.25 Q818.286 1486.25 815.208 1481.67 Q812.152 1477.06 812.152 1468.33 Q812.152 1459.58 815.208 1455 Q818.286 1450.39 824.097 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M844.258 1479.7 L849.143 1479.7 L849.143 1485.58 L844.258 1485.58 L844.258 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M859.374 1451.02 L877.731 1451.02 L877.731 1454.96 L863.657 1454.96 L863.657 1463.43 Q864.675 1463.08 865.694 1462.92 Q866.712 1462.73 867.731 1462.73 Q873.518 1462.73 876.897 1465.9 Q880.277 1469.08 880.277 1474.49 Q880.277 1480.07 876.805 1483.17 Q873.332 1486.25 867.013 1486.25 Q864.837 1486.25 862.569 1485.88 Q860.323 1485.51 857.916 1484.77 L857.916 1480.07 Q859.999 1481.2 862.221 1481.76 Q864.444 1482.32 866.92 1482.32 Q870.925 1482.32 873.263 1480.21 Q875.601 1478.1 875.601 1474.49 Q875.601 1470.88 873.263 1468.77 Q870.925 1466.67 866.92 1466.67 Q865.045 1466.67 863.17 1467.08 Q861.319 1467.5 859.374 1468.38 L859.374 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1293.61 1454.1 Q1290 1454.1 1288.17 1457.66 Q1286.37 1461.2 1286.37 1468.33 Q1286.37 1475.44 1288.17 1479.01 Q1290 1482.55 1293.61 1482.55 Q1297.25 1482.55 1299.05 1479.01 Q1300.88 1475.44 1300.88 1468.33 Q1300.88 1461.2 1299.05 1457.66 Q1297.25 1454.1 1293.61 1454.1 M1293.61 1450.39 Q1299.42 1450.39 1302.48 1455 Q1305.56 1459.58 1305.56 1468.33 Q1305.56 1477.06 1302.48 1481.67 Q1299.42 1486.25 1293.61 1486.25 Q1287.8 1486.25 1284.73 1481.67 Q1281.67 1477.06 1281.67 1468.33 Q1281.67 1459.58 1284.73 1455 Q1287.8 1450.39 1293.61 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1313.78 1479.7 L1318.66 1479.7 L1318.66 1485.58 L1313.78 1485.58 L1313.78 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1338.85 1454.1 Q1335.23 1454.1 1333.41 1457.66 Q1331.6 1461.2 1331.6 1468.33 Q1331.6 1475.44 1333.41 1479.01 Q1335.23 1482.55 1338.85 1482.55 Q1342.48 1482.55 1344.29 1479.01 Q1346.11 1475.44 1346.11 1468.33 Q1346.11 1461.2 1344.29 1457.66 Q1342.48 1454.1 1338.85 1454.1 M1338.85 1450.39 Q1344.66 1450.39 1347.71 1455 Q1350.79 1459.58 1350.79 1468.33 Q1350.79 1477.06 1347.71 1481.67 Q1344.66 1486.25 1338.85 1486.25 Q1333.04 1486.25 1329.96 1481.67 Q1326.9 1477.06 1326.9 1468.33 Q1326.9 1459.58 1329.96 1455 Q1333.04 1450.39 1338.85 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1783.04 1454.1 Q1779.43 1454.1 1777.6 1457.66 Q1775.79 1461.2 1775.79 1468.33 Q1775.79 1475.44 1777.6 1479.01 Q1779.43 1482.55 1783.04 1482.55 Q1786.67 1482.55 1788.48 1479.01 Q1790.31 1475.44 1790.31 1468.33 Q1790.31 1461.2 1788.48 1457.66 Q1786.67 1454.1 1783.04 1454.1 M1783.04 1450.39 Q1788.85 1450.39 1791.91 1455 Q1794.98 1459.58 1794.98 1468.33 Q1794.98 1477.06 1791.91 1481.67 Q1788.85 1486.25 1783.04 1486.25 Q1777.23 1486.25 1774.15 1481.67 Q1771.09 1477.06 1771.09 1468.33 Q1771.09 1459.58 1774.15 1455 Q1777.23 1450.39 1783.04 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1803.2 1479.7 L1808.09 1479.7 L1808.09 1485.58 L1803.2 1485.58 L1803.2 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1818.32 1451.02 L1836.67 1451.02 L1836.67 1454.96 L1822.6 1454.96 L1822.6 1463.43 Q1823.62 1463.08 1824.64 1462.92 Q1825.65 1462.73 1826.67 1462.73 Q1832.46 1462.73 1835.84 1465.9 Q1839.22 1469.08 1839.22 1474.49 Q1839.22 1480.07 1835.75 1483.17 Q1832.28 1486.25 1825.96 1486.25 Q1823.78 1486.25 1821.51 1485.88 Q1819.27 1485.51 1816.86 1484.77 L1816.86 1480.07 Q1818.94 1481.2 1821.16 1481.76 Q1823.39 1482.32 1825.86 1482.32 Q1829.87 1482.32 1832.21 1480.21 Q1834.54 1478.1 1834.54 1474.49 Q1834.54 1470.88 1832.21 1468.77 Q1829.87 1466.67 1825.86 1466.67 Q1823.99 1466.67 1822.11 1467.08 Q1820.26 1467.5 1818.32 1468.38 L1818.32 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M2261.24 1481.64 L2268.88 1481.64 L2268.88 1455.28 L2260.57 1456.95 L2260.57 1452.69 L2268.83 1451.02 L2273.51 1451.02 L2273.51 1481.64 L2281.14 1481.64 L2281.14 1485.58 L2261.24 1485.58 L2261.24 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M2290.59 1479.7 L2295.47 1479.7 L2295.47 1485.58 L2290.59 1485.58 L2290.59 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M2315.66 1454.1 Q2312.05 1454.1 2310.22 1457.66 Q2308.41 1461.2 2308.41 1468.33 Q2308.41 1475.44 2310.22 1479.01 Q2312.05 1482.55 2315.66 1482.55 Q2319.29 1482.55 2321.1 1479.01 Q2322.93 1475.44 2322.93 1468.33 Q2322.93 1461.2 2321.1 1457.66 Q2319.29 1454.1 2315.66 1454.1 M2315.66 1450.39 Q2321.47 1450.39 2324.52 1455 Q2327.6 1459.58 2327.6 1468.33 Q2327.6 1477.06 2324.52 1481.67 Q2321.47 1486.25 2315.66 1486.25 Q2309.85 1486.25 2306.77 1481.67 Q2303.71 1477.06 2303.71 1468.33 Q2303.71 1459.58 2306.77 1455 Q2309.85 1450.39 2315.66 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1124.96 1532.4 L1112.07 1549.74 L1125.62 1568.04 L1118.72 1568.04 L1108.34 1554.04 L1097.97 1568.04 L1091.06 1568.04 L1104.9 1549.39 L1092.24 1532.4 L1099.14 1532.4 L1108.6 1545.1 L1118.05 1532.4 L1124.96 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1168.69 1518.58 Q1164.42 1525.9 1162.35 1533.06 Q1160.29 1540.23 1160.29 1547.58 Q1160.29 1554.93 1162.35 1562.16 Q1164.46 1569.35 1168.69 1576.64 L1163.6 1576.64 Q1158.82 1569.16 1156.43 1561.93 Q1154.08 1554.71 1154.08 1547.58 Q1154.08 1540.48 1156.43 1533.29 Q1158.79 1526.09 1163.6 1518.58 L1168.69 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1205.71 1533.76 L1205.71 1539.24 Q1203.22 1537.87 1200.71 1537.2 Q1198.23 1536.5 1195.68 1536.5 Q1189.98 1536.5 1186.83 1540.13 Q1183.68 1543.73 1183.68 1550.25 Q1183.68 1556.78 1186.83 1560.4 Q1189.98 1564 1195.68 1564 Q1198.23 1564 1200.71 1563.33 Q1203.22 1562.63 1205.71 1561.26 L1205.71 1566.68 Q1203.25 1567.82 1200.61 1568.39 Q1198 1568.97 1195.04 1568.97 Q1186.99 1568.97 1182.25 1563.91 Q1177.51 1558.85 1177.51 1550.25 Q1177.51 1541.53 1182.28 1536.53 Q1187.09 1531.54 1195.42 1531.54 Q1198.13 1531.54 1200.71 1532.11 Q1203.29 1532.65 1205.71 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1229.7 1536.5 Q1224.99 1536.5 1222.26 1540.19 Q1219.52 1543.85 1219.52 1550.25 Q1219.52 1556.65 1222.22 1560.34 Q1224.96 1564 1229.7 1564 Q1234.38 1564 1237.12 1560.31 Q1239.86 1556.62 1239.86 1550.25 Q1239.86 1543.92 1237.12 1540.23 Q1234.38 1536.5 1229.7 1536.5 M1229.7 1531.54 Q1237.34 1531.54 1241.7 1536.5 Q1246.06 1541.47 1246.06 1550.25 Q1246.06 1559 1241.7 1564 Q1237.34 1568.97 1229.7 1568.97 Q1222.03 1568.97 1217.67 1564 Q1213.34 1559 1213.34 1550.25 Q1213.34 1541.47 1217.67 1536.5 Q1222.03 1531.54 1229.7 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1269.59 1536.5 Q1264.87 1536.5 1262.14 1540.19 Q1259.4 1543.85 1259.4 1550.25 Q1259.4 1556.65 1262.11 1560.34 Q1264.84 1564 1269.59 1564 Q1274.26 1564 1277 1560.31 Q1279.74 1556.62 1279.74 1550.25 Q1279.74 1543.92 1277 1540.23 Q1274.26 1536.5 1269.59 1536.5 M1269.59 1531.54 Q1277.22 1531.54 1281.58 1536.5 Q1285.95 1541.47 1285.95 1550.25 Q1285.95 1559 1281.58 1564 Q1277.22 1568.97 1269.59 1568.97 Q1261.91 1568.97 1257.55 1564 Q1253.23 1559 1253.23 1550.25 Q1253.23 1541.47 1257.55 1536.5 Q1261.91 1531.54 1269.59 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1316.31 1537.87 Q1315.32 1537.3 1314.15 1537.04 Q1313 1536.76 1311.6 1536.76 Q1306.63 1536.76 1303.96 1540 Q1301.32 1543.22 1301.32 1549.27 L1301.32 1568.04 L1295.43 1568.04 L1295.43 1532.4 L1301.32 1532.4 L1301.32 1537.93 Q1303.16 1534.69 1306.12 1533.13 Q1309.08 1531.54 1313.32 1531.54 Q1313.92 1531.54 1314.65 1531.63 Q1315.39 1531.7 1316.28 1531.85 L1316.31 1537.87 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1344.76 1537.81 L1344.76 1518.52 L1350.62 1518.52 L1350.62 1568.04 L1344.76 1568.04 L1344.76 1562.7 Q1342.92 1565.88 1340.09 1567.44 Q1337.28 1568.97 1333.34 1568.97 Q1326.88 1568.97 1322.8 1563.81 Q1318.76 1558.65 1318.76 1550.25 Q1318.76 1541.85 1322.8 1536.69 Q1326.88 1531.54 1333.34 1531.54 Q1337.28 1531.54 1340.09 1533.1 Q1342.92 1534.62 1344.76 1537.81 M1324.81 1550.25 Q1324.81 1556.71 1327.45 1560.4 Q1330.12 1564.07 1334.77 1564.07 Q1339.42 1564.07 1342.09 1560.4 Q1344.76 1556.71 1344.76 1550.25 Q1344.76 1543.79 1342.09 1540.13 Q1339.42 1536.44 1334.77 1536.44 Q1330.12 1536.44 1327.45 1540.13 Q1324.81 1543.79 1324.81 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1362.68 1532.4 L1368.54 1532.4 L1368.54 1568.04 L1362.68 1568.04 L1362.68 1532.4 M1362.68 1518.52 L1368.54 1518.52 L1368.54 1525.93 L1362.68 1525.93 L1362.68 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1410.43 1546.53 L1410.43 1568.04 L1404.57 1568.04 L1404.57 1546.72 Q1404.57 1541.66 1402.6 1539.14 Q1400.62 1536.63 1396.68 1536.63 Q1391.93 1536.63 1389.2 1539.65 Q1386.46 1542.68 1386.46 1547.9 L1386.46 1568.04 L1380.57 1568.04 L1380.57 1532.4 L1386.46 1532.4 L1386.46 1537.93 Q1388.56 1534.72 1391.39 1533.13 Q1394.26 1531.54 1397.98 1531.54 Q1404.12 1531.54 1407.28 1535.36 Q1410.43 1539.14 1410.43 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1438.31 1550.12 Q1431.21 1550.12 1428.47 1551.75 Q1425.74 1553.37 1425.74 1557.29 Q1425.74 1560.4 1427.77 1562.25 Q1429.84 1564.07 1433.37 1564.07 Q1438.24 1564.07 1441.17 1560.63 Q1444.13 1557.16 1444.13 1551.43 L1444.13 1550.12 L1438.31 1550.12 M1449.99 1547.71 L1449.99 1568.04 L1444.13 1568.04 L1444.13 1562.63 Q1442.13 1565.88 1439.14 1567.44 Q1436.14 1568.97 1431.82 1568.97 Q1426.34 1568.97 1423.09 1565.91 Q1419.88 1562.82 1419.88 1557.67 Q1419.88 1551.65 1423.89 1548.6 Q1427.93 1545.54 1435.92 1545.54 L1444.13 1545.54 L1444.13 1544.97 Q1444.13 1540.93 1441.46 1538.73 Q1438.82 1536.5 1434.01 1536.5 Q1430.96 1536.5 1428.06 1537.23 Q1425.16 1537.97 1422.49 1539.43 L1422.49 1534.02 Q1425.7 1532.78 1428.73 1532.17 Q1431.75 1531.54 1434.62 1531.54 Q1442.35 1531.54 1446.17 1535.55 Q1449.99 1539.56 1449.99 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1467.85 1522.27 L1467.85 1532.4 L1479.91 1532.4 L1479.91 1536.95 L1467.85 1536.95 L1467.85 1556.3 Q1467.85 1560.66 1469.02 1561.9 Q1470.23 1563.14 1473.89 1563.14 L1479.91 1563.14 L1479.91 1568.04 L1473.89 1568.04 Q1467.11 1568.04 1464.53 1565.53 Q1461.96 1562.98 1461.96 1556.3 L1461.96 1536.95 L1457.66 1536.95 L1457.66 1532.4 L1461.96 1532.4 L1461.96 1522.27 L1467.85 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1518.1 1548.76 L1518.1 1551.62 L1491.18 1551.62 Q1491.56 1557.67 1494.8 1560.85 Q1498.08 1564 1503.91 1564 Q1507.28 1564 1510.43 1563.17 Q1513.61 1562.35 1516.73 1560.69 L1516.73 1566.23 Q1513.58 1567.57 1510.27 1568.27 Q1506.96 1568.97 1503.56 1568.97 Q1495.03 1568.97 1490.03 1564 Q1485.06 1559.04 1485.06 1550.57 Q1485.06 1541.82 1489.77 1536.69 Q1494.52 1531.54 1502.54 1531.54 Q1509.73 1531.54 1513.9 1536.18 Q1518.1 1540.8 1518.1 1548.76 M1512.25 1547.04 Q1512.18 1542.23 1509.54 1539.37 Q1506.93 1536.5 1502.6 1536.5 Q1497.7 1536.5 1494.74 1539.27 Q1491.81 1542.04 1491.37 1547.07 L1512.25 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M1526.79 1518.58 L1531.88 1518.58 Q1536.66 1526.09 1539.01 1533.29 Q1541.4 1540.48 1541.4 1547.58 Q1541.4 1554.71 1539.01 1561.93 Q1536.66 1569.16 1531.88 1576.64 L1526.79 1576.64 Q1531.02 1569.35 1533.09 1562.16 Q1535.19 1554.93 1535.19 1547.58 Q1535.19 1540.23 1533.09 1533.06 Q1531.02 1525.9 1526.79 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1423.18 279.704,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1384.24 298.602,1384.24 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,1150.76 298.602,1150.76 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,917.284 298.602,917.284 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,683.806 298.602,683.806 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,450.329 298.602,450.329 \"/>\n", + "<polyline clip-path=\"url(#clip540)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"279.704,216.852 298.602,216.852 \"/>\n", + "<path clip-path=\"url(#clip540)\" d=\"M126.205 1370.04 Q122.593 1370.04 120.765 1373.6 Q118.959 1377.14 118.959 1384.27 Q118.959 1391.38 120.765 1394.94 Q122.593 1398.49 126.205 1398.49 Q129.839 1398.49 131.644 1394.94 Q133.473 1391.38 133.473 1384.27 Q133.473 1377.14 131.644 1373.6 Q129.839 1370.04 126.205 1370.04 M126.205 1366.33 Q132.015 1366.33 135.07 1370.94 Q138.149 1375.52 138.149 1384.27 Q138.149 1393 135.07 1397.61 Q132.015 1402.19 126.205 1402.19 Q120.394 1402.19 117.316 1397.61 Q114.26 1393 114.26 1384.27 Q114.26 1375.52 117.316 1370.94 Q120.394 1366.33 126.205 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M146.366 1395.64 L151.251 1395.64 L151.251 1401.52 L146.366 1401.52 L146.366 1395.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M171.436 1370.04 Q167.825 1370.04 165.996 1373.6 Q164.19 1377.14 164.19 1384.27 Q164.19 1391.38 165.996 1394.94 Q167.825 1398.49 171.436 1398.49 Q175.07 1398.49 176.876 1394.94 Q178.704 1391.38 178.704 1384.27 Q178.704 1377.14 176.876 1373.6 Q175.07 1370.04 171.436 1370.04 M171.436 1366.33 Q177.246 1366.33 180.301 1370.94 Q183.38 1375.52 183.38 1384.27 Q183.38 1393 180.301 1397.61 Q177.246 1402.19 171.436 1402.19 Q165.626 1402.19 162.547 1397.61 Q159.491 1393 159.491 1384.27 Q159.491 1375.52 162.547 1370.94 Q165.626 1366.33 171.436 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M201.598 1370.04 Q197.987 1370.04 196.158 1373.6 Q194.352 1377.14 194.352 1384.27 Q194.352 1391.38 196.158 1394.94 Q197.987 1398.49 201.598 1398.49 Q205.232 1398.49 207.037 1394.94 Q208.866 1391.38 208.866 1384.27 Q208.866 1377.14 207.037 1373.6 Q205.232 1370.04 201.598 1370.04 M201.598 1366.33 Q207.408 1366.33 210.463 1370.94 Q213.542 1375.52 213.542 1384.27 Q213.542 1393 210.463 1397.61 Q207.408 1402.19 201.598 1402.19 Q195.787 1402.19 192.709 1397.61 Q189.653 1393 189.653 1384.27 Q189.653 1375.52 192.709 1370.94 Q195.787 1366.33 201.598 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M231.76 1370.04 Q228.148 1370.04 226.32 1373.6 Q224.514 1377.14 224.514 1384.27 Q224.514 1391.38 226.32 1394.94 Q228.148 1398.49 231.76 1398.49 Q235.394 1398.49 237.199 1394.94 Q239.028 1391.38 239.028 1384.27 Q239.028 1377.14 237.199 1373.6 Q235.394 1370.04 231.76 1370.04 M231.76 1366.33 Q237.57 1366.33 240.625 1370.94 Q243.704 1375.52 243.704 1384.27 Q243.704 1393 240.625 1397.61 Q237.57 1402.19 231.76 1402.19 Q225.949 1402.19 222.871 1397.61 Q219.815 1393 219.815 1384.27 Q219.815 1375.52 222.871 1370.94 Q225.949 1366.33 231.76 1366.33 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M127.2 1136.56 Q123.589 1136.56 121.76 1140.12 Q119.955 1143.67 119.955 1150.8 Q119.955 1157.9 121.76 1161.47 Q123.589 1165.01 127.2 1165.01 Q130.834 1165.01 132.64 1161.47 Q134.468 1157.9 134.468 1150.8 Q134.468 1143.67 132.64 1140.12 Q130.834 1136.56 127.2 1136.56 M127.2 1132.86 Q133.01 1132.86 136.066 1137.46 Q139.144 1142.05 139.144 1150.8 Q139.144 1159.52 136.066 1164.13 Q133.01 1168.71 127.2 1168.71 Q121.39 1168.71 118.311 1164.13 Q115.256 1159.52 115.256 1150.8 Q115.256 1142.05 118.311 1137.46 Q121.39 1132.86 127.2 1132.86 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M147.362 1162.16 L152.246 1162.16 L152.246 1168.04 L147.362 1168.04 L147.362 1162.16 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M172.431 1136.56 Q168.82 1136.56 166.991 1140.12 Q165.186 1143.67 165.186 1150.8 Q165.186 1157.9 166.991 1161.47 Q168.82 1165.01 172.431 1165.01 Q176.065 1165.01 177.871 1161.47 Q179.7 1157.9 179.7 1150.8 Q179.7 1143.67 177.871 1140.12 Q176.065 1136.56 172.431 1136.56 M172.431 1132.86 Q178.241 1132.86 181.297 1137.46 Q184.376 1142.05 184.376 1150.8 Q184.376 1159.52 181.297 1164.13 Q178.241 1168.71 172.431 1168.71 Q166.621 1168.71 163.542 1164.13 Q160.487 1159.52 160.487 1150.8 Q160.487 1142.05 163.542 1137.46 Q166.621 1132.86 172.431 1132.86 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M196.621 1164.11 L212.94 1164.11 L212.94 1168.04 L190.996 1168.04 L190.996 1164.11 Q193.658 1161.35 198.241 1156.72 Q202.848 1152.07 204.028 1150.73 Q206.274 1148.2 207.153 1146.47 Q208.056 1144.71 208.056 1143.02 Q208.056 1140.26 206.112 1138.53 Q204.19 1136.79 201.088 1136.79 Q198.889 1136.79 196.436 1137.55 Q194.005 1138.32 191.227 1139.87 L191.227 1135.15 Q194.051 1134.01 196.505 1133.43 Q198.959 1132.86 200.996 1132.86 Q206.366 1132.86 209.561 1135.54 Q212.755 1138.23 212.755 1142.72 Q212.755 1144.85 211.945 1146.77 Q211.158 1148.67 209.051 1151.26 Q208.473 1151.93 205.371 1155.15 Q202.269 1158.34 196.621 1164.11 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M222.801 1133.48 L241.158 1133.48 L241.158 1137.42 L227.084 1137.42 L227.084 1145.89 Q228.102 1145.54 229.121 1145.38 Q230.139 1145.19 231.158 1145.19 Q236.945 1145.19 240.324 1148.37 Q243.704 1151.54 243.704 1156.95 Q243.704 1162.53 240.232 1165.63 Q236.76 1168.71 230.44 1168.71 Q228.264 1168.71 225.996 1168.34 Q223.75 1167.97 221.343 1167.23 L221.343 1162.53 Q223.426 1163.67 225.648 1164.22 Q227.871 1164.78 230.347 1164.78 Q234.352 1164.78 236.69 1162.67 Q239.028 1160.56 239.028 1156.95 Q239.028 1153.34 236.69 1151.24 Q234.352 1149.13 230.347 1149.13 Q228.473 1149.13 226.598 1149.55 Q224.746 1149.96 222.801 1150.84 L222.801 1133.48 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M126.205 903.082 Q122.593 903.082 120.765 906.647 Q118.959 910.189 118.959 917.318 Q118.959 924.425 120.765 927.99 Q122.593 931.531 126.205 931.531 Q129.839 931.531 131.644 927.99 Q133.473 924.425 133.473 917.318 Q133.473 910.189 131.644 906.647 Q129.839 903.082 126.205 903.082 M126.205 899.379 Q132.015 899.379 135.07 903.985 Q138.149 908.568 138.149 917.318 Q138.149 926.045 135.07 930.652 Q132.015 935.235 126.205 935.235 Q120.394 935.235 117.316 930.652 Q114.26 926.045 114.26 917.318 Q114.26 908.568 117.316 903.985 Q120.394 899.379 126.205 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M146.366 928.684 L151.251 928.684 L151.251 934.564 L146.366 934.564 L146.366 928.684 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M171.436 903.082 Q167.825 903.082 165.996 906.647 Q164.19 910.189 164.19 917.318 Q164.19 924.425 165.996 927.99 Q167.825 931.531 171.436 931.531 Q175.07 931.531 176.876 927.99 Q178.704 924.425 178.704 917.318 Q178.704 910.189 176.876 906.647 Q175.07 903.082 171.436 903.082 M171.436 899.379 Q177.246 899.379 180.301 903.985 Q183.38 908.568 183.38 917.318 Q183.38 926.045 180.301 930.652 Q177.246 935.235 171.436 935.235 Q165.626 935.235 162.547 930.652 Q159.491 926.045 159.491 917.318 Q159.491 908.568 162.547 903.985 Q165.626 899.379 171.436 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M191.644 900.004 L210 900.004 L210 903.939 L195.926 903.939 L195.926 912.411 Q196.945 912.064 197.963 911.902 Q198.982 911.716 200 911.716 Q205.787 911.716 209.167 914.888 Q212.547 918.059 212.547 923.476 Q212.547 929.054 209.074 932.156 Q205.602 935.235 199.283 935.235 Q197.107 935.235 194.838 934.865 Q192.593 934.494 190.186 933.753 L190.186 929.054 Q192.269 930.189 194.491 930.744 Q196.713 931.3 199.19 931.3 Q203.195 931.3 205.533 929.193 Q207.871 927.087 207.871 923.476 Q207.871 919.865 205.533 917.758 Q203.195 915.652 199.19 915.652 Q197.315 915.652 195.44 916.068 Q193.588 916.485 191.644 917.365 L191.644 900.004 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M231.76 903.082 Q228.148 903.082 226.32 906.647 Q224.514 910.189 224.514 917.318 Q224.514 924.425 226.32 927.99 Q228.148 931.531 231.76 931.531 Q235.394 931.531 237.199 927.99 Q239.028 924.425 239.028 917.318 Q239.028 910.189 237.199 906.647 Q235.394 903.082 231.76 903.082 M231.76 899.379 Q237.57 899.379 240.625 903.985 Q243.704 908.568 243.704 917.318 Q243.704 926.045 240.625 930.652 Q237.57 935.235 231.76 935.235 Q225.949 935.235 222.871 930.652 Q219.815 926.045 219.815 917.318 Q219.815 908.568 222.871 903.985 Q225.949 899.379 231.76 899.379 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M127.2 669.605 Q123.589 669.605 121.76 673.17 Q119.955 676.711 119.955 683.841 Q119.955 690.947 121.76 694.512 Q123.589 698.054 127.2 698.054 Q130.834 698.054 132.64 694.512 Q134.468 690.947 134.468 683.841 Q134.468 676.711 132.64 673.17 Q130.834 669.605 127.2 669.605 M127.2 665.901 Q133.01 665.901 136.066 670.508 Q139.144 675.091 139.144 683.841 Q139.144 692.568 136.066 697.174 Q133.01 701.758 127.2 701.758 Q121.39 701.758 118.311 697.174 Q115.256 692.568 115.256 683.841 Q115.256 675.091 118.311 670.508 Q121.39 665.901 127.2 665.901 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M147.362 695.207 L152.246 695.207 L152.246 701.086 L147.362 701.086 L147.362 695.207 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M172.431 669.605 Q168.82 669.605 166.991 673.17 Q165.186 676.711 165.186 683.841 Q165.186 690.947 166.991 694.512 Q168.82 698.054 172.431 698.054 Q176.065 698.054 177.871 694.512 Q179.7 690.947 179.7 683.841 Q179.7 676.711 177.871 673.17 Q176.065 669.605 172.431 669.605 M172.431 665.901 Q178.241 665.901 181.297 670.508 Q184.376 675.091 184.376 683.841 Q184.376 692.568 181.297 697.174 Q178.241 701.758 172.431 701.758 Q166.621 701.758 163.542 697.174 Q160.487 692.568 160.487 683.841 Q160.487 675.091 163.542 670.508 Q166.621 665.901 172.431 665.901 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M191.413 666.526 L213.635 666.526 L213.635 668.517 L201.088 701.086 L196.204 701.086 L208.01 670.461 L191.413 670.461 L191.413 666.526 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M222.801 666.526 L241.158 666.526 L241.158 670.461 L227.084 670.461 L227.084 678.934 Q228.102 678.586 229.121 678.424 Q230.139 678.239 231.158 678.239 Q236.945 678.239 240.324 681.41 Q243.704 684.582 243.704 689.998 Q243.704 695.577 240.232 698.679 Q236.76 701.758 230.44 701.758 Q228.264 701.758 225.996 701.387 Q223.75 701.017 221.343 700.276 L221.343 695.577 Q223.426 696.711 225.648 697.267 Q227.871 697.822 230.347 697.822 Q234.352 697.822 236.69 695.716 Q239.028 693.609 239.028 689.998 Q239.028 686.387 236.69 684.281 Q234.352 682.174 230.347 682.174 Q228.473 682.174 226.598 682.591 Q224.746 683.008 222.801 683.887 L222.801 666.526 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M126.205 436.128 Q122.593 436.128 120.765 439.692 Q118.959 443.234 118.959 450.364 Q118.959 457.47 120.765 461.035 Q122.593 464.577 126.205 464.577 Q129.839 464.577 131.644 461.035 Q133.473 457.47 133.473 450.364 Q133.473 443.234 131.644 439.692 Q129.839 436.128 126.205 436.128 M126.205 432.424 Q132.015 432.424 135.07 437.03 Q138.149 441.614 138.149 450.364 Q138.149 459.09 135.07 463.697 Q132.015 468.28 126.205 468.28 Q120.394 468.28 117.316 463.697 Q114.26 459.09 114.26 450.364 Q114.26 441.614 117.316 437.03 Q120.394 432.424 126.205 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M146.366 461.729 L151.251 461.729 L151.251 467.609 L146.366 467.609 L146.366 461.729 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M162.246 463.674 L169.885 463.674 L169.885 437.308 L161.575 438.975 L161.575 434.716 L169.839 433.049 L174.514 433.049 L174.514 463.674 L182.153 463.674 L182.153 467.609 L162.246 467.609 L162.246 463.674 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M201.598 436.128 Q197.987 436.128 196.158 439.692 Q194.352 443.234 194.352 450.364 Q194.352 457.47 196.158 461.035 Q197.987 464.577 201.598 464.577 Q205.232 464.577 207.037 461.035 Q208.866 457.47 208.866 450.364 Q208.866 443.234 207.037 439.692 Q205.232 436.128 201.598 436.128 M201.598 432.424 Q207.408 432.424 210.463 437.03 Q213.542 441.614 213.542 450.364 Q213.542 459.09 210.463 463.697 Q207.408 468.28 201.598 468.28 Q195.787 468.28 192.709 463.697 Q189.653 459.09 189.653 450.364 Q189.653 441.614 192.709 437.03 Q195.787 432.424 201.598 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M231.76 436.128 Q228.148 436.128 226.32 439.692 Q224.514 443.234 224.514 450.364 Q224.514 457.47 226.32 461.035 Q228.148 464.577 231.76 464.577 Q235.394 464.577 237.199 461.035 Q239.028 457.47 239.028 450.364 Q239.028 443.234 237.199 439.692 Q235.394 436.128 231.76 436.128 M231.76 432.424 Q237.57 432.424 240.625 437.03 Q243.704 441.614 243.704 450.364 Q243.704 459.09 240.625 463.697 Q237.57 468.28 231.76 468.28 Q225.949 468.28 222.871 463.697 Q219.815 459.09 219.815 450.364 Q219.815 441.614 222.871 437.03 Q225.949 432.424 231.76 432.424 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M127.2 202.65 Q123.589 202.65 121.76 206.215 Q119.955 209.757 119.955 216.886 Q119.955 223.993 121.76 227.558 Q123.589 231.099 127.2 231.099 Q130.834 231.099 132.64 227.558 Q134.468 223.993 134.468 216.886 Q134.468 209.757 132.64 206.215 Q130.834 202.65 127.2 202.65 M127.2 198.947 Q133.01 198.947 136.066 203.553 Q139.144 208.136 139.144 216.886 Q139.144 225.613 136.066 230.22 Q133.01 234.803 127.2 234.803 Q121.39 234.803 118.311 230.22 Q115.256 225.613 115.256 216.886 Q115.256 208.136 118.311 203.553 Q121.39 198.947 127.2 198.947 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M147.362 228.252 L152.246 228.252 L152.246 234.132 L147.362 234.132 L147.362 228.252 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M163.241 230.196 L170.88 230.196 L170.88 203.831 L162.57 205.497 L162.57 201.238 L170.834 199.572 L175.51 199.572 L175.51 230.196 L183.149 230.196 L183.149 234.132 L163.241 234.132 L163.241 230.196 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M196.621 230.196 L212.94 230.196 L212.94 234.132 L190.996 234.132 L190.996 230.196 Q193.658 227.442 198.241 222.812 Q202.848 218.159 204.028 216.817 Q206.274 214.294 207.153 212.558 Q208.056 210.798 208.056 209.109 Q208.056 206.354 206.112 204.618 Q204.19 202.882 201.088 202.882 Q198.889 202.882 196.436 203.646 Q194.005 204.41 191.227 205.96 L191.227 201.238 Q194.051 200.104 196.505 199.525 Q198.959 198.947 200.996 198.947 Q206.366 198.947 209.561 201.632 Q212.755 204.317 212.755 208.808 Q212.755 210.937 211.945 212.859 Q211.158 214.757 209.051 217.349 Q208.473 218.021 205.371 221.238 Q202.269 224.433 196.621 230.196 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M222.801 199.572 L241.158 199.572 L241.158 203.507 L227.084 203.507 L227.084 211.979 Q228.102 211.632 229.121 211.47 Q230.139 211.284 231.158 211.284 Q236.945 211.284 240.324 214.456 Q243.704 217.627 243.704 223.044 Q243.704 228.622 240.232 231.724 Q236.76 234.803 230.44 234.803 Q228.264 234.803 225.996 234.433 Q223.75 234.062 221.343 233.321 L221.343 228.622 Q223.426 229.757 225.648 230.312 Q227.871 230.868 230.347 230.868 Q234.352 230.868 236.69 228.761 Q239.028 226.655 239.028 223.044 Q239.028 219.433 236.69 217.326 Q234.352 215.22 230.347 215.22 Q228.473 215.22 226.598 215.636 Q224.746 216.053 222.801 216.933 L222.801 199.572 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M49.9359 990.954 L28.3562 990.954 L28.3562 985.098 L49.7131 985.098 Q54.7739 985.098 57.3202 983.124 Q59.8346 981.151 59.8346 977.204 Q59.8346 972.462 56.8109 969.725 Q53.7872 966.956 48.5673 966.956 L28.3562 966.956 L28.3562 961.099 L64.0042 961.099 L64.0042 966.956 L58.5296 966.956 Q61.7762 969.088 63.3676 971.921 Q64.9272 974.722 64.9272 978.446 Q64.9272 984.589 61.1078 987.771 Q57.2883 990.954 49.9359 990.954 M27.4968 976.218 L27.4968 976.218 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M14.5426 914.247 Q21.8632 918.512 29.0246 920.581 Q36.186 922.65 43.5384 922.65 Q50.8908 922.65 58.1159 920.581 Q65.3091 918.481 72.5979 914.247 L72.5979 919.34 Q65.1182 924.114 57.8931 926.501 Q50.668 928.857 43.5384 928.857 Q36.4406 928.857 29.2474 926.501 Q22.0542 924.146 14.5426 919.34 L14.5426 914.247 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M18.2347 897.092 L28.3562 897.092 L28.3562 885.029 L32.9077 885.029 L32.9077 897.092 L52.2594 897.092 Q56.6199 897.092 57.8613 895.914 Q59.1026 894.705 59.1026 891.044 L59.1026 885.029 L64.0042 885.029 L64.0042 891.044 Q64.0042 897.824 61.4897 900.402 Q58.9434 902.98 52.2594 902.98 L32.9077 902.98 L32.9077 907.277 L28.3562 907.277 L28.3562 902.98 L18.2347 902.98 L18.2347 897.092 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M44.7161 846.835 L47.5806 846.835 L47.5806 873.762 Q53.6281 873.38 56.8109 870.133 Q59.9619 866.855 59.9619 861.03 Q59.9619 857.656 59.1344 854.505 Q58.3069 851.322 56.6518 848.203 L62.1899 848.203 Q63.5267 851.354 64.227 854.664 Q64.9272 857.975 64.9272 861.38 Q64.9272 869.91 59.9619 874.907 Q54.9967 879.873 46.5303 879.873 Q37.7774 879.873 32.6531 875.162 Q27.4968 870.42 27.4968 862.399 Q27.4968 855.206 32.1438 851.036 Q36.7589 846.835 44.7161 846.835 M42.9973 852.691 Q38.1912 852.755 35.3266 855.397 Q32.4621 858.006 32.4621 862.335 Q32.4621 867.237 35.2312 870.197 Q38.0002 873.125 43.0292 873.571 L42.9973 852.691 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M35.1993 809.468 Q31.2526 807.272 29.3747 804.216 Q27.4968 801.161 27.4968 797.023 Q27.4968 791.453 31.4117 788.429 Q35.2948 785.406 42.4881 785.406 L64.0042 785.406 L64.0042 791.294 L42.679 791.294 Q37.5546 791.294 35.072 793.108 Q32.5894 794.922 32.5894 798.646 Q32.5894 803.198 35.6131 805.839 Q38.6368 808.481 43.8567 808.481 L64.0042 808.481 L64.0042 814.37 L42.679 814.37 Q37.5228 814.37 35.072 816.184 Q32.5894 817.998 32.5894 821.786 Q32.5894 826.273 35.6449 828.915 Q38.6686 831.557 43.8567 831.557 L64.0042 831.557 L64.0042 837.445 L28.3562 837.445 L28.3562 831.557 L33.8944 831.557 Q30.616 829.552 29.0564 826.751 Q27.4968 823.95 27.4968 820.099 Q27.4968 816.216 29.4702 813.51 Q31.4436 810.773 35.1993 809.468 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M58.657 768.059 L77.5631 768.059 L77.5631 773.947 L28.3562 773.947 L28.3562 768.059 L33.7671 768.059 Q30.5842 766.213 29.0564 763.412 Q27.4968 760.579 27.4968 756.664 Q27.4968 750.171 32.6531 746.129 Q37.8093 742.055 46.212 742.055 Q54.6147 742.055 59.771 746.129 Q64.9272 750.171 64.9272 756.664 Q64.9272 760.579 63.3994 763.412 Q61.8398 766.213 58.657 768.059 M46.212 748.134 Q39.7508 748.134 36.0905 750.808 Q32.3984 753.45 32.3984 758.097 Q32.3984 762.744 36.0905 765.417 Q39.7508 768.059 46.212 768.059 Q52.6732 768.059 56.3653 765.417 Q60.0256 762.744 60.0256 758.097 Q60.0256 753.45 56.3653 750.808 Q52.6732 748.134 46.212 748.134 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M44.7161 701.856 L47.5806 701.856 L47.5806 728.783 Q53.6281 728.401 56.8109 725.154 Q59.9619 721.876 59.9619 716.051 Q59.9619 712.677 59.1344 709.526 Q58.3069 706.343 56.6518 703.224 L62.1899 703.224 Q63.5267 706.375 64.227 709.685 Q64.9272 712.996 64.9272 716.401 Q64.9272 724.931 59.9619 729.928 Q54.9967 734.894 46.5303 734.894 Q37.7774 734.894 32.6531 730.183 Q27.4968 725.441 27.4968 717.42 Q27.4968 710.227 32.1438 706.057 Q36.7589 701.856 44.7161 701.856 M42.9973 707.712 Q38.1912 707.776 35.3266 710.418 Q32.4621 713.027 32.4621 717.356 Q32.4621 722.258 35.2312 725.218 Q38.0002 728.146 43.0292 728.592 L42.9973 707.712 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M33.8307 671.587 Q33.2578 672.573 33.0032 673.751 Q32.7167 674.897 32.7167 676.297 Q32.7167 681.263 35.9632 683.936 Q39.1779 686.578 45.2253 686.578 L64.0042 686.578 L64.0042 692.466 L28.3562 692.466 L28.3562 686.578 L33.8944 686.578 Q30.6479 684.732 29.0883 681.772 Q27.4968 678.812 27.4968 674.579 Q27.4968 673.974 27.5923 673.242 Q27.656 672.51 27.8151 671.619 L33.8307 671.587 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M46.0847 649.243 Q46.0847 656.341 47.7079 659.078 Q49.3312 661.815 53.2461 661.815 Q56.3653 661.815 58.2114 659.778 Q60.0256 657.709 60.0256 654.177 Q60.0256 649.307 56.5881 646.379 Q53.1188 643.418 47.3897 643.418 L46.0847 643.418 L46.0847 649.243 M43.6657 637.562 L64.0042 637.562 L64.0042 643.418 L58.5933 643.418 Q61.8398 645.424 63.3994 648.416 Q64.9272 651.407 64.9272 655.736 Q64.9272 661.211 61.8716 664.457 Q58.7843 667.672 53.6281 667.672 Q47.6125 667.672 44.5569 663.661 Q41.5014 659.619 41.5014 651.63 L41.5014 643.418 L40.9285 643.418 Q36.8862 643.418 34.6901 646.092 Q32.4621 648.734 32.4621 653.54 Q32.4621 656.595 33.1941 659.492 Q33.9262 662.388 35.3903 665.062 L29.9795 665.062 Q28.7381 661.847 28.1334 658.823 Q27.4968 655.8 27.4968 652.935 Q27.4968 645.201 31.5072 641.381 Q35.5176 637.562 43.6657 637.562 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M18.2347 619.706 L28.3562 619.706 L28.3562 607.643 L32.9077 607.643 L32.9077 619.706 L52.2594 619.706 Q56.6199 619.706 57.8613 618.529 Q59.1026 617.319 59.1026 613.659 L59.1026 607.643 L64.0042 607.643 L64.0042 613.659 Q64.0042 620.438 61.4897 623.016 Q58.9434 625.595 52.2594 625.595 L32.9077 625.595 L32.9077 629.891 L28.3562 629.891 L28.3562 625.595 L18.2347 625.595 L18.2347 619.706 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M49.9359 600.545 L28.3562 600.545 L28.3562 594.689 L49.7131 594.689 Q54.7739 594.689 57.3202 592.716 Q59.8346 590.742 59.8346 586.796 Q59.8346 582.053 56.8109 579.316 Q53.7872 576.547 48.5673 576.547 L28.3562 576.547 L28.3562 570.69 L64.0042 570.69 L64.0042 576.547 L58.5296 576.547 Q61.7762 578.679 63.3676 581.512 Q64.9272 584.313 64.9272 588.037 Q64.9272 594.18 61.1078 597.363 Q57.2883 600.545 49.9359 600.545 M27.4968 585.809 L27.4968 585.809 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M33.8307 537.971 Q33.2578 538.957 33.0032 540.135 Q32.7167 541.281 32.7167 542.681 Q32.7167 547.646 35.9632 550.32 Q39.1779 552.962 45.2253 552.962 L64.0042 552.962 L64.0042 558.85 L28.3562 558.85 L28.3562 552.962 L33.8944 552.962 Q30.6479 551.116 29.0883 548.156 Q27.4968 545.196 27.4968 540.962 Q27.4968 540.358 27.5923 539.626 Q27.656 538.894 27.8151 538.002 L33.8307 537.971 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M44.7161 502.768 L47.5806 502.768 L47.5806 529.695 Q53.6281 529.313 56.8109 526.067 Q59.9619 522.788 59.9619 516.964 Q59.9619 513.59 59.1344 510.439 Q58.3069 507.256 56.6518 504.137 L62.1899 504.137 Q63.5267 507.288 64.227 510.598 Q64.9272 513.908 64.9272 517.314 Q64.9272 525.844 59.9619 530.841 Q54.9967 535.806 46.5303 535.806 Q37.7774 535.806 32.6531 531.096 Q27.4968 526.353 27.4968 518.332 Q27.4968 511.139 32.1438 506.97 Q36.7589 502.768 44.7161 502.768 M42.9973 508.625 Q38.1912 508.688 35.3266 511.33 Q32.4621 513.94 32.4621 518.269 Q32.4621 523.17 35.2312 526.13 Q38.0002 529.059 43.0292 529.504 L42.9973 508.625 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip540)\" d=\"M14.5426 494.079 L14.5426 488.986 Q22.0542 484.212 29.2474 481.857 Q36.4406 479.47 43.5384 479.47 Q50.668 479.47 57.8931 481.857 Q65.1182 484.212 72.5979 488.986 L72.5979 494.079 Q65.3091 489.846 58.1159 487.777 Q50.8908 485.676 43.5384 485.676 Q36.186 485.676 29.0246 487.777 Q21.8632 489.846 14.5426 494.079 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip542)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"338.375,1384.24 357.932,1319.8 377.489,1255.35 397.046,1190.91 416.604,1126.47 436.161,1062.03 455.718,1011.9 475.275,961.77 494.832,911.642 514.389,861.515 533.946,811.387 553.503,772.017 573.06,732.648 592.617,693.279 612.175,653.909 631.732,614.54 651.289,583.444 670.846,552.349 690.403,521.254 709.96,490.158 729.517,459.063 749.074,434.627 768.631,410.192 788.188,385.756 807.745,361.32 827.303,336.885 846.86,318.026 866.417,299.168 885.974,280.31 905.531,261.452 925.088,242.594 944.645,228.572 964.202,214.55 983.759,200.528 1003.32,186.505 1022.87,172.483 1042.43,162.792 1061.99,153.1 1081.54,143.408 1101.1,133.717 1120.66,124.025 1140.22,118.334 1159.77,112.643 1179.33,106.952 1198.89,101.261 1218.44,95.5699 1238,93.693 1257.56,91.8162 1277.12,89.9394 1296.67,88.0625 1316.23,86.1857 1335.79,88.0625 1355.34,89.9394 1374.9,91.8162 1394.46,93.693 1414.02,95.5699 1433.57,101.261 1453.13,106.952 1472.69,112.643 1492.24,118.334 1511.8,124.025 1531.36,133.717 1550.92,143.408 1570.47,153.1 1590.03,162.792 1609.59,172.483 1629.14,186.505 1648.7,200.528 1668.26,214.55 1687.81,228.572 1707.37,242.594 1726.93,261.452 1746.49,280.31 1766.04,299.168 1785.6,318.026 1805.16,336.885 1824.71,361.32 1844.27,385.756 1863.83,410.192 1883.39,434.627 1902.94,459.063 1922.5,490.158 1942.06,521.254 1961.61,552.349 1981.17,583.444 2000.73,614.54 2020.29,653.909 2039.84,693.279 2059.4,732.648 2078.96,772.017 2098.51,811.387 2118.07,861.515 2137.63,911.642 2157.18,961.77 2176.74,1011.9 2196.3,1062.03 2215.86,1126.47 2235.41,1190.91 2254.97,1255.35 2274.53,1319.8 2294.08,1384.24 \"/>\n", "</svg>\n" ] }, @@ -428,98 +428,98 @@ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", "<defs>\n", - " <clipPath id=\"clip020\">\n", + " <clipPath id=\"clip630\">\n", " <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip020)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip630)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip021\">\n", + " <clipPath id=\"clip631\">\n", " <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip020)\" d=\"M256.556 1423.18 L2352.76 1423.18 L2352.76 47.2441 L256.556 47.2441 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip630)\" d=\"M256.556 1423.18 L2352.76 1423.18 L2352.76 47.2441 L256.556 47.2441 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip022\">\n", + " <clipPath id=\"clip632\">\n", " <rect x=\"256\" y=\"47\" width=\"2097\" height=\"1377\"/>\n", " </clipPath>\n", "</defs>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"315.882,1423.18 315.882,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"810.269,1423.18 810.269,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1304.66,1423.18 1304.66,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1799.04,1423.18 1799.04,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2293.43,1423.18 2293.43,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,1272.91 2352.76,1272.91 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,1093.67 2352.76,1093.67 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,914.443 2352.76,914.443 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,735.212 2352.76,735.212 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,555.981 2352.76,555.981 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,376.749 2352.76,376.749 \"/>\n", - "<polyline clip-path=\"url(#clip022)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,197.518 2352.76,197.518 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1423.18 2352.76,1423.18 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"315.882,1423.18 315.882,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"810.269,1423.18 810.269,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1304.66,1423.18 1304.66,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1799.04,1423.18 1799.04,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2293.43,1423.18 2293.43,1404.28 \"/>\n", - "<path clip-path=\"url(#clip020)\" d=\"M262.41 1468.75 L292.086 1468.75 L292.086 1472.69 L262.41 1472.69 L262.41 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M302.989 1481.64 L310.628 1481.64 L310.628 1455.28 L302.318 1456.95 L302.318 1452.69 L310.581 1451.02 L315.257 1451.02 L315.257 1481.64 L322.896 1481.64 L322.896 1485.58 L302.989 1485.58 L302.989 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M332.341 1479.7 L337.225 1479.7 L337.225 1485.58 L332.341 1485.58 L332.341 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M357.41 1454.1 Q353.799 1454.1 351.97 1457.66 Q350.165 1461.2 350.165 1468.33 Q350.165 1475.44 351.97 1479.01 Q353.799 1482.55 357.41 1482.55 Q361.044 1482.55 362.85 1479.01 Q364.678 1475.44 364.678 1468.33 Q364.678 1461.2 362.85 1457.66 Q361.044 1454.1 357.41 1454.1 M357.41 1450.39 Q363.22 1450.39 366.276 1455 Q369.354 1459.58 369.354 1468.33 Q369.354 1477.06 366.276 1481.67 Q363.22 1486.25 357.41 1486.25 Q351.6 1486.25 348.521 1481.67 Q345.465 1477.06 345.465 1468.33 Q345.465 1459.58 348.521 1455 Q351.6 1450.39 357.41 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M757.295 1468.75 L786.971 1468.75 L786.971 1472.69 L757.295 1472.69 L757.295 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M807.063 1454.1 Q803.452 1454.1 801.623 1457.66 Q799.818 1461.2 799.818 1468.33 Q799.818 1475.44 801.623 1479.01 Q803.452 1482.55 807.063 1482.55 Q810.697 1482.55 812.503 1479.01 Q814.332 1475.44 814.332 1468.33 Q814.332 1461.2 812.503 1457.66 Q810.697 1454.1 807.063 1454.1 M807.063 1450.39 Q812.873 1450.39 815.929 1455 Q819.007 1459.58 819.007 1468.33 Q819.007 1477.06 815.929 1481.67 Q812.873 1486.25 807.063 1486.25 Q801.253 1486.25 798.174 1481.67 Q795.119 1477.06 795.119 1468.33 Q795.119 1459.58 798.174 1455 Q801.253 1450.39 807.063 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M827.225 1479.7 L832.109 1479.7 L832.109 1485.58 L827.225 1485.58 L827.225 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M842.341 1451.02 L860.697 1451.02 L860.697 1454.96 L846.623 1454.96 L846.623 1463.43 Q847.642 1463.08 848.66 1462.92 Q849.679 1462.73 850.697 1462.73 Q856.484 1462.73 859.864 1465.9 Q863.243 1469.08 863.243 1474.49 Q863.243 1480.07 859.771 1483.17 Q856.299 1486.25 849.98 1486.25 Q847.804 1486.25 845.535 1485.88 Q843.29 1485.51 840.882 1484.77 L840.882 1480.07 Q842.966 1481.2 845.188 1481.76 Q847.41 1482.32 849.887 1482.32 Q853.892 1482.32 856.229 1480.21 Q858.567 1478.1 858.567 1474.49 Q858.567 1470.88 856.229 1468.77 Q853.892 1466.67 849.887 1466.67 Q848.012 1466.67 846.137 1467.08 Q844.285 1467.5 842.341 1468.38 L842.341 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1282.04 1454.1 Q1278.43 1454.1 1276.6 1457.66 Q1274.79 1461.2 1274.79 1468.33 Q1274.79 1475.44 1276.6 1479.01 Q1278.43 1482.55 1282.04 1482.55 Q1285.67 1482.55 1287.48 1479.01 Q1289.31 1475.44 1289.31 1468.33 Q1289.31 1461.2 1287.48 1457.66 Q1285.67 1454.1 1282.04 1454.1 M1282.04 1450.39 Q1287.85 1450.39 1290.91 1455 Q1293.98 1459.58 1293.98 1468.33 Q1293.98 1477.06 1290.91 1481.67 Q1287.85 1486.25 1282.04 1486.25 Q1276.23 1486.25 1273.15 1481.67 Q1270.1 1477.06 1270.1 1468.33 Q1270.1 1459.58 1273.15 1455 Q1276.23 1450.39 1282.04 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1302.2 1479.7 L1307.09 1479.7 L1307.09 1485.58 L1302.2 1485.58 L1302.2 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1327.27 1454.1 Q1323.66 1454.1 1321.83 1457.66 Q1320.03 1461.2 1320.03 1468.33 Q1320.03 1475.44 1321.83 1479.01 Q1323.66 1482.55 1327.27 1482.55 Q1330.91 1482.55 1332.71 1479.01 Q1334.54 1475.44 1334.54 1468.33 Q1334.54 1461.2 1332.71 1457.66 Q1330.91 1454.1 1327.27 1454.1 M1327.27 1450.39 Q1333.08 1450.39 1336.14 1455 Q1339.22 1459.58 1339.22 1468.33 Q1339.22 1477.06 1336.14 1481.67 Q1333.08 1486.25 1327.27 1486.25 Q1321.46 1486.25 1318.38 1481.67 Q1315.33 1477.06 1315.33 1468.33 Q1315.33 1459.58 1318.38 1455 Q1321.46 1450.39 1327.27 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1776.92 1454.1 Q1773.31 1454.1 1771.48 1457.66 Q1769.68 1461.2 1769.68 1468.33 Q1769.68 1475.44 1771.48 1479.01 Q1773.31 1482.55 1776.92 1482.55 Q1780.56 1482.55 1782.36 1479.01 Q1784.19 1475.44 1784.19 1468.33 Q1784.19 1461.2 1782.36 1457.66 Q1780.56 1454.1 1776.92 1454.1 M1776.92 1450.39 Q1782.73 1450.39 1785.79 1455 Q1788.87 1459.58 1788.87 1468.33 Q1788.87 1477.06 1785.79 1481.67 Q1782.73 1486.25 1776.92 1486.25 Q1771.11 1486.25 1768.04 1481.67 Q1764.98 1477.06 1764.98 1468.33 Q1764.98 1459.58 1768.04 1455 Q1771.11 1450.39 1776.92 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1797.09 1479.7 L1801.97 1479.7 L1801.97 1485.58 L1797.09 1485.58 L1797.09 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1812.2 1451.02 L1830.56 1451.02 L1830.56 1454.96 L1816.48 1454.96 L1816.48 1463.43 Q1817.5 1463.08 1818.52 1462.92 Q1819.54 1462.73 1820.56 1462.73 Q1826.35 1462.73 1829.73 1465.9 Q1833.11 1469.08 1833.11 1474.49 Q1833.11 1480.07 1829.63 1483.17 Q1826.16 1486.25 1819.84 1486.25 Q1817.67 1486.25 1815.4 1485.88 Q1813.15 1485.51 1810.74 1484.77 L1810.74 1480.07 Q1812.83 1481.2 1815.05 1481.76 Q1817.27 1482.32 1819.75 1482.32 Q1823.75 1482.32 1826.09 1480.21 Q1828.43 1478.1 1828.43 1474.49 Q1828.43 1470.88 1826.09 1468.77 Q1823.75 1466.67 1819.75 1466.67 Q1817.87 1466.67 1816 1467.08 Q1814.15 1467.5 1812.2 1468.38 L1812.2 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M2260.58 1481.64 L2268.22 1481.64 L2268.22 1455.28 L2259.91 1456.95 L2259.91 1452.69 L2268.17 1451.02 L2272.85 1451.02 L2272.85 1481.64 L2280.49 1481.64 L2280.49 1485.58 L2260.58 1485.58 L2260.58 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M2289.93 1479.7 L2294.82 1479.7 L2294.82 1485.58 L2289.93 1485.58 L2289.93 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M2315 1454.1 Q2311.39 1454.1 2309.56 1457.66 Q2307.76 1461.2 2307.76 1468.33 Q2307.76 1475.44 2309.56 1479.01 Q2311.39 1482.55 2315 1482.55 Q2318.64 1482.55 2320.44 1479.01 Q2322.27 1475.44 2322.27 1468.33 Q2322.27 1461.2 2320.44 1457.66 Q2318.64 1454.1 2315 1454.1 M2315 1450.39 Q2320.81 1450.39 2323.87 1455 Q2326.95 1459.58 2326.95 1468.33 Q2326.95 1477.06 2323.87 1481.67 Q2320.81 1486.25 2315 1486.25 Q2309.19 1486.25 2306.11 1481.67 Q2303.06 1477.06 2303.06 1468.33 Q2303.06 1459.58 2306.11 1455 Q2309.19 1450.39 2315 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1113.38 1532.4 L1100.49 1549.74 L1114.05 1568.04 L1107.14 1568.04 L1096.77 1554.04 L1086.39 1568.04 L1079.48 1568.04 L1093.33 1549.39 L1080.66 1532.4 L1087.57 1532.4 L1097.02 1545.1 L1106.48 1532.4 L1113.38 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1157.11 1518.58 Q1152.85 1525.9 1150.78 1533.06 Q1148.71 1540.23 1148.71 1547.58 Q1148.71 1554.93 1150.78 1562.16 Q1152.88 1569.35 1157.11 1576.64 L1152.02 1576.64 Q1147.25 1569.16 1144.86 1561.93 Q1142.51 1554.71 1142.51 1547.58 Q1142.51 1540.48 1144.86 1533.29 Q1147.22 1526.09 1152.02 1518.58 L1157.11 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1194.13 1533.76 L1194.13 1539.24 Q1191.65 1537.87 1189.13 1537.2 Q1186.65 1536.5 1184.11 1536.5 Q1178.41 1536.5 1175.26 1540.13 Q1172.11 1543.73 1172.11 1550.25 Q1172.11 1556.78 1175.26 1560.4 Q1178.41 1564 1184.11 1564 Q1186.65 1564 1189.13 1563.33 Q1191.65 1562.63 1194.13 1561.26 L1194.13 1566.68 Q1191.68 1567.82 1189.04 1568.39 Q1186.43 1568.97 1183.47 1568.97 Q1175.42 1568.97 1170.67 1563.91 Q1165.93 1558.85 1165.93 1550.25 Q1165.93 1541.53 1170.71 1536.53 Q1175.51 1531.54 1183.85 1531.54 Q1186.56 1531.54 1189.13 1532.11 Q1191.71 1532.65 1194.13 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1218.13 1536.5 Q1213.42 1536.5 1210.68 1540.19 Q1207.94 1543.85 1207.94 1550.25 Q1207.94 1556.65 1210.65 1560.34 Q1213.39 1564 1218.13 1564 Q1222.81 1564 1225.55 1560.31 Q1228.28 1556.62 1228.28 1550.25 Q1228.28 1543.92 1225.55 1540.23 Q1222.81 1536.5 1218.13 1536.5 M1218.13 1531.54 Q1225.77 1531.54 1230.13 1536.5 Q1234.49 1541.47 1234.49 1550.25 Q1234.49 1559 1230.13 1564 Q1225.77 1568.97 1218.13 1568.97 Q1210.46 1568.97 1206.1 1564 Q1201.77 1559 1201.77 1550.25 Q1201.77 1541.47 1206.1 1536.5 Q1210.46 1531.54 1218.13 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1258.01 1536.5 Q1253.3 1536.5 1250.56 1540.19 Q1247.83 1543.85 1247.83 1550.25 Q1247.83 1556.65 1250.53 1560.34 Q1253.27 1564 1258.01 1564 Q1262.69 1564 1265.43 1560.31 Q1268.16 1556.62 1268.16 1550.25 Q1268.16 1543.92 1265.43 1540.23 Q1262.69 1536.5 1258.01 1536.5 M1258.01 1531.54 Q1265.65 1531.54 1270.01 1536.5 Q1274.37 1541.47 1274.37 1550.25 Q1274.37 1559 1270.01 1564 Q1265.65 1568.97 1258.01 1568.97 Q1250.34 1568.97 1245.98 1564 Q1241.65 1559 1241.65 1550.25 Q1241.65 1541.47 1245.98 1536.5 Q1250.34 1531.54 1258.01 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1304.74 1537.87 Q1303.75 1537.3 1302.57 1537.04 Q1301.43 1536.76 1300.02 1536.76 Q1295.06 1536.76 1292.39 1540 Q1289.74 1543.22 1289.74 1549.27 L1289.74 1568.04 L1283.86 1568.04 L1283.86 1532.4 L1289.74 1532.4 L1289.74 1537.93 Q1291.59 1534.69 1294.55 1533.13 Q1297.51 1531.54 1301.74 1531.54 Q1302.35 1531.54 1303.08 1531.63 Q1303.81 1531.7 1304.7 1531.85 L1304.74 1537.87 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1333.19 1537.81 L1333.19 1518.52 L1339.05 1518.52 L1339.05 1568.04 L1333.19 1568.04 L1333.19 1562.7 Q1331.34 1565.88 1328.51 1567.44 Q1325.71 1568.97 1321.76 1568.97 Q1315.3 1568.97 1311.23 1563.81 Q1307.19 1558.65 1307.19 1550.25 Q1307.19 1541.85 1311.23 1536.69 Q1315.3 1531.54 1321.76 1531.54 Q1325.71 1531.54 1328.51 1533.1 Q1331.34 1534.62 1333.19 1537.81 M1313.23 1550.25 Q1313.23 1556.71 1315.88 1560.4 Q1318.55 1564.07 1323.2 1564.07 Q1327.84 1564.07 1330.52 1560.4 Q1333.19 1556.71 1333.19 1550.25 Q1333.19 1543.79 1330.52 1540.13 Q1327.84 1536.44 1323.2 1536.44 Q1318.55 1536.44 1315.88 1540.13 Q1313.23 1543.79 1313.23 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1351.11 1532.4 L1356.97 1532.4 L1356.97 1568.04 L1351.11 1568.04 L1351.11 1532.4 M1351.11 1518.52 L1356.97 1518.52 L1356.97 1525.93 L1351.11 1525.93 L1351.11 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1398.85 1546.53 L1398.85 1568.04 L1393 1568.04 L1393 1546.72 Q1393 1541.66 1391.02 1539.14 Q1389.05 1536.63 1385.1 1536.63 Q1380.36 1536.63 1377.62 1539.65 Q1374.89 1542.68 1374.89 1547.9 L1374.89 1568.04 L1369 1568.04 L1369 1532.4 L1374.89 1532.4 L1374.89 1537.93 Q1376.99 1534.72 1379.82 1533.13 Q1382.68 1531.54 1386.41 1531.54 Q1392.55 1531.54 1395.7 1535.36 Q1398.85 1539.14 1398.85 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1426.73 1550.12 Q1419.64 1550.12 1416.9 1551.75 Q1414.16 1553.37 1414.16 1557.29 Q1414.16 1560.4 1416.2 1562.25 Q1418.27 1564.07 1421.8 1564.07 Q1426.67 1564.07 1429.6 1560.63 Q1432.56 1557.16 1432.56 1551.43 L1432.56 1550.12 L1426.73 1550.12 M1438.42 1547.71 L1438.42 1568.04 L1432.56 1568.04 L1432.56 1562.63 Q1430.55 1565.88 1427.56 1567.44 Q1424.57 1568.97 1420.24 1568.97 Q1414.77 1568.97 1411.52 1565.91 Q1408.31 1562.82 1408.31 1557.67 Q1408.31 1551.65 1412.32 1548.6 Q1416.36 1545.54 1424.35 1545.54 L1432.56 1545.54 L1432.56 1544.97 Q1432.56 1540.93 1429.89 1538.73 Q1427.24 1536.5 1422.44 1536.5 Q1419.38 1536.5 1416.49 1537.23 Q1413.59 1537.97 1410.92 1539.43 L1410.92 1534.02 Q1414.13 1532.78 1417.15 1532.17 Q1420.18 1531.54 1423.04 1531.54 Q1430.78 1531.54 1434.6 1535.55 Q1438.42 1539.56 1438.42 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1456.27 1522.27 L1456.27 1532.4 L1468.33 1532.4 L1468.33 1536.95 L1456.27 1536.95 L1456.27 1556.3 Q1456.27 1560.66 1457.45 1561.9 Q1458.66 1563.14 1462.32 1563.14 L1468.33 1563.14 L1468.33 1568.04 L1462.32 1568.04 Q1455.54 1568.04 1452.96 1565.53 Q1450.38 1562.98 1450.38 1556.3 L1450.38 1536.95 L1446.09 1536.95 L1446.09 1532.4 L1450.38 1532.4 L1450.38 1522.27 L1456.27 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1506.53 1548.76 L1506.53 1551.62 L1479.6 1551.62 Q1479.98 1557.67 1483.23 1560.85 Q1486.51 1564 1492.33 1564 Q1495.71 1564 1498.86 1563.17 Q1502.04 1562.35 1505.16 1560.69 L1505.16 1566.23 Q1502.01 1567.57 1498.7 1568.27 Q1495.39 1568.97 1491.98 1568.97 Q1483.45 1568.97 1478.46 1564 Q1473.49 1559.04 1473.49 1550.57 Q1473.49 1541.82 1478.2 1536.69 Q1482.94 1531.54 1490.96 1531.54 Q1498.16 1531.54 1502.33 1536.18 Q1506.53 1540.8 1506.53 1548.76 M1500.67 1547.04 Q1500.61 1542.23 1497.97 1539.37 Q1495.36 1536.5 1491.03 1536.5 Q1486.13 1536.5 1483.17 1539.27 Q1480.24 1542.04 1479.79 1547.07 L1500.67 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M1515.22 1518.58 L1520.31 1518.58 Q1525.08 1526.09 1527.44 1533.29 Q1529.83 1540.48 1529.83 1547.58 Q1529.83 1554.71 1527.44 1561.93 Q1525.08 1569.16 1520.31 1576.64 L1515.22 1576.64 Q1519.45 1569.35 1521.52 1562.16 Q1523.62 1554.93 1523.62 1547.58 Q1523.62 1540.23 1521.52 1533.06 Q1519.45 1525.9 1515.22 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1423.18 256.556,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1272.91 275.454,1272.91 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1093.67 275.454,1093.67 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,914.443 275.454,914.443 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,735.212 275.454,735.212 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,555.981 275.454,555.981 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,376.749 275.454,376.749 \"/>\n", - "<polyline clip-path=\"url(#clip020)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,197.518 275.454,197.518 \"/>\n", - "<path clip-path=\"url(#clip020)\" d=\"M114.26 1273.36 L143.936 1273.36 L143.936 1277.29 L114.26 1277.29 L114.26 1273.36 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M164.028 1258.7 Q160.417 1258.7 158.589 1262.27 Q156.783 1265.81 156.783 1272.94 Q156.783 1280.05 158.589 1283.61 Q160.417 1287.15 164.028 1287.15 Q167.663 1287.15 169.468 1283.61 Q171.297 1280.05 171.297 1272.94 Q171.297 1265.81 169.468 1262.27 Q167.663 1258.7 164.028 1258.7 M164.028 1255 Q169.839 1255 172.894 1259.61 Q175.973 1264.19 175.973 1272.94 Q175.973 1281.67 172.894 1286.27 Q169.839 1290.86 164.028 1290.86 Q158.218 1290.86 155.14 1286.27 Q152.084 1281.67 152.084 1272.94 Q152.084 1264.19 155.14 1259.61 Q158.218 1255 164.028 1255 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M184.19 1284.31 L189.075 1284.31 L189.075 1290.19 L184.19 1290.19 L184.19 1284.31 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M213.426 1271.55 Q216.783 1272.27 218.658 1274.54 Q220.556 1276.81 220.556 1280.14 Q220.556 1285.26 217.037 1288.06 Q213.519 1290.86 207.037 1290.86 Q204.862 1290.86 202.547 1290.42 Q200.255 1290 197.801 1289.14 L197.801 1284.63 Q199.746 1285.76 202.061 1286.34 Q204.375 1286.92 206.899 1286.92 Q211.297 1286.92 213.588 1285.19 Q215.903 1283.45 215.903 1280.14 Q215.903 1277.08 213.75 1275.37 Q211.621 1273.64 207.801 1273.64 L203.774 1273.64 L203.774 1269.79 L207.987 1269.79 Q211.436 1269.79 213.264 1268.43 Q215.093 1267.04 215.093 1264.45 Q215.093 1261.78 213.195 1260.37 Q211.32 1258.94 207.801 1258.94 Q205.88 1258.94 203.681 1259.35 Q201.482 1259.77 198.843 1260.65 L198.843 1256.48 Q201.505 1255.74 203.82 1255.37 Q206.158 1255 208.218 1255 Q213.542 1255 216.644 1257.43 Q219.746 1259.84 219.746 1263.96 Q219.746 1266.83 218.102 1268.82 Q216.459 1270.79 213.426 1271.55 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M115.209 1094.13 L144.885 1094.13 L144.885 1098.06 L115.209 1098.06 L115.209 1094.13 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M164.977 1079.47 Q161.366 1079.47 159.538 1083.04 Q157.732 1086.58 157.732 1093.71 Q157.732 1100.82 159.538 1104.38 Q161.366 1107.92 164.977 1107.92 Q168.612 1107.92 170.417 1104.38 Q172.246 1100.82 172.246 1093.71 Q172.246 1086.58 170.417 1083.04 Q168.612 1079.47 164.977 1079.47 M164.977 1075.77 Q170.788 1075.77 173.843 1080.38 Q176.922 1084.96 176.922 1093.71 Q176.922 1102.44 173.843 1107.04 Q170.788 1111.63 164.977 1111.63 Q159.167 1111.63 156.089 1107.04 Q153.033 1102.44 153.033 1093.71 Q153.033 1084.96 156.089 1080.38 Q159.167 1075.77 164.977 1075.77 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M185.139 1105.07 L190.024 1105.07 L190.024 1110.95 L185.139 1110.95 L185.139 1105.07 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M204.237 1107.02 L220.556 1107.02 L220.556 1110.95 L198.612 1110.95 L198.612 1107.02 Q201.274 1104.26 205.857 1099.64 Q210.463 1094.98 211.644 1093.64 Q213.889 1091.12 214.769 1089.38 Q215.672 1087.62 215.672 1085.93 Q215.672 1083.18 213.727 1081.44 Q211.806 1079.7 208.704 1079.7 Q206.505 1079.7 204.051 1080.47 Q201.621 1081.23 198.843 1082.78 L198.843 1078.06 Q201.667 1076.93 204.121 1076.35 Q206.574 1075.77 208.612 1075.77 Q213.982 1075.77 217.176 1078.45 Q220.371 1081.14 220.371 1085.63 Q220.371 1087.76 219.561 1089.68 Q218.773 1091.58 216.667 1094.17 Q216.088 1094.84 212.986 1098.06 Q209.885 1101.26 204.237 1107.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M114.839 914.895 L144.515 914.895 L144.515 918.83 L114.839 918.83 L114.839 914.895 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M164.607 900.242 Q160.996 900.242 159.167 903.807 Q157.362 907.348 157.362 914.478 Q157.362 921.584 159.167 925.149 Q160.996 928.691 164.607 928.691 Q168.241 928.691 170.047 925.149 Q171.876 921.584 171.876 914.478 Q171.876 907.348 170.047 903.807 Q168.241 900.242 164.607 900.242 M164.607 896.538 Q170.417 896.538 173.473 901.145 Q176.551 905.728 176.551 914.478 Q176.551 923.205 173.473 927.811 Q170.417 932.395 164.607 932.395 Q158.797 932.395 155.718 927.811 Q152.663 923.205 152.663 914.478 Q152.663 905.728 155.718 901.145 Q158.797 896.538 164.607 896.538 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M184.769 925.844 L189.653 925.844 L189.653 931.723 L184.769 931.723 L184.769 925.844 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M200.649 927.788 L208.287 927.788 L208.287 901.422 L199.977 903.089 L199.977 898.83 L208.241 897.163 L212.917 897.163 L212.917 927.788 L220.556 927.788 L220.556 931.723 L200.649 931.723 L200.649 927.788 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M163.38 721.011 Q159.769 721.011 157.94 724.575 Q156.135 728.117 156.135 735.247 Q156.135 742.353 157.94 745.918 Q159.769 749.46 163.38 749.46 Q167.015 749.46 168.82 745.918 Q170.649 742.353 170.649 735.247 Q170.649 728.117 168.82 724.575 Q167.015 721.011 163.38 721.011 M163.38 717.307 Q169.19 717.307 172.246 721.913 Q175.325 726.497 175.325 735.247 Q175.325 743.973 172.246 748.58 Q169.19 753.163 163.38 753.163 Q157.57 753.163 154.491 748.58 Q151.436 743.973 151.436 735.247 Q151.436 726.497 154.491 721.913 Q157.57 717.307 163.38 717.307 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M183.542 746.612 L188.426 746.612 L188.426 752.492 L183.542 752.492 L183.542 746.612 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M208.612 721.011 Q205 721.011 203.172 724.575 Q201.366 728.117 201.366 735.247 Q201.366 742.353 203.172 745.918 Q205 749.46 208.612 749.46 Q212.246 749.46 214.051 745.918 Q215.88 742.353 215.88 735.247 Q215.88 728.117 214.051 724.575 Q212.246 721.011 208.612 721.011 M208.612 717.307 Q214.422 717.307 217.477 721.913 Q220.556 726.497 220.556 735.247 Q220.556 743.973 217.477 748.58 Q214.422 753.163 208.612 753.163 Q202.801 753.163 199.723 748.58 Q196.667 743.973 196.667 735.247 Q196.667 726.497 199.723 721.913 Q202.801 717.307 208.612 717.307 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M164.607 541.779 Q160.996 541.779 159.167 545.344 Q157.362 548.886 157.362 556.015 Q157.362 563.122 159.167 566.687 Q160.996 570.228 164.607 570.228 Q168.241 570.228 170.047 566.687 Q171.876 563.122 171.876 556.015 Q171.876 548.886 170.047 545.344 Q168.241 541.779 164.607 541.779 M164.607 538.076 Q170.417 538.076 173.473 542.682 Q176.551 547.265 176.551 556.015 Q176.551 564.742 173.473 569.349 Q170.417 573.932 164.607 573.932 Q158.797 573.932 155.718 569.349 Q152.663 564.742 152.663 556.015 Q152.663 547.265 155.718 542.682 Q158.797 538.076 164.607 538.076 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M184.769 567.381 L189.653 567.381 L189.653 573.261 L184.769 573.261 L184.769 567.381 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M200.649 569.326 L208.287 569.326 L208.287 542.96 L199.977 544.627 L199.977 540.367 L208.241 538.701 L212.917 538.701 L212.917 569.326 L220.556 569.326 L220.556 573.261 L200.649 573.261 L200.649 569.326 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M164.977 362.548 Q161.366 362.548 159.538 366.113 Q157.732 369.655 157.732 376.784 Q157.732 383.891 159.538 387.455 Q161.366 390.997 164.977 390.997 Q168.612 390.997 170.417 387.455 Q172.246 383.891 172.246 376.784 Q172.246 369.655 170.417 366.113 Q168.612 362.548 164.977 362.548 M164.977 358.844 Q170.788 358.844 173.843 363.451 Q176.922 368.034 176.922 376.784 Q176.922 385.511 173.843 390.117 Q170.788 394.701 164.977 394.701 Q159.167 394.701 156.089 390.117 Q153.033 385.511 153.033 376.784 Q153.033 368.034 156.089 363.451 Q159.167 358.844 164.977 358.844 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M185.139 388.15 L190.024 388.15 L190.024 394.029 L185.139 394.029 L185.139 388.15 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M204.237 390.094 L220.556 390.094 L220.556 394.029 L198.612 394.029 L198.612 390.094 Q201.274 387.34 205.857 382.71 Q210.463 378.057 211.644 376.715 Q213.889 374.192 214.769 372.455 Q215.672 370.696 215.672 369.006 Q215.672 366.252 213.727 364.516 Q211.806 362.78 208.704 362.78 Q206.505 362.78 204.051 363.543 Q201.621 364.307 198.843 365.858 L198.843 361.136 Q201.667 360.002 204.121 359.423 Q206.574 358.844 208.612 358.844 Q213.982 358.844 217.176 361.53 Q220.371 364.215 220.371 368.705 Q220.371 370.835 219.561 372.756 Q218.773 374.654 216.667 377.247 Q216.088 377.918 212.986 381.136 Q209.885 384.33 204.237 390.094 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M164.028 183.317 Q160.417 183.317 158.589 186.882 Q156.783 190.423 156.783 197.553 Q156.783 204.659 158.589 208.224 Q160.417 211.766 164.028 211.766 Q167.663 211.766 169.468 208.224 Q171.297 204.659 171.297 197.553 Q171.297 190.423 169.468 186.882 Q167.663 183.317 164.028 183.317 M164.028 179.613 Q169.839 179.613 172.894 184.22 Q175.973 188.803 175.973 197.553 Q175.973 206.28 172.894 210.886 Q169.839 215.469 164.028 215.469 Q158.218 215.469 155.14 210.886 Q152.084 206.28 152.084 197.553 Q152.084 188.803 155.14 184.22 Q158.218 179.613 164.028 179.613 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M184.19 208.918 L189.075 208.918 L189.075 214.798 L184.19 214.798 L184.19 208.918 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M213.426 196.164 Q216.783 196.882 218.658 199.15 Q220.556 201.419 220.556 204.752 Q220.556 209.868 217.037 212.668 Q213.519 215.469 207.037 215.469 Q204.862 215.469 202.547 215.03 Q200.255 214.613 197.801 213.756 L197.801 209.243 Q199.746 210.377 202.061 210.956 Q204.375 211.534 206.899 211.534 Q211.297 211.534 213.588 209.798 Q215.903 208.062 215.903 204.752 Q215.903 201.696 213.75 199.983 Q211.621 198.247 207.801 198.247 L203.774 198.247 L203.774 194.405 L207.987 194.405 Q211.436 194.405 213.264 193.039 Q215.093 191.65 215.093 189.057 Q215.093 186.395 213.195 184.983 Q211.32 183.548 207.801 183.548 Q205.88 183.548 203.681 183.965 Q201.482 184.382 198.843 185.261 L198.843 181.095 Q201.505 180.354 203.82 179.983 Q206.158 179.613 208.218 179.613 Q213.542 179.613 216.644 182.044 Q219.746 184.451 219.746 188.571 Q219.746 191.442 218.102 193.432 Q216.459 195.4 213.426 196.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M46.212 1101.42 Q52.6732 1101.42 56.3653 1098.77 Q60.0256 1096.1 60.0256 1091.45 Q60.0256 1086.81 56.3653 1084.13 Q52.6732 1081.46 46.212 1081.46 Q39.7508 1081.46 36.0905 1084.13 Q32.3984 1086.81 32.3984 1091.45 Q32.3984 1096.1 36.0905 1098.77 Q39.7508 1101.42 46.212 1101.42 M58.657 1081.46 Q61.8398 1083.3 63.3994 1086.14 Q64.9272 1088.94 64.9272 1092.89 Q64.9272 1099.35 59.771 1103.42 Q54.6147 1107.46 46.212 1107.46 Q37.8093 1107.46 32.6531 1103.42 Q27.4968 1099.35 27.4968 1092.89 Q27.4968 1088.94 29.0564 1086.14 Q30.5842 1083.3 33.7671 1081.46 L28.3562 1081.46 L28.3562 1075.6 L77.5631 1075.6 L77.5631 1081.46 L58.657 1081.46 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M74.8259 1036.45 L79.3773 1036.45 L79.3773 1070.32 L74.8259 1070.32 L74.8259 1036.45 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M28.3562 1001.31 L45.7028 1014.2 L64.0042 1000.65 L64.0042 1007.55 L49.9996 1017.93 L64.0042 1028.31 L64.0042 1035.21 L45.3526 1021.37 L28.3562 1034.03 L28.3562 1027.13 L41.0558 1017.67 L28.3562 1008.22 L28.3562 1001.31 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M14.5426 957.582 Q21.8632 961.847 29.0246 963.916 Q36.186 965.985 43.5384 965.985 Q50.8908 965.985 58.1159 963.916 Q65.3091 961.815 72.5979 957.582 L72.5979 962.675 Q65.1182 967.449 57.8931 969.836 Q50.668 972.191 43.5384 972.191 Q36.4406 972.191 29.2474 969.836 Q22.0542 967.481 14.5426 962.675 L14.5426 957.582 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M14.479 928.172 L19.3487 928.172 L19.3487 933.774 Q19.3487 936.925 20.6219 938.167 Q21.895 939.376 25.2052 939.376 L28.3562 939.376 L28.3562 929.732 L32.9077 929.732 L32.9077 939.376 L64.0042 939.376 L64.0042 945.264 L32.9077 945.264 L32.9077 950.866 L28.3562 950.866 L28.3562 945.264 L25.8736 945.264 Q19.9216 945.264 17.2162 942.495 Q14.479 939.726 14.479 933.711 L14.479 928.172 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M14.479 923.271 L14.479 917.414 L64.0042 917.414 L64.0042 923.271 L14.479 923.271 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M49.9359 905.765 L28.3562 905.765 L28.3562 899.909 L49.7131 899.909 Q54.7739 899.909 57.3202 897.935 Q59.8346 895.962 59.8346 892.015 Q59.8346 887.273 56.8109 884.536 Q53.7872 881.766 48.5673 881.766 L28.3562 881.766 L28.3562 875.91 L64.0042 875.91 L64.0042 881.766 L58.5296 881.766 Q61.7762 883.899 63.3676 886.732 Q64.9272 889.533 64.9272 893.257 Q64.9272 899.399 61.1078 902.582 Q57.2883 905.765 49.9359 905.765 M27.4968 891.029 L27.4968 891.029 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M28.3562 834.215 L45.7028 847.105 L64.0042 833.546 L64.0042 840.453 L49.9996 850.829 L64.0042 861.205 L64.0042 868.112 L45.3526 854.267 L28.3562 866.934 L28.3562 860.028 L41.0558 850.574 L28.3562 841.121 L28.3562 834.215 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M28.3562 804.55 L28.3562 798.694 L64.0042 798.694 L64.0042 804.55 L28.3562 804.55 M14.479 804.55 L14.479 798.694 L21.895 798.694 L21.895 804.55 L14.479 804.55 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M42.4881 756.808 L64.0042 756.808 L64.0042 762.664 L42.679 762.664 Q37.6183 762.664 35.1038 764.637 Q32.5894 766.611 32.5894 770.558 Q32.5894 775.3 35.6131 778.037 Q38.6368 780.775 43.8567 780.775 L64.0042 780.775 L64.0042 786.663 L28.3562 786.663 L28.3562 780.775 L33.8944 780.775 Q30.6797 778.674 29.0883 775.841 Q27.4968 772.977 27.4968 769.253 Q27.4968 763.11 31.3163 759.959 Q35.1038 756.808 42.4881 756.808 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M28.3562 694.774 L45.7028 707.664 L64.0042 694.105 L64.0042 701.012 L49.9996 711.388 L64.0042 721.764 L64.0042 728.671 L45.3526 714.826 L28.3562 727.494 L28.3562 720.587 L41.0558 711.134 L28.3562 701.681 L28.3562 694.774 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M43.5384 688.79 L43.5384 671.634 L48.7583 671.634 L48.7583 688.79 L43.5384 688.79 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M33.7671 638.851 L14.479 638.851 L14.479 632.995 L64.0042 632.995 L64.0042 638.851 L58.657 638.851 Q61.8398 640.697 63.3994 643.53 Q64.9272 646.331 64.9272 650.278 Q64.9272 656.739 59.771 660.813 Q54.6147 664.855 46.212 664.855 Q37.8093 664.855 32.6531 660.813 Q27.4968 656.739 27.4968 650.278 Q27.4968 646.331 29.0564 643.53 Q30.5842 640.697 33.7671 638.851 M46.212 658.808 Q52.6732 658.808 56.3653 656.166 Q60.0256 653.492 60.0256 648.845 Q60.0256 644.198 56.3653 641.525 Q52.6732 638.851 46.212 638.851 Q39.7508 638.851 36.0905 641.525 Q32.3984 644.198 32.3984 648.845 Q32.3984 653.492 36.0905 656.166 Q39.7508 658.808 46.212 658.808 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M28.3562 620.932 L28.3562 615.075 L64.0042 615.075 L64.0042 620.932 L28.3562 620.932 M14.479 620.932 L14.479 615.075 L21.895 615.075 L21.895 620.932 L14.479 620.932 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M33.8307 582.164 Q33.2578 583.151 33.0032 584.329 Q32.7167 585.475 32.7167 586.875 Q32.7167 591.84 35.9632 594.514 Q39.1779 597.156 45.2253 597.156 L64.0042 597.156 L64.0042 603.044 L28.3562 603.044 L28.3562 597.156 L33.8944 597.156 Q30.6479 595.31 29.0883 592.35 Q27.4968 589.39 27.4968 585.156 Q27.4968 584.552 27.5923 583.82 Q27.656 583.087 27.8151 582.196 L33.8307 582.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M44.7161 546.962 L47.5806 546.962 L47.5806 573.889 Q53.6281 573.507 56.8109 570.261 Q59.9619 566.982 59.9619 561.158 Q59.9619 557.784 59.1344 554.633 Q58.3069 551.45 56.6518 548.331 L62.1899 548.331 Q63.5267 551.482 64.227 554.792 Q64.9272 558.102 64.9272 561.508 Q64.9272 570.038 59.9619 575.035 Q54.9967 580 46.5303 580 Q37.7774 580 32.6531 575.29 Q27.4968 570.547 27.4968 562.526 Q27.4968 555.333 32.1438 551.163 Q36.7589 546.962 44.7161 546.962 M42.9973 552.819 Q38.1912 552.882 35.3266 555.524 Q32.4621 558.134 32.4621 562.463 Q32.4621 567.364 35.2312 570.324 Q38.0002 573.252 43.0292 573.698 L42.9973 552.819 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M29.7248 511.696 L35.1993 511.696 Q33.8307 514.179 33.1623 516.693 Q32.4621 519.176 32.4621 521.722 Q32.4621 527.419 36.0905 530.57 Q39.6872 533.721 46.212 533.721 Q52.7369 533.721 56.3653 530.57 Q59.9619 527.419 59.9619 521.722 Q59.9619 519.176 59.2935 516.693 Q58.5933 514.179 57.2247 511.696 L62.6355 511.696 Q63.7814 514.147 64.3543 516.789 Q64.9272 519.399 64.9272 522.359 Q64.9272 530.411 59.8664 535.154 Q54.8057 539.896 46.212 539.896 Q37.491 539.896 32.4939 535.122 Q27.4968 530.316 27.4968 521.977 Q27.4968 519.271 28.0697 516.693 Q28.6108 514.115 29.7248 511.696 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M18.2347 495.718 L28.3562 495.718 L28.3562 483.655 L32.9077 483.655 L32.9077 495.718 L52.2594 495.718 Q56.6199 495.718 57.8613 494.541 Q59.1026 493.331 59.1026 489.671 L59.1026 483.655 L64.0042 483.655 L64.0042 489.671 Q64.0042 496.45 61.4897 499.028 Q58.9434 501.606 52.2594 501.606 L32.9077 501.606 L32.9077 505.903 L28.3562 505.903 L28.3562 501.606 L18.2347 501.606 L18.2347 495.718 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M28.3562 475.953 L28.3562 470.096 L64.0042 470.096 L64.0042 475.953 L28.3562 475.953 M14.479 475.953 L14.479 470.096 L21.895 470.096 L21.895 475.953 L14.479 475.953 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M32.4621 444.029 Q32.4621 448.739 36.1542 451.477 Q39.8145 454.214 46.212 454.214 Q52.6095 454.214 56.3017 451.508 Q59.9619 448.771 59.9619 444.029 Q59.9619 439.35 56.2698 436.613 Q52.5777 433.875 46.212 433.875 Q39.8781 433.875 36.186 436.613 Q32.4621 439.35 32.4621 444.029 M27.4968 444.029 Q27.4968 436.39 32.4621 432.029 Q37.4273 427.669 46.212 427.669 Q54.9649 427.669 59.9619 432.029 Q64.9272 436.39 64.9272 444.029 Q64.9272 451.699 59.9619 456.06 Q54.9649 460.388 46.212 460.388 Q37.4273 460.388 32.4621 456.06 Q27.4968 451.699 27.4968 444.029 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M42.4881 388.329 L64.0042 388.329 L64.0042 394.185 L42.679 394.185 Q37.6183 394.185 35.1038 396.159 Q32.5894 398.132 32.5894 402.079 Q32.5894 406.821 35.6131 409.558 Q38.6368 412.296 43.8567 412.296 L64.0042 412.296 L64.0042 418.184 L28.3562 418.184 L28.3562 412.296 L33.8944 412.296 Q30.6797 410.195 29.0883 407.362 Q27.4968 404.498 27.4968 400.774 Q27.4968 394.631 31.3163 391.48 Q35.1038 388.329 42.4881 388.329 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip020)\" d=\"M14.5426 377.571 L14.5426 372.478 Q22.0542 367.704 29.2474 365.348 Q36.4406 362.961 43.5384 362.961 Q50.668 362.961 57.8931 365.348 Q65.1182 367.704 72.5979 372.478 L72.5979 377.571 Q65.3091 373.337 58.1159 371.269 Q50.8908 369.168 43.5384 369.168 Q36.186 369.168 29.0246 371.269 Q21.8632 373.337 14.5426 377.571 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip022)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"315.882,1384.24 335.658,1365.85 355.433,1347.46 375.209,1329.06 394.984,1310.67 414.76,1292.28 434.535,1265.04 454.311,1237.8 474.086,1210.55 493.862,1183.31 513.637,1156.07 533.412,1139.07 553.188,1122.08 572.963,1105.09 592.739,1088.09 612.514,1071.1 632.29,1056.74 652.065,1042.38 671.841,1028.02 691.616,1013.66 711.392,999.295 731.167,987.752 750.943,976.208 770.718,964.665 790.494,953.122 810.269,941.579 830.045,931.658 849.82,921.736 869.596,911.815 889.371,901.893 909.146,891.972 928.922,883.245 948.697,874.518 968.473,865.791 988.248,857.064 1008.02,848.336 1027.8,840.391 1047.57,832.445 1067.35,824.5 1087.13,816.554 1106.9,808.609 1126.68,801.152 1146.45,793.696 1166.23,786.24 1186,778.783 1205.78,771.327 1225.55,764.104 1245.33,756.881 1265.1,749.658 1284.88,742.435 1304.66,735.212 1324.43,727.989 1344.21,720.766 1363.98,713.543 1383.76,706.32 1403.53,699.097 1423.31,691.641 1443.08,684.184 1462.86,676.728 1482.64,669.272 1502.41,661.815 1522.19,653.87 1541.96,645.924 1561.74,637.979 1581.51,630.033 1601.29,622.088 1621.06,613.36 1640.84,604.633 1660.61,595.906 1680.39,587.179 1700.17,578.452 1719.94,568.53 1739.72,558.609 1759.49,548.688 1779.27,538.766 1799.04,528.845 1818.82,517.302 1838.59,505.759 1858.37,494.215 1878.14,482.672 1897.92,471.129 1917.7,456.768 1937.47,442.407 1957.25,428.046 1977.02,413.685 1996.8,399.324 2016.57,382.331 2036.35,365.337 2056.12,348.344 2075.9,331.35 2095.67,314.357 2115.45,287.114 2135.23,259.871 2155,232.627 2174.78,205.384 2194.55,178.141 2214.33,159.75 2234.1,141.359 2253.88,122.968 2273.65,104.577 2293.43,86.1857 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"315.882,1423.18 315.882,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"810.269,1423.18 810.269,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1304.66,1423.18 1304.66,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1799.04,1423.18 1799.04,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2293.43,1423.18 2293.43,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,1272.91 2352.76,1272.91 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,1093.67 2352.76,1093.67 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,914.443 2352.76,914.443 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,735.212 2352.76,735.212 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,555.981 2352.76,555.981 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,376.749 2352.76,376.749 \"/>\n", + "<polyline clip-path=\"url(#clip632)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,197.518 2352.76,197.518 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1423.18 2352.76,1423.18 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"315.882,1423.18 315.882,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"810.269,1423.18 810.269,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1304.66,1423.18 1304.66,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1799.04,1423.18 1799.04,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2293.43,1423.18 2293.43,1404.28 \"/>\n", + "<path clip-path=\"url(#clip630)\" d=\"M262.41 1468.75 L292.086 1468.75 L292.086 1472.69 L262.41 1472.69 L262.41 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M302.989 1481.64 L310.628 1481.64 L310.628 1455.28 L302.318 1456.95 L302.318 1452.69 L310.581 1451.02 L315.257 1451.02 L315.257 1481.64 L322.896 1481.64 L322.896 1485.58 L302.989 1485.58 L302.989 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M332.341 1479.7 L337.225 1479.7 L337.225 1485.58 L332.341 1485.58 L332.341 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M357.41 1454.1 Q353.799 1454.1 351.97 1457.66 Q350.165 1461.2 350.165 1468.33 Q350.165 1475.44 351.97 1479.01 Q353.799 1482.55 357.41 1482.55 Q361.044 1482.55 362.85 1479.01 Q364.678 1475.44 364.678 1468.33 Q364.678 1461.2 362.85 1457.66 Q361.044 1454.1 357.41 1454.1 M357.41 1450.39 Q363.22 1450.39 366.276 1455 Q369.354 1459.58 369.354 1468.33 Q369.354 1477.06 366.276 1481.67 Q363.22 1486.25 357.41 1486.25 Q351.6 1486.25 348.521 1481.67 Q345.465 1477.06 345.465 1468.33 Q345.465 1459.58 348.521 1455 Q351.6 1450.39 357.41 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M757.295 1468.75 L786.971 1468.75 L786.971 1472.69 L757.295 1472.69 L757.295 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M807.063 1454.1 Q803.452 1454.1 801.623 1457.66 Q799.818 1461.2 799.818 1468.33 Q799.818 1475.44 801.623 1479.01 Q803.452 1482.55 807.063 1482.55 Q810.697 1482.55 812.503 1479.01 Q814.332 1475.44 814.332 1468.33 Q814.332 1461.2 812.503 1457.66 Q810.697 1454.1 807.063 1454.1 M807.063 1450.39 Q812.873 1450.39 815.929 1455 Q819.007 1459.58 819.007 1468.33 Q819.007 1477.06 815.929 1481.67 Q812.873 1486.25 807.063 1486.25 Q801.253 1486.25 798.174 1481.67 Q795.119 1477.06 795.119 1468.33 Q795.119 1459.58 798.174 1455 Q801.253 1450.39 807.063 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M827.225 1479.7 L832.109 1479.7 L832.109 1485.58 L827.225 1485.58 L827.225 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M842.341 1451.02 L860.697 1451.02 L860.697 1454.96 L846.623 1454.96 L846.623 1463.43 Q847.642 1463.08 848.66 1462.92 Q849.679 1462.73 850.697 1462.73 Q856.484 1462.73 859.864 1465.9 Q863.243 1469.08 863.243 1474.49 Q863.243 1480.07 859.771 1483.17 Q856.299 1486.25 849.98 1486.25 Q847.804 1486.25 845.535 1485.88 Q843.29 1485.51 840.882 1484.77 L840.882 1480.07 Q842.966 1481.2 845.188 1481.76 Q847.41 1482.32 849.887 1482.32 Q853.892 1482.32 856.229 1480.21 Q858.567 1478.1 858.567 1474.49 Q858.567 1470.88 856.229 1468.77 Q853.892 1466.67 849.887 1466.67 Q848.012 1466.67 846.137 1467.08 Q844.285 1467.5 842.341 1468.38 L842.341 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1282.04 1454.1 Q1278.43 1454.1 1276.6 1457.66 Q1274.79 1461.2 1274.79 1468.33 Q1274.79 1475.44 1276.6 1479.01 Q1278.43 1482.55 1282.04 1482.55 Q1285.67 1482.55 1287.48 1479.01 Q1289.31 1475.44 1289.31 1468.33 Q1289.31 1461.2 1287.48 1457.66 Q1285.67 1454.1 1282.04 1454.1 M1282.04 1450.39 Q1287.85 1450.39 1290.91 1455 Q1293.98 1459.58 1293.98 1468.33 Q1293.98 1477.06 1290.91 1481.67 Q1287.85 1486.25 1282.04 1486.25 Q1276.23 1486.25 1273.15 1481.67 Q1270.1 1477.06 1270.1 1468.33 Q1270.1 1459.58 1273.15 1455 Q1276.23 1450.39 1282.04 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1302.2 1479.7 L1307.09 1479.7 L1307.09 1485.58 L1302.2 1485.58 L1302.2 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1327.27 1454.1 Q1323.66 1454.1 1321.83 1457.66 Q1320.03 1461.2 1320.03 1468.33 Q1320.03 1475.44 1321.83 1479.01 Q1323.66 1482.55 1327.27 1482.55 Q1330.91 1482.55 1332.71 1479.01 Q1334.54 1475.44 1334.54 1468.33 Q1334.54 1461.2 1332.71 1457.66 Q1330.91 1454.1 1327.27 1454.1 M1327.27 1450.39 Q1333.08 1450.39 1336.14 1455 Q1339.22 1459.58 1339.22 1468.33 Q1339.22 1477.06 1336.14 1481.67 Q1333.08 1486.25 1327.27 1486.25 Q1321.46 1486.25 1318.38 1481.67 Q1315.33 1477.06 1315.33 1468.33 Q1315.33 1459.58 1318.38 1455 Q1321.46 1450.39 1327.27 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1776.92 1454.1 Q1773.31 1454.1 1771.48 1457.66 Q1769.68 1461.2 1769.68 1468.33 Q1769.68 1475.44 1771.48 1479.01 Q1773.31 1482.55 1776.92 1482.55 Q1780.56 1482.55 1782.36 1479.01 Q1784.19 1475.44 1784.19 1468.33 Q1784.19 1461.2 1782.36 1457.66 Q1780.56 1454.1 1776.92 1454.1 M1776.92 1450.39 Q1782.73 1450.39 1785.79 1455 Q1788.87 1459.58 1788.87 1468.33 Q1788.87 1477.06 1785.79 1481.67 Q1782.73 1486.25 1776.92 1486.25 Q1771.11 1486.25 1768.04 1481.67 Q1764.98 1477.06 1764.98 1468.33 Q1764.98 1459.58 1768.04 1455 Q1771.11 1450.39 1776.92 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1797.09 1479.7 L1801.97 1479.7 L1801.97 1485.58 L1797.09 1485.58 L1797.09 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1812.2 1451.02 L1830.56 1451.02 L1830.56 1454.96 L1816.48 1454.96 L1816.48 1463.43 Q1817.5 1463.08 1818.52 1462.92 Q1819.54 1462.73 1820.56 1462.73 Q1826.35 1462.73 1829.73 1465.9 Q1833.11 1469.08 1833.11 1474.49 Q1833.11 1480.07 1829.63 1483.17 Q1826.16 1486.25 1819.84 1486.25 Q1817.67 1486.25 1815.4 1485.88 Q1813.15 1485.51 1810.74 1484.77 L1810.74 1480.07 Q1812.83 1481.2 1815.05 1481.76 Q1817.27 1482.32 1819.75 1482.32 Q1823.75 1482.32 1826.09 1480.21 Q1828.43 1478.1 1828.43 1474.49 Q1828.43 1470.88 1826.09 1468.77 Q1823.75 1466.67 1819.75 1466.67 Q1817.87 1466.67 1816 1467.08 Q1814.15 1467.5 1812.2 1468.38 L1812.2 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M2260.58 1481.64 L2268.22 1481.64 L2268.22 1455.28 L2259.91 1456.95 L2259.91 1452.69 L2268.17 1451.02 L2272.85 1451.02 L2272.85 1481.64 L2280.49 1481.64 L2280.49 1485.58 L2260.58 1485.58 L2260.58 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M2289.93 1479.7 L2294.82 1479.7 L2294.82 1485.58 L2289.93 1485.58 L2289.93 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M2315 1454.1 Q2311.39 1454.1 2309.56 1457.66 Q2307.76 1461.2 2307.76 1468.33 Q2307.76 1475.44 2309.56 1479.01 Q2311.39 1482.55 2315 1482.55 Q2318.64 1482.55 2320.44 1479.01 Q2322.27 1475.44 2322.27 1468.33 Q2322.27 1461.2 2320.44 1457.66 Q2318.64 1454.1 2315 1454.1 M2315 1450.39 Q2320.81 1450.39 2323.87 1455 Q2326.95 1459.58 2326.95 1468.33 Q2326.95 1477.06 2323.87 1481.67 Q2320.81 1486.25 2315 1486.25 Q2309.19 1486.25 2306.11 1481.67 Q2303.06 1477.06 2303.06 1468.33 Q2303.06 1459.58 2306.11 1455 Q2309.19 1450.39 2315 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1113.38 1532.4 L1100.49 1549.74 L1114.05 1568.04 L1107.14 1568.04 L1096.77 1554.04 L1086.39 1568.04 L1079.48 1568.04 L1093.33 1549.39 L1080.66 1532.4 L1087.57 1532.4 L1097.02 1545.1 L1106.48 1532.4 L1113.38 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1157.11 1518.58 Q1152.85 1525.9 1150.78 1533.06 Q1148.71 1540.23 1148.71 1547.58 Q1148.71 1554.93 1150.78 1562.16 Q1152.88 1569.35 1157.11 1576.64 L1152.02 1576.64 Q1147.25 1569.16 1144.86 1561.93 Q1142.51 1554.71 1142.51 1547.58 Q1142.51 1540.48 1144.86 1533.29 Q1147.22 1526.09 1152.02 1518.58 L1157.11 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1194.13 1533.76 L1194.13 1539.24 Q1191.65 1537.87 1189.13 1537.2 Q1186.65 1536.5 1184.11 1536.5 Q1178.41 1536.5 1175.26 1540.13 Q1172.11 1543.73 1172.11 1550.25 Q1172.11 1556.78 1175.26 1560.4 Q1178.41 1564 1184.11 1564 Q1186.65 1564 1189.13 1563.33 Q1191.65 1562.63 1194.13 1561.26 L1194.13 1566.68 Q1191.68 1567.82 1189.04 1568.39 Q1186.43 1568.97 1183.47 1568.97 Q1175.42 1568.97 1170.67 1563.91 Q1165.93 1558.85 1165.93 1550.25 Q1165.93 1541.53 1170.71 1536.53 Q1175.51 1531.54 1183.85 1531.54 Q1186.56 1531.54 1189.13 1532.11 Q1191.71 1532.65 1194.13 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1218.13 1536.5 Q1213.42 1536.5 1210.68 1540.19 Q1207.94 1543.85 1207.94 1550.25 Q1207.94 1556.65 1210.65 1560.34 Q1213.39 1564 1218.13 1564 Q1222.81 1564 1225.55 1560.31 Q1228.28 1556.62 1228.28 1550.25 Q1228.28 1543.92 1225.55 1540.23 Q1222.81 1536.5 1218.13 1536.5 M1218.13 1531.54 Q1225.77 1531.54 1230.13 1536.5 Q1234.49 1541.47 1234.49 1550.25 Q1234.49 1559 1230.13 1564 Q1225.77 1568.97 1218.13 1568.97 Q1210.46 1568.97 1206.1 1564 Q1201.77 1559 1201.77 1550.25 Q1201.77 1541.47 1206.1 1536.5 Q1210.46 1531.54 1218.13 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1258.01 1536.5 Q1253.3 1536.5 1250.56 1540.19 Q1247.83 1543.85 1247.83 1550.25 Q1247.83 1556.65 1250.53 1560.34 Q1253.27 1564 1258.01 1564 Q1262.69 1564 1265.43 1560.31 Q1268.16 1556.62 1268.16 1550.25 Q1268.16 1543.92 1265.43 1540.23 Q1262.69 1536.5 1258.01 1536.5 M1258.01 1531.54 Q1265.65 1531.54 1270.01 1536.5 Q1274.37 1541.47 1274.37 1550.25 Q1274.37 1559 1270.01 1564 Q1265.65 1568.97 1258.01 1568.97 Q1250.34 1568.97 1245.98 1564 Q1241.65 1559 1241.65 1550.25 Q1241.65 1541.47 1245.98 1536.5 Q1250.34 1531.54 1258.01 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1304.74 1537.87 Q1303.75 1537.3 1302.57 1537.04 Q1301.43 1536.76 1300.02 1536.76 Q1295.06 1536.76 1292.39 1540 Q1289.74 1543.22 1289.74 1549.27 L1289.74 1568.04 L1283.86 1568.04 L1283.86 1532.4 L1289.74 1532.4 L1289.74 1537.93 Q1291.59 1534.69 1294.55 1533.13 Q1297.51 1531.54 1301.74 1531.54 Q1302.35 1531.54 1303.08 1531.63 Q1303.81 1531.7 1304.7 1531.85 L1304.74 1537.87 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1333.19 1537.81 L1333.19 1518.52 L1339.05 1518.52 L1339.05 1568.04 L1333.19 1568.04 L1333.19 1562.7 Q1331.34 1565.88 1328.51 1567.44 Q1325.71 1568.97 1321.76 1568.97 Q1315.3 1568.97 1311.23 1563.81 Q1307.19 1558.65 1307.19 1550.25 Q1307.19 1541.85 1311.23 1536.69 Q1315.3 1531.54 1321.76 1531.54 Q1325.71 1531.54 1328.51 1533.1 Q1331.34 1534.62 1333.19 1537.81 M1313.23 1550.25 Q1313.23 1556.71 1315.88 1560.4 Q1318.55 1564.07 1323.2 1564.07 Q1327.84 1564.07 1330.52 1560.4 Q1333.19 1556.71 1333.19 1550.25 Q1333.19 1543.79 1330.52 1540.13 Q1327.84 1536.44 1323.2 1536.44 Q1318.55 1536.44 1315.88 1540.13 Q1313.23 1543.79 1313.23 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1351.11 1532.4 L1356.97 1532.4 L1356.97 1568.04 L1351.11 1568.04 L1351.11 1532.4 M1351.11 1518.52 L1356.97 1518.52 L1356.97 1525.93 L1351.11 1525.93 L1351.11 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1398.85 1546.53 L1398.85 1568.04 L1393 1568.04 L1393 1546.72 Q1393 1541.66 1391.02 1539.14 Q1389.05 1536.63 1385.1 1536.63 Q1380.36 1536.63 1377.62 1539.65 Q1374.89 1542.68 1374.89 1547.9 L1374.89 1568.04 L1369 1568.04 L1369 1532.4 L1374.89 1532.4 L1374.89 1537.93 Q1376.99 1534.72 1379.82 1533.13 Q1382.68 1531.54 1386.41 1531.54 Q1392.55 1531.54 1395.7 1535.36 Q1398.85 1539.14 1398.85 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1426.73 1550.12 Q1419.64 1550.12 1416.9 1551.75 Q1414.16 1553.37 1414.16 1557.29 Q1414.16 1560.4 1416.2 1562.25 Q1418.27 1564.07 1421.8 1564.07 Q1426.67 1564.07 1429.6 1560.63 Q1432.56 1557.16 1432.56 1551.43 L1432.56 1550.12 L1426.73 1550.12 M1438.42 1547.71 L1438.42 1568.04 L1432.56 1568.04 L1432.56 1562.63 Q1430.55 1565.88 1427.56 1567.44 Q1424.57 1568.97 1420.24 1568.97 Q1414.77 1568.97 1411.52 1565.91 Q1408.31 1562.82 1408.31 1557.67 Q1408.31 1551.65 1412.32 1548.6 Q1416.36 1545.54 1424.35 1545.54 L1432.56 1545.54 L1432.56 1544.97 Q1432.56 1540.93 1429.89 1538.73 Q1427.24 1536.5 1422.44 1536.5 Q1419.38 1536.5 1416.49 1537.23 Q1413.59 1537.97 1410.92 1539.43 L1410.92 1534.02 Q1414.13 1532.78 1417.15 1532.17 Q1420.18 1531.54 1423.04 1531.54 Q1430.78 1531.54 1434.6 1535.55 Q1438.42 1539.56 1438.42 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1456.27 1522.27 L1456.27 1532.4 L1468.33 1532.4 L1468.33 1536.95 L1456.27 1536.95 L1456.27 1556.3 Q1456.27 1560.66 1457.45 1561.9 Q1458.66 1563.14 1462.32 1563.14 L1468.33 1563.14 L1468.33 1568.04 L1462.32 1568.04 Q1455.54 1568.04 1452.96 1565.53 Q1450.38 1562.98 1450.38 1556.3 L1450.38 1536.95 L1446.09 1536.95 L1446.09 1532.4 L1450.38 1532.4 L1450.38 1522.27 L1456.27 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1506.53 1548.76 L1506.53 1551.62 L1479.6 1551.62 Q1479.98 1557.67 1483.23 1560.85 Q1486.51 1564 1492.33 1564 Q1495.71 1564 1498.86 1563.17 Q1502.04 1562.35 1505.16 1560.69 L1505.16 1566.23 Q1502.01 1567.57 1498.7 1568.27 Q1495.39 1568.97 1491.98 1568.97 Q1483.45 1568.97 1478.46 1564 Q1473.49 1559.04 1473.49 1550.57 Q1473.49 1541.82 1478.2 1536.69 Q1482.94 1531.54 1490.96 1531.54 Q1498.16 1531.54 1502.33 1536.18 Q1506.53 1540.8 1506.53 1548.76 M1500.67 1547.04 Q1500.61 1542.23 1497.97 1539.37 Q1495.36 1536.5 1491.03 1536.5 Q1486.13 1536.5 1483.17 1539.27 Q1480.24 1542.04 1479.79 1547.07 L1500.67 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M1515.22 1518.58 L1520.31 1518.58 Q1525.08 1526.09 1527.44 1533.29 Q1529.83 1540.48 1529.83 1547.58 Q1529.83 1554.71 1527.44 1561.93 Q1525.08 1569.16 1520.31 1576.64 L1515.22 1576.64 Q1519.45 1569.35 1521.52 1562.16 Q1523.62 1554.93 1523.62 1547.58 Q1523.62 1540.23 1521.52 1533.06 Q1519.45 1525.9 1515.22 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1423.18 256.556,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1272.91 275.454,1272.91 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1093.67 275.454,1093.67 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,914.443 275.454,914.443 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,735.212 275.454,735.212 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,555.981 275.454,555.981 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,376.749 275.454,376.749 \"/>\n", + "<polyline clip-path=\"url(#clip630)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,197.518 275.454,197.518 \"/>\n", + "<path clip-path=\"url(#clip630)\" d=\"M114.26 1273.36 L143.936 1273.36 L143.936 1277.29 L114.26 1277.29 L114.26 1273.36 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M164.028 1258.7 Q160.417 1258.7 158.589 1262.27 Q156.783 1265.81 156.783 1272.94 Q156.783 1280.05 158.589 1283.61 Q160.417 1287.15 164.028 1287.15 Q167.663 1287.15 169.468 1283.61 Q171.297 1280.05 171.297 1272.94 Q171.297 1265.81 169.468 1262.27 Q167.663 1258.7 164.028 1258.7 M164.028 1255 Q169.839 1255 172.894 1259.61 Q175.973 1264.19 175.973 1272.94 Q175.973 1281.67 172.894 1286.27 Q169.839 1290.86 164.028 1290.86 Q158.218 1290.86 155.14 1286.27 Q152.084 1281.67 152.084 1272.94 Q152.084 1264.19 155.14 1259.61 Q158.218 1255 164.028 1255 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M184.19 1284.31 L189.075 1284.31 L189.075 1290.19 L184.19 1290.19 L184.19 1284.31 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M213.426 1271.55 Q216.783 1272.27 218.658 1274.54 Q220.556 1276.81 220.556 1280.14 Q220.556 1285.26 217.037 1288.06 Q213.519 1290.86 207.037 1290.86 Q204.862 1290.86 202.547 1290.42 Q200.255 1290 197.801 1289.14 L197.801 1284.63 Q199.746 1285.76 202.061 1286.34 Q204.375 1286.92 206.899 1286.92 Q211.297 1286.92 213.588 1285.19 Q215.903 1283.45 215.903 1280.14 Q215.903 1277.08 213.75 1275.37 Q211.621 1273.64 207.801 1273.64 L203.774 1273.64 L203.774 1269.79 L207.987 1269.79 Q211.436 1269.79 213.264 1268.43 Q215.093 1267.04 215.093 1264.45 Q215.093 1261.78 213.195 1260.37 Q211.32 1258.94 207.801 1258.94 Q205.88 1258.94 203.681 1259.35 Q201.482 1259.77 198.843 1260.65 L198.843 1256.48 Q201.505 1255.74 203.82 1255.37 Q206.158 1255 208.218 1255 Q213.542 1255 216.644 1257.43 Q219.746 1259.84 219.746 1263.96 Q219.746 1266.83 218.102 1268.82 Q216.459 1270.79 213.426 1271.55 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M115.209 1094.13 L144.885 1094.13 L144.885 1098.06 L115.209 1098.06 L115.209 1094.13 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M164.977 1079.47 Q161.366 1079.47 159.538 1083.04 Q157.732 1086.58 157.732 1093.71 Q157.732 1100.82 159.538 1104.38 Q161.366 1107.92 164.977 1107.92 Q168.612 1107.92 170.417 1104.38 Q172.246 1100.82 172.246 1093.71 Q172.246 1086.58 170.417 1083.04 Q168.612 1079.47 164.977 1079.47 M164.977 1075.77 Q170.788 1075.77 173.843 1080.38 Q176.922 1084.96 176.922 1093.71 Q176.922 1102.44 173.843 1107.04 Q170.788 1111.63 164.977 1111.63 Q159.167 1111.63 156.089 1107.04 Q153.033 1102.44 153.033 1093.71 Q153.033 1084.96 156.089 1080.38 Q159.167 1075.77 164.977 1075.77 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M185.139 1105.07 L190.024 1105.07 L190.024 1110.95 L185.139 1110.95 L185.139 1105.07 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M204.237 1107.02 L220.556 1107.02 L220.556 1110.95 L198.612 1110.95 L198.612 1107.02 Q201.274 1104.26 205.857 1099.64 Q210.463 1094.98 211.644 1093.64 Q213.889 1091.12 214.769 1089.38 Q215.672 1087.62 215.672 1085.93 Q215.672 1083.18 213.727 1081.44 Q211.806 1079.7 208.704 1079.7 Q206.505 1079.7 204.051 1080.47 Q201.621 1081.23 198.843 1082.78 L198.843 1078.06 Q201.667 1076.93 204.121 1076.35 Q206.574 1075.77 208.612 1075.77 Q213.982 1075.77 217.176 1078.45 Q220.371 1081.14 220.371 1085.63 Q220.371 1087.76 219.561 1089.68 Q218.773 1091.58 216.667 1094.17 Q216.088 1094.84 212.986 1098.06 Q209.885 1101.26 204.237 1107.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M114.839 914.895 L144.515 914.895 L144.515 918.83 L114.839 918.83 L114.839 914.895 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M164.607 900.242 Q160.996 900.242 159.167 903.807 Q157.362 907.348 157.362 914.478 Q157.362 921.584 159.167 925.149 Q160.996 928.691 164.607 928.691 Q168.241 928.691 170.047 925.149 Q171.876 921.584 171.876 914.478 Q171.876 907.348 170.047 903.807 Q168.241 900.242 164.607 900.242 M164.607 896.538 Q170.417 896.538 173.473 901.145 Q176.551 905.728 176.551 914.478 Q176.551 923.205 173.473 927.811 Q170.417 932.395 164.607 932.395 Q158.797 932.395 155.718 927.811 Q152.663 923.205 152.663 914.478 Q152.663 905.728 155.718 901.145 Q158.797 896.538 164.607 896.538 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M184.769 925.844 L189.653 925.844 L189.653 931.723 L184.769 931.723 L184.769 925.844 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M200.649 927.788 L208.287 927.788 L208.287 901.422 L199.977 903.089 L199.977 898.83 L208.241 897.163 L212.917 897.163 L212.917 927.788 L220.556 927.788 L220.556 931.723 L200.649 931.723 L200.649 927.788 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M163.38 721.011 Q159.769 721.011 157.94 724.575 Q156.135 728.117 156.135 735.247 Q156.135 742.353 157.94 745.918 Q159.769 749.46 163.38 749.46 Q167.015 749.46 168.82 745.918 Q170.649 742.353 170.649 735.247 Q170.649 728.117 168.82 724.575 Q167.015 721.011 163.38 721.011 M163.38 717.307 Q169.19 717.307 172.246 721.913 Q175.325 726.497 175.325 735.247 Q175.325 743.973 172.246 748.58 Q169.19 753.163 163.38 753.163 Q157.57 753.163 154.491 748.58 Q151.436 743.973 151.436 735.247 Q151.436 726.497 154.491 721.913 Q157.57 717.307 163.38 717.307 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M183.542 746.612 L188.426 746.612 L188.426 752.492 L183.542 752.492 L183.542 746.612 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M208.612 721.011 Q205 721.011 203.172 724.575 Q201.366 728.117 201.366 735.247 Q201.366 742.353 203.172 745.918 Q205 749.46 208.612 749.46 Q212.246 749.46 214.051 745.918 Q215.88 742.353 215.88 735.247 Q215.88 728.117 214.051 724.575 Q212.246 721.011 208.612 721.011 M208.612 717.307 Q214.422 717.307 217.477 721.913 Q220.556 726.497 220.556 735.247 Q220.556 743.973 217.477 748.58 Q214.422 753.163 208.612 753.163 Q202.801 753.163 199.723 748.58 Q196.667 743.973 196.667 735.247 Q196.667 726.497 199.723 721.913 Q202.801 717.307 208.612 717.307 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M164.607 541.779 Q160.996 541.779 159.167 545.344 Q157.362 548.886 157.362 556.015 Q157.362 563.122 159.167 566.687 Q160.996 570.228 164.607 570.228 Q168.241 570.228 170.047 566.687 Q171.876 563.122 171.876 556.015 Q171.876 548.886 170.047 545.344 Q168.241 541.779 164.607 541.779 M164.607 538.076 Q170.417 538.076 173.473 542.682 Q176.551 547.265 176.551 556.015 Q176.551 564.742 173.473 569.349 Q170.417 573.932 164.607 573.932 Q158.797 573.932 155.718 569.349 Q152.663 564.742 152.663 556.015 Q152.663 547.265 155.718 542.682 Q158.797 538.076 164.607 538.076 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M184.769 567.381 L189.653 567.381 L189.653 573.261 L184.769 573.261 L184.769 567.381 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M200.649 569.326 L208.287 569.326 L208.287 542.96 L199.977 544.627 L199.977 540.367 L208.241 538.701 L212.917 538.701 L212.917 569.326 L220.556 569.326 L220.556 573.261 L200.649 573.261 L200.649 569.326 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M164.977 362.548 Q161.366 362.548 159.538 366.113 Q157.732 369.655 157.732 376.784 Q157.732 383.891 159.538 387.455 Q161.366 390.997 164.977 390.997 Q168.612 390.997 170.417 387.455 Q172.246 383.891 172.246 376.784 Q172.246 369.655 170.417 366.113 Q168.612 362.548 164.977 362.548 M164.977 358.844 Q170.788 358.844 173.843 363.451 Q176.922 368.034 176.922 376.784 Q176.922 385.511 173.843 390.117 Q170.788 394.701 164.977 394.701 Q159.167 394.701 156.089 390.117 Q153.033 385.511 153.033 376.784 Q153.033 368.034 156.089 363.451 Q159.167 358.844 164.977 358.844 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M185.139 388.15 L190.024 388.15 L190.024 394.029 L185.139 394.029 L185.139 388.15 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M204.237 390.094 L220.556 390.094 L220.556 394.029 L198.612 394.029 L198.612 390.094 Q201.274 387.34 205.857 382.71 Q210.463 378.057 211.644 376.715 Q213.889 374.192 214.769 372.455 Q215.672 370.696 215.672 369.006 Q215.672 366.252 213.727 364.516 Q211.806 362.78 208.704 362.78 Q206.505 362.78 204.051 363.543 Q201.621 364.307 198.843 365.858 L198.843 361.136 Q201.667 360.002 204.121 359.423 Q206.574 358.844 208.612 358.844 Q213.982 358.844 217.176 361.53 Q220.371 364.215 220.371 368.705 Q220.371 370.835 219.561 372.756 Q218.773 374.654 216.667 377.247 Q216.088 377.918 212.986 381.136 Q209.885 384.33 204.237 390.094 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M164.028 183.317 Q160.417 183.317 158.589 186.882 Q156.783 190.423 156.783 197.553 Q156.783 204.659 158.589 208.224 Q160.417 211.766 164.028 211.766 Q167.663 211.766 169.468 208.224 Q171.297 204.659 171.297 197.553 Q171.297 190.423 169.468 186.882 Q167.663 183.317 164.028 183.317 M164.028 179.613 Q169.839 179.613 172.894 184.22 Q175.973 188.803 175.973 197.553 Q175.973 206.28 172.894 210.886 Q169.839 215.469 164.028 215.469 Q158.218 215.469 155.14 210.886 Q152.084 206.28 152.084 197.553 Q152.084 188.803 155.14 184.22 Q158.218 179.613 164.028 179.613 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M184.19 208.918 L189.075 208.918 L189.075 214.798 L184.19 214.798 L184.19 208.918 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M213.426 196.164 Q216.783 196.882 218.658 199.15 Q220.556 201.419 220.556 204.752 Q220.556 209.868 217.037 212.668 Q213.519 215.469 207.037 215.469 Q204.862 215.469 202.547 215.03 Q200.255 214.613 197.801 213.756 L197.801 209.243 Q199.746 210.377 202.061 210.956 Q204.375 211.534 206.899 211.534 Q211.297 211.534 213.588 209.798 Q215.903 208.062 215.903 204.752 Q215.903 201.696 213.75 199.983 Q211.621 198.247 207.801 198.247 L203.774 198.247 L203.774 194.405 L207.987 194.405 Q211.436 194.405 213.264 193.039 Q215.093 191.65 215.093 189.057 Q215.093 186.395 213.195 184.983 Q211.32 183.548 207.801 183.548 Q205.88 183.548 203.681 183.965 Q201.482 184.382 198.843 185.261 L198.843 181.095 Q201.505 180.354 203.82 179.983 Q206.158 179.613 208.218 179.613 Q213.542 179.613 216.644 182.044 Q219.746 184.451 219.746 188.571 Q219.746 191.442 218.102 193.432 Q216.459 195.4 213.426 196.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M46.212 1101.42 Q52.6732 1101.42 56.3653 1098.77 Q60.0256 1096.1 60.0256 1091.45 Q60.0256 1086.81 56.3653 1084.13 Q52.6732 1081.46 46.212 1081.46 Q39.7508 1081.46 36.0905 1084.13 Q32.3984 1086.81 32.3984 1091.45 Q32.3984 1096.1 36.0905 1098.77 Q39.7508 1101.42 46.212 1101.42 M58.657 1081.46 Q61.8398 1083.3 63.3994 1086.14 Q64.9272 1088.94 64.9272 1092.89 Q64.9272 1099.35 59.771 1103.42 Q54.6147 1107.46 46.212 1107.46 Q37.8093 1107.46 32.6531 1103.42 Q27.4968 1099.35 27.4968 1092.89 Q27.4968 1088.94 29.0564 1086.14 Q30.5842 1083.3 33.7671 1081.46 L28.3562 1081.46 L28.3562 1075.6 L77.5631 1075.6 L77.5631 1081.46 L58.657 1081.46 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M74.8259 1036.45 L79.3773 1036.45 L79.3773 1070.32 L74.8259 1070.32 L74.8259 1036.45 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M28.3562 1001.31 L45.7028 1014.2 L64.0042 1000.65 L64.0042 1007.55 L49.9996 1017.93 L64.0042 1028.31 L64.0042 1035.21 L45.3526 1021.37 L28.3562 1034.03 L28.3562 1027.13 L41.0558 1017.67 L28.3562 1008.22 L28.3562 1001.31 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M14.5426 957.582 Q21.8632 961.847 29.0246 963.916 Q36.186 965.985 43.5384 965.985 Q50.8908 965.985 58.1159 963.916 Q65.3091 961.815 72.5979 957.582 L72.5979 962.675 Q65.1182 967.449 57.8931 969.836 Q50.668 972.191 43.5384 972.191 Q36.4406 972.191 29.2474 969.836 Q22.0542 967.481 14.5426 962.675 L14.5426 957.582 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M14.479 928.172 L19.3487 928.172 L19.3487 933.774 Q19.3487 936.925 20.6219 938.167 Q21.895 939.376 25.2052 939.376 L28.3562 939.376 L28.3562 929.732 L32.9077 929.732 L32.9077 939.376 L64.0042 939.376 L64.0042 945.264 L32.9077 945.264 L32.9077 950.866 L28.3562 950.866 L28.3562 945.264 L25.8736 945.264 Q19.9216 945.264 17.2162 942.495 Q14.479 939.726 14.479 933.711 L14.479 928.172 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M14.479 923.271 L14.479 917.414 L64.0042 917.414 L64.0042 923.271 L14.479 923.271 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M49.9359 905.765 L28.3562 905.765 L28.3562 899.909 L49.7131 899.909 Q54.7739 899.909 57.3202 897.935 Q59.8346 895.962 59.8346 892.015 Q59.8346 887.273 56.8109 884.536 Q53.7872 881.766 48.5673 881.766 L28.3562 881.766 L28.3562 875.91 L64.0042 875.91 L64.0042 881.766 L58.5296 881.766 Q61.7762 883.899 63.3676 886.732 Q64.9272 889.533 64.9272 893.257 Q64.9272 899.399 61.1078 902.582 Q57.2883 905.765 49.9359 905.765 M27.4968 891.029 L27.4968 891.029 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M28.3562 834.215 L45.7028 847.105 L64.0042 833.546 L64.0042 840.453 L49.9996 850.829 L64.0042 861.205 L64.0042 868.112 L45.3526 854.267 L28.3562 866.934 L28.3562 860.028 L41.0558 850.574 L28.3562 841.121 L28.3562 834.215 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M28.3562 804.55 L28.3562 798.694 L64.0042 798.694 L64.0042 804.55 L28.3562 804.55 M14.479 804.55 L14.479 798.694 L21.895 798.694 L21.895 804.55 L14.479 804.55 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M42.4881 756.808 L64.0042 756.808 L64.0042 762.664 L42.679 762.664 Q37.6183 762.664 35.1038 764.637 Q32.5894 766.611 32.5894 770.558 Q32.5894 775.3 35.6131 778.037 Q38.6368 780.775 43.8567 780.775 L64.0042 780.775 L64.0042 786.663 L28.3562 786.663 L28.3562 780.775 L33.8944 780.775 Q30.6797 778.674 29.0883 775.841 Q27.4968 772.977 27.4968 769.253 Q27.4968 763.11 31.3163 759.959 Q35.1038 756.808 42.4881 756.808 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M28.3562 694.774 L45.7028 707.664 L64.0042 694.105 L64.0042 701.012 L49.9996 711.388 L64.0042 721.764 L64.0042 728.671 L45.3526 714.826 L28.3562 727.494 L28.3562 720.587 L41.0558 711.134 L28.3562 701.681 L28.3562 694.774 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M43.5384 688.79 L43.5384 671.634 L48.7583 671.634 L48.7583 688.79 L43.5384 688.79 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M33.7671 638.851 L14.479 638.851 L14.479 632.995 L64.0042 632.995 L64.0042 638.851 L58.657 638.851 Q61.8398 640.697 63.3994 643.53 Q64.9272 646.331 64.9272 650.278 Q64.9272 656.739 59.771 660.813 Q54.6147 664.855 46.212 664.855 Q37.8093 664.855 32.6531 660.813 Q27.4968 656.739 27.4968 650.278 Q27.4968 646.331 29.0564 643.53 Q30.5842 640.697 33.7671 638.851 M46.212 658.808 Q52.6732 658.808 56.3653 656.166 Q60.0256 653.492 60.0256 648.845 Q60.0256 644.198 56.3653 641.525 Q52.6732 638.851 46.212 638.851 Q39.7508 638.851 36.0905 641.525 Q32.3984 644.198 32.3984 648.845 Q32.3984 653.492 36.0905 656.166 Q39.7508 658.808 46.212 658.808 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M28.3562 620.932 L28.3562 615.075 L64.0042 615.075 L64.0042 620.932 L28.3562 620.932 M14.479 620.932 L14.479 615.075 L21.895 615.075 L21.895 620.932 L14.479 620.932 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M33.8307 582.164 Q33.2578 583.151 33.0032 584.329 Q32.7167 585.475 32.7167 586.875 Q32.7167 591.84 35.9632 594.514 Q39.1779 597.156 45.2253 597.156 L64.0042 597.156 L64.0042 603.044 L28.3562 603.044 L28.3562 597.156 L33.8944 597.156 Q30.6479 595.31 29.0883 592.35 Q27.4968 589.39 27.4968 585.156 Q27.4968 584.552 27.5923 583.82 Q27.656 583.087 27.8151 582.196 L33.8307 582.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M44.7161 546.962 L47.5806 546.962 L47.5806 573.889 Q53.6281 573.507 56.8109 570.261 Q59.9619 566.982 59.9619 561.158 Q59.9619 557.784 59.1344 554.633 Q58.3069 551.45 56.6518 548.331 L62.1899 548.331 Q63.5267 551.482 64.227 554.792 Q64.9272 558.102 64.9272 561.508 Q64.9272 570.038 59.9619 575.035 Q54.9967 580 46.5303 580 Q37.7774 580 32.6531 575.29 Q27.4968 570.547 27.4968 562.526 Q27.4968 555.333 32.1438 551.163 Q36.7589 546.962 44.7161 546.962 M42.9973 552.819 Q38.1912 552.882 35.3266 555.524 Q32.4621 558.134 32.4621 562.463 Q32.4621 567.364 35.2312 570.324 Q38.0002 573.252 43.0292 573.698 L42.9973 552.819 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M29.7248 511.696 L35.1993 511.696 Q33.8307 514.179 33.1623 516.693 Q32.4621 519.176 32.4621 521.722 Q32.4621 527.419 36.0905 530.57 Q39.6872 533.721 46.212 533.721 Q52.7369 533.721 56.3653 530.57 Q59.9619 527.419 59.9619 521.722 Q59.9619 519.176 59.2935 516.693 Q58.5933 514.179 57.2247 511.696 L62.6355 511.696 Q63.7814 514.147 64.3543 516.789 Q64.9272 519.399 64.9272 522.359 Q64.9272 530.411 59.8664 535.154 Q54.8057 539.896 46.212 539.896 Q37.491 539.896 32.4939 535.122 Q27.4968 530.316 27.4968 521.977 Q27.4968 519.271 28.0697 516.693 Q28.6108 514.115 29.7248 511.696 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M18.2347 495.718 L28.3562 495.718 L28.3562 483.655 L32.9077 483.655 L32.9077 495.718 L52.2594 495.718 Q56.6199 495.718 57.8613 494.541 Q59.1026 493.331 59.1026 489.671 L59.1026 483.655 L64.0042 483.655 L64.0042 489.671 Q64.0042 496.45 61.4897 499.028 Q58.9434 501.606 52.2594 501.606 L32.9077 501.606 L32.9077 505.903 L28.3562 505.903 L28.3562 501.606 L18.2347 501.606 L18.2347 495.718 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M28.3562 475.953 L28.3562 470.096 L64.0042 470.096 L64.0042 475.953 L28.3562 475.953 M14.479 475.953 L14.479 470.096 L21.895 470.096 L21.895 475.953 L14.479 475.953 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M32.4621 444.029 Q32.4621 448.739 36.1542 451.477 Q39.8145 454.214 46.212 454.214 Q52.6095 454.214 56.3017 451.508 Q59.9619 448.771 59.9619 444.029 Q59.9619 439.35 56.2698 436.613 Q52.5777 433.875 46.212 433.875 Q39.8781 433.875 36.186 436.613 Q32.4621 439.35 32.4621 444.029 M27.4968 444.029 Q27.4968 436.39 32.4621 432.029 Q37.4273 427.669 46.212 427.669 Q54.9649 427.669 59.9619 432.029 Q64.9272 436.39 64.9272 444.029 Q64.9272 451.699 59.9619 456.06 Q54.9649 460.388 46.212 460.388 Q37.4273 460.388 32.4621 456.06 Q27.4968 451.699 27.4968 444.029 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M42.4881 388.329 L64.0042 388.329 L64.0042 394.185 L42.679 394.185 Q37.6183 394.185 35.1038 396.159 Q32.5894 398.132 32.5894 402.079 Q32.5894 406.821 35.6131 409.558 Q38.6368 412.296 43.8567 412.296 L64.0042 412.296 L64.0042 418.184 L28.3562 418.184 L28.3562 412.296 L33.8944 412.296 Q30.6797 410.195 29.0883 407.362 Q27.4968 404.498 27.4968 400.774 Q27.4968 394.631 31.3163 391.48 Q35.1038 388.329 42.4881 388.329 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip630)\" d=\"M14.5426 377.571 L14.5426 372.478 Q22.0542 367.704 29.2474 365.348 Q36.4406 362.961 43.5384 362.961 Q50.668 362.961 57.8931 365.348 Q65.1182 367.704 72.5979 372.478 L72.5979 377.571 Q65.3091 373.337 58.1159 371.269 Q50.8908 369.168 43.5384 369.168 Q36.186 369.168 29.0246 371.269 Q21.8632 373.337 14.5426 377.571 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip632)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"315.882,1384.24 335.658,1365.85 355.433,1347.46 375.209,1329.06 394.984,1310.67 414.76,1292.28 434.535,1265.04 454.311,1237.8 474.086,1210.55 493.862,1183.31 513.637,1156.07 533.412,1139.07 553.188,1122.08 572.963,1105.09 592.739,1088.09 612.514,1071.1 632.29,1056.74 652.065,1042.38 671.841,1028.02 691.616,1013.66 711.392,999.295 731.167,987.752 750.943,976.208 770.718,964.665 790.494,953.122 810.269,941.579 830.045,931.658 849.82,921.736 869.596,911.815 889.371,901.893 909.146,891.972 928.922,883.245 948.697,874.518 968.473,865.791 988.248,857.064 1008.02,848.336 1027.8,840.391 1047.57,832.445 1067.35,824.5 1087.13,816.554 1106.9,808.609 1126.68,801.152 1146.45,793.696 1166.23,786.24 1186,778.783 1205.78,771.327 1225.55,764.104 1245.33,756.881 1265.1,749.658 1284.88,742.435 1304.66,735.212 1324.43,727.989 1344.21,720.766 1363.98,713.543 1383.76,706.32 1403.53,699.097 1423.31,691.641 1443.08,684.184 1462.86,676.728 1482.64,669.272 1502.41,661.815 1522.19,653.87 1541.96,645.924 1561.74,637.979 1581.51,630.033 1601.29,622.088 1621.06,613.36 1640.84,604.633 1660.61,595.906 1680.39,587.179 1700.17,578.452 1719.94,568.53 1739.72,558.609 1759.49,548.688 1779.27,538.766 1799.04,528.845 1818.82,517.302 1838.59,505.759 1858.37,494.215 1878.14,482.672 1897.92,471.129 1917.7,456.768 1937.47,442.407 1957.25,428.046 1977.02,413.685 1996.8,399.324 2016.57,382.331 2036.35,365.337 2056.12,348.344 2075.9,331.35 2095.67,314.357 2115.45,287.114 2135.23,259.871 2155,232.627 2174.78,205.384 2194.55,178.141 2214.33,159.75 2234.1,141.359 2253.88,122.968 2273.65,104.577 2293.43,86.1857 \"/>\n", "</svg>\n" ], "image/svg+xml": [ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", "<defs>\n", - " <clipPath id=\"clip990\">\n", + " <clipPath id=\"clip600\">\n", " <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip990)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip600)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip991\">\n", + " <clipPath id=\"clip601\">\n", " <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip990)\" d=\"M256.556 1423.18 L2352.76 1423.18 L2352.76 47.2441 L256.556 47.2441 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip600)\" d=\"M256.556 1423.18 L2352.76 1423.18 L2352.76 47.2441 L256.556 47.2441 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip992\">\n", + " <clipPath id=\"clip602\">\n", " <rect x=\"256\" y=\"47\" width=\"2097\" height=\"1377\"/>\n", " </clipPath>\n", "</defs>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"315.882,1423.18 315.882,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"810.269,1423.18 810.269,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1304.66,1423.18 1304.66,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1799.04,1423.18 1799.04,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2293.43,1423.18 2293.43,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,1272.91 2352.76,1272.91 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,1093.67 2352.76,1093.67 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,914.443 2352.76,914.443 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,735.212 2352.76,735.212 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,555.981 2352.76,555.981 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,376.749 2352.76,376.749 \"/>\n", - "<polyline clip-path=\"url(#clip992)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,197.518 2352.76,197.518 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1423.18 2352.76,1423.18 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"315.882,1423.18 315.882,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"810.269,1423.18 810.269,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1304.66,1423.18 1304.66,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1799.04,1423.18 1799.04,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2293.43,1423.18 2293.43,1404.28 \"/>\n", - "<path clip-path=\"url(#clip990)\" d=\"M262.41 1468.75 L292.086 1468.75 L292.086 1472.69 L262.41 1472.69 L262.41 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M302.989 1481.64 L310.628 1481.64 L310.628 1455.28 L302.318 1456.95 L302.318 1452.69 L310.581 1451.02 L315.257 1451.02 L315.257 1481.64 L322.896 1481.64 L322.896 1485.58 L302.989 1485.58 L302.989 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M332.341 1479.7 L337.225 1479.7 L337.225 1485.58 L332.341 1485.58 L332.341 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M357.41 1454.1 Q353.799 1454.1 351.97 1457.66 Q350.165 1461.2 350.165 1468.33 Q350.165 1475.44 351.97 1479.01 Q353.799 1482.55 357.41 1482.55 Q361.044 1482.55 362.85 1479.01 Q364.678 1475.44 364.678 1468.33 Q364.678 1461.2 362.85 1457.66 Q361.044 1454.1 357.41 1454.1 M357.41 1450.39 Q363.22 1450.39 366.276 1455 Q369.354 1459.58 369.354 1468.33 Q369.354 1477.06 366.276 1481.67 Q363.22 1486.25 357.41 1486.25 Q351.6 1486.25 348.521 1481.67 Q345.465 1477.06 345.465 1468.33 Q345.465 1459.58 348.521 1455 Q351.6 1450.39 357.41 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M757.295 1468.75 L786.971 1468.75 L786.971 1472.69 L757.295 1472.69 L757.295 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M807.063 1454.1 Q803.452 1454.1 801.623 1457.66 Q799.818 1461.2 799.818 1468.33 Q799.818 1475.44 801.623 1479.01 Q803.452 1482.55 807.063 1482.55 Q810.697 1482.55 812.503 1479.01 Q814.332 1475.44 814.332 1468.33 Q814.332 1461.2 812.503 1457.66 Q810.697 1454.1 807.063 1454.1 M807.063 1450.39 Q812.873 1450.39 815.929 1455 Q819.007 1459.58 819.007 1468.33 Q819.007 1477.06 815.929 1481.67 Q812.873 1486.25 807.063 1486.25 Q801.253 1486.25 798.174 1481.67 Q795.119 1477.06 795.119 1468.33 Q795.119 1459.58 798.174 1455 Q801.253 1450.39 807.063 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M827.225 1479.7 L832.109 1479.7 L832.109 1485.58 L827.225 1485.58 L827.225 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M842.341 1451.02 L860.697 1451.02 L860.697 1454.96 L846.623 1454.96 L846.623 1463.43 Q847.642 1463.08 848.66 1462.92 Q849.679 1462.73 850.697 1462.73 Q856.484 1462.73 859.864 1465.9 Q863.243 1469.08 863.243 1474.49 Q863.243 1480.07 859.771 1483.17 Q856.299 1486.25 849.98 1486.25 Q847.804 1486.25 845.535 1485.88 Q843.29 1485.51 840.882 1484.77 L840.882 1480.07 Q842.966 1481.2 845.188 1481.76 Q847.41 1482.32 849.887 1482.32 Q853.892 1482.32 856.229 1480.21 Q858.567 1478.1 858.567 1474.49 Q858.567 1470.88 856.229 1468.77 Q853.892 1466.67 849.887 1466.67 Q848.012 1466.67 846.137 1467.08 Q844.285 1467.5 842.341 1468.38 L842.341 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1282.04 1454.1 Q1278.43 1454.1 1276.6 1457.66 Q1274.79 1461.2 1274.79 1468.33 Q1274.79 1475.44 1276.6 1479.01 Q1278.43 1482.55 1282.04 1482.55 Q1285.67 1482.55 1287.48 1479.01 Q1289.31 1475.44 1289.31 1468.33 Q1289.31 1461.2 1287.48 1457.66 Q1285.67 1454.1 1282.04 1454.1 M1282.04 1450.39 Q1287.85 1450.39 1290.91 1455 Q1293.98 1459.58 1293.98 1468.33 Q1293.98 1477.06 1290.91 1481.67 Q1287.85 1486.25 1282.04 1486.25 Q1276.23 1486.25 1273.15 1481.67 Q1270.1 1477.06 1270.1 1468.33 Q1270.1 1459.58 1273.15 1455 Q1276.23 1450.39 1282.04 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1302.2 1479.7 L1307.09 1479.7 L1307.09 1485.58 L1302.2 1485.58 L1302.2 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1327.27 1454.1 Q1323.66 1454.1 1321.83 1457.66 Q1320.03 1461.2 1320.03 1468.33 Q1320.03 1475.44 1321.83 1479.01 Q1323.66 1482.55 1327.27 1482.55 Q1330.91 1482.55 1332.71 1479.01 Q1334.54 1475.44 1334.54 1468.33 Q1334.54 1461.2 1332.71 1457.66 Q1330.91 1454.1 1327.27 1454.1 M1327.27 1450.39 Q1333.08 1450.39 1336.14 1455 Q1339.22 1459.58 1339.22 1468.33 Q1339.22 1477.06 1336.14 1481.67 Q1333.08 1486.25 1327.27 1486.25 Q1321.46 1486.25 1318.38 1481.67 Q1315.33 1477.06 1315.33 1468.33 Q1315.33 1459.58 1318.38 1455 Q1321.46 1450.39 1327.27 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1776.92 1454.1 Q1773.31 1454.1 1771.48 1457.66 Q1769.68 1461.2 1769.68 1468.33 Q1769.68 1475.44 1771.48 1479.01 Q1773.31 1482.55 1776.92 1482.55 Q1780.56 1482.55 1782.36 1479.01 Q1784.19 1475.44 1784.19 1468.33 Q1784.19 1461.2 1782.36 1457.66 Q1780.56 1454.1 1776.92 1454.1 M1776.92 1450.39 Q1782.73 1450.39 1785.79 1455 Q1788.87 1459.58 1788.87 1468.33 Q1788.87 1477.06 1785.79 1481.67 Q1782.73 1486.25 1776.92 1486.25 Q1771.11 1486.25 1768.04 1481.67 Q1764.98 1477.06 1764.98 1468.33 Q1764.98 1459.58 1768.04 1455 Q1771.11 1450.39 1776.92 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1797.09 1479.7 L1801.97 1479.7 L1801.97 1485.58 L1797.09 1485.58 L1797.09 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1812.2 1451.02 L1830.56 1451.02 L1830.56 1454.96 L1816.48 1454.96 L1816.48 1463.43 Q1817.5 1463.08 1818.52 1462.92 Q1819.54 1462.73 1820.56 1462.73 Q1826.35 1462.73 1829.73 1465.9 Q1833.11 1469.08 1833.11 1474.49 Q1833.11 1480.07 1829.63 1483.17 Q1826.16 1486.25 1819.84 1486.25 Q1817.67 1486.25 1815.4 1485.88 Q1813.15 1485.51 1810.74 1484.77 L1810.74 1480.07 Q1812.83 1481.2 1815.05 1481.76 Q1817.27 1482.32 1819.75 1482.32 Q1823.75 1482.32 1826.09 1480.21 Q1828.43 1478.1 1828.43 1474.49 Q1828.43 1470.88 1826.09 1468.77 Q1823.75 1466.67 1819.75 1466.67 Q1817.87 1466.67 1816 1467.08 Q1814.15 1467.5 1812.2 1468.38 L1812.2 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M2260.58 1481.64 L2268.22 1481.64 L2268.22 1455.28 L2259.91 1456.95 L2259.91 1452.69 L2268.17 1451.02 L2272.85 1451.02 L2272.85 1481.64 L2280.49 1481.64 L2280.49 1485.58 L2260.58 1485.58 L2260.58 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M2289.93 1479.7 L2294.82 1479.7 L2294.82 1485.58 L2289.93 1485.58 L2289.93 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M2315 1454.1 Q2311.39 1454.1 2309.56 1457.66 Q2307.76 1461.2 2307.76 1468.33 Q2307.76 1475.44 2309.56 1479.01 Q2311.39 1482.55 2315 1482.55 Q2318.64 1482.55 2320.44 1479.01 Q2322.27 1475.44 2322.27 1468.33 Q2322.27 1461.2 2320.44 1457.66 Q2318.64 1454.1 2315 1454.1 M2315 1450.39 Q2320.81 1450.39 2323.87 1455 Q2326.95 1459.58 2326.95 1468.33 Q2326.95 1477.06 2323.87 1481.67 Q2320.81 1486.25 2315 1486.25 Q2309.19 1486.25 2306.11 1481.67 Q2303.06 1477.06 2303.06 1468.33 Q2303.06 1459.58 2306.11 1455 Q2309.19 1450.39 2315 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1113.38 1532.4 L1100.49 1549.74 L1114.05 1568.04 L1107.14 1568.04 L1096.77 1554.04 L1086.39 1568.04 L1079.48 1568.04 L1093.33 1549.39 L1080.66 1532.4 L1087.57 1532.4 L1097.02 1545.1 L1106.48 1532.4 L1113.38 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1157.11 1518.58 Q1152.85 1525.9 1150.78 1533.06 Q1148.71 1540.23 1148.71 1547.58 Q1148.71 1554.93 1150.78 1562.16 Q1152.88 1569.35 1157.11 1576.64 L1152.02 1576.64 Q1147.25 1569.16 1144.86 1561.93 Q1142.51 1554.71 1142.51 1547.58 Q1142.51 1540.48 1144.86 1533.29 Q1147.22 1526.09 1152.02 1518.58 L1157.11 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1194.13 1533.76 L1194.13 1539.24 Q1191.65 1537.87 1189.13 1537.2 Q1186.65 1536.5 1184.11 1536.5 Q1178.41 1536.5 1175.26 1540.13 Q1172.11 1543.73 1172.11 1550.25 Q1172.11 1556.78 1175.26 1560.4 Q1178.41 1564 1184.11 1564 Q1186.65 1564 1189.13 1563.33 Q1191.65 1562.63 1194.13 1561.26 L1194.13 1566.68 Q1191.68 1567.82 1189.04 1568.39 Q1186.43 1568.97 1183.47 1568.97 Q1175.42 1568.97 1170.67 1563.91 Q1165.93 1558.85 1165.93 1550.25 Q1165.93 1541.53 1170.71 1536.53 Q1175.51 1531.54 1183.85 1531.54 Q1186.56 1531.54 1189.13 1532.11 Q1191.71 1532.65 1194.13 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1218.13 1536.5 Q1213.42 1536.5 1210.68 1540.19 Q1207.94 1543.85 1207.94 1550.25 Q1207.94 1556.65 1210.65 1560.34 Q1213.39 1564 1218.13 1564 Q1222.81 1564 1225.55 1560.31 Q1228.28 1556.62 1228.28 1550.25 Q1228.28 1543.92 1225.55 1540.23 Q1222.81 1536.5 1218.13 1536.5 M1218.13 1531.54 Q1225.77 1531.54 1230.13 1536.5 Q1234.49 1541.47 1234.49 1550.25 Q1234.49 1559 1230.13 1564 Q1225.77 1568.97 1218.13 1568.97 Q1210.46 1568.97 1206.1 1564 Q1201.77 1559 1201.77 1550.25 Q1201.77 1541.47 1206.1 1536.5 Q1210.46 1531.54 1218.13 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1258.01 1536.5 Q1253.3 1536.5 1250.56 1540.19 Q1247.83 1543.85 1247.83 1550.25 Q1247.83 1556.65 1250.53 1560.34 Q1253.27 1564 1258.01 1564 Q1262.69 1564 1265.43 1560.31 Q1268.16 1556.62 1268.16 1550.25 Q1268.16 1543.92 1265.43 1540.23 Q1262.69 1536.5 1258.01 1536.5 M1258.01 1531.54 Q1265.65 1531.54 1270.01 1536.5 Q1274.37 1541.47 1274.37 1550.25 Q1274.37 1559 1270.01 1564 Q1265.65 1568.97 1258.01 1568.97 Q1250.34 1568.97 1245.98 1564 Q1241.65 1559 1241.65 1550.25 Q1241.65 1541.47 1245.98 1536.5 Q1250.34 1531.54 1258.01 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1304.74 1537.87 Q1303.75 1537.3 1302.57 1537.04 Q1301.43 1536.76 1300.02 1536.76 Q1295.06 1536.76 1292.39 1540 Q1289.74 1543.22 1289.74 1549.27 L1289.74 1568.04 L1283.86 1568.04 L1283.86 1532.4 L1289.74 1532.4 L1289.74 1537.93 Q1291.59 1534.69 1294.55 1533.13 Q1297.51 1531.54 1301.74 1531.54 Q1302.35 1531.54 1303.08 1531.63 Q1303.81 1531.7 1304.7 1531.85 L1304.74 1537.87 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1333.19 1537.81 L1333.19 1518.52 L1339.05 1518.52 L1339.05 1568.04 L1333.19 1568.04 L1333.19 1562.7 Q1331.34 1565.88 1328.51 1567.44 Q1325.71 1568.97 1321.76 1568.97 Q1315.3 1568.97 1311.23 1563.81 Q1307.19 1558.65 1307.19 1550.25 Q1307.19 1541.85 1311.23 1536.69 Q1315.3 1531.54 1321.76 1531.54 Q1325.71 1531.54 1328.51 1533.1 Q1331.34 1534.62 1333.19 1537.81 M1313.23 1550.25 Q1313.23 1556.71 1315.88 1560.4 Q1318.55 1564.07 1323.2 1564.07 Q1327.84 1564.07 1330.52 1560.4 Q1333.19 1556.71 1333.19 1550.25 Q1333.19 1543.79 1330.52 1540.13 Q1327.84 1536.44 1323.2 1536.44 Q1318.55 1536.44 1315.88 1540.13 Q1313.23 1543.79 1313.23 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1351.11 1532.4 L1356.97 1532.4 L1356.97 1568.04 L1351.11 1568.04 L1351.11 1532.4 M1351.11 1518.52 L1356.97 1518.52 L1356.97 1525.93 L1351.11 1525.93 L1351.11 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1398.85 1546.53 L1398.85 1568.04 L1393 1568.04 L1393 1546.72 Q1393 1541.66 1391.02 1539.14 Q1389.05 1536.63 1385.1 1536.63 Q1380.36 1536.63 1377.62 1539.65 Q1374.89 1542.68 1374.89 1547.9 L1374.89 1568.04 L1369 1568.04 L1369 1532.4 L1374.89 1532.4 L1374.89 1537.93 Q1376.99 1534.72 1379.82 1533.13 Q1382.68 1531.54 1386.41 1531.54 Q1392.55 1531.54 1395.7 1535.36 Q1398.85 1539.14 1398.85 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1426.73 1550.12 Q1419.64 1550.12 1416.9 1551.75 Q1414.16 1553.37 1414.16 1557.29 Q1414.16 1560.4 1416.2 1562.25 Q1418.27 1564.07 1421.8 1564.07 Q1426.67 1564.07 1429.6 1560.63 Q1432.56 1557.16 1432.56 1551.43 L1432.56 1550.12 L1426.73 1550.12 M1438.42 1547.71 L1438.42 1568.04 L1432.56 1568.04 L1432.56 1562.63 Q1430.55 1565.88 1427.56 1567.44 Q1424.57 1568.97 1420.24 1568.97 Q1414.77 1568.97 1411.52 1565.91 Q1408.31 1562.82 1408.31 1557.67 Q1408.31 1551.65 1412.32 1548.6 Q1416.36 1545.54 1424.35 1545.54 L1432.56 1545.54 L1432.56 1544.97 Q1432.56 1540.93 1429.89 1538.73 Q1427.24 1536.5 1422.44 1536.5 Q1419.38 1536.5 1416.49 1537.23 Q1413.59 1537.97 1410.92 1539.43 L1410.92 1534.02 Q1414.13 1532.78 1417.15 1532.17 Q1420.18 1531.54 1423.04 1531.54 Q1430.78 1531.54 1434.6 1535.55 Q1438.42 1539.56 1438.42 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1456.27 1522.27 L1456.27 1532.4 L1468.33 1532.4 L1468.33 1536.95 L1456.27 1536.95 L1456.27 1556.3 Q1456.27 1560.66 1457.45 1561.9 Q1458.66 1563.14 1462.32 1563.14 L1468.33 1563.14 L1468.33 1568.04 L1462.32 1568.04 Q1455.54 1568.04 1452.96 1565.53 Q1450.38 1562.98 1450.38 1556.3 L1450.38 1536.95 L1446.09 1536.95 L1446.09 1532.4 L1450.38 1532.4 L1450.38 1522.27 L1456.27 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1506.53 1548.76 L1506.53 1551.62 L1479.6 1551.62 Q1479.98 1557.67 1483.23 1560.85 Q1486.51 1564 1492.33 1564 Q1495.71 1564 1498.86 1563.17 Q1502.04 1562.35 1505.16 1560.69 L1505.16 1566.23 Q1502.01 1567.57 1498.7 1568.27 Q1495.39 1568.97 1491.98 1568.97 Q1483.45 1568.97 1478.46 1564 Q1473.49 1559.04 1473.49 1550.57 Q1473.49 1541.82 1478.2 1536.69 Q1482.94 1531.54 1490.96 1531.54 Q1498.16 1531.54 1502.33 1536.18 Q1506.53 1540.8 1506.53 1548.76 M1500.67 1547.04 Q1500.61 1542.23 1497.97 1539.37 Q1495.36 1536.5 1491.03 1536.5 Q1486.13 1536.5 1483.17 1539.27 Q1480.24 1542.04 1479.79 1547.07 L1500.67 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M1515.22 1518.58 L1520.31 1518.58 Q1525.08 1526.09 1527.44 1533.29 Q1529.83 1540.48 1529.83 1547.58 Q1529.83 1554.71 1527.44 1561.93 Q1525.08 1569.16 1520.31 1576.64 L1515.22 1576.64 Q1519.45 1569.35 1521.52 1562.16 Q1523.62 1554.93 1523.62 1547.58 Q1523.62 1540.23 1521.52 1533.06 Q1519.45 1525.9 1515.22 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1423.18 256.556,47.2441 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1272.91 275.454,1272.91 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1093.67 275.454,1093.67 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,914.443 275.454,914.443 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,735.212 275.454,735.212 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,555.981 275.454,555.981 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,376.749 275.454,376.749 \"/>\n", - "<polyline clip-path=\"url(#clip990)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,197.518 275.454,197.518 \"/>\n", - "<path clip-path=\"url(#clip990)\" d=\"M114.26 1273.36 L143.936 1273.36 L143.936 1277.29 L114.26 1277.29 L114.26 1273.36 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M164.028 1258.7 Q160.417 1258.7 158.589 1262.27 Q156.783 1265.81 156.783 1272.94 Q156.783 1280.05 158.589 1283.61 Q160.417 1287.15 164.028 1287.15 Q167.663 1287.15 169.468 1283.61 Q171.297 1280.05 171.297 1272.94 Q171.297 1265.81 169.468 1262.27 Q167.663 1258.7 164.028 1258.7 M164.028 1255 Q169.839 1255 172.894 1259.61 Q175.973 1264.19 175.973 1272.94 Q175.973 1281.67 172.894 1286.27 Q169.839 1290.86 164.028 1290.86 Q158.218 1290.86 155.14 1286.27 Q152.084 1281.67 152.084 1272.94 Q152.084 1264.19 155.14 1259.61 Q158.218 1255 164.028 1255 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M184.19 1284.31 L189.075 1284.31 L189.075 1290.19 L184.19 1290.19 L184.19 1284.31 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M213.426 1271.55 Q216.783 1272.27 218.658 1274.54 Q220.556 1276.81 220.556 1280.14 Q220.556 1285.26 217.037 1288.06 Q213.519 1290.86 207.037 1290.86 Q204.862 1290.86 202.547 1290.42 Q200.255 1290 197.801 1289.14 L197.801 1284.63 Q199.746 1285.76 202.061 1286.34 Q204.375 1286.92 206.899 1286.92 Q211.297 1286.92 213.588 1285.19 Q215.903 1283.45 215.903 1280.14 Q215.903 1277.08 213.75 1275.37 Q211.621 1273.64 207.801 1273.64 L203.774 1273.64 L203.774 1269.79 L207.987 1269.79 Q211.436 1269.79 213.264 1268.43 Q215.093 1267.04 215.093 1264.45 Q215.093 1261.78 213.195 1260.37 Q211.32 1258.94 207.801 1258.94 Q205.88 1258.94 203.681 1259.35 Q201.482 1259.77 198.843 1260.65 L198.843 1256.48 Q201.505 1255.74 203.82 1255.37 Q206.158 1255 208.218 1255 Q213.542 1255 216.644 1257.43 Q219.746 1259.84 219.746 1263.96 Q219.746 1266.83 218.102 1268.82 Q216.459 1270.79 213.426 1271.55 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M115.209 1094.13 L144.885 1094.13 L144.885 1098.06 L115.209 1098.06 L115.209 1094.13 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M164.977 1079.47 Q161.366 1079.47 159.538 1083.04 Q157.732 1086.58 157.732 1093.71 Q157.732 1100.82 159.538 1104.38 Q161.366 1107.92 164.977 1107.92 Q168.612 1107.92 170.417 1104.38 Q172.246 1100.82 172.246 1093.71 Q172.246 1086.58 170.417 1083.04 Q168.612 1079.47 164.977 1079.47 M164.977 1075.77 Q170.788 1075.77 173.843 1080.38 Q176.922 1084.96 176.922 1093.71 Q176.922 1102.44 173.843 1107.04 Q170.788 1111.63 164.977 1111.63 Q159.167 1111.63 156.089 1107.04 Q153.033 1102.44 153.033 1093.71 Q153.033 1084.96 156.089 1080.38 Q159.167 1075.77 164.977 1075.77 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M185.139 1105.07 L190.024 1105.07 L190.024 1110.95 L185.139 1110.95 L185.139 1105.07 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M204.237 1107.02 L220.556 1107.02 L220.556 1110.95 L198.612 1110.95 L198.612 1107.02 Q201.274 1104.26 205.857 1099.64 Q210.463 1094.98 211.644 1093.64 Q213.889 1091.12 214.769 1089.38 Q215.672 1087.62 215.672 1085.93 Q215.672 1083.18 213.727 1081.44 Q211.806 1079.7 208.704 1079.7 Q206.505 1079.7 204.051 1080.47 Q201.621 1081.23 198.843 1082.78 L198.843 1078.06 Q201.667 1076.93 204.121 1076.35 Q206.574 1075.77 208.612 1075.77 Q213.982 1075.77 217.176 1078.45 Q220.371 1081.14 220.371 1085.63 Q220.371 1087.76 219.561 1089.68 Q218.773 1091.58 216.667 1094.17 Q216.088 1094.84 212.986 1098.06 Q209.885 1101.26 204.237 1107.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M114.839 914.895 L144.515 914.895 L144.515 918.83 L114.839 918.83 L114.839 914.895 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M164.607 900.242 Q160.996 900.242 159.167 903.807 Q157.362 907.348 157.362 914.478 Q157.362 921.584 159.167 925.149 Q160.996 928.691 164.607 928.691 Q168.241 928.691 170.047 925.149 Q171.876 921.584 171.876 914.478 Q171.876 907.348 170.047 903.807 Q168.241 900.242 164.607 900.242 M164.607 896.538 Q170.417 896.538 173.473 901.145 Q176.551 905.728 176.551 914.478 Q176.551 923.205 173.473 927.811 Q170.417 932.395 164.607 932.395 Q158.797 932.395 155.718 927.811 Q152.663 923.205 152.663 914.478 Q152.663 905.728 155.718 901.145 Q158.797 896.538 164.607 896.538 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M184.769 925.844 L189.653 925.844 L189.653 931.723 L184.769 931.723 L184.769 925.844 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M200.649 927.788 L208.287 927.788 L208.287 901.422 L199.977 903.089 L199.977 898.83 L208.241 897.163 L212.917 897.163 L212.917 927.788 L220.556 927.788 L220.556 931.723 L200.649 931.723 L200.649 927.788 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M163.38 721.011 Q159.769 721.011 157.94 724.575 Q156.135 728.117 156.135 735.247 Q156.135 742.353 157.94 745.918 Q159.769 749.46 163.38 749.46 Q167.015 749.46 168.82 745.918 Q170.649 742.353 170.649 735.247 Q170.649 728.117 168.82 724.575 Q167.015 721.011 163.38 721.011 M163.38 717.307 Q169.19 717.307 172.246 721.913 Q175.325 726.497 175.325 735.247 Q175.325 743.973 172.246 748.58 Q169.19 753.163 163.38 753.163 Q157.57 753.163 154.491 748.58 Q151.436 743.973 151.436 735.247 Q151.436 726.497 154.491 721.913 Q157.57 717.307 163.38 717.307 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M183.542 746.612 L188.426 746.612 L188.426 752.492 L183.542 752.492 L183.542 746.612 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M208.612 721.011 Q205 721.011 203.172 724.575 Q201.366 728.117 201.366 735.247 Q201.366 742.353 203.172 745.918 Q205 749.46 208.612 749.46 Q212.246 749.46 214.051 745.918 Q215.88 742.353 215.88 735.247 Q215.88 728.117 214.051 724.575 Q212.246 721.011 208.612 721.011 M208.612 717.307 Q214.422 717.307 217.477 721.913 Q220.556 726.497 220.556 735.247 Q220.556 743.973 217.477 748.58 Q214.422 753.163 208.612 753.163 Q202.801 753.163 199.723 748.58 Q196.667 743.973 196.667 735.247 Q196.667 726.497 199.723 721.913 Q202.801 717.307 208.612 717.307 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M164.607 541.779 Q160.996 541.779 159.167 545.344 Q157.362 548.886 157.362 556.015 Q157.362 563.122 159.167 566.687 Q160.996 570.228 164.607 570.228 Q168.241 570.228 170.047 566.687 Q171.876 563.122 171.876 556.015 Q171.876 548.886 170.047 545.344 Q168.241 541.779 164.607 541.779 M164.607 538.076 Q170.417 538.076 173.473 542.682 Q176.551 547.265 176.551 556.015 Q176.551 564.742 173.473 569.349 Q170.417 573.932 164.607 573.932 Q158.797 573.932 155.718 569.349 Q152.663 564.742 152.663 556.015 Q152.663 547.265 155.718 542.682 Q158.797 538.076 164.607 538.076 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M184.769 567.381 L189.653 567.381 L189.653 573.261 L184.769 573.261 L184.769 567.381 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M200.649 569.326 L208.287 569.326 L208.287 542.96 L199.977 544.627 L199.977 540.367 L208.241 538.701 L212.917 538.701 L212.917 569.326 L220.556 569.326 L220.556 573.261 L200.649 573.261 L200.649 569.326 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M164.977 362.548 Q161.366 362.548 159.538 366.113 Q157.732 369.655 157.732 376.784 Q157.732 383.891 159.538 387.455 Q161.366 390.997 164.977 390.997 Q168.612 390.997 170.417 387.455 Q172.246 383.891 172.246 376.784 Q172.246 369.655 170.417 366.113 Q168.612 362.548 164.977 362.548 M164.977 358.844 Q170.788 358.844 173.843 363.451 Q176.922 368.034 176.922 376.784 Q176.922 385.511 173.843 390.117 Q170.788 394.701 164.977 394.701 Q159.167 394.701 156.089 390.117 Q153.033 385.511 153.033 376.784 Q153.033 368.034 156.089 363.451 Q159.167 358.844 164.977 358.844 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M185.139 388.15 L190.024 388.15 L190.024 394.029 L185.139 394.029 L185.139 388.15 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M204.237 390.094 L220.556 390.094 L220.556 394.029 L198.612 394.029 L198.612 390.094 Q201.274 387.34 205.857 382.71 Q210.463 378.057 211.644 376.715 Q213.889 374.192 214.769 372.455 Q215.672 370.696 215.672 369.006 Q215.672 366.252 213.727 364.516 Q211.806 362.78 208.704 362.78 Q206.505 362.78 204.051 363.543 Q201.621 364.307 198.843 365.858 L198.843 361.136 Q201.667 360.002 204.121 359.423 Q206.574 358.844 208.612 358.844 Q213.982 358.844 217.176 361.53 Q220.371 364.215 220.371 368.705 Q220.371 370.835 219.561 372.756 Q218.773 374.654 216.667 377.247 Q216.088 377.918 212.986 381.136 Q209.885 384.33 204.237 390.094 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M164.028 183.317 Q160.417 183.317 158.589 186.882 Q156.783 190.423 156.783 197.553 Q156.783 204.659 158.589 208.224 Q160.417 211.766 164.028 211.766 Q167.663 211.766 169.468 208.224 Q171.297 204.659 171.297 197.553 Q171.297 190.423 169.468 186.882 Q167.663 183.317 164.028 183.317 M164.028 179.613 Q169.839 179.613 172.894 184.22 Q175.973 188.803 175.973 197.553 Q175.973 206.28 172.894 210.886 Q169.839 215.469 164.028 215.469 Q158.218 215.469 155.14 210.886 Q152.084 206.28 152.084 197.553 Q152.084 188.803 155.14 184.22 Q158.218 179.613 164.028 179.613 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M184.19 208.918 L189.075 208.918 L189.075 214.798 L184.19 214.798 L184.19 208.918 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M213.426 196.164 Q216.783 196.882 218.658 199.15 Q220.556 201.419 220.556 204.752 Q220.556 209.868 217.037 212.668 Q213.519 215.469 207.037 215.469 Q204.862 215.469 202.547 215.03 Q200.255 214.613 197.801 213.756 L197.801 209.243 Q199.746 210.377 202.061 210.956 Q204.375 211.534 206.899 211.534 Q211.297 211.534 213.588 209.798 Q215.903 208.062 215.903 204.752 Q215.903 201.696 213.75 199.983 Q211.621 198.247 207.801 198.247 L203.774 198.247 L203.774 194.405 L207.987 194.405 Q211.436 194.405 213.264 193.039 Q215.093 191.65 215.093 189.057 Q215.093 186.395 213.195 184.983 Q211.32 183.548 207.801 183.548 Q205.88 183.548 203.681 183.965 Q201.482 184.382 198.843 185.261 L198.843 181.095 Q201.505 180.354 203.82 179.983 Q206.158 179.613 208.218 179.613 Q213.542 179.613 216.644 182.044 Q219.746 184.451 219.746 188.571 Q219.746 191.442 218.102 193.432 Q216.459 195.4 213.426 196.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M46.212 1101.42 Q52.6732 1101.42 56.3653 1098.77 Q60.0256 1096.1 60.0256 1091.45 Q60.0256 1086.81 56.3653 1084.13 Q52.6732 1081.46 46.212 1081.46 Q39.7508 1081.46 36.0905 1084.13 Q32.3984 1086.81 32.3984 1091.45 Q32.3984 1096.1 36.0905 1098.77 Q39.7508 1101.42 46.212 1101.42 M58.657 1081.46 Q61.8398 1083.3 63.3994 1086.14 Q64.9272 1088.94 64.9272 1092.89 Q64.9272 1099.35 59.771 1103.42 Q54.6147 1107.46 46.212 1107.46 Q37.8093 1107.46 32.6531 1103.42 Q27.4968 1099.35 27.4968 1092.89 Q27.4968 1088.94 29.0564 1086.14 Q30.5842 1083.3 33.7671 1081.46 L28.3562 1081.46 L28.3562 1075.6 L77.5631 1075.6 L77.5631 1081.46 L58.657 1081.46 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M74.8259 1036.45 L79.3773 1036.45 L79.3773 1070.32 L74.8259 1070.32 L74.8259 1036.45 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M28.3562 1001.31 L45.7028 1014.2 L64.0042 1000.65 L64.0042 1007.55 L49.9996 1017.93 L64.0042 1028.31 L64.0042 1035.21 L45.3526 1021.37 L28.3562 1034.03 L28.3562 1027.13 L41.0558 1017.67 L28.3562 1008.22 L28.3562 1001.31 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M14.5426 957.582 Q21.8632 961.847 29.0246 963.916 Q36.186 965.985 43.5384 965.985 Q50.8908 965.985 58.1159 963.916 Q65.3091 961.815 72.5979 957.582 L72.5979 962.675 Q65.1182 967.449 57.8931 969.836 Q50.668 972.191 43.5384 972.191 Q36.4406 972.191 29.2474 969.836 Q22.0542 967.481 14.5426 962.675 L14.5426 957.582 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M14.479 928.172 L19.3487 928.172 L19.3487 933.774 Q19.3487 936.925 20.6219 938.167 Q21.895 939.376 25.2052 939.376 L28.3562 939.376 L28.3562 929.732 L32.9077 929.732 L32.9077 939.376 L64.0042 939.376 L64.0042 945.264 L32.9077 945.264 L32.9077 950.866 L28.3562 950.866 L28.3562 945.264 L25.8736 945.264 Q19.9216 945.264 17.2162 942.495 Q14.479 939.726 14.479 933.711 L14.479 928.172 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M14.479 923.271 L14.479 917.414 L64.0042 917.414 L64.0042 923.271 L14.479 923.271 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M49.9359 905.765 L28.3562 905.765 L28.3562 899.909 L49.7131 899.909 Q54.7739 899.909 57.3202 897.935 Q59.8346 895.962 59.8346 892.015 Q59.8346 887.273 56.8109 884.536 Q53.7872 881.766 48.5673 881.766 L28.3562 881.766 L28.3562 875.91 L64.0042 875.91 L64.0042 881.766 L58.5296 881.766 Q61.7762 883.899 63.3676 886.732 Q64.9272 889.533 64.9272 893.257 Q64.9272 899.399 61.1078 902.582 Q57.2883 905.765 49.9359 905.765 M27.4968 891.029 L27.4968 891.029 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M28.3562 834.215 L45.7028 847.105 L64.0042 833.546 L64.0042 840.453 L49.9996 850.829 L64.0042 861.205 L64.0042 868.112 L45.3526 854.267 L28.3562 866.934 L28.3562 860.028 L41.0558 850.574 L28.3562 841.121 L28.3562 834.215 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M28.3562 804.55 L28.3562 798.694 L64.0042 798.694 L64.0042 804.55 L28.3562 804.55 M14.479 804.55 L14.479 798.694 L21.895 798.694 L21.895 804.55 L14.479 804.55 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M42.4881 756.808 L64.0042 756.808 L64.0042 762.664 L42.679 762.664 Q37.6183 762.664 35.1038 764.637 Q32.5894 766.611 32.5894 770.558 Q32.5894 775.3 35.6131 778.037 Q38.6368 780.775 43.8567 780.775 L64.0042 780.775 L64.0042 786.663 L28.3562 786.663 L28.3562 780.775 L33.8944 780.775 Q30.6797 778.674 29.0883 775.841 Q27.4968 772.977 27.4968 769.253 Q27.4968 763.11 31.3163 759.959 Q35.1038 756.808 42.4881 756.808 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M28.3562 694.774 L45.7028 707.664 L64.0042 694.105 L64.0042 701.012 L49.9996 711.388 L64.0042 721.764 L64.0042 728.671 L45.3526 714.826 L28.3562 727.494 L28.3562 720.587 L41.0558 711.134 L28.3562 701.681 L28.3562 694.774 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M43.5384 688.79 L43.5384 671.634 L48.7583 671.634 L48.7583 688.79 L43.5384 688.79 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M33.7671 638.851 L14.479 638.851 L14.479 632.995 L64.0042 632.995 L64.0042 638.851 L58.657 638.851 Q61.8398 640.697 63.3994 643.53 Q64.9272 646.331 64.9272 650.278 Q64.9272 656.739 59.771 660.813 Q54.6147 664.855 46.212 664.855 Q37.8093 664.855 32.6531 660.813 Q27.4968 656.739 27.4968 650.278 Q27.4968 646.331 29.0564 643.53 Q30.5842 640.697 33.7671 638.851 M46.212 658.808 Q52.6732 658.808 56.3653 656.166 Q60.0256 653.492 60.0256 648.845 Q60.0256 644.198 56.3653 641.525 Q52.6732 638.851 46.212 638.851 Q39.7508 638.851 36.0905 641.525 Q32.3984 644.198 32.3984 648.845 Q32.3984 653.492 36.0905 656.166 Q39.7508 658.808 46.212 658.808 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M28.3562 620.932 L28.3562 615.075 L64.0042 615.075 L64.0042 620.932 L28.3562 620.932 M14.479 620.932 L14.479 615.075 L21.895 615.075 L21.895 620.932 L14.479 620.932 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M33.8307 582.164 Q33.2578 583.151 33.0032 584.329 Q32.7167 585.475 32.7167 586.875 Q32.7167 591.84 35.9632 594.514 Q39.1779 597.156 45.2253 597.156 L64.0042 597.156 L64.0042 603.044 L28.3562 603.044 L28.3562 597.156 L33.8944 597.156 Q30.6479 595.31 29.0883 592.35 Q27.4968 589.39 27.4968 585.156 Q27.4968 584.552 27.5923 583.82 Q27.656 583.087 27.8151 582.196 L33.8307 582.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M44.7161 546.962 L47.5806 546.962 L47.5806 573.889 Q53.6281 573.507 56.8109 570.261 Q59.9619 566.982 59.9619 561.158 Q59.9619 557.784 59.1344 554.633 Q58.3069 551.45 56.6518 548.331 L62.1899 548.331 Q63.5267 551.482 64.227 554.792 Q64.9272 558.102 64.9272 561.508 Q64.9272 570.038 59.9619 575.035 Q54.9967 580 46.5303 580 Q37.7774 580 32.6531 575.29 Q27.4968 570.547 27.4968 562.526 Q27.4968 555.333 32.1438 551.163 Q36.7589 546.962 44.7161 546.962 M42.9973 552.819 Q38.1912 552.882 35.3266 555.524 Q32.4621 558.134 32.4621 562.463 Q32.4621 567.364 35.2312 570.324 Q38.0002 573.252 43.0292 573.698 L42.9973 552.819 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M29.7248 511.696 L35.1993 511.696 Q33.8307 514.179 33.1623 516.693 Q32.4621 519.176 32.4621 521.722 Q32.4621 527.419 36.0905 530.57 Q39.6872 533.721 46.212 533.721 Q52.7369 533.721 56.3653 530.57 Q59.9619 527.419 59.9619 521.722 Q59.9619 519.176 59.2935 516.693 Q58.5933 514.179 57.2247 511.696 L62.6355 511.696 Q63.7814 514.147 64.3543 516.789 Q64.9272 519.399 64.9272 522.359 Q64.9272 530.411 59.8664 535.154 Q54.8057 539.896 46.212 539.896 Q37.491 539.896 32.4939 535.122 Q27.4968 530.316 27.4968 521.977 Q27.4968 519.271 28.0697 516.693 Q28.6108 514.115 29.7248 511.696 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M18.2347 495.718 L28.3562 495.718 L28.3562 483.655 L32.9077 483.655 L32.9077 495.718 L52.2594 495.718 Q56.6199 495.718 57.8613 494.541 Q59.1026 493.331 59.1026 489.671 L59.1026 483.655 L64.0042 483.655 L64.0042 489.671 Q64.0042 496.45 61.4897 499.028 Q58.9434 501.606 52.2594 501.606 L32.9077 501.606 L32.9077 505.903 L28.3562 505.903 L28.3562 501.606 L18.2347 501.606 L18.2347 495.718 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M28.3562 475.953 L28.3562 470.096 L64.0042 470.096 L64.0042 475.953 L28.3562 475.953 M14.479 475.953 L14.479 470.096 L21.895 470.096 L21.895 475.953 L14.479 475.953 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M32.4621 444.029 Q32.4621 448.739 36.1542 451.477 Q39.8145 454.214 46.212 454.214 Q52.6095 454.214 56.3017 451.508 Q59.9619 448.771 59.9619 444.029 Q59.9619 439.35 56.2698 436.613 Q52.5777 433.875 46.212 433.875 Q39.8781 433.875 36.186 436.613 Q32.4621 439.35 32.4621 444.029 M27.4968 444.029 Q27.4968 436.39 32.4621 432.029 Q37.4273 427.669 46.212 427.669 Q54.9649 427.669 59.9619 432.029 Q64.9272 436.39 64.9272 444.029 Q64.9272 451.699 59.9619 456.06 Q54.9649 460.388 46.212 460.388 Q37.4273 460.388 32.4621 456.06 Q27.4968 451.699 27.4968 444.029 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M42.4881 388.329 L64.0042 388.329 L64.0042 394.185 L42.679 394.185 Q37.6183 394.185 35.1038 396.159 Q32.5894 398.132 32.5894 402.079 Q32.5894 406.821 35.6131 409.558 Q38.6368 412.296 43.8567 412.296 L64.0042 412.296 L64.0042 418.184 L28.3562 418.184 L28.3562 412.296 L33.8944 412.296 Q30.6797 410.195 29.0883 407.362 Q27.4968 404.498 27.4968 400.774 Q27.4968 394.631 31.3163 391.48 Q35.1038 388.329 42.4881 388.329 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip990)\" d=\"M14.5426 377.571 L14.5426 372.478 Q22.0542 367.704 29.2474 365.348 Q36.4406 362.961 43.5384 362.961 Q50.668 362.961 57.8931 365.348 Q65.1182 367.704 72.5979 372.478 L72.5979 377.571 Q65.3091 373.337 58.1159 371.269 Q50.8908 369.168 43.5384 369.168 Q36.186 369.168 29.0246 371.269 Q21.8632 373.337 14.5426 377.571 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip992)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"315.882,1384.24 335.658,1365.85 355.433,1347.46 375.209,1329.06 394.984,1310.67 414.76,1292.28 434.535,1265.04 454.311,1237.8 474.086,1210.55 493.862,1183.31 513.637,1156.07 533.412,1139.07 553.188,1122.08 572.963,1105.09 592.739,1088.09 612.514,1071.1 632.29,1056.74 652.065,1042.38 671.841,1028.02 691.616,1013.66 711.392,999.295 731.167,987.752 750.943,976.208 770.718,964.665 790.494,953.122 810.269,941.579 830.045,931.658 849.82,921.736 869.596,911.815 889.371,901.893 909.146,891.972 928.922,883.245 948.697,874.518 968.473,865.791 988.248,857.064 1008.02,848.336 1027.8,840.391 1047.57,832.445 1067.35,824.5 1087.13,816.554 1106.9,808.609 1126.68,801.152 1146.45,793.696 1166.23,786.24 1186,778.783 1205.78,771.327 1225.55,764.104 1245.33,756.881 1265.1,749.658 1284.88,742.435 1304.66,735.212 1324.43,727.989 1344.21,720.766 1363.98,713.543 1383.76,706.32 1403.53,699.097 1423.31,691.641 1443.08,684.184 1462.86,676.728 1482.64,669.272 1502.41,661.815 1522.19,653.87 1541.96,645.924 1561.74,637.979 1581.51,630.033 1601.29,622.088 1621.06,613.36 1640.84,604.633 1660.61,595.906 1680.39,587.179 1700.17,578.452 1719.94,568.53 1739.72,558.609 1759.49,548.688 1779.27,538.766 1799.04,528.845 1818.82,517.302 1838.59,505.759 1858.37,494.215 1878.14,482.672 1897.92,471.129 1917.7,456.768 1937.47,442.407 1957.25,428.046 1977.02,413.685 1996.8,399.324 2016.57,382.331 2036.35,365.337 2056.12,348.344 2075.9,331.35 2095.67,314.357 2115.45,287.114 2135.23,259.871 2155,232.627 2174.78,205.384 2194.55,178.141 2214.33,159.75 2234.1,141.359 2253.88,122.968 2273.65,104.577 2293.43,86.1857 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"315.882,1423.18 315.882,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"810.269,1423.18 810.269,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1304.66,1423.18 1304.66,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1799.04,1423.18 1799.04,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2293.43,1423.18 2293.43,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,1272.91 2352.76,1272.91 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,1093.67 2352.76,1093.67 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,914.443 2352.76,914.443 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,735.212 2352.76,735.212 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,555.981 2352.76,555.981 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,376.749 2352.76,376.749 \"/>\n", + "<polyline clip-path=\"url(#clip602)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"256.556,197.518 2352.76,197.518 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1423.18 2352.76,1423.18 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"315.882,1423.18 315.882,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"810.269,1423.18 810.269,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1304.66,1423.18 1304.66,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1799.04,1423.18 1799.04,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2293.43,1423.18 2293.43,1404.28 \"/>\n", + "<path clip-path=\"url(#clip600)\" d=\"M262.41 1468.75 L292.086 1468.75 L292.086 1472.69 L262.41 1472.69 L262.41 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M302.989 1481.64 L310.628 1481.64 L310.628 1455.28 L302.318 1456.95 L302.318 1452.69 L310.581 1451.02 L315.257 1451.02 L315.257 1481.64 L322.896 1481.64 L322.896 1485.58 L302.989 1485.58 L302.989 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M332.341 1479.7 L337.225 1479.7 L337.225 1485.58 L332.341 1485.58 L332.341 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M357.41 1454.1 Q353.799 1454.1 351.97 1457.66 Q350.165 1461.2 350.165 1468.33 Q350.165 1475.44 351.97 1479.01 Q353.799 1482.55 357.41 1482.55 Q361.044 1482.55 362.85 1479.01 Q364.678 1475.44 364.678 1468.33 Q364.678 1461.2 362.85 1457.66 Q361.044 1454.1 357.41 1454.1 M357.41 1450.39 Q363.22 1450.39 366.276 1455 Q369.354 1459.58 369.354 1468.33 Q369.354 1477.06 366.276 1481.67 Q363.22 1486.25 357.41 1486.25 Q351.6 1486.25 348.521 1481.67 Q345.465 1477.06 345.465 1468.33 Q345.465 1459.58 348.521 1455 Q351.6 1450.39 357.41 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M757.295 1468.75 L786.971 1468.75 L786.971 1472.69 L757.295 1472.69 L757.295 1468.75 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M807.063 1454.1 Q803.452 1454.1 801.623 1457.66 Q799.818 1461.2 799.818 1468.33 Q799.818 1475.44 801.623 1479.01 Q803.452 1482.55 807.063 1482.55 Q810.697 1482.55 812.503 1479.01 Q814.332 1475.44 814.332 1468.33 Q814.332 1461.2 812.503 1457.66 Q810.697 1454.1 807.063 1454.1 M807.063 1450.39 Q812.873 1450.39 815.929 1455 Q819.007 1459.58 819.007 1468.33 Q819.007 1477.06 815.929 1481.67 Q812.873 1486.25 807.063 1486.25 Q801.253 1486.25 798.174 1481.67 Q795.119 1477.06 795.119 1468.33 Q795.119 1459.58 798.174 1455 Q801.253 1450.39 807.063 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M827.225 1479.7 L832.109 1479.7 L832.109 1485.58 L827.225 1485.58 L827.225 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M842.341 1451.02 L860.697 1451.02 L860.697 1454.96 L846.623 1454.96 L846.623 1463.43 Q847.642 1463.08 848.66 1462.92 Q849.679 1462.73 850.697 1462.73 Q856.484 1462.73 859.864 1465.9 Q863.243 1469.08 863.243 1474.49 Q863.243 1480.07 859.771 1483.17 Q856.299 1486.25 849.98 1486.25 Q847.804 1486.25 845.535 1485.88 Q843.29 1485.51 840.882 1484.77 L840.882 1480.07 Q842.966 1481.2 845.188 1481.76 Q847.41 1482.32 849.887 1482.32 Q853.892 1482.32 856.229 1480.21 Q858.567 1478.1 858.567 1474.49 Q858.567 1470.88 856.229 1468.77 Q853.892 1466.67 849.887 1466.67 Q848.012 1466.67 846.137 1467.08 Q844.285 1467.5 842.341 1468.38 L842.341 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1282.04 1454.1 Q1278.43 1454.1 1276.6 1457.66 Q1274.79 1461.2 1274.79 1468.33 Q1274.79 1475.44 1276.6 1479.01 Q1278.43 1482.55 1282.04 1482.55 Q1285.67 1482.55 1287.48 1479.01 Q1289.31 1475.44 1289.31 1468.33 Q1289.31 1461.2 1287.48 1457.66 Q1285.67 1454.1 1282.04 1454.1 M1282.04 1450.39 Q1287.85 1450.39 1290.91 1455 Q1293.98 1459.58 1293.98 1468.33 Q1293.98 1477.06 1290.91 1481.67 Q1287.85 1486.25 1282.04 1486.25 Q1276.23 1486.25 1273.15 1481.67 Q1270.1 1477.06 1270.1 1468.33 Q1270.1 1459.58 1273.15 1455 Q1276.23 1450.39 1282.04 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1302.2 1479.7 L1307.09 1479.7 L1307.09 1485.58 L1302.2 1485.58 L1302.2 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1327.27 1454.1 Q1323.66 1454.1 1321.83 1457.66 Q1320.03 1461.2 1320.03 1468.33 Q1320.03 1475.44 1321.83 1479.01 Q1323.66 1482.55 1327.27 1482.55 Q1330.91 1482.55 1332.71 1479.01 Q1334.54 1475.44 1334.54 1468.33 Q1334.54 1461.2 1332.71 1457.66 Q1330.91 1454.1 1327.27 1454.1 M1327.27 1450.39 Q1333.08 1450.39 1336.14 1455 Q1339.22 1459.58 1339.22 1468.33 Q1339.22 1477.06 1336.14 1481.67 Q1333.08 1486.25 1327.27 1486.25 Q1321.46 1486.25 1318.38 1481.67 Q1315.33 1477.06 1315.33 1468.33 Q1315.33 1459.58 1318.38 1455 Q1321.46 1450.39 1327.27 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1776.92 1454.1 Q1773.31 1454.1 1771.48 1457.66 Q1769.68 1461.2 1769.68 1468.33 Q1769.68 1475.44 1771.48 1479.01 Q1773.31 1482.55 1776.92 1482.55 Q1780.56 1482.55 1782.36 1479.01 Q1784.19 1475.44 1784.19 1468.33 Q1784.19 1461.2 1782.36 1457.66 Q1780.56 1454.1 1776.92 1454.1 M1776.92 1450.39 Q1782.73 1450.39 1785.79 1455 Q1788.87 1459.58 1788.87 1468.33 Q1788.87 1477.06 1785.79 1481.67 Q1782.73 1486.25 1776.92 1486.25 Q1771.11 1486.25 1768.04 1481.67 Q1764.98 1477.06 1764.98 1468.33 Q1764.98 1459.58 1768.04 1455 Q1771.11 1450.39 1776.92 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1797.09 1479.7 L1801.97 1479.7 L1801.97 1485.58 L1797.09 1485.58 L1797.09 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1812.2 1451.02 L1830.56 1451.02 L1830.56 1454.96 L1816.48 1454.96 L1816.48 1463.43 Q1817.5 1463.08 1818.52 1462.92 Q1819.54 1462.73 1820.56 1462.73 Q1826.35 1462.73 1829.73 1465.9 Q1833.11 1469.08 1833.11 1474.49 Q1833.11 1480.07 1829.63 1483.17 Q1826.16 1486.25 1819.84 1486.25 Q1817.67 1486.25 1815.4 1485.88 Q1813.15 1485.51 1810.74 1484.77 L1810.74 1480.07 Q1812.83 1481.2 1815.05 1481.76 Q1817.27 1482.32 1819.75 1482.32 Q1823.75 1482.32 1826.09 1480.21 Q1828.43 1478.1 1828.43 1474.49 Q1828.43 1470.88 1826.09 1468.77 Q1823.75 1466.67 1819.75 1466.67 Q1817.87 1466.67 1816 1467.08 Q1814.15 1467.5 1812.2 1468.38 L1812.2 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M2260.58 1481.64 L2268.22 1481.64 L2268.22 1455.28 L2259.91 1456.95 L2259.91 1452.69 L2268.17 1451.02 L2272.85 1451.02 L2272.85 1481.64 L2280.49 1481.64 L2280.49 1485.58 L2260.58 1485.58 L2260.58 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M2289.93 1479.7 L2294.82 1479.7 L2294.82 1485.58 L2289.93 1485.58 L2289.93 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M2315 1454.1 Q2311.39 1454.1 2309.56 1457.66 Q2307.76 1461.2 2307.76 1468.33 Q2307.76 1475.44 2309.56 1479.01 Q2311.39 1482.55 2315 1482.55 Q2318.64 1482.55 2320.44 1479.01 Q2322.27 1475.44 2322.27 1468.33 Q2322.27 1461.2 2320.44 1457.66 Q2318.64 1454.1 2315 1454.1 M2315 1450.39 Q2320.81 1450.39 2323.87 1455 Q2326.95 1459.58 2326.95 1468.33 Q2326.95 1477.06 2323.87 1481.67 Q2320.81 1486.25 2315 1486.25 Q2309.19 1486.25 2306.11 1481.67 Q2303.06 1477.06 2303.06 1468.33 Q2303.06 1459.58 2306.11 1455 Q2309.19 1450.39 2315 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1113.38 1532.4 L1100.49 1549.74 L1114.05 1568.04 L1107.14 1568.04 L1096.77 1554.04 L1086.39 1568.04 L1079.48 1568.04 L1093.33 1549.39 L1080.66 1532.4 L1087.57 1532.4 L1097.02 1545.1 L1106.48 1532.4 L1113.38 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1157.11 1518.58 Q1152.85 1525.9 1150.78 1533.06 Q1148.71 1540.23 1148.71 1547.58 Q1148.71 1554.93 1150.78 1562.16 Q1152.88 1569.35 1157.11 1576.64 L1152.02 1576.64 Q1147.25 1569.16 1144.86 1561.93 Q1142.51 1554.71 1142.51 1547.58 Q1142.51 1540.48 1144.86 1533.29 Q1147.22 1526.09 1152.02 1518.58 L1157.11 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1194.13 1533.76 L1194.13 1539.24 Q1191.65 1537.87 1189.13 1537.2 Q1186.65 1536.5 1184.11 1536.5 Q1178.41 1536.5 1175.26 1540.13 Q1172.11 1543.73 1172.11 1550.25 Q1172.11 1556.78 1175.26 1560.4 Q1178.41 1564 1184.11 1564 Q1186.65 1564 1189.13 1563.33 Q1191.65 1562.63 1194.13 1561.26 L1194.13 1566.68 Q1191.68 1567.82 1189.04 1568.39 Q1186.43 1568.97 1183.47 1568.97 Q1175.42 1568.97 1170.67 1563.91 Q1165.93 1558.85 1165.93 1550.25 Q1165.93 1541.53 1170.71 1536.53 Q1175.51 1531.54 1183.85 1531.54 Q1186.56 1531.54 1189.13 1532.11 Q1191.71 1532.65 1194.13 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1218.13 1536.5 Q1213.42 1536.5 1210.68 1540.19 Q1207.94 1543.85 1207.94 1550.25 Q1207.94 1556.65 1210.65 1560.34 Q1213.39 1564 1218.13 1564 Q1222.81 1564 1225.55 1560.31 Q1228.28 1556.62 1228.28 1550.25 Q1228.28 1543.92 1225.55 1540.23 Q1222.81 1536.5 1218.13 1536.5 M1218.13 1531.54 Q1225.77 1531.54 1230.13 1536.5 Q1234.49 1541.47 1234.49 1550.25 Q1234.49 1559 1230.13 1564 Q1225.77 1568.97 1218.13 1568.97 Q1210.46 1568.97 1206.1 1564 Q1201.77 1559 1201.77 1550.25 Q1201.77 1541.47 1206.1 1536.5 Q1210.46 1531.54 1218.13 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1258.01 1536.5 Q1253.3 1536.5 1250.56 1540.19 Q1247.83 1543.85 1247.83 1550.25 Q1247.83 1556.65 1250.53 1560.34 Q1253.27 1564 1258.01 1564 Q1262.69 1564 1265.43 1560.31 Q1268.16 1556.62 1268.16 1550.25 Q1268.16 1543.92 1265.43 1540.23 Q1262.69 1536.5 1258.01 1536.5 M1258.01 1531.54 Q1265.65 1531.54 1270.01 1536.5 Q1274.37 1541.47 1274.37 1550.25 Q1274.37 1559 1270.01 1564 Q1265.65 1568.97 1258.01 1568.97 Q1250.34 1568.97 1245.98 1564 Q1241.65 1559 1241.65 1550.25 Q1241.65 1541.47 1245.98 1536.5 Q1250.34 1531.54 1258.01 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1304.74 1537.87 Q1303.75 1537.3 1302.57 1537.04 Q1301.43 1536.76 1300.02 1536.76 Q1295.06 1536.76 1292.39 1540 Q1289.74 1543.22 1289.74 1549.27 L1289.74 1568.04 L1283.86 1568.04 L1283.86 1532.4 L1289.74 1532.4 L1289.74 1537.93 Q1291.59 1534.69 1294.55 1533.13 Q1297.51 1531.54 1301.74 1531.54 Q1302.35 1531.54 1303.08 1531.63 Q1303.81 1531.7 1304.7 1531.85 L1304.74 1537.87 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1333.19 1537.81 L1333.19 1518.52 L1339.05 1518.52 L1339.05 1568.04 L1333.19 1568.04 L1333.19 1562.7 Q1331.34 1565.88 1328.51 1567.44 Q1325.71 1568.97 1321.76 1568.97 Q1315.3 1568.97 1311.23 1563.81 Q1307.19 1558.65 1307.19 1550.25 Q1307.19 1541.85 1311.23 1536.69 Q1315.3 1531.54 1321.76 1531.54 Q1325.71 1531.54 1328.51 1533.1 Q1331.34 1534.62 1333.19 1537.81 M1313.23 1550.25 Q1313.23 1556.71 1315.88 1560.4 Q1318.55 1564.07 1323.2 1564.07 Q1327.84 1564.07 1330.52 1560.4 Q1333.19 1556.71 1333.19 1550.25 Q1333.19 1543.79 1330.52 1540.13 Q1327.84 1536.44 1323.2 1536.44 Q1318.55 1536.44 1315.88 1540.13 Q1313.23 1543.79 1313.23 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1351.11 1532.4 L1356.97 1532.4 L1356.97 1568.04 L1351.11 1568.04 L1351.11 1532.4 M1351.11 1518.52 L1356.97 1518.52 L1356.97 1525.93 L1351.11 1525.93 L1351.11 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1398.85 1546.53 L1398.85 1568.04 L1393 1568.04 L1393 1546.72 Q1393 1541.66 1391.02 1539.14 Q1389.05 1536.63 1385.1 1536.63 Q1380.36 1536.63 1377.62 1539.65 Q1374.89 1542.68 1374.89 1547.9 L1374.89 1568.04 L1369 1568.04 L1369 1532.4 L1374.89 1532.4 L1374.89 1537.93 Q1376.99 1534.72 1379.82 1533.13 Q1382.68 1531.54 1386.41 1531.54 Q1392.55 1531.54 1395.7 1535.36 Q1398.85 1539.14 1398.85 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1426.73 1550.12 Q1419.64 1550.12 1416.9 1551.75 Q1414.16 1553.37 1414.16 1557.29 Q1414.16 1560.4 1416.2 1562.25 Q1418.27 1564.07 1421.8 1564.07 Q1426.67 1564.07 1429.6 1560.63 Q1432.56 1557.16 1432.56 1551.43 L1432.56 1550.12 L1426.73 1550.12 M1438.42 1547.71 L1438.42 1568.04 L1432.56 1568.04 L1432.56 1562.63 Q1430.55 1565.88 1427.56 1567.44 Q1424.57 1568.97 1420.24 1568.97 Q1414.77 1568.97 1411.52 1565.91 Q1408.31 1562.82 1408.31 1557.67 Q1408.31 1551.65 1412.32 1548.6 Q1416.36 1545.54 1424.35 1545.54 L1432.56 1545.54 L1432.56 1544.97 Q1432.56 1540.93 1429.89 1538.73 Q1427.24 1536.5 1422.44 1536.5 Q1419.38 1536.5 1416.49 1537.23 Q1413.59 1537.97 1410.92 1539.43 L1410.92 1534.02 Q1414.13 1532.78 1417.15 1532.17 Q1420.18 1531.54 1423.04 1531.54 Q1430.78 1531.54 1434.6 1535.55 Q1438.42 1539.56 1438.42 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1456.27 1522.27 L1456.27 1532.4 L1468.33 1532.4 L1468.33 1536.95 L1456.27 1536.95 L1456.27 1556.3 Q1456.27 1560.66 1457.45 1561.9 Q1458.66 1563.14 1462.32 1563.14 L1468.33 1563.14 L1468.33 1568.04 L1462.32 1568.04 Q1455.54 1568.04 1452.96 1565.53 Q1450.38 1562.98 1450.38 1556.3 L1450.38 1536.95 L1446.09 1536.95 L1446.09 1532.4 L1450.38 1532.4 L1450.38 1522.27 L1456.27 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1506.53 1548.76 L1506.53 1551.62 L1479.6 1551.62 Q1479.98 1557.67 1483.23 1560.85 Q1486.51 1564 1492.33 1564 Q1495.71 1564 1498.86 1563.17 Q1502.04 1562.35 1505.16 1560.69 L1505.16 1566.23 Q1502.01 1567.57 1498.7 1568.27 Q1495.39 1568.97 1491.98 1568.97 Q1483.45 1568.97 1478.46 1564 Q1473.49 1559.04 1473.49 1550.57 Q1473.49 1541.82 1478.2 1536.69 Q1482.94 1531.54 1490.96 1531.54 Q1498.16 1531.54 1502.33 1536.18 Q1506.53 1540.8 1506.53 1548.76 M1500.67 1547.04 Q1500.61 1542.23 1497.97 1539.37 Q1495.36 1536.5 1491.03 1536.5 Q1486.13 1536.5 1483.17 1539.27 Q1480.24 1542.04 1479.79 1547.07 L1500.67 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M1515.22 1518.58 L1520.31 1518.58 Q1525.08 1526.09 1527.44 1533.29 Q1529.83 1540.48 1529.83 1547.58 Q1529.83 1554.71 1527.44 1561.93 Q1525.08 1569.16 1520.31 1576.64 L1515.22 1576.64 Q1519.45 1569.35 1521.52 1562.16 Q1523.62 1554.93 1523.62 1547.58 Q1523.62 1540.23 1521.52 1533.06 Q1519.45 1525.9 1515.22 1518.58 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1423.18 256.556,47.2441 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1272.91 275.454,1272.91 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,1093.67 275.454,1093.67 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,914.443 275.454,914.443 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,735.212 275.454,735.212 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,555.981 275.454,555.981 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,376.749 275.454,376.749 \"/>\n", + "<polyline clip-path=\"url(#clip600)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"256.556,197.518 275.454,197.518 \"/>\n", + "<path clip-path=\"url(#clip600)\" d=\"M114.26 1273.36 L143.936 1273.36 L143.936 1277.29 L114.26 1277.29 L114.26 1273.36 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M164.028 1258.7 Q160.417 1258.7 158.589 1262.27 Q156.783 1265.81 156.783 1272.94 Q156.783 1280.05 158.589 1283.61 Q160.417 1287.15 164.028 1287.15 Q167.663 1287.15 169.468 1283.61 Q171.297 1280.05 171.297 1272.94 Q171.297 1265.81 169.468 1262.27 Q167.663 1258.7 164.028 1258.7 M164.028 1255 Q169.839 1255 172.894 1259.61 Q175.973 1264.19 175.973 1272.94 Q175.973 1281.67 172.894 1286.27 Q169.839 1290.86 164.028 1290.86 Q158.218 1290.86 155.14 1286.27 Q152.084 1281.67 152.084 1272.94 Q152.084 1264.19 155.14 1259.61 Q158.218 1255 164.028 1255 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M184.19 1284.31 L189.075 1284.31 L189.075 1290.19 L184.19 1290.19 L184.19 1284.31 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M213.426 1271.55 Q216.783 1272.27 218.658 1274.54 Q220.556 1276.81 220.556 1280.14 Q220.556 1285.26 217.037 1288.06 Q213.519 1290.86 207.037 1290.86 Q204.862 1290.86 202.547 1290.42 Q200.255 1290 197.801 1289.14 L197.801 1284.63 Q199.746 1285.76 202.061 1286.34 Q204.375 1286.92 206.899 1286.92 Q211.297 1286.92 213.588 1285.19 Q215.903 1283.45 215.903 1280.14 Q215.903 1277.08 213.75 1275.37 Q211.621 1273.64 207.801 1273.64 L203.774 1273.64 L203.774 1269.79 L207.987 1269.79 Q211.436 1269.79 213.264 1268.43 Q215.093 1267.04 215.093 1264.45 Q215.093 1261.78 213.195 1260.37 Q211.32 1258.94 207.801 1258.94 Q205.88 1258.94 203.681 1259.35 Q201.482 1259.77 198.843 1260.65 L198.843 1256.48 Q201.505 1255.74 203.82 1255.37 Q206.158 1255 208.218 1255 Q213.542 1255 216.644 1257.43 Q219.746 1259.84 219.746 1263.96 Q219.746 1266.83 218.102 1268.82 Q216.459 1270.79 213.426 1271.55 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M115.209 1094.13 L144.885 1094.13 L144.885 1098.06 L115.209 1098.06 L115.209 1094.13 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M164.977 1079.47 Q161.366 1079.47 159.538 1083.04 Q157.732 1086.58 157.732 1093.71 Q157.732 1100.82 159.538 1104.38 Q161.366 1107.92 164.977 1107.92 Q168.612 1107.92 170.417 1104.38 Q172.246 1100.82 172.246 1093.71 Q172.246 1086.58 170.417 1083.04 Q168.612 1079.47 164.977 1079.47 M164.977 1075.77 Q170.788 1075.77 173.843 1080.38 Q176.922 1084.96 176.922 1093.71 Q176.922 1102.44 173.843 1107.04 Q170.788 1111.63 164.977 1111.63 Q159.167 1111.63 156.089 1107.04 Q153.033 1102.44 153.033 1093.71 Q153.033 1084.96 156.089 1080.38 Q159.167 1075.77 164.977 1075.77 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M185.139 1105.07 L190.024 1105.07 L190.024 1110.95 L185.139 1110.95 L185.139 1105.07 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M204.237 1107.02 L220.556 1107.02 L220.556 1110.95 L198.612 1110.95 L198.612 1107.02 Q201.274 1104.26 205.857 1099.64 Q210.463 1094.98 211.644 1093.64 Q213.889 1091.12 214.769 1089.38 Q215.672 1087.62 215.672 1085.93 Q215.672 1083.18 213.727 1081.44 Q211.806 1079.7 208.704 1079.7 Q206.505 1079.7 204.051 1080.47 Q201.621 1081.23 198.843 1082.78 L198.843 1078.06 Q201.667 1076.93 204.121 1076.35 Q206.574 1075.77 208.612 1075.77 Q213.982 1075.77 217.176 1078.45 Q220.371 1081.14 220.371 1085.63 Q220.371 1087.76 219.561 1089.68 Q218.773 1091.58 216.667 1094.17 Q216.088 1094.84 212.986 1098.06 Q209.885 1101.26 204.237 1107.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M114.839 914.895 L144.515 914.895 L144.515 918.83 L114.839 918.83 L114.839 914.895 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M164.607 900.242 Q160.996 900.242 159.167 903.807 Q157.362 907.348 157.362 914.478 Q157.362 921.584 159.167 925.149 Q160.996 928.691 164.607 928.691 Q168.241 928.691 170.047 925.149 Q171.876 921.584 171.876 914.478 Q171.876 907.348 170.047 903.807 Q168.241 900.242 164.607 900.242 M164.607 896.538 Q170.417 896.538 173.473 901.145 Q176.551 905.728 176.551 914.478 Q176.551 923.205 173.473 927.811 Q170.417 932.395 164.607 932.395 Q158.797 932.395 155.718 927.811 Q152.663 923.205 152.663 914.478 Q152.663 905.728 155.718 901.145 Q158.797 896.538 164.607 896.538 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M184.769 925.844 L189.653 925.844 L189.653 931.723 L184.769 931.723 L184.769 925.844 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M200.649 927.788 L208.287 927.788 L208.287 901.422 L199.977 903.089 L199.977 898.83 L208.241 897.163 L212.917 897.163 L212.917 927.788 L220.556 927.788 L220.556 931.723 L200.649 931.723 L200.649 927.788 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M163.38 721.011 Q159.769 721.011 157.94 724.575 Q156.135 728.117 156.135 735.247 Q156.135 742.353 157.94 745.918 Q159.769 749.46 163.38 749.46 Q167.015 749.46 168.82 745.918 Q170.649 742.353 170.649 735.247 Q170.649 728.117 168.82 724.575 Q167.015 721.011 163.38 721.011 M163.38 717.307 Q169.19 717.307 172.246 721.913 Q175.325 726.497 175.325 735.247 Q175.325 743.973 172.246 748.58 Q169.19 753.163 163.38 753.163 Q157.57 753.163 154.491 748.58 Q151.436 743.973 151.436 735.247 Q151.436 726.497 154.491 721.913 Q157.57 717.307 163.38 717.307 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M183.542 746.612 L188.426 746.612 L188.426 752.492 L183.542 752.492 L183.542 746.612 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M208.612 721.011 Q205 721.011 203.172 724.575 Q201.366 728.117 201.366 735.247 Q201.366 742.353 203.172 745.918 Q205 749.46 208.612 749.46 Q212.246 749.46 214.051 745.918 Q215.88 742.353 215.88 735.247 Q215.88 728.117 214.051 724.575 Q212.246 721.011 208.612 721.011 M208.612 717.307 Q214.422 717.307 217.477 721.913 Q220.556 726.497 220.556 735.247 Q220.556 743.973 217.477 748.58 Q214.422 753.163 208.612 753.163 Q202.801 753.163 199.723 748.58 Q196.667 743.973 196.667 735.247 Q196.667 726.497 199.723 721.913 Q202.801 717.307 208.612 717.307 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M164.607 541.779 Q160.996 541.779 159.167 545.344 Q157.362 548.886 157.362 556.015 Q157.362 563.122 159.167 566.687 Q160.996 570.228 164.607 570.228 Q168.241 570.228 170.047 566.687 Q171.876 563.122 171.876 556.015 Q171.876 548.886 170.047 545.344 Q168.241 541.779 164.607 541.779 M164.607 538.076 Q170.417 538.076 173.473 542.682 Q176.551 547.265 176.551 556.015 Q176.551 564.742 173.473 569.349 Q170.417 573.932 164.607 573.932 Q158.797 573.932 155.718 569.349 Q152.663 564.742 152.663 556.015 Q152.663 547.265 155.718 542.682 Q158.797 538.076 164.607 538.076 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M184.769 567.381 L189.653 567.381 L189.653 573.261 L184.769 573.261 L184.769 567.381 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M200.649 569.326 L208.287 569.326 L208.287 542.96 L199.977 544.627 L199.977 540.367 L208.241 538.701 L212.917 538.701 L212.917 569.326 L220.556 569.326 L220.556 573.261 L200.649 573.261 L200.649 569.326 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M164.977 362.548 Q161.366 362.548 159.538 366.113 Q157.732 369.655 157.732 376.784 Q157.732 383.891 159.538 387.455 Q161.366 390.997 164.977 390.997 Q168.612 390.997 170.417 387.455 Q172.246 383.891 172.246 376.784 Q172.246 369.655 170.417 366.113 Q168.612 362.548 164.977 362.548 M164.977 358.844 Q170.788 358.844 173.843 363.451 Q176.922 368.034 176.922 376.784 Q176.922 385.511 173.843 390.117 Q170.788 394.701 164.977 394.701 Q159.167 394.701 156.089 390.117 Q153.033 385.511 153.033 376.784 Q153.033 368.034 156.089 363.451 Q159.167 358.844 164.977 358.844 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M185.139 388.15 L190.024 388.15 L190.024 394.029 L185.139 394.029 L185.139 388.15 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M204.237 390.094 L220.556 390.094 L220.556 394.029 L198.612 394.029 L198.612 390.094 Q201.274 387.34 205.857 382.71 Q210.463 378.057 211.644 376.715 Q213.889 374.192 214.769 372.455 Q215.672 370.696 215.672 369.006 Q215.672 366.252 213.727 364.516 Q211.806 362.78 208.704 362.78 Q206.505 362.78 204.051 363.543 Q201.621 364.307 198.843 365.858 L198.843 361.136 Q201.667 360.002 204.121 359.423 Q206.574 358.844 208.612 358.844 Q213.982 358.844 217.176 361.53 Q220.371 364.215 220.371 368.705 Q220.371 370.835 219.561 372.756 Q218.773 374.654 216.667 377.247 Q216.088 377.918 212.986 381.136 Q209.885 384.33 204.237 390.094 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M164.028 183.317 Q160.417 183.317 158.589 186.882 Q156.783 190.423 156.783 197.553 Q156.783 204.659 158.589 208.224 Q160.417 211.766 164.028 211.766 Q167.663 211.766 169.468 208.224 Q171.297 204.659 171.297 197.553 Q171.297 190.423 169.468 186.882 Q167.663 183.317 164.028 183.317 M164.028 179.613 Q169.839 179.613 172.894 184.22 Q175.973 188.803 175.973 197.553 Q175.973 206.28 172.894 210.886 Q169.839 215.469 164.028 215.469 Q158.218 215.469 155.14 210.886 Q152.084 206.28 152.084 197.553 Q152.084 188.803 155.14 184.22 Q158.218 179.613 164.028 179.613 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M184.19 208.918 L189.075 208.918 L189.075 214.798 L184.19 214.798 L184.19 208.918 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M213.426 196.164 Q216.783 196.882 218.658 199.15 Q220.556 201.419 220.556 204.752 Q220.556 209.868 217.037 212.668 Q213.519 215.469 207.037 215.469 Q204.862 215.469 202.547 215.03 Q200.255 214.613 197.801 213.756 L197.801 209.243 Q199.746 210.377 202.061 210.956 Q204.375 211.534 206.899 211.534 Q211.297 211.534 213.588 209.798 Q215.903 208.062 215.903 204.752 Q215.903 201.696 213.75 199.983 Q211.621 198.247 207.801 198.247 L203.774 198.247 L203.774 194.405 L207.987 194.405 Q211.436 194.405 213.264 193.039 Q215.093 191.65 215.093 189.057 Q215.093 186.395 213.195 184.983 Q211.32 183.548 207.801 183.548 Q205.88 183.548 203.681 183.965 Q201.482 184.382 198.843 185.261 L198.843 181.095 Q201.505 180.354 203.82 179.983 Q206.158 179.613 208.218 179.613 Q213.542 179.613 216.644 182.044 Q219.746 184.451 219.746 188.571 Q219.746 191.442 218.102 193.432 Q216.459 195.4 213.426 196.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M46.212 1101.42 Q52.6732 1101.42 56.3653 1098.77 Q60.0256 1096.1 60.0256 1091.45 Q60.0256 1086.81 56.3653 1084.13 Q52.6732 1081.46 46.212 1081.46 Q39.7508 1081.46 36.0905 1084.13 Q32.3984 1086.81 32.3984 1091.45 Q32.3984 1096.1 36.0905 1098.77 Q39.7508 1101.42 46.212 1101.42 M58.657 1081.46 Q61.8398 1083.3 63.3994 1086.14 Q64.9272 1088.94 64.9272 1092.89 Q64.9272 1099.35 59.771 1103.42 Q54.6147 1107.46 46.212 1107.46 Q37.8093 1107.46 32.6531 1103.42 Q27.4968 1099.35 27.4968 1092.89 Q27.4968 1088.94 29.0564 1086.14 Q30.5842 1083.3 33.7671 1081.46 L28.3562 1081.46 L28.3562 1075.6 L77.5631 1075.6 L77.5631 1081.46 L58.657 1081.46 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M74.8259 1036.45 L79.3773 1036.45 L79.3773 1070.32 L74.8259 1070.32 L74.8259 1036.45 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M28.3562 1001.31 L45.7028 1014.2 L64.0042 1000.65 L64.0042 1007.55 L49.9996 1017.93 L64.0042 1028.31 L64.0042 1035.21 L45.3526 1021.37 L28.3562 1034.03 L28.3562 1027.13 L41.0558 1017.67 L28.3562 1008.22 L28.3562 1001.31 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M14.5426 957.582 Q21.8632 961.847 29.0246 963.916 Q36.186 965.985 43.5384 965.985 Q50.8908 965.985 58.1159 963.916 Q65.3091 961.815 72.5979 957.582 L72.5979 962.675 Q65.1182 967.449 57.8931 969.836 Q50.668 972.191 43.5384 972.191 Q36.4406 972.191 29.2474 969.836 Q22.0542 967.481 14.5426 962.675 L14.5426 957.582 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M14.479 928.172 L19.3487 928.172 L19.3487 933.774 Q19.3487 936.925 20.6219 938.167 Q21.895 939.376 25.2052 939.376 L28.3562 939.376 L28.3562 929.732 L32.9077 929.732 L32.9077 939.376 L64.0042 939.376 L64.0042 945.264 L32.9077 945.264 L32.9077 950.866 L28.3562 950.866 L28.3562 945.264 L25.8736 945.264 Q19.9216 945.264 17.2162 942.495 Q14.479 939.726 14.479 933.711 L14.479 928.172 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M14.479 923.271 L14.479 917.414 L64.0042 917.414 L64.0042 923.271 L14.479 923.271 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M49.9359 905.765 L28.3562 905.765 L28.3562 899.909 L49.7131 899.909 Q54.7739 899.909 57.3202 897.935 Q59.8346 895.962 59.8346 892.015 Q59.8346 887.273 56.8109 884.536 Q53.7872 881.766 48.5673 881.766 L28.3562 881.766 L28.3562 875.91 L64.0042 875.91 L64.0042 881.766 L58.5296 881.766 Q61.7762 883.899 63.3676 886.732 Q64.9272 889.533 64.9272 893.257 Q64.9272 899.399 61.1078 902.582 Q57.2883 905.765 49.9359 905.765 M27.4968 891.029 L27.4968 891.029 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M28.3562 834.215 L45.7028 847.105 L64.0042 833.546 L64.0042 840.453 L49.9996 850.829 L64.0042 861.205 L64.0042 868.112 L45.3526 854.267 L28.3562 866.934 L28.3562 860.028 L41.0558 850.574 L28.3562 841.121 L28.3562 834.215 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M28.3562 804.55 L28.3562 798.694 L64.0042 798.694 L64.0042 804.55 L28.3562 804.55 M14.479 804.55 L14.479 798.694 L21.895 798.694 L21.895 804.55 L14.479 804.55 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M42.4881 756.808 L64.0042 756.808 L64.0042 762.664 L42.679 762.664 Q37.6183 762.664 35.1038 764.637 Q32.5894 766.611 32.5894 770.558 Q32.5894 775.3 35.6131 778.037 Q38.6368 780.775 43.8567 780.775 L64.0042 780.775 L64.0042 786.663 L28.3562 786.663 L28.3562 780.775 L33.8944 780.775 Q30.6797 778.674 29.0883 775.841 Q27.4968 772.977 27.4968 769.253 Q27.4968 763.11 31.3163 759.959 Q35.1038 756.808 42.4881 756.808 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M28.3562 694.774 L45.7028 707.664 L64.0042 694.105 L64.0042 701.012 L49.9996 711.388 L64.0042 721.764 L64.0042 728.671 L45.3526 714.826 L28.3562 727.494 L28.3562 720.587 L41.0558 711.134 L28.3562 701.681 L28.3562 694.774 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M43.5384 688.79 L43.5384 671.634 L48.7583 671.634 L48.7583 688.79 L43.5384 688.79 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M33.7671 638.851 L14.479 638.851 L14.479 632.995 L64.0042 632.995 L64.0042 638.851 L58.657 638.851 Q61.8398 640.697 63.3994 643.53 Q64.9272 646.331 64.9272 650.278 Q64.9272 656.739 59.771 660.813 Q54.6147 664.855 46.212 664.855 Q37.8093 664.855 32.6531 660.813 Q27.4968 656.739 27.4968 650.278 Q27.4968 646.331 29.0564 643.53 Q30.5842 640.697 33.7671 638.851 M46.212 658.808 Q52.6732 658.808 56.3653 656.166 Q60.0256 653.492 60.0256 648.845 Q60.0256 644.198 56.3653 641.525 Q52.6732 638.851 46.212 638.851 Q39.7508 638.851 36.0905 641.525 Q32.3984 644.198 32.3984 648.845 Q32.3984 653.492 36.0905 656.166 Q39.7508 658.808 46.212 658.808 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M28.3562 620.932 L28.3562 615.075 L64.0042 615.075 L64.0042 620.932 L28.3562 620.932 M14.479 620.932 L14.479 615.075 L21.895 615.075 L21.895 620.932 L14.479 620.932 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M33.8307 582.164 Q33.2578 583.151 33.0032 584.329 Q32.7167 585.475 32.7167 586.875 Q32.7167 591.84 35.9632 594.514 Q39.1779 597.156 45.2253 597.156 L64.0042 597.156 L64.0042 603.044 L28.3562 603.044 L28.3562 597.156 L33.8944 597.156 Q30.6479 595.31 29.0883 592.35 Q27.4968 589.39 27.4968 585.156 Q27.4968 584.552 27.5923 583.82 Q27.656 583.087 27.8151 582.196 L33.8307 582.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M44.7161 546.962 L47.5806 546.962 L47.5806 573.889 Q53.6281 573.507 56.8109 570.261 Q59.9619 566.982 59.9619 561.158 Q59.9619 557.784 59.1344 554.633 Q58.3069 551.45 56.6518 548.331 L62.1899 548.331 Q63.5267 551.482 64.227 554.792 Q64.9272 558.102 64.9272 561.508 Q64.9272 570.038 59.9619 575.035 Q54.9967 580 46.5303 580 Q37.7774 580 32.6531 575.29 Q27.4968 570.547 27.4968 562.526 Q27.4968 555.333 32.1438 551.163 Q36.7589 546.962 44.7161 546.962 M42.9973 552.819 Q38.1912 552.882 35.3266 555.524 Q32.4621 558.134 32.4621 562.463 Q32.4621 567.364 35.2312 570.324 Q38.0002 573.252 43.0292 573.698 L42.9973 552.819 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M29.7248 511.696 L35.1993 511.696 Q33.8307 514.179 33.1623 516.693 Q32.4621 519.176 32.4621 521.722 Q32.4621 527.419 36.0905 530.57 Q39.6872 533.721 46.212 533.721 Q52.7369 533.721 56.3653 530.57 Q59.9619 527.419 59.9619 521.722 Q59.9619 519.176 59.2935 516.693 Q58.5933 514.179 57.2247 511.696 L62.6355 511.696 Q63.7814 514.147 64.3543 516.789 Q64.9272 519.399 64.9272 522.359 Q64.9272 530.411 59.8664 535.154 Q54.8057 539.896 46.212 539.896 Q37.491 539.896 32.4939 535.122 Q27.4968 530.316 27.4968 521.977 Q27.4968 519.271 28.0697 516.693 Q28.6108 514.115 29.7248 511.696 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M18.2347 495.718 L28.3562 495.718 L28.3562 483.655 L32.9077 483.655 L32.9077 495.718 L52.2594 495.718 Q56.6199 495.718 57.8613 494.541 Q59.1026 493.331 59.1026 489.671 L59.1026 483.655 L64.0042 483.655 L64.0042 489.671 Q64.0042 496.45 61.4897 499.028 Q58.9434 501.606 52.2594 501.606 L32.9077 501.606 L32.9077 505.903 L28.3562 505.903 L28.3562 501.606 L18.2347 501.606 L18.2347 495.718 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M28.3562 475.953 L28.3562 470.096 L64.0042 470.096 L64.0042 475.953 L28.3562 475.953 M14.479 475.953 L14.479 470.096 L21.895 470.096 L21.895 475.953 L14.479 475.953 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M32.4621 444.029 Q32.4621 448.739 36.1542 451.477 Q39.8145 454.214 46.212 454.214 Q52.6095 454.214 56.3017 451.508 Q59.9619 448.771 59.9619 444.029 Q59.9619 439.35 56.2698 436.613 Q52.5777 433.875 46.212 433.875 Q39.8781 433.875 36.186 436.613 Q32.4621 439.35 32.4621 444.029 M27.4968 444.029 Q27.4968 436.39 32.4621 432.029 Q37.4273 427.669 46.212 427.669 Q54.9649 427.669 59.9619 432.029 Q64.9272 436.39 64.9272 444.029 Q64.9272 451.699 59.9619 456.06 Q54.9649 460.388 46.212 460.388 Q37.4273 460.388 32.4621 456.06 Q27.4968 451.699 27.4968 444.029 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M42.4881 388.329 L64.0042 388.329 L64.0042 394.185 L42.679 394.185 Q37.6183 394.185 35.1038 396.159 Q32.5894 398.132 32.5894 402.079 Q32.5894 406.821 35.6131 409.558 Q38.6368 412.296 43.8567 412.296 L64.0042 412.296 L64.0042 418.184 L28.3562 418.184 L28.3562 412.296 L33.8944 412.296 Q30.6797 410.195 29.0883 407.362 Q27.4968 404.498 27.4968 400.774 Q27.4968 394.631 31.3163 391.48 Q35.1038 388.329 42.4881 388.329 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip600)\" d=\"M14.5426 377.571 L14.5426 372.478 Q22.0542 367.704 29.2474 365.348 Q36.4406 362.961 43.5384 362.961 Q50.668 362.961 57.8931 365.348 Q65.1182 367.704 72.5979 372.478 L72.5979 377.571 Q65.3091 373.337 58.1159 371.269 Q50.8908 369.168 43.5384 369.168 Q36.186 369.168 29.0246 371.269 Q21.8632 373.337 14.5426 377.571 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip602)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"315.882,1384.24 335.658,1365.85 355.433,1347.46 375.209,1329.06 394.984,1310.67 414.76,1292.28 434.535,1265.04 454.311,1237.8 474.086,1210.55 493.862,1183.31 513.637,1156.07 533.412,1139.07 553.188,1122.08 572.963,1105.09 592.739,1088.09 612.514,1071.1 632.29,1056.74 652.065,1042.38 671.841,1028.02 691.616,1013.66 711.392,999.295 731.167,987.752 750.943,976.208 770.718,964.665 790.494,953.122 810.269,941.579 830.045,931.658 849.82,921.736 869.596,911.815 889.371,901.893 909.146,891.972 928.922,883.245 948.697,874.518 968.473,865.791 988.248,857.064 1008.02,848.336 1027.8,840.391 1047.57,832.445 1067.35,824.5 1087.13,816.554 1106.9,808.609 1126.68,801.152 1146.45,793.696 1166.23,786.24 1186,778.783 1205.78,771.327 1225.55,764.104 1245.33,756.881 1265.1,749.658 1284.88,742.435 1304.66,735.212 1324.43,727.989 1344.21,720.766 1363.98,713.543 1383.76,706.32 1403.53,699.097 1423.31,691.641 1443.08,684.184 1462.86,676.728 1482.64,669.272 1502.41,661.815 1522.19,653.87 1541.96,645.924 1561.74,637.979 1581.51,630.033 1601.29,622.088 1621.06,613.36 1640.84,604.633 1660.61,595.906 1680.39,587.179 1700.17,578.452 1719.94,568.53 1739.72,558.609 1759.49,548.688 1779.27,538.766 1799.04,528.845 1818.82,517.302 1838.59,505.759 1858.37,494.215 1878.14,482.672 1897.92,471.129 1917.7,456.768 1937.47,442.407 1957.25,428.046 1977.02,413.685 1996.8,399.324 2016.57,382.331 2036.35,365.337 2056.12,348.344 2075.9,331.35 2095.67,314.357 2115.45,287.114 2135.23,259.871 2155,232.627 2174.78,205.384 2194.55,178.141 2214.33,159.75 2234.1,141.359 2253.88,122.968 2273.65,104.577 2293.43,86.1857 \"/>\n", "</svg>\n" ] }, diff --git a/dev/howto/postprocessing/a13d7c95.svg b/dev/howto/postprocessing/b5acc34e.svg similarity index 83% rename from dev/howto/postprocessing/a13d7c95.svg rename to dev/howto/postprocessing/b5acc34e.svg index 1423e4e1ee..591d338462 100644 --- a/dev/howto/postprocessing/a13d7c95.svg +++ b/dev/howto/postprocessing/b5acc34e.svg @@ -1,47 +1,47 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600"> <defs> - <clipPath id="clip140"> + <clipPath id="clip750"> <rect x="0" y="0" width="2400" height="1600"/> </clipPath> </defs> -<path clip-path="url(#clip140)" d="M0 1600 L2400 1600 L2400 0 L0 0 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> +<path clip-path="url(#clip750)" d="M0 1600 L2400 1600 L2400 0 L0 0 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> <defs> - <clipPath id="clip141"> + <clipPath id="clip751"> <rect x="480" y="0" width="1681" height="1600"/> </clipPath> </defs> -<path clip-path="url(#clip140)" d="M256.556 1423.18 L2352.76 1423.18 L2352.76 47.2441 L256.556 47.2441 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> +<path clip-path="url(#clip750)" d="M256.556 1423.18 L2352.76 1423.18 L2352.76 47.2441 L256.556 47.2441 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> <defs> - <clipPath id="clip142"> + <clipPath id="clip752"> <rect x="256" y="47" width="2097" height="1377"/> </clipPath> </defs> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="315.882,1423.18 315.882,47.2441 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="810.269,1423.18 810.269,47.2441 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1304.66,1423.18 1304.66,47.2441 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1799.04,1423.18 1799.04,47.2441 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2293.43,1423.18 2293.43,47.2441 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,1272.91 2352.76,1272.91 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,1093.67 2352.76,1093.67 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,914.443 2352.76,914.443 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,735.212 2352.76,735.212 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,555.981 2352.76,555.981 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,376.749 2352.76,376.749 "/> -<polyline clip-path="url(#clip142)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,197.518 2352.76,197.518 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,1423.18 2352.76,1423.18 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="315.882,1423.18 315.882,1404.28 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="810.269,1423.18 810.269,1404.28 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1304.66,1423.18 1304.66,1404.28 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1799.04,1423.18 1799.04,1404.28 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2293.43,1423.18 2293.43,1404.28 "/> -<path clip-path="url(#clip140)" d="M262.41 1468.75 L292.086 1468.75 L292.086 1472.69 L262.41 1472.69 L262.41 1468.75 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M302.989 1481.64 L310.628 1481.64 L310.628 1455.28 L302.318 1456.95 L302.318 1452.69 L310.581 1451.02 L315.257 1451.02 L315.257 1481.64 L322.896 1481.64 L322.896 1485.58 L302.989 1485.58 L302.989 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M332.341 1479.7 L337.225 1479.7 L337.225 1485.58 L332.341 1485.58 L332.341 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M357.41 1454.1 Q353.799 1454.1 351.97 1457.66 Q350.165 1461.2 350.165 1468.33 Q350.165 1475.44 351.97 1479.01 Q353.799 1482.55 357.41 1482.55 Q361.044 1482.55 362.85 1479.01 Q364.678 1475.44 364.678 1468.33 Q364.678 1461.2 362.85 1457.66 Q361.044 1454.1 357.41 1454.1 M357.41 1450.39 Q363.22 1450.39 366.276 1455 Q369.354 1459.58 369.354 1468.33 Q369.354 1477.06 366.276 1481.67 Q363.22 1486.25 357.41 1486.25 Q351.6 1486.25 348.521 1481.67 Q345.465 1477.06 345.465 1468.33 Q345.465 1459.58 348.521 1455 Q351.6 1450.39 357.41 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M757.295 1468.75 L786.971 1468.75 L786.971 1472.69 L757.295 1472.69 L757.295 1468.75 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M807.063 1454.1 Q803.452 1454.1 801.623 1457.66 Q799.818 1461.2 799.818 1468.33 Q799.818 1475.44 801.623 1479.01 Q803.452 1482.55 807.063 1482.55 Q810.697 1482.55 812.503 1479.01 Q814.332 1475.44 814.332 1468.33 Q814.332 1461.2 812.503 1457.66 Q810.697 1454.1 807.063 1454.1 M807.063 1450.39 Q812.873 1450.39 815.929 1455 Q819.007 1459.58 819.007 1468.33 Q819.007 1477.06 815.929 1481.67 Q812.873 1486.25 807.063 1486.25 Q801.253 1486.25 798.174 1481.67 Q795.119 1477.06 795.119 1468.33 Q795.119 1459.58 798.174 1455 Q801.253 1450.39 807.063 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M827.225 1479.7 L832.109 1479.7 L832.109 1485.58 L827.225 1485.58 L827.225 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M842.341 1451.02 L860.697 1451.02 L860.697 1454.96 L846.623 1454.96 L846.623 1463.43 Q847.642 1463.08 848.66 1462.92 Q849.679 1462.73 850.697 1462.73 Q856.484 1462.73 859.864 1465.9 Q863.243 1469.08 863.243 1474.49 Q863.243 1480.07 859.771 1483.17 Q856.299 1486.25 849.98 1486.25 Q847.804 1486.25 845.535 1485.88 Q843.29 1485.51 840.882 1484.77 L840.882 1480.07 Q842.966 1481.2 845.188 1481.76 Q847.41 1482.32 849.887 1482.32 Q853.892 1482.32 856.229 1480.21 Q858.567 1478.1 858.567 1474.49 Q858.567 1470.88 856.229 1468.77 Q853.892 1466.67 849.887 1466.67 Q848.012 1466.67 846.137 1467.08 Q844.285 1467.5 842.341 1468.38 L842.341 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1282.04 1454.1 Q1278.43 1454.1 1276.6 1457.66 Q1274.79 1461.2 1274.79 1468.33 Q1274.79 1475.44 1276.6 1479.01 Q1278.43 1482.55 1282.04 1482.55 Q1285.67 1482.55 1287.48 1479.01 Q1289.31 1475.44 1289.31 1468.33 Q1289.31 1461.2 1287.48 1457.66 Q1285.67 1454.1 1282.04 1454.1 M1282.04 1450.39 Q1287.85 1450.39 1290.91 1455 Q1293.98 1459.58 1293.98 1468.33 Q1293.98 1477.06 1290.91 1481.67 Q1287.85 1486.25 1282.04 1486.25 Q1276.23 1486.25 1273.15 1481.67 Q1270.1 1477.06 1270.1 1468.33 Q1270.1 1459.58 1273.15 1455 Q1276.23 1450.39 1282.04 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1302.2 1479.7 L1307.09 1479.7 L1307.09 1485.58 L1302.2 1485.58 L1302.2 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1327.27 1454.1 Q1323.66 1454.1 1321.83 1457.66 Q1320.03 1461.2 1320.03 1468.33 Q1320.03 1475.44 1321.83 1479.01 Q1323.66 1482.55 1327.27 1482.55 Q1330.91 1482.55 1332.71 1479.01 Q1334.54 1475.44 1334.54 1468.33 Q1334.54 1461.2 1332.71 1457.66 Q1330.91 1454.1 1327.27 1454.1 M1327.27 1450.39 Q1333.08 1450.39 1336.14 1455 Q1339.22 1459.58 1339.22 1468.33 Q1339.22 1477.06 1336.14 1481.67 Q1333.08 1486.25 1327.27 1486.25 Q1321.46 1486.25 1318.38 1481.67 Q1315.33 1477.06 1315.33 1468.33 Q1315.33 1459.58 1318.38 1455 Q1321.46 1450.39 1327.27 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1776.92 1454.1 Q1773.31 1454.1 1771.48 1457.66 Q1769.68 1461.2 1769.68 1468.33 Q1769.68 1475.44 1771.48 1479.01 Q1773.31 1482.55 1776.92 1482.55 Q1780.56 1482.55 1782.36 1479.01 Q1784.19 1475.44 1784.19 1468.33 Q1784.19 1461.2 1782.36 1457.66 Q1780.56 1454.1 1776.92 1454.1 M1776.92 1450.39 Q1782.73 1450.39 1785.79 1455 Q1788.87 1459.58 1788.87 1468.33 Q1788.87 1477.06 1785.79 1481.67 Q1782.73 1486.25 1776.92 1486.25 Q1771.11 1486.25 1768.04 1481.67 Q1764.98 1477.06 1764.98 1468.33 Q1764.98 1459.58 1768.04 1455 Q1771.11 1450.39 1776.92 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1797.09 1479.7 L1801.97 1479.7 L1801.97 1485.58 L1797.09 1485.58 L1797.09 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1812.2 1451.02 L1830.56 1451.02 L1830.56 1454.96 L1816.48 1454.96 L1816.48 1463.43 Q1817.5 1463.08 1818.52 1462.92 Q1819.54 1462.73 1820.56 1462.73 Q1826.35 1462.73 1829.73 1465.9 Q1833.11 1469.08 1833.11 1474.49 Q1833.11 1480.07 1829.63 1483.17 Q1826.16 1486.25 1819.84 1486.25 Q1817.67 1486.25 1815.4 1485.88 Q1813.15 1485.51 1810.74 1484.77 L1810.74 1480.07 Q1812.83 1481.2 1815.05 1481.76 Q1817.27 1482.32 1819.75 1482.32 Q1823.75 1482.32 1826.09 1480.21 Q1828.43 1478.1 1828.43 1474.49 Q1828.43 1470.88 1826.09 1468.77 Q1823.75 1466.67 1819.75 1466.67 Q1817.87 1466.67 1816 1467.08 Q1814.15 1467.5 1812.2 1468.38 L1812.2 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M2260.58 1481.64 L2268.22 1481.64 L2268.22 1455.28 L2259.91 1456.95 L2259.91 1452.69 L2268.17 1451.02 L2272.85 1451.02 L2272.85 1481.64 L2280.49 1481.64 L2280.49 1485.58 L2260.58 1485.58 L2260.58 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M2289.93 1479.7 L2294.82 1479.7 L2294.82 1485.58 L2289.93 1485.58 L2289.93 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M2315 1454.1 Q2311.39 1454.1 2309.56 1457.66 Q2307.76 1461.2 2307.76 1468.33 Q2307.76 1475.44 2309.56 1479.01 Q2311.39 1482.55 2315 1482.55 Q2318.64 1482.55 2320.44 1479.01 Q2322.27 1475.44 2322.27 1468.33 Q2322.27 1461.2 2320.44 1457.66 Q2318.64 1454.1 2315 1454.1 M2315 1450.39 Q2320.81 1450.39 2323.87 1455 Q2326.95 1459.58 2326.95 1468.33 Q2326.95 1477.06 2323.87 1481.67 Q2320.81 1486.25 2315 1486.25 Q2309.19 1486.25 2306.11 1481.67 Q2303.06 1477.06 2303.06 1468.33 Q2303.06 1459.58 2306.11 1455 Q2309.19 1450.39 2315 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1113.38 1532.4 L1100.49 1549.74 L1114.05 1568.04 L1107.14 1568.04 L1096.77 1554.04 L1086.39 1568.04 L1079.48 1568.04 L1093.33 1549.39 L1080.66 1532.4 L1087.57 1532.4 L1097.02 1545.1 L1106.48 1532.4 L1113.38 1532.4 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1157.11 1518.58 Q1152.85 1525.9 1150.78 1533.06 Q1148.71 1540.23 1148.71 1547.58 Q1148.71 1554.93 1150.78 1562.16 Q1152.88 1569.35 1157.11 1576.64 L1152.02 1576.64 Q1147.25 1569.16 1144.86 1561.93 Q1142.51 1554.71 1142.51 1547.58 Q1142.51 1540.48 1144.86 1533.29 Q1147.22 1526.09 1152.02 1518.58 L1157.11 1518.58 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1194.13 1533.76 L1194.13 1539.24 Q1191.65 1537.87 1189.13 1537.2 Q1186.65 1536.5 1184.11 1536.5 Q1178.41 1536.5 1175.26 1540.13 Q1172.11 1543.73 1172.11 1550.25 Q1172.11 1556.78 1175.26 1560.4 Q1178.41 1564 1184.11 1564 Q1186.65 1564 1189.13 1563.33 Q1191.65 1562.63 1194.13 1561.26 L1194.13 1566.68 Q1191.68 1567.82 1189.04 1568.39 Q1186.43 1568.97 1183.47 1568.97 Q1175.42 1568.97 1170.67 1563.91 Q1165.93 1558.85 1165.93 1550.25 Q1165.93 1541.53 1170.71 1536.53 Q1175.51 1531.54 1183.85 1531.54 Q1186.56 1531.54 1189.13 1532.11 Q1191.71 1532.65 1194.13 1533.76 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1218.13 1536.5 Q1213.42 1536.5 1210.68 1540.19 Q1207.94 1543.85 1207.94 1550.25 Q1207.94 1556.65 1210.65 1560.34 Q1213.39 1564 1218.13 1564 Q1222.81 1564 1225.55 1560.31 Q1228.28 1556.62 1228.28 1550.25 Q1228.28 1543.92 1225.55 1540.23 Q1222.81 1536.5 1218.13 1536.5 M1218.13 1531.54 Q1225.77 1531.54 1230.13 1536.5 Q1234.49 1541.47 1234.49 1550.25 Q1234.49 1559 1230.13 1564 Q1225.77 1568.97 1218.13 1568.97 Q1210.46 1568.97 1206.1 1564 Q1201.77 1559 1201.77 1550.25 Q1201.77 1541.47 1206.1 1536.5 Q1210.46 1531.54 1218.13 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1258.01 1536.5 Q1253.3 1536.5 1250.56 1540.19 Q1247.83 1543.85 1247.83 1550.25 Q1247.83 1556.65 1250.53 1560.34 Q1253.27 1564 1258.01 1564 Q1262.69 1564 1265.43 1560.31 Q1268.16 1556.62 1268.16 1550.25 Q1268.16 1543.92 1265.43 1540.23 Q1262.69 1536.5 1258.01 1536.5 M1258.01 1531.54 Q1265.65 1531.54 1270.01 1536.5 Q1274.37 1541.47 1274.37 1550.25 Q1274.37 1559 1270.01 1564 Q1265.65 1568.97 1258.01 1568.97 Q1250.34 1568.97 1245.98 1564 Q1241.65 1559 1241.65 1550.25 Q1241.65 1541.47 1245.98 1536.5 Q1250.34 1531.54 1258.01 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1304.74 1537.87 Q1303.75 1537.3 1302.57 1537.04 Q1301.43 1536.76 1300.02 1536.76 Q1295.06 1536.76 1292.39 1540 Q1289.74 1543.22 1289.74 1549.27 L1289.74 1568.04 L1283.86 1568.04 L1283.86 1532.4 L1289.74 1532.4 L1289.74 1537.93 Q1291.59 1534.69 1294.55 1533.13 Q1297.51 1531.54 1301.74 1531.54 Q1302.35 1531.54 1303.08 1531.63 Q1303.81 1531.7 1304.7 1531.85 L1304.74 1537.87 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1333.19 1537.81 L1333.19 1518.52 L1339.05 1518.52 L1339.05 1568.04 L1333.19 1568.04 L1333.19 1562.7 Q1331.34 1565.88 1328.51 1567.44 Q1325.71 1568.97 1321.76 1568.97 Q1315.3 1568.97 1311.23 1563.81 Q1307.19 1558.65 1307.19 1550.25 Q1307.19 1541.85 1311.23 1536.69 Q1315.3 1531.54 1321.76 1531.54 Q1325.71 1531.54 1328.51 1533.1 Q1331.34 1534.62 1333.19 1537.81 M1313.23 1550.25 Q1313.23 1556.71 1315.88 1560.4 Q1318.55 1564.07 1323.2 1564.07 Q1327.84 1564.07 1330.52 1560.4 Q1333.19 1556.71 1333.19 1550.25 Q1333.19 1543.79 1330.52 1540.13 Q1327.84 1536.44 1323.2 1536.44 Q1318.55 1536.44 1315.88 1540.13 Q1313.23 1543.79 1313.23 1550.25 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1351.11 1532.4 L1356.97 1532.4 L1356.97 1568.04 L1351.11 1568.04 L1351.11 1532.4 M1351.11 1518.52 L1356.97 1518.52 L1356.97 1525.93 L1351.11 1525.93 L1351.11 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1398.85 1546.53 L1398.85 1568.04 L1393 1568.04 L1393 1546.72 Q1393 1541.66 1391.02 1539.14 Q1389.05 1536.63 1385.1 1536.63 Q1380.36 1536.63 1377.62 1539.65 Q1374.89 1542.68 1374.89 1547.9 L1374.89 1568.04 L1369 1568.04 L1369 1532.4 L1374.89 1532.4 L1374.89 1537.93 Q1376.99 1534.72 1379.82 1533.13 Q1382.68 1531.54 1386.41 1531.54 Q1392.55 1531.54 1395.7 1535.36 Q1398.85 1539.14 1398.85 1546.53 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1426.73 1550.12 Q1419.64 1550.12 1416.9 1551.75 Q1414.16 1553.37 1414.16 1557.29 Q1414.16 1560.4 1416.2 1562.25 Q1418.27 1564.07 1421.8 1564.07 Q1426.67 1564.07 1429.6 1560.63 Q1432.56 1557.16 1432.56 1551.43 L1432.56 1550.12 L1426.73 1550.12 M1438.42 1547.71 L1438.42 1568.04 L1432.56 1568.04 L1432.56 1562.63 Q1430.55 1565.88 1427.56 1567.44 Q1424.57 1568.97 1420.24 1568.97 Q1414.77 1568.97 1411.52 1565.91 Q1408.31 1562.82 1408.31 1557.67 Q1408.31 1551.65 1412.32 1548.6 Q1416.36 1545.54 1424.35 1545.54 L1432.56 1545.54 L1432.56 1544.97 Q1432.56 1540.93 1429.89 1538.73 Q1427.24 1536.5 1422.44 1536.5 Q1419.38 1536.5 1416.49 1537.23 Q1413.59 1537.97 1410.92 1539.43 L1410.92 1534.02 Q1414.13 1532.78 1417.15 1532.17 Q1420.18 1531.54 1423.04 1531.54 Q1430.78 1531.54 1434.6 1535.55 Q1438.42 1539.56 1438.42 1547.71 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1456.27 1522.27 L1456.27 1532.4 L1468.33 1532.4 L1468.33 1536.95 L1456.27 1536.95 L1456.27 1556.3 Q1456.27 1560.66 1457.45 1561.9 Q1458.66 1563.14 1462.32 1563.14 L1468.33 1563.14 L1468.33 1568.04 L1462.32 1568.04 Q1455.54 1568.04 1452.96 1565.53 Q1450.38 1562.98 1450.38 1556.3 L1450.38 1536.95 L1446.09 1536.95 L1446.09 1532.4 L1450.38 1532.4 L1450.38 1522.27 L1456.27 1522.27 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1506.53 1548.76 L1506.53 1551.62 L1479.6 1551.62 Q1479.98 1557.67 1483.23 1560.85 Q1486.51 1564 1492.33 1564 Q1495.71 1564 1498.86 1563.17 Q1502.04 1562.35 1505.16 1560.69 L1505.16 1566.23 Q1502.01 1567.57 1498.7 1568.27 Q1495.39 1568.97 1491.98 1568.97 Q1483.45 1568.97 1478.46 1564 Q1473.49 1559.04 1473.49 1550.57 Q1473.49 1541.82 1478.2 1536.69 Q1482.94 1531.54 1490.96 1531.54 Q1498.16 1531.54 1502.33 1536.18 Q1506.53 1540.8 1506.53 1548.76 M1500.67 1547.04 Q1500.61 1542.23 1497.97 1539.37 Q1495.36 1536.5 1491.03 1536.5 Q1486.13 1536.5 1483.17 1539.27 Q1480.24 1542.04 1479.79 1547.07 L1500.67 1547.04 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M1515.22 1518.58 L1520.31 1518.58 Q1525.08 1526.09 1527.44 1533.29 Q1529.83 1540.48 1529.83 1547.58 Q1529.83 1554.71 1527.44 1561.93 Q1525.08 1569.16 1520.31 1576.64 L1515.22 1576.64 Q1519.45 1569.35 1521.52 1562.16 Q1523.62 1554.93 1523.62 1547.58 Q1523.62 1540.23 1521.52 1533.06 Q1519.45 1525.9 1515.22 1518.58 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,1423.18 256.556,47.2441 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,1272.91 275.454,1272.91 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,1093.67 275.454,1093.67 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,914.443 275.454,914.443 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,735.212 275.454,735.212 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,555.981 275.454,555.981 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,376.749 275.454,376.749 "/> -<polyline clip-path="url(#clip140)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,197.518 275.454,197.518 "/> -<path clip-path="url(#clip140)" d="M114.26 1273.36 L143.936 1273.36 L143.936 1277.29 L114.26 1277.29 L114.26 1273.36 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M164.028 1258.7 Q160.417 1258.7 158.589 1262.27 Q156.783 1265.81 156.783 1272.94 Q156.783 1280.05 158.589 1283.61 Q160.417 1287.15 164.028 1287.15 Q167.663 1287.15 169.468 1283.61 Q171.297 1280.05 171.297 1272.94 Q171.297 1265.81 169.468 1262.27 Q167.663 1258.7 164.028 1258.7 M164.028 1255 Q169.839 1255 172.894 1259.61 Q175.973 1264.19 175.973 1272.94 Q175.973 1281.67 172.894 1286.27 Q169.839 1290.86 164.028 1290.86 Q158.218 1290.86 155.14 1286.27 Q152.084 1281.67 152.084 1272.94 Q152.084 1264.19 155.14 1259.61 Q158.218 1255 164.028 1255 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M184.19 1284.31 L189.075 1284.31 L189.075 1290.19 L184.19 1290.19 L184.19 1284.31 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M213.426 1271.55 Q216.783 1272.27 218.658 1274.54 Q220.556 1276.81 220.556 1280.14 Q220.556 1285.26 217.037 1288.06 Q213.519 1290.86 207.037 1290.86 Q204.862 1290.86 202.547 1290.42 Q200.255 1290 197.801 1289.14 L197.801 1284.63 Q199.746 1285.76 202.061 1286.34 Q204.375 1286.92 206.899 1286.92 Q211.297 1286.92 213.588 1285.19 Q215.903 1283.45 215.903 1280.14 Q215.903 1277.08 213.75 1275.37 Q211.621 1273.64 207.801 1273.64 L203.774 1273.64 L203.774 1269.79 L207.987 1269.79 Q211.436 1269.79 213.264 1268.43 Q215.093 1267.04 215.093 1264.45 Q215.093 1261.78 213.195 1260.37 Q211.32 1258.94 207.801 1258.94 Q205.88 1258.94 203.681 1259.35 Q201.482 1259.77 198.843 1260.65 L198.843 1256.48 Q201.505 1255.74 203.82 1255.37 Q206.158 1255 208.218 1255 Q213.542 1255 216.644 1257.43 Q219.746 1259.84 219.746 1263.96 Q219.746 1266.83 218.102 1268.82 Q216.459 1270.79 213.426 1271.55 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M115.209 1094.13 L144.885 1094.13 L144.885 1098.06 L115.209 1098.06 L115.209 1094.13 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M164.977 1079.47 Q161.366 1079.47 159.538 1083.04 Q157.732 1086.58 157.732 1093.71 Q157.732 1100.82 159.538 1104.38 Q161.366 1107.92 164.977 1107.92 Q168.612 1107.92 170.417 1104.38 Q172.246 1100.82 172.246 1093.71 Q172.246 1086.58 170.417 1083.04 Q168.612 1079.47 164.977 1079.47 M164.977 1075.77 Q170.788 1075.77 173.843 1080.38 Q176.922 1084.96 176.922 1093.71 Q176.922 1102.44 173.843 1107.04 Q170.788 1111.63 164.977 1111.63 Q159.167 1111.63 156.089 1107.04 Q153.033 1102.44 153.033 1093.71 Q153.033 1084.96 156.089 1080.38 Q159.167 1075.77 164.977 1075.77 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M185.139 1105.07 L190.024 1105.07 L190.024 1110.95 L185.139 1110.95 L185.139 1105.07 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M204.237 1107.02 L220.556 1107.02 L220.556 1110.95 L198.612 1110.95 L198.612 1107.02 Q201.274 1104.26 205.857 1099.64 Q210.463 1094.98 211.644 1093.64 Q213.889 1091.12 214.769 1089.38 Q215.672 1087.62 215.672 1085.93 Q215.672 1083.18 213.727 1081.44 Q211.806 1079.7 208.704 1079.7 Q206.505 1079.7 204.051 1080.47 Q201.621 1081.23 198.843 1082.78 L198.843 1078.06 Q201.667 1076.93 204.121 1076.35 Q206.574 1075.77 208.612 1075.77 Q213.982 1075.77 217.176 1078.45 Q220.371 1081.14 220.371 1085.63 Q220.371 1087.76 219.561 1089.68 Q218.773 1091.58 216.667 1094.17 Q216.088 1094.84 212.986 1098.06 Q209.885 1101.26 204.237 1107.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M114.839 914.895 L144.515 914.895 L144.515 918.83 L114.839 918.83 L114.839 914.895 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M164.607 900.242 Q160.996 900.242 159.167 903.807 Q157.362 907.348 157.362 914.478 Q157.362 921.584 159.167 925.149 Q160.996 928.691 164.607 928.691 Q168.241 928.691 170.047 925.149 Q171.876 921.584 171.876 914.478 Q171.876 907.348 170.047 903.807 Q168.241 900.242 164.607 900.242 M164.607 896.538 Q170.417 896.538 173.473 901.145 Q176.551 905.728 176.551 914.478 Q176.551 923.205 173.473 927.811 Q170.417 932.395 164.607 932.395 Q158.797 932.395 155.718 927.811 Q152.663 923.205 152.663 914.478 Q152.663 905.728 155.718 901.145 Q158.797 896.538 164.607 896.538 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M184.769 925.844 L189.653 925.844 L189.653 931.723 L184.769 931.723 L184.769 925.844 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M200.649 927.788 L208.287 927.788 L208.287 901.422 L199.977 903.089 L199.977 898.83 L208.241 897.163 L212.917 897.163 L212.917 927.788 L220.556 927.788 L220.556 931.723 L200.649 931.723 L200.649 927.788 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M163.38 721.011 Q159.769 721.011 157.94 724.575 Q156.135 728.117 156.135 735.247 Q156.135 742.353 157.94 745.918 Q159.769 749.46 163.38 749.46 Q167.015 749.46 168.82 745.918 Q170.649 742.353 170.649 735.247 Q170.649 728.117 168.82 724.575 Q167.015 721.011 163.38 721.011 M163.38 717.307 Q169.19 717.307 172.246 721.913 Q175.325 726.497 175.325 735.247 Q175.325 743.973 172.246 748.58 Q169.19 753.163 163.38 753.163 Q157.57 753.163 154.491 748.58 Q151.436 743.973 151.436 735.247 Q151.436 726.497 154.491 721.913 Q157.57 717.307 163.38 717.307 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M183.542 746.612 L188.426 746.612 L188.426 752.492 L183.542 752.492 L183.542 746.612 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M208.612 721.011 Q205 721.011 203.172 724.575 Q201.366 728.117 201.366 735.247 Q201.366 742.353 203.172 745.918 Q205 749.46 208.612 749.46 Q212.246 749.46 214.051 745.918 Q215.88 742.353 215.88 735.247 Q215.88 728.117 214.051 724.575 Q212.246 721.011 208.612 721.011 M208.612 717.307 Q214.422 717.307 217.477 721.913 Q220.556 726.497 220.556 735.247 Q220.556 743.973 217.477 748.58 Q214.422 753.163 208.612 753.163 Q202.801 753.163 199.723 748.58 Q196.667 743.973 196.667 735.247 Q196.667 726.497 199.723 721.913 Q202.801 717.307 208.612 717.307 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M164.607 541.779 Q160.996 541.779 159.167 545.344 Q157.362 548.886 157.362 556.015 Q157.362 563.122 159.167 566.687 Q160.996 570.228 164.607 570.228 Q168.241 570.228 170.047 566.687 Q171.876 563.122 171.876 556.015 Q171.876 548.886 170.047 545.344 Q168.241 541.779 164.607 541.779 M164.607 538.076 Q170.417 538.076 173.473 542.682 Q176.551 547.265 176.551 556.015 Q176.551 564.742 173.473 569.349 Q170.417 573.932 164.607 573.932 Q158.797 573.932 155.718 569.349 Q152.663 564.742 152.663 556.015 Q152.663 547.265 155.718 542.682 Q158.797 538.076 164.607 538.076 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M184.769 567.381 L189.653 567.381 L189.653 573.261 L184.769 573.261 L184.769 567.381 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M200.649 569.326 L208.287 569.326 L208.287 542.96 L199.977 544.627 L199.977 540.367 L208.241 538.701 L212.917 538.701 L212.917 569.326 L220.556 569.326 L220.556 573.261 L200.649 573.261 L200.649 569.326 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M164.977 362.548 Q161.366 362.548 159.538 366.113 Q157.732 369.655 157.732 376.784 Q157.732 383.891 159.538 387.455 Q161.366 390.997 164.977 390.997 Q168.612 390.997 170.417 387.455 Q172.246 383.891 172.246 376.784 Q172.246 369.655 170.417 366.113 Q168.612 362.548 164.977 362.548 M164.977 358.844 Q170.788 358.844 173.843 363.451 Q176.922 368.034 176.922 376.784 Q176.922 385.511 173.843 390.117 Q170.788 394.701 164.977 394.701 Q159.167 394.701 156.089 390.117 Q153.033 385.511 153.033 376.784 Q153.033 368.034 156.089 363.451 Q159.167 358.844 164.977 358.844 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M185.139 388.15 L190.024 388.15 L190.024 394.029 L185.139 394.029 L185.139 388.15 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M204.237 390.094 L220.556 390.094 L220.556 394.029 L198.612 394.029 L198.612 390.094 Q201.274 387.34 205.857 382.71 Q210.463 378.057 211.644 376.715 Q213.889 374.192 214.769 372.455 Q215.672 370.696 215.672 369.006 Q215.672 366.252 213.727 364.516 Q211.806 362.78 208.704 362.78 Q206.505 362.78 204.051 363.543 Q201.621 364.307 198.843 365.858 L198.843 361.136 Q201.667 360.002 204.121 359.423 Q206.574 358.844 208.612 358.844 Q213.982 358.844 217.176 361.53 Q220.371 364.215 220.371 368.705 Q220.371 370.835 219.561 372.756 Q218.773 374.654 216.667 377.247 Q216.088 377.918 212.986 381.136 Q209.885 384.33 204.237 390.094 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M164.028 183.317 Q160.417 183.317 158.589 186.882 Q156.783 190.423 156.783 197.553 Q156.783 204.659 158.589 208.224 Q160.417 211.766 164.028 211.766 Q167.663 211.766 169.468 208.224 Q171.297 204.659 171.297 197.553 Q171.297 190.423 169.468 186.882 Q167.663 183.317 164.028 183.317 M164.028 179.613 Q169.839 179.613 172.894 184.22 Q175.973 188.803 175.973 197.553 Q175.973 206.28 172.894 210.886 Q169.839 215.469 164.028 215.469 Q158.218 215.469 155.14 210.886 Q152.084 206.28 152.084 197.553 Q152.084 188.803 155.14 184.22 Q158.218 179.613 164.028 179.613 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M184.19 208.918 L189.075 208.918 L189.075 214.798 L184.19 214.798 L184.19 208.918 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M213.426 196.164 Q216.783 196.882 218.658 199.15 Q220.556 201.419 220.556 204.752 Q220.556 209.868 217.037 212.668 Q213.519 215.469 207.037 215.469 Q204.862 215.469 202.547 215.03 Q200.255 214.613 197.801 213.756 L197.801 209.243 Q199.746 210.377 202.061 210.956 Q204.375 211.534 206.899 211.534 Q211.297 211.534 213.588 209.798 Q215.903 208.062 215.903 204.752 Q215.903 201.696 213.75 199.983 Q211.621 198.247 207.801 198.247 L203.774 198.247 L203.774 194.405 L207.987 194.405 Q211.436 194.405 213.264 193.039 Q215.093 191.65 215.093 189.057 Q215.093 186.395 213.195 184.983 Q211.32 183.548 207.801 183.548 Q205.88 183.548 203.681 183.965 Q201.482 184.382 198.843 185.261 L198.843 181.095 Q201.505 180.354 203.82 179.983 Q206.158 179.613 208.218 179.613 Q213.542 179.613 216.644 182.044 Q219.746 184.451 219.746 188.571 Q219.746 191.442 218.102 193.432 Q216.459 195.4 213.426 196.164 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M46.212 1101.42 Q52.6732 1101.42 56.3653 1098.77 Q60.0256 1096.1 60.0256 1091.45 Q60.0256 1086.81 56.3653 1084.13 Q52.6732 1081.46 46.212 1081.46 Q39.7508 1081.46 36.0905 1084.13 Q32.3984 1086.81 32.3984 1091.45 Q32.3984 1096.1 36.0905 1098.77 Q39.7508 1101.42 46.212 1101.42 M58.657 1081.46 Q61.8398 1083.3 63.3994 1086.14 Q64.9272 1088.94 64.9272 1092.89 Q64.9272 1099.35 59.771 1103.42 Q54.6147 1107.46 46.212 1107.46 Q37.8093 1107.46 32.6531 1103.42 Q27.4968 1099.35 27.4968 1092.89 Q27.4968 1088.94 29.0564 1086.14 Q30.5842 1083.3 33.7671 1081.46 L28.3562 1081.46 L28.3562 1075.6 L77.5631 1075.6 L77.5631 1081.46 L58.657 1081.46 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M74.8259 1036.45 L79.3773 1036.45 L79.3773 1070.32 L74.8259 1070.32 L74.8259 1036.45 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M28.3562 1001.31 L45.7028 1014.2 L64.0042 1000.65 L64.0042 1007.55 L49.9996 1017.93 L64.0042 1028.31 L64.0042 1035.21 L45.3526 1021.37 L28.3562 1034.03 L28.3562 1027.13 L41.0558 1017.67 L28.3562 1008.22 L28.3562 1001.31 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M14.5426 957.582 Q21.8632 961.847 29.0246 963.916 Q36.186 965.985 43.5384 965.985 Q50.8908 965.985 58.1159 963.916 Q65.3091 961.815 72.5979 957.582 L72.5979 962.675 Q65.1182 967.449 57.8931 969.836 Q50.668 972.191 43.5384 972.191 Q36.4406 972.191 29.2474 969.836 Q22.0542 967.481 14.5426 962.675 L14.5426 957.582 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M14.479 928.172 L19.3487 928.172 L19.3487 933.774 Q19.3487 936.925 20.6219 938.167 Q21.895 939.376 25.2052 939.376 L28.3562 939.376 L28.3562 929.732 L32.9077 929.732 L32.9077 939.376 L64.0042 939.376 L64.0042 945.264 L32.9077 945.264 L32.9077 950.866 L28.3562 950.866 L28.3562 945.264 L25.8736 945.264 Q19.9216 945.264 17.2162 942.495 Q14.479 939.726 14.479 933.711 L14.479 928.172 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M14.479 923.271 L14.479 917.414 L64.0042 917.414 L64.0042 923.271 L14.479 923.271 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M49.9359 905.765 L28.3562 905.765 L28.3562 899.909 L49.7131 899.909 Q54.7739 899.909 57.3202 897.935 Q59.8346 895.962 59.8346 892.015 Q59.8346 887.273 56.8109 884.536 Q53.7872 881.766 48.5673 881.766 L28.3562 881.766 L28.3562 875.91 L64.0042 875.91 L64.0042 881.766 L58.5296 881.766 Q61.7762 883.899 63.3676 886.732 Q64.9272 889.533 64.9272 893.257 Q64.9272 899.399 61.1078 902.582 Q57.2883 905.765 49.9359 905.765 M27.4968 891.029 L27.4968 891.029 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M28.3562 834.215 L45.7028 847.105 L64.0042 833.546 L64.0042 840.453 L49.9996 850.829 L64.0042 861.205 L64.0042 868.112 L45.3526 854.267 L28.3562 866.934 L28.3562 860.028 L41.0558 850.574 L28.3562 841.121 L28.3562 834.215 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M28.3562 804.55 L28.3562 798.694 L64.0042 798.694 L64.0042 804.55 L28.3562 804.55 M14.479 804.55 L14.479 798.694 L21.895 798.694 L21.895 804.55 L14.479 804.55 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M42.4881 756.808 L64.0042 756.808 L64.0042 762.664 L42.679 762.664 Q37.6183 762.664 35.1038 764.637 Q32.5894 766.611 32.5894 770.558 Q32.5894 775.3 35.6131 778.037 Q38.6368 780.775 43.8567 780.775 L64.0042 780.775 L64.0042 786.663 L28.3562 786.663 L28.3562 780.775 L33.8944 780.775 Q30.6797 778.674 29.0883 775.841 Q27.4968 772.977 27.4968 769.253 Q27.4968 763.11 31.3163 759.959 Q35.1038 756.808 42.4881 756.808 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M28.3562 694.774 L45.7028 707.664 L64.0042 694.105 L64.0042 701.012 L49.9996 711.388 L64.0042 721.764 L64.0042 728.671 L45.3526 714.826 L28.3562 727.494 L28.3562 720.587 L41.0558 711.134 L28.3562 701.681 L28.3562 694.774 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M43.5384 688.79 L43.5384 671.634 L48.7583 671.634 L48.7583 688.79 L43.5384 688.79 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M33.7671 638.851 L14.479 638.851 L14.479 632.995 L64.0042 632.995 L64.0042 638.851 L58.657 638.851 Q61.8398 640.697 63.3994 643.53 Q64.9272 646.331 64.9272 650.278 Q64.9272 656.739 59.771 660.813 Q54.6147 664.855 46.212 664.855 Q37.8093 664.855 32.6531 660.813 Q27.4968 656.739 27.4968 650.278 Q27.4968 646.331 29.0564 643.53 Q30.5842 640.697 33.7671 638.851 M46.212 658.808 Q52.6732 658.808 56.3653 656.166 Q60.0256 653.492 60.0256 648.845 Q60.0256 644.198 56.3653 641.525 Q52.6732 638.851 46.212 638.851 Q39.7508 638.851 36.0905 641.525 Q32.3984 644.198 32.3984 648.845 Q32.3984 653.492 36.0905 656.166 Q39.7508 658.808 46.212 658.808 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M28.3562 620.932 L28.3562 615.075 L64.0042 615.075 L64.0042 620.932 L28.3562 620.932 M14.479 620.932 L14.479 615.075 L21.895 615.075 L21.895 620.932 L14.479 620.932 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M33.8307 582.164 Q33.2578 583.151 33.0032 584.329 Q32.7167 585.475 32.7167 586.875 Q32.7167 591.84 35.9632 594.514 Q39.1779 597.156 45.2253 597.156 L64.0042 597.156 L64.0042 603.044 L28.3562 603.044 L28.3562 597.156 L33.8944 597.156 Q30.6479 595.31 29.0883 592.35 Q27.4968 589.39 27.4968 585.156 Q27.4968 584.552 27.5923 583.82 Q27.656 583.087 27.8151 582.196 L33.8307 582.164 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M44.7161 546.962 L47.5806 546.962 L47.5806 573.889 Q53.6281 573.507 56.8109 570.261 Q59.9619 566.982 59.9619 561.158 Q59.9619 557.784 59.1344 554.633 Q58.3069 551.45 56.6518 548.331 L62.1899 548.331 Q63.5267 551.482 64.227 554.792 Q64.9272 558.102 64.9272 561.508 Q64.9272 570.038 59.9619 575.035 Q54.9967 580 46.5303 580 Q37.7774 580 32.6531 575.29 Q27.4968 570.547 27.4968 562.526 Q27.4968 555.333 32.1438 551.163 Q36.7589 546.962 44.7161 546.962 M42.9973 552.819 Q38.1912 552.882 35.3266 555.524 Q32.4621 558.134 32.4621 562.463 Q32.4621 567.364 35.2312 570.324 Q38.0002 573.252 43.0292 573.698 L42.9973 552.819 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M29.7248 511.696 L35.1993 511.696 Q33.8307 514.179 33.1623 516.693 Q32.4621 519.176 32.4621 521.722 Q32.4621 527.419 36.0905 530.57 Q39.6872 533.721 46.212 533.721 Q52.7369 533.721 56.3653 530.57 Q59.9619 527.419 59.9619 521.722 Q59.9619 519.176 59.2935 516.693 Q58.5933 514.179 57.2247 511.696 L62.6355 511.696 Q63.7814 514.147 64.3543 516.789 Q64.9272 519.399 64.9272 522.359 Q64.9272 530.411 59.8664 535.154 Q54.8057 539.896 46.212 539.896 Q37.491 539.896 32.4939 535.122 Q27.4968 530.316 27.4968 521.977 Q27.4968 519.271 28.0697 516.693 Q28.6108 514.115 29.7248 511.696 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M18.2347 495.718 L28.3562 495.718 L28.3562 483.655 L32.9077 483.655 L32.9077 495.718 L52.2594 495.718 Q56.6199 495.718 57.8613 494.541 Q59.1026 493.331 59.1026 489.671 L59.1026 483.655 L64.0042 483.655 L64.0042 489.671 Q64.0042 496.45 61.4897 499.028 Q58.9434 501.606 52.2594 501.606 L32.9077 501.606 L32.9077 505.903 L28.3562 505.903 L28.3562 501.606 L18.2347 501.606 L18.2347 495.718 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M28.3562 475.953 L28.3562 470.096 L64.0042 470.096 L64.0042 475.953 L28.3562 475.953 M14.479 475.953 L14.479 470.096 L21.895 470.096 L21.895 475.953 L14.479 475.953 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M32.4621 444.029 Q32.4621 448.739 36.1542 451.477 Q39.8145 454.214 46.212 454.214 Q52.6095 454.214 56.3017 451.508 Q59.9619 448.771 59.9619 444.029 Q59.9619 439.35 56.2698 436.613 Q52.5777 433.875 46.212 433.875 Q39.8781 433.875 36.186 436.613 Q32.4621 439.35 32.4621 444.029 M27.4968 444.029 Q27.4968 436.39 32.4621 432.029 Q37.4273 427.669 46.212 427.669 Q54.9649 427.669 59.9619 432.029 Q64.9272 436.39 64.9272 444.029 Q64.9272 451.699 59.9619 456.06 Q54.9649 460.388 46.212 460.388 Q37.4273 460.388 32.4621 456.06 Q27.4968 451.699 27.4968 444.029 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M42.4881 388.329 L64.0042 388.329 L64.0042 394.185 L42.679 394.185 Q37.6183 394.185 35.1038 396.159 Q32.5894 398.132 32.5894 402.079 Q32.5894 406.821 35.6131 409.558 Q38.6368 412.296 43.8567 412.296 L64.0042 412.296 L64.0042 418.184 L28.3562 418.184 L28.3562 412.296 L33.8944 412.296 Q30.6797 410.195 29.0883 407.362 Q27.4968 404.498 27.4968 400.774 Q27.4968 394.631 31.3163 391.48 Q35.1038 388.329 42.4881 388.329 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip140)" d="M14.5426 377.571 L14.5426 372.478 Q22.0542 367.704 29.2474 365.348 Q36.4406 362.961 43.5384 362.961 Q50.668 362.961 57.8931 365.348 Q65.1182 367.704 72.5979 372.478 L72.5979 377.571 Q65.3091 373.337 58.1159 371.269 Q50.8908 369.168 43.5384 369.168 Q36.186 369.168 29.0246 371.269 Q21.8632 373.337 14.5426 377.571 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip142)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="315.882,1384.24 335.658,1365.85 355.433,1347.46 375.209,1329.06 394.984,1310.67 414.76,1292.28 434.535,1265.04 454.311,1237.8 474.086,1210.55 493.862,1183.31 513.637,1156.07 533.412,1139.07 553.188,1122.08 572.963,1105.09 592.739,1088.09 612.514,1071.1 632.29,1056.74 652.065,1042.38 671.841,1028.02 691.616,1013.66 711.392,999.295 731.167,987.752 750.943,976.208 770.718,964.665 790.494,953.122 810.269,941.579 830.045,931.658 849.82,921.736 869.596,911.815 889.371,901.893 909.146,891.972 928.922,883.245 948.697,874.518 968.473,865.791 988.248,857.064 1008.02,848.336 1027.8,840.391 1047.57,832.445 1067.35,824.5 1087.13,816.554 1106.9,808.609 1126.68,801.152 1146.45,793.696 1166.23,786.24 1186,778.783 1205.78,771.327 1225.55,764.104 1245.33,756.881 1265.1,749.658 1284.88,742.435 1304.66,735.212 1324.43,727.989 1344.21,720.766 1363.98,713.543 1383.76,706.32 1403.53,699.097 1423.31,691.641 1443.08,684.184 1462.86,676.728 1482.64,669.272 1502.41,661.815 1522.19,653.87 1541.96,645.924 1561.74,637.979 1581.51,630.033 1601.29,622.088 1621.06,613.36 1640.84,604.633 1660.61,595.906 1680.39,587.179 1700.17,578.452 1719.94,568.53 1739.72,558.609 1759.49,548.688 1779.27,538.766 1799.04,528.845 1818.82,517.302 1838.59,505.759 1858.37,494.215 1878.14,482.672 1897.92,471.129 1917.7,456.768 1937.47,442.407 1957.25,428.046 1977.02,413.685 1996.8,399.324 2016.57,382.331 2036.35,365.337 2056.12,348.344 2075.9,331.35 2095.67,314.357 2115.45,287.114 2135.23,259.871 2155,232.627 2174.78,205.384 2194.55,178.141 2214.33,159.75 2234.1,141.359 2253.88,122.968 2273.65,104.577 2293.43,86.1857 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="315.882,1423.18 315.882,47.2441 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="810.269,1423.18 810.269,47.2441 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1304.66,1423.18 1304.66,47.2441 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1799.04,1423.18 1799.04,47.2441 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2293.43,1423.18 2293.43,47.2441 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,1272.91 2352.76,1272.91 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,1093.67 2352.76,1093.67 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,914.443 2352.76,914.443 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,735.212 2352.76,735.212 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,555.981 2352.76,555.981 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,376.749 2352.76,376.749 "/> +<polyline clip-path="url(#clip752)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="256.556,197.518 2352.76,197.518 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,1423.18 2352.76,1423.18 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="315.882,1423.18 315.882,1404.28 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="810.269,1423.18 810.269,1404.28 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1304.66,1423.18 1304.66,1404.28 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1799.04,1423.18 1799.04,1404.28 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2293.43,1423.18 2293.43,1404.28 "/> +<path clip-path="url(#clip750)" d="M262.41 1468.75 L292.086 1468.75 L292.086 1472.69 L262.41 1472.69 L262.41 1468.75 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M302.989 1481.64 L310.628 1481.64 L310.628 1455.28 L302.318 1456.95 L302.318 1452.69 L310.581 1451.02 L315.257 1451.02 L315.257 1481.64 L322.896 1481.64 L322.896 1485.58 L302.989 1485.58 L302.989 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M332.341 1479.7 L337.225 1479.7 L337.225 1485.58 L332.341 1485.58 L332.341 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M357.41 1454.1 Q353.799 1454.1 351.97 1457.66 Q350.165 1461.2 350.165 1468.33 Q350.165 1475.44 351.97 1479.01 Q353.799 1482.55 357.41 1482.55 Q361.044 1482.55 362.85 1479.01 Q364.678 1475.44 364.678 1468.33 Q364.678 1461.2 362.85 1457.66 Q361.044 1454.1 357.41 1454.1 M357.41 1450.39 Q363.22 1450.39 366.276 1455 Q369.354 1459.58 369.354 1468.33 Q369.354 1477.06 366.276 1481.67 Q363.22 1486.25 357.41 1486.25 Q351.6 1486.25 348.521 1481.67 Q345.465 1477.06 345.465 1468.33 Q345.465 1459.58 348.521 1455 Q351.6 1450.39 357.41 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M757.295 1468.75 L786.971 1468.75 L786.971 1472.69 L757.295 1472.69 L757.295 1468.75 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M807.063 1454.1 Q803.452 1454.1 801.623 1457.66 Q799.818 1461.2 799.818 1468.33 Q799.818 1475.44 801.623 1479.01 Q803.452 1482.55 807.063 1482.55 Q810.697 1482.55 812.503 1479.01 Q814.332 1475.44 814.332 1468.33 Q814.332 1461.2 812.503 1457.66 Q810.697 1454.1 807.063 1454.1 M807.063 1450.39 Q812.873 1450.39 815.929 1455 Q819.007 1459.58 819.007 1468.33 Q819.007 1477.06 815.929 1481.67 Q812.873 1486.25 807.063 1486.25 Q801.253 1486.25 798.174 1481.67 Q795.119 1477.06 795.119 1468.33 Q795.119 1459.58 798.174 1455 Q801.253 1450.39 807.063 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M827.225 1479.7 L832.109 1479.7 L832.109 1485.58 L827.225 1485.58 L827.225 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M842.341 1451.02 L860.697 1451.02 L860.697 1454.96 L846.623 1454.96 L846.623 1463.43 Q847.642 1463.08 848.66 1462.92 Q849.679 1462.73 850.697 1462.73 Q856.484 1462.73 859.864 1465.9 Q863.243 1469.08 863.243 1474.49 Q863.243 1480.07 859.771 1483.17 Q856.299 1486.25 849.98 1486.25 Q847.804 1486.25 845.535 1485.88 Q843.29 1485.51 840.882 1484.77 L840.882 1480.07 Q842.966 1481.2 845.188 1481.76 Q847.41 1482.32 849.887 1482.32 Q853.892 1482.32 856.229 1480.21 Q858.567 1478.1 858.567 1474.49 Q858.567 1470.88 856.229 1468.77 Q853.892 1466.67 849.887 1466.67 Q848.012 1466.67 846.137 1467.08 Q844.285 1467.5 842.341 1468.38 L842.341 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1282.04 1454.1 Q1278.43 1454.1 1276.6 1457.66 Q1274.79 1461.2 1274.79 1468.33 Q1274.79 1475.44 1276.6 1479.01 Q1278.43 1482.55 1282.04 1482.55 Q1285.67 1482.55 1287.48 1479.01 Q1289.31 1475.44 1289.31 1468.33 Q1289.31 1461.2 1287.48 1457.66 Q1285.67 1454.1 1282.04 1454.1 M1282.04 1450.39 Q1287.85 1450.39 1290.91 1455 Q1293.98 1459.58 1293.98 1468.33 Q1293.98 1477.06 1290.91 1481.67 Q1287.85 1486.25 1282.04 1486.25 Q1276.23 1486.25 1273.15 1481.67 Q1270.1 1477.06 1270.1 1468.33 Q1270.1 1459.58 1273.15 1455 Q1276.23 1450.39 1282.04 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1302.2 1479.7 L1307.09 1479.7 L1307.09 1485.58 L1302.2 1485.58 L1302.2 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1327.27 1454.1 Q1323.66 1454.1 1321.83 1457.66 Q1320.03 1461.2 1320.03 1468.33 Q1320.03 1475.44 1321.83 1479.01 Q1323.66 1482.55 1327.27 1482.55 Q1330.91 1482.55 1332.71 1479.01 Q1334.54 1475.44 1334.54 1468.33 Q1334.54 1461.2 1332.71 1457.66 Q1330.91 1454.1 1327.27 1454.1 M1327.27 1450.39 Q1333.08 1450.39 1336.14 1455 Q1339.22 1459.58 1339.22 1468.33 Q1339.22 1477.06 1336.14 1481.67 Q1333.08 1486.25 1327.27 1486.25 Q1321.46 1486.25 1318.38 1481.67 Q1315.33 1477.06 1315.33 1468.33 Q1315.33 1459.58 1318.38 1455 Q1321.46 1450.39 1327.27 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1776.92 1454.1 Q1773.31 1454.1 1771.48 1457.66 Q1769.68 1461.2 1769.68 1468.33 Q1769.68 1475.44 1771.48 1479.01 Q1773.31 1482.55 1776.92 1482.55 Q1780.56 1482.55 1782.36 1479.01 Q1784.19 1475.44 1784.19 1468.33 Q1784.19 1461.2 1782.36 1457.66 Q1780.56 1454.1 1776.92 1454.1 M1776.92 1450.39 Q1782.73 1450.39 1785.79 1455 Q1788.87 1459.58 1788.87 1468.33 Q1788.87 1477.06 1785.79 1481.67 Q1782.73 1486.25 1776.92 1486.25 Q1771.11 1486.25 1768.04 1481.67 Q1764.98 1477.06 1764.98 1468.33 Q1764.98 1459.58 1768.04 1455 Q1771.11 1450.39 1776.92 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1797.09 1479.7 L1801.97 1479.7 L1801.97 1485.58 L1797.09 1485.58 L1797.09 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1812.2 1451.02 L1830.56 1451.02 L1830.56 1454.96 L1816.48 1454.96 L1816.48 1463.43 Q1817.5 1463.08 1818.52 1462.92 Q1819.54 1462.73 1820.56 1462.73 Q1826.35 1462.73 1829.73 1465.9 Q1833.11 1469.08 1833.11 1474.49 Q1833.11 1480.07 1829.63 1483.17 Q1826.16 1486.25 1819.84 1486.25 Q1817.67 1486.25 1815.4 1485.88 Q1813.15 1485.51 1810.74 1484.77 L1810.74 1480.07 Q1812.83 1481.2 1815.05 1481.76 Q1817.27 1482.32 1819.75 1482.32 Q1823.75 1482.32 1826.09 1480.21 Q1828.43 1478.1 1828.43 1474.49 Q1828.43 1470.88 1826.09 1468.77 Q1823.75 1466.67 1819.75 1466.67 Q1817.87 1466.67 1816 1467.08 Q1814.15 1467.5 1812.2 1468.38 L1812.2 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M2260.58 1481.64 L2268.22 1481.64 L2268.22 1455.28 L2259.91 1456.95 L2259.91 1452.69 L2268.17 1451.02 L2272.85 1451.02 L2272.85 1481.64 L2280.49 1481.64 L2280.49 1485.58 L2260.58 1485.58 L2260.58 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M2289.93 1479.7 L2294.82 1479.7 L2294.82 1485.58 L2289.93 1485.58 L2289.93 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M2315 1454.1 Q2311.39 1454.1 2309.56 1457.66 Q2307.76 1461.2 2307.76 1468.33 Q2307.76 1475.44 2309.56 1479.01 Q2311.39 1482.55 2315 1482.55 Q2318.64 1482.55 2320.44 1479.01 Q2322.27 1475.44 2322.27 1468.33 Q2322.27 1461.2 2320.44 1457.66 Q2318.64 1454.1 2315 1454.1 M2315 1450.39 Q2320.81 1450.39 2323.87 1455 Q2326.95 1459.58 2326.95 1468.33 Q2326.95 1477.06 2323.87 1481.67 Q2320.81 1486.25 2315 1486.25 Q2309.19 1486.25 2306.11 1481.67 Q2303.06 1477.06 2303.06 1468.33 Q2303.06 1459.58 2306.11 1455 Q2309.19 1450.39 2315 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1113.38 1532.4 L1100.49 1549.74 L1114.05 1568.04 L1107.14 1568.04 L1096.77 1554.04 L1086.39 1568.04 L1079.48 1568.04 L1093.33 1549.39 L1080.66 1532.4 L1087.57 1532.4 L1097.02 1545.1 L1106.48 1532.4 L1113.38 1532.4 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1157.11 1518.58 Q1152.85 1525.9 1150.78 1533.06 Q1148.71 1540.23 1148.71 1547.58 Q1148.71 1554.93 1150.78 1562.16 Q1152.88 1569.35 1157.11 1576.64 L1152.02 1576.64 Q1147.25 1569.16 1144.86 1561.93 Q1142.51 1554.71 1142.51 1547.58 Q1142.51 1540.48 1144.86 1533.29 Q1147.22 1526.09 1152.02 1518.58 L1157.11 1518.58 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1194.13 1533.76 L1194.13 1539.24 Q1191.65 1537.87 1189.13 1537.2 Q1186.65 1536.5 1184.11 1536.5 Q1178.41 1536.5 1175.26 1540.13 Q1172.11 1543.73 1172.11 1550.25 Q1172.11 1556.78 1175.26 1560.4 Q1178.41 1564 1184.11 1564 Q1186.65 1564 1189.13 1563.33 Q1191.65 1562.63 1194.13 1561.26 L1194.13 1566.68 Q1191.68 1567.82 1189.04 1568.39 Q1186.43 1568.97 1183.47 1568.97 Q1175.42 1568.97 1170.67 1563.91 Q1165.93 1558.85 1165.93 1550.25 Q1165.93 1541.53 1170.71 1536.53 Q1175.51 1531.54 1183.85 1531.54 Q1186.56 1531.54 1189.13 1532.11 Q1191.71 1532.65 1194.13 1533.76 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1218.13 1536.5 Q1213.42 1536.5 1210.68 1540.19 Q1207.94 1543.85 1207.94 1550.25 Q1207.94 1556.65 1210.65 1560.34 Q1213.39 1564 1218.13 1564 Q1222.81 1564 1225.55 1560.31 Q1228.28 1556.62 1228.28 1550.25 Q1228.28 1543.92 1225.55 1540.23 Q1222.81 1536.5 1218.13 1536.5 M1218.13 1531.54 Q1225.77 1531.54 1230.13 1536.5 Q1234.49 1541.47 1234.49 1550.25 Q1234.49 1559 1230.13 1564 Q1225.77 1568.97 1218.13 1568.97 Q1210.46 1568.97 1206.1 1564 Q1201.77 1559 1201.77 1550.25 Q1201.77 1541.47 1206.1 1536.5 Q1210.46 1531.54 1218.13 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1258.01 1536.5 Q1253.3 1536.5 1250.56 1540.19 Q1247.83 1543.85 1247.83 1550.25 Q1247.83 1556.65 1250.53 1560.34 Q1253.27 1564 1258.01 1564 Q1262.69 1564 1265.43 1560.31 Q1268.16 1556.62 1268.16 1550.25 Q1268.16 1543.92 1265.43 1540.23 Q1262.69 1536.5 1258.01 1536.5 M1258.01 1531.54 Q1265.65 1531.54 1270.01 1536.5 Q1274.37 1541.47 1274.37 1550.25 Q1274.37 1559 1270.01 1564 Q1265.65 1568.97 1258.01 1568.97 Q1250.34 1568.97 1245.98 1564 Q1241.65 1559 1241.65 1550.25 Q1241.65 1541.47 1245.98 1536.5 Q1250.34 1531.54 1258.01 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1304.74 1537.87 Q1303.75 1537.3 1302.57 1537.04 Q1301.43 1536.76 1300.02 1536.76 Q1295.06 1536.76 1292.39 1540 Q1289.74 1543.22 1289.74 1549.27 L1289.74 1568.04 L1283.86 1568.04 L1283.86 1532.4 L1289.74 1532.4 L1289.74 1537.93 Q1291.59 1534.69 1294.55 1533.13 Q1297.51 1531.54 1301.74 1531.54 Q1302.35 1531.54 1303.08 1531.63 Q1303.81 1531.7 1304.7 1531.85 L1304.74 1537.87 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1333.19 1537.81 L1333.19 1518.52 L1339.05 1518.52 L1339.05 1568.04 L1333.19 1568.04 L1333.19 1562.7 Q1331.34 1565.88 1328.51 1567.44 Q1325.71 1568.97 1321.76 1568.97 Q1315.3 1568.97 1311.23 1563.81 Q1307.19 1558.65 1307.19 1550.25 Q1307.19 1541.85 1311.23 1536.69 Q1315.3 1531.54 1321.76 1531.54 Q1325.71 1531.54 1328.51 1533.1 Q1331.34 1534.62 1333.19 1537.81 M1313.23 1550.25 Q1313.23 1556.71 1315.88 1560.4 Q1318.55 1564.07 1323.2 1564.07 Q1327.84 1564.07 1330.52 1560.4 Q1333.19 1556.71 1333.19 1550.25 Q1333.19 1543.79 1330.52 1540.13 Q1327.84 1536.44 1323.2 1536.44 Q1318.55 1536.44 1315.88 1540.13 Q1313.23 1543.79 1313.23 1550.25 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1351.11 1532.4 L1356.97 1532.4 L1356.97 1568.04 L1351.11 1568.04 L1351.11 1532.4 M1351.11 1518.52 L1356.97 1518.52 L1356.97 1525.93 L1351.11 1525.93 L1351.11 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1398.85 1546.53 L1398.85 1568.04 L1393 1568.04 L1393 1546.72 Q1393 1541.66 1391.02 1539.14 Q1389.05 1536.63 1385.1 1536.63 Q1380.36 1536.63 1377.62 1539.65 Q1374.89 1542.68 1374.89 1547.9 L1374.89 1568.04 L1369 1568.04 L1369 1532.4 L1374.89 1532.4 L1374.89 1537.93 Q1376.99 1534.72 1379.82 1533.13 Q1382.68 1531.54 1386.41 1531.54 Q1392.55 1531.54 1395.7 1535.36 Q1398.85 1539.14 1398.85 1546.53 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1426.73 1550.12 Q1419.64 1550.12 1416.9 1551.75 Q1414.16 1553.37 1414.16 1557.29 Q1414.16 1560.4 1416.2 1562.25 Q1418.27 1564.07 1421.8 1564.07 Q1426.67 1564.07 1429.6 1560.63 Q1432.56 1557.16 1432.56 1551.43 L1432.56 1550.12 L1426.73 1550.12 M1438.42 1547.71 L1438.42 1568.04 L1432.56 1568.04 L1432.56 1562.63 Q1430.55 1565.88 1427.56 1567.44 Q1424.57 1568.97 1420.24 1568.97 Q1414.77 1568.97 1411.52 1565.91 Q1408.31 1562.82 1408.31 1557.67 Q1408.31 1551.65 1412.32 1548.6 Q1416.36 1545.54 1424.35 1545.54 L1432.56 1545.54 L1432.56 1544.97 Q1432.56 1540.93 1429.89 1538.73 Q1427.24 1536.5 1422.44 1536.5 Q1419.38 1536.5 1416.49 1537.23 Q1413.59 1537.97 1410.92 1539.43 L1410.92 1534.02 Q1414.13 1532.78 1417.15 1532.17 Q1420.18 1531.54 1423.04 1531.54 Q1430.78 1531.54 1434.6 1535.55 Q1438.42 1539.56 1438.42 1547.71 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1456.27 1522.27 L1456.27 1532.4 L1468.33 1532.4 L1468.33 1536.95 L1456.27 1536.95 L1456.27 1556.3 Q1456.27 1560.66 1457.45 1561.9 Q1458.66 1563.14 1462.32 1563.14 L1468.33 1563.14 L1468.33 1568.04 L1462.32 1568.04 Q1455.54 1568.04 1452.96 1565.53 Q1450.38 1562.98 1450.38 1556.3 L1450.38 1536.95 L1446.09 1536.95 L1446.09 1532.4 L1450.38 1532.4 L1450.38 1522.27 L1456.27 1522.27 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1506.53 1548.76 L1506.53 1551.62 L1479.6 1551.62 Q1479.98 1557.67 1483.23 1560.85 Q1486.51 1564 1492.33 1564 Q1495.71 1564 1498.86 1563.17 Q1502.04 1562.35 1505.16 1560.69 L1505.16 1566.23 Q1502.01 1567.57 1498.7 1568.27 Q1495.39 1568.97 1491.98 1568.97 Q1483.45 1568.97 1478.46 1564 Q1473.49 1559.04 1473.49 1550.57 Q1473.49 1541.82 1478.2 1536.69 Q1482.94 1531.54 1490.96 1531.54 Q1498.16 1531.54 1502.33 1536.18 Q1506.53 1540.8 1506.53 1548.76 M1500.67 1547.04 Q1500.61 1542.23 1497.97 1539.37 Q1495.36 1536.5 1491.03 1536.5 Q1486.13 1536.5 1483.17 1539.27 Q1480.24 1542.04 1479.79 1547.07 L1500.67 1547.04 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M1515.22 1518.58 L1520.31 1518.58 Q1525.08 1526.09 1527.44 1533.29 Q1529.83 1540.48 1529.83 1547.58 Q1529.83 1554.71 1527.44 1561.93 Q1525.08 1569.16 1520.31 1576.64 L1515.22 1576.64 Q1519.45 1569.35 1521.52 1562.16 Q1523.62 1554.93 1523.62 1547.58 Q1523.62 1540.23 1521.52 1533.06 Q1519.45 1525.9 1515.22 1518.58 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,1423.18 256.556,47.2441 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,1272.91 275.454,1272.91 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,1093.67 275.454,1093.67 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,914.443 275.454,914.443 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,735.212 275.454,735.212 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,555.981 275.454,555.981 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,376.749 275.454,376.749 "/> +<polyline clip-path="url(#clip750)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="256.556,197.518 275.454,197.518 "/> +<path clip-path="url(#clip750)" d="M114.26 1273.36 L143.936 1273.36 L143.936 1277.29 L114.26 1277.29 L114.26 1273.36 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M164.028 1258.7 Q160.417 1258.7 158.589 1262.27 Q156.783 1265.81 156.783 1272.94 Q156.783 1280.05 158.589 1283.61 Q160.417 1287.15 164.028 1287.15 Q167.663 1287.15 169.468 1283.61 Q171.297 1280.05 171.297 1272.94 Q171.297 1265.81 169.468 1262.27 Q167.663 1258.7 164.028 1258.7 M164.028 1255 Q169.839 1255 172.894 1259.61 Q175.973 1264.19 175.973 1272.94 Q175.973 1281.67 172.894 1286.27 Q169.839 1290.86 164.028 1290.86 Q158.218 1290.86 155.14 1286.27 Q152.084 1281.67 152.084 1272.94 Q152.084 1264.19 155.14 1259.61 Q158.218 1255 164.028 1255 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M184.19 1284.31 L189.075 1284.31 L189.075 1290.19 L184.19 1290.19 L184.19 1284.31 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M213.426 1271.55 Q216.783 1272.27 218.658 1274.54 Q220.556 1276.81 220.556 1280.14 Q220.556 1285.26 217.037 1288.06 Q213.519 1290.86 207.037 1290.86 Q204.862 1290.86 202.547 1290.42 Q200.255 1290 197.801 1289.14 L197.801 1284.63 Q199.746 1285.76 202.061 1286.34 Q204.375 1286.92 206.899 1286.92 Q211.297 1286.92 213.588 1285.19 Q215.903 1283.45 215.903 1280.14 Q215.903 1277.08 213.75 1275.37 Q211.621 1273.64 207.801 1273.64 L203.774 1273.64 L203.774 1269.79 L207.987 1269.79 Q211.436 1269.79 213.264 1268.43 Q215.093 1267.04 215.093 1264.45 Q215.093 1261.78 213.195 1260.37 Q211.32 1258.94 207.801 1258.94 Q205.88 1258.94 203.681 1259.35 Q201.482 1259.77 198.843 1260.65 L198.843 1256.48 Q201.505 1255.74 203.82 1255.37 Q206.158 1255 208.218 1255 Q213.542 1255 216.644 1257.43 Q219.746 1259.84 219.746 1263.96 Q219.746 1266.83 218.102 1268.82 Q216.459 1270.79 213.426 1271.55 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M115.209 1094.13 L144.885 1094.13 L144.885 1098.06 L115.209 1098.06 L115.209 1094.13 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M164.977 1079.47 Q161.366 1079.47 159.538 1083.04 Q157.732 1086.58 157.732 1093.71 Q157.732 1100.82 159.538 1104.38 Q161.366 1107.92 164.977 1107.92 Q168.612 1107.92 170.417 1104.38 Q172.246 1100.82 172.246 1093.71 Q172.246 1086.58 170.417 1083.04 Q168.612 1079.47 164.977 1079.47 M164.977 1075.77 Q170.788 1075.77 173.843 1080.38 Q176.922 1084.96 176.922 1093.71 Q176.922 1102.44 173.843 1107.04 Q170.788 1111.63 164.977 1111.63 Q159.167 1111.63 156.089 1107.04 Q153.033 1102.44 153.033 1093.71 Q153.033 1084.96 156.089 1080.38 Q159.167 1075.77 164.977 1075.77 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M185.139 1105.07 L190.024 1105.07 L190.024 1110.95 L185.139 1110.95 L185.139 1105.07 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M204.237 1107.02 L220.556 1107.02 L220.556 1110.95 L198.612 1110.95 L198.612 1107.02 Q201.274 1104.26 205.857 1099.64 Q210.463 1094.98 211.644 1093.64 Q213.889 1091.12 214.769 1089.38 Q215.672 1087.62 215.672 1085.93 Q215.672 1083.18 213.727 1081.44 Q211.806 1079.7 208.704 1079.7 Q206.505 1079.7 204.051 1080.47 Q201.621 1081.23 198.843 1082.78 L198.843 1078.06 Q201.667 1076.93 204.121 1076.35 Q206.574 1075.77 208.612 1075.77 Q213.982 1075.77 217.176 1078.45 Q220.371 1081.14 220.371 1085.63 Q220.371 1087.76 219.561 1089.68 Q218.773 1091.58 216.667 1094.17 Q216.088 1094.84 212.986 1098.06 Q209.885 1101.26 204.237 1107.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M114.839 914.895 L144.515 914.895 L144.515 918.83 L114.839 918.83 L114.839 914.895 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M164.607 900.242 Q160.996 900.242 159.167 903.807 Q157.362 907.348 157.362 914.478 Q157.362 921.584 159.167 925.149 Q160.996 928.691 164.607 928.691 Q168.241 928.691 170.047 925.149 Q171.876 921.584 171.876 914.478 Q171.876 907.348 170.047 903.807 Q168.241 900.242 164.607 900.242 M164.607 896.538 Q170.417 896.538 173.473 901.145 Q176.551 905.728 176.551 914.478 Q176.551 923.205 173.473 927.811 Q170.417 932.395 164.607 932.395 Q158.797 932.395 155.718 927.811 Q152.663 923.205 152.663 914.478 Q152.663 905.728 155.718 901.145 Q158.797 896.538 164.607 896.538 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M184.769 925.844 L189.653 925.844 L189.653 931.723 L184.769 931.723 L184.769 925.844 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M200.649 927.788 L208.287 927.788 L208.287 901.422 L199.977 903.089 L199.977 898.83 L208.241 897.163 L212.917 897.163 L212.917 927.788 L220.556 927.788 L220.556 931.723 L200.649 931.723 L200.649 927.788 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M163.38 721.011 Q159.769 721.011 157.94 724.575 Q156.135 728.117 156.135 735.247 Q156.135 742.353 157.94 745.918 Q159.769 749.46 163.38 749.46 Q167.015 749.46 168.82 745.918 Q170.649 742.353 170.649 735.247 Q170.649 728.117 168.82 724.575 Q167.015 721.011 163.38 721.011 M163.38 717.307 Q169.19 717.307 172.246 721.913 Q175.325 726.497 175.325 735.247 Q175.325 743.973 172.246 748.58 Q169.19 753.163 163.38 753.163 Q157.57 753.163 154.491 748.58 Q151.436 743.973 151.436 735.247 Q151.436 726.497 154.491 721.913 Q157.57 717.307 163.38 717.307 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M183.542 746.612 L188.426 746.612 L188.426 752.492 L183.542 752.492 L183.542 746.612 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M208.612 721.011 Q205 721.011 203.172 724.575 Q201.366 728.117 201.366 735.247 Q201.366 742.353 203.172 745.918 Q205 749.46 208.612 749.46 Q212.246 749.46 214.051 745.918 Q215.88 742.353 215.88 735.247 Q215.88 728.117 214.051 724.575 Q212.246 721.011 208.612 721.011 M208.612 717.307 Q214.422 717.307 217.477 721.913 Q220.556 726.497 220.556 735.247 Q220.556 743.973 217.477 748.58 Q214.422 753.163 208.612 753.163 Q202.801 753.163 199.723 748.58 Q196.667 743.973 196.667 735.247 Q196.667 726.497 199.723 721.913 Q202.801 717.307 208.612 717.307 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M164.607 541.779 Q160.996 541.779 159.167 545.344 Q157.362 548.886 157.362 556.015 Q157.362 563.122 159.167 566.687 Q160.996 570.228 164.607 570.228 Q168.241 570.228 170.047 566.687 Q171.876 563.122 171.876 556.015 Q171.876 548.886 170.047 545.344 Q168.241 541.779 164.607 541.779 M164.607 538.076 Q170.417 538.076 173.473 542.682 Q176.551 547.265 176.551 556.015 Q176.551 564.742 173.473 569.349 Q170.417 573.932 164.607 573.932 Q158.797 573.932 155.718 569.349 Q152.663 564.742 152.663 556.015 Q152.663 547.265 155.718 542.682 Q158.797 538.076 164.607 538.076 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M184.769 567.381 L189.653 567.381 L189.653 573.261 L184.769 573.261 L184.769 567.381 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M200.649 569.326 L208.287 569.326 L208.287 542.96 L199.977 544.627 L199.977 540.367 L208.241 538.701 L212.917 538.701 L212.917 569.326 L220.556 569.326 L220.556 573.261 L200.649 573.261 L200.649 569.326 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M164.977 362.548 Q161.366 362.548 159.538 366.113 Q157.732 369.655 157.732 376.784 Q157.732 383.891 159.538 387.455 Q161.366 390.997 164.977 390.997 Q168.612 390.997 170.417 387.455 Q172.246 383.891 172.246 376.784 Q172.246 369.655 170.417 366.113 Q168.612 362.548 164.977 362.548 M164.977 358.844 Q170.788 358.844 173.843 363.451 Q176.922 368.034 176.922 376.784 Q176.922 385.511 173.843 390.117 Q170.788 394.701 164.977 394.701 Q159.167 394.701 156.089 390.117 Q153.033 385.511 153.033 376.784 Q153.033 368.034 156.089 363.451 Q159.167 358.844 164.977 358.844 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M185.139 388.15 L190.024 388.15 L190.024 394.029 L185.139 394.029 L185.139 388.15 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M204.237 390.094 L220.556 390.094 L220.556 394.029 L198.612 394.029 L198.612 390.094 Q201.274 387.34 205.857 382.71 Q210.463 378.057 211.644 376.715 Q213.889 374.192 214.769 372.455 Q215.672 370.696 215.672 369.006 Q215.672 366.252 213.727 364.516 Q211.806 362.78 208.704 362.78 Q206.505 362.78 204.051 363.543 Q201.621 364.307 198.843 365.858 L198.843 361.136 Q201.667 360.002 204.121 359.423 Q206.574 358.844 208.612 358.844 Q213.982 358.844 217.176 361.53 Q220.371 364.215 220.371 368.705 Q220.371 370.835 219.561 372.756 Q218.773 374.654 216.667 377.247 Q216.088 377.918 212.986 381.136 Q209.885 384.33 204.237 390.094 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M164.028 183.317 Q160.417 183.317 158.589 186.882 Q156.783 190.423 156.783 197.553 Q156.783 204.659 158.589 208.224 Q160.417 211.766 164.028 211.766 Q167.663 211.766 169.468 208.224 Q171.297 204.659 171.297 197.553 Q171.297 190.423 169.468 186.882 Q167.663 183.317 164.028 183.317 M164.028 179.613 Q169.839 179.613 172.894 184.22 Q175.973 188.803 175.973 197.553 Q175.973 206.28 172.894 210.886 Q169.839 215.469 164.028 215.469 Q158.218 215.469 155.14 210.886 Q152.084 206.28 152.084 197.553 Q152.084 188.803 155.14 184.22 Q158.218 179.613 164.028 179.613 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M184.19 208.918 L189.075 208.918 L189.075 214.798 L184.19 214.798 L184.19 208.918 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M213.426 196.164 Q216.783 196.882 218.658 199.15 Q220.556 201.419 220.556 204.752 Q220.556 209.868 217.037 212.668 Q213.519 215.469 207.037 215.469 Q204.862 215.469 202.547 215.03 Q200.255 214.613 197.801 213.756 L197.801 209.243 Q199.746 210.377 202.061 210.956 Q204.375 211.534 206.899 211.534 Q211.297 211.534 213.588 209.798 Q215.903 208.062 215.903 204.752 Q215.903 201.696 213.75 199.983 Q211.621 198.247 207.801 198.247 L203.774 198.247 L203.774 194.405 L207.987 194.405 Q211.436 194.405 213.264 193.039 Q215.093 191.65 215.093 189.057 Q215.093 186.395 213.195 184.983 Q211.32 183.548 207.801 183.548 Q205.88 183.548 203.681 183.965 Q201.482 184.382 198.843 185.261 L198.843 181.095 Q201.505 180.354 203.82 179.983 Q206.158 179.613 208.218 179.613 Q213.542 179.613 216.644 182.044 Q219.746 184.451 219.746 188.571 Q219.746 191.442 218.102 193.432 Q216.459 195.4 213.426 196.164 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M46.212 1101.42 Q52.6732 1101.42 56.3653 1098.77 Q60.0256 1096.1 60.0256 1091.45 Q60.0256 1086.81 56.3653 1084.13 Q52.6732 1081.46 46.212 1081.46 Q39.7508 1081.46 36.0905 1084.13 Q32.3984 1086.81 32.3984 1091.45 Q32.3984 1096.1 36.0905 1098.77 Q39.7508 1101.42 46.212 1101.42 M58.657 1081.46 Q61.8398 1083.3 63.3994 1086.14 Q64.9272 1088.94 64.9272 1092.89 Q64.9272 1099.35 59.771 1103.42 Q54.6147 1107.46 46.212 1107.46 Q37.8093 1107.46 32.6531 1103.42 Q27.4968 1099.35 27.4968 1092.89 Q27.4968 1088.94 29.0564 1086.14 Q30.5842 1083.3 33.7671 1081.46 L28.3562 1081.46 L28.3562 1075.6 L77.5631 1075.6 L77.5631 1081.46 L58.657 1081.46 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M74.8259 1036.45 L79.3773 1036.45 L79.3773 1070.32 L74.8259 1070.32 L74.8259 1036.45 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M28.3562 1001.31 L45.7028 1014.2 L64.0042 1000.65 L64.0042 1007.55 L49.9996 1017.93 L64.0042 1028.31 L64.0042 1035.21 L45.3526 1021.37 L28.3562 1034.03 L28.3562 1027.13 L41.0558 1017.67 L28.3562 1008.22 L28.3562 1001.31 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M14.5426 957.582 Q21.8632 961.847 29.0246 963.916 Q36.186 965.985 43.5384 965.985 Q50.8908 965.985 58.1159 963.916 Q65.3091 961.815 72.5979 957.582 L72.5979 962.675 Q65.1182 967.449 57.8931 969.836 Q50.668 972.191 43.5384 972.191 Q36.4406 972.191 29.2474 969.836 Q22.0542 967.481 14.5426 962.675 L14.5426 957.582 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M14.479 928.172 L19.3487 928.172 L19.3487 933.774 Q19.3487 936.925 20.6219 938.167 Q21.895 939.376 25.2052 939.376 L28.3562 939.376 L28.3562 929.732 L32.9077 929.732 L32.9077 939.376 L64.0042 939.376 L64.0042 945.264 L32.9077 945.264 L32.9077 950.866 L28.3562 950.866 L28.3562 945.264 L25.8736 945.264 Q19.9216 945.264 17.2162 942.495 Q14.479 939.726 14.479 933.711 L14.479 928.172 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M14.479 923.271 L14.479 917.414 L64.0042 917.414 L64.0042 923.271 L14.479 923.271 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M49.9359 905.765 L28.3562 905.765 L28.3562 899.909 L49.7131 899.909 Q54.7739 899.909 57.3202 897.935 Q59.8346 895.962 59.8346 892.015 Q59.8346 887.273 56.8109 884.536 Q53.7872 881.766 48.5673 881.766 L28.3562 881.766 L28.3562 875.91 L64.0042 875.91 L64.0042 881.766 L58.5296 881.766 Q61.7762 883.899 63.3676 886.732 Q64.9272 889.533 64.9272 893.257 Q64.9272 899.399 61.1078 902.582 Q57.2883 905.765 49.9359 905.765 M27.4968 891.029 L27.4968 891.029 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M28.3562 834.215 L45.7028 847.105 L64.0042 833.546 L64.0042 840.453 L49.9996 850.829 L64.0042 861.205 L64.0042 868.112 L45.3526 854.267 L28.3562 866.934 L28.3562 860.028 L41.0558 850.574 L28.3562 841.121 L28.3562 834.215 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M28.3562 804.55 L28.3562 798.694 L64.0042 798.694 L64.0042 804.55 L28.3562 804.55 M14.479 804.55 L14.479 798.694 L21.895 798.694 L21.895 804.55 L14.479 804.55 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M42.4881 756.808 L64.0042 756.808 L64.0042 762.664 L42.679 762.664 Q37.6183 762.664 35.1038 764.637 Q32.5894 766.611 32.5894 770.558 Q32.5894 775.3 35.6131 778.037 Q38.6368 780.775 43.8567 780.775 L64.0042 780.775 L64.0042 786.663 L28.3562 786.663 L28.3562 780.775 L33.8944 780.775 Q30.6797 778.674 29.0883 775.841 Q27.4968 772.977 27.4968 769.253 Q27.4968 763.11 31.3163 759.959 Q35.1038 756.808 42.4881 756.808 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M28.3562 694.774 L45.7028 707.664 L64.0042 694.105 L64.0042 701.012 L49.9996 711.388 L64.0042 721.764 L64.0042 728.671 L45.3526 714.826 L28.3562 727.494 L28.3562 720.587 L41.0558 711.134 L28.3562 701.681 L28.3562 694.774 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M43.5384 688.79 L43.5384 671.634 L48.7583 671.634 L48.7583 688.79 L43.5384 688.79 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M33.7671 638.851 L14.479 638.851 L14.479 632.995 L64.0042 632.995 L64.0042 638.851 L58.657 638.851 Q61.8398 640.697 63.3994 643.53 Q64.9272 646.331 64.9272 650.278 Q64.9272 656.739 59.771 660.813 Q54.6147 664.855 46.212 664.855 Q37.8093 664.855 32.6531 660.813 Q27.4968 656.739 27.4968 650.278 Q27.4968 646.331 29.0564 643.53 Q30.5842 640.697 33.7671 638.851 M46.212 658.808 Q52.6732 658.808 56.3653 656.166 Q60.0256 653.492 60.0256 648.845 Q60.0256 644.198 56.3653 641.525 Q52.6732 638.851 46.212 638.851 Q39.7508 638.851 36.0905 641.525 Q32.3984 644.198 32.3984 648.845 Q32.3984 653.492 36.0905 656.166 Q39.7508 658.808 46.212 658.808 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M28.3562 620.932 L28.3562 615.075 L64.0042 615.075 L64.0042 620.932 L28.3562 620.932 M14.479 620.932 L14.479 615.075 L21.895 615.075 L21.895 620.932 L14.479 620.932 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M33.8307 582.164 Q33.2578 583.151 33.0032 584.329 Q32.7167 585.475 32.7167 586.875 Q32.7167 591.84 35.9632 594.514 Q39.1779 597.156 45.2253 597.156 L64.0042 597.156 L64.0042 603.044 L28.3562 603.044 L28.3562 597.156 L33.8944 597.156 Q30.6479 595.31 29.0883 592.35 Q27.4968 589.39 27.4968 585.156 Q27.4968 584.552 27.5923 583.82 Q27.656 583.087 27.8151 582.196 L33.8307 582.164 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M44.7161 546.962 L47.5806 546.962 L47.5806 573.889 Q53.6281 573.507 56.8109 570.261 Q59.9619 566.982 59.9619 561.158 Q59.9619 557.784 59.1344 554.633 Q58.3069 551.45 56.6518 548.331 L62.1899 548.331 Q63.5267 551.482 64.227 554.792 Q64.9272 558.102 64.9272 561.508 Q64.9272 570.038 59.9619 575.035 Q54.9967 580 46.5303 580 Q37.7774 580 32.6531 575.29 Q27.4968 570.547 27.4968 562.526 Q27.4968 555.333 32.1438 551.163 Q36.7589 546.962 44.7161 546.962 M42.9973 552.819 Q38.1912 552.882 35.3266 555.524 Q32.4621 558.134 32.4621 562.463 Q32.4621 567.364 35.2312 570.324 Q38.0002 573.252 43.0292 573.698 L42.9973 552.819 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M29.7248 511.696 L35.1993 511.696 Q33.8307 514.179 33.1623 516.693 Q32.4621 519.176 32.4621 521.722 Q32.4621 527.419 36.0905 530.57 Q39.6872 533.721 46.212 533.721 Q52.7369 533.721 56.3653 530.57 Q59.9619 527.419 59.9619 521.722 Q59.9619 519.176 59.2935 516.693 Q58.5933 514.179 57.2247 511.696 L62.6355 511.696 Q63.7814 514.147 64.3543 516.789 Q64.9272 519.399 64.9272 522.359 Q64.9272 530.411 59.8664 535.154 Q54.8057 539.896 46.212 539.896 Q37.491 539.896 32.4939 535.122 Q27.4968 530.316 27.4968 521.977 Q27.4968 519.271 28.0697 516.693 Q28.6108 514.115 29.7248 511.696 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M18.2347 495.718 L28.3562 495.718 L28.3562 483.655 L32.9077 483.655 L32.9077 495.718 L52.2594 495.718 Q56.6199 495.718 57.8613 494.541 Q59.1026 493.331 59.1026 489.671 L59.1026 483.655 L64.0042 483.655 L64.0042 489.671 Q64.0042 496.45 61.4897 499.028 Q58.9434 501.606 52.2594 501.606 L32.9077 501.606 L32.9077 505.903 L28.3562 505.903 L28.3562 501.606 L18.2347 501.606 L18.2347 495.718 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M28.3562 475.953 L28.3562 470.096 L64.0042 470.096 L64.0042 475.953 L28.3562 475.953 M14.479 475.953 L14.479 470.096 L21.895 470.096 L21.895 475.953 L14.479 475.953 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M32.4621 444.029 Q32.4621 448.739 36.1542 451.477 Q39.8145 454.214 46.212 454.214 Q52.6095 454.214 56.3017 451.508 Q59.9619 448.771 59.9619 444.029 Q59.9619 439.35 56.2698 436.613 Q52.5777 433.875 46.212 433.875 Q39.8781 433.875 36.186 436.613 Q32.4621 439.35 32.4621 444.029 M27.4968 444.029 Q27.4968 436.39 32.4621 432.029 Q37.4273 427.669 46.212 427.669 Q54.9649 427.669 59.9619 432.029 Q64.9272 436.39 64.9272 444.029 Q64.9272 451.699 59.9619 456.06 Q54.9649 460.388 46.212 460.388 Q37.4273 460.388 32.4621 456.06 Q27.4968 451.699 27.4968 444.029 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M42.4881 388.329 L64.0042 388.329 L64.0042 394.185 L42.679 394.185 Q37.6183 394.185 35.1038 396.159 Q32.5894 398.132 32.5894 402.079 Q32.5894 406.821 35.6131 409.558 Q38.6368 412.296 43.8567 412.296 L64.0042 412.296 L64.0042 418.184 L28.3562 418.184 L28.3562 412.296 L33.8944 412.296 Q30.6797 410.195 29.0883 407.362 Q27.4968 404.498 27.4968 400.774 Q27.4968 394.631 31.3163 391.48 Q35.1038 388.329 42.4881 388.329 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip750)" d="M14.5426 377.571 L14.5426 372.478 Q22.0542 367.704 29.2474 365.348 Q36.4406 362.961 43.5384 362.961 Q50.668 362.961 57.8931 365.348 Q65.1182 367.704 72.5979 372.478 L72.5979 377.571 Q65.3091 373.337 58.1159 371.269 Q50.8908 369.168 43.5384 369.168 Q36.186 369.168 29.0246 371.269 Q21.8632 373.337 14.5426 377.571 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip752)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="315.882,1384.24 335.658,1365.85 355.433,1347.46 375.209,1329.06 394.984,1310.67 414.76,1292.28 434.535,1265.04 454.311,1237.8 474.086,1210.55 493.862,1183.31 513.637,1156.07 533.412,1139.07 553.188,1122.08 572.963,1105.09 592.739,1088.09 612.514,1071.1 632.29,1056.74 652.065,1042.38 671.841,1028.02 691.616,1013.66 711.392,999.295 731.167,987.752 750.943,976.208 770.718,964.665 790.494,953.122 810.269,941.579 830.045,931.658 849.82,921.736 869.596,911.815 889.371,901.893 909.146,891.972 928.922,883.245 948.697,874.518 968.473,865.791 988.248,857.064 1008.02,848.336 1027.8,840.391 1047.57,832.445 1067.35,824.5 1087.13,816.554 1106.9,808.609 1126.68,801.152 1146.45,793.696 1166.23,786.24 1186,778.783 1205.78,771.327 1225.55,764.104 1245.33,756.881 1265.1,749.658 1284.88,742.435 1304.66,735.212 1324.43,727.989 1344.21,720.766 1363.98,713.543 1383.76,706.32 1403.53,699.097 1423.31,691.641 1443.08,684.184 1462.86,676.728 1482.64,669.272 1502.41,661.815 1522.19,653.87 1541.96,645.924 1561.74,637.979 1581.51,630.033 1601.29,622.088 1621.06,613.36 1640.84,604.633 1660.61,595.906 1680.39,587.179 1700.17,578.452 1719.94,568.53 1739.72,558.609 1759.49,548.688 1779.27,538.766 1799.04,528.845 1818.82,517.302 1838.59,505.759 1858.37,494.215 1878.14,482.672 1897.92,471.129 1917.7,456.768 1937.47,442.407 1957.25,428.046 1977.02,413.685 1996.8,399.324 2016.57,382.331 2036.35,365.337 2056.12,348.344 2075.9,331.35 2095.67,314.357 2115.45,287.114 2135.23,259.871 2155,232.627 2174.78,205.384 2194.55,178.141 2214.33,159.75 2234.1,141.359 2253.88,122.968 2273.65,104.577 2293.43,86.1857 "/> </svg> diff --git a/dev/howto/postprocessing/d671bea3.svg b/dev/howto/postprocessing/f282e318.svg similarity index 85% rename from dev/howto/postprocessing/d671bea3.svg rename to dev/howto/postprocessing/f282e318.svg index d467c42e88..52db80d5f0 100644 --- a/dev/howto/postprocessing/d671bea3.svg +++ b/dev/howto/postprocessing/f282e318.svg @@ -1,45 +1,45 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600"> <defs> - <clipPath id="clip080"> + <clipPath id="clip690"> <rect x="0" y="0" width="2400" height="1600"/> </clipPath> </defs> -<path clip-path="url(#clip080)" d="M0 1600 L2400 1600 L2400 0 L0 0 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> +<path clip-path="url(#clip690)" d="M0 1600 L2400 1600 L2400 0 L0 0 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> <defs> - <clipPath id="clip081"> + <clipPath id="clip691"> <rect x="480" y="0" width="1681" height="1600"/> </clipPath> </defs> -<path clip-path="url(#clip080)" d="M279.704 1423.18 L2352.76 1423.18 L2352.76 47.2441 L279.704 47.2441 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> +<path clip-path="url(#clip690)" d="M279.704 1423.18 L2352.76 1423.18 L2352.76 47.2441 L279.704 47.2441 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> <defs> - <clipPath id="clip082"> + <clipPath id="clip692"> <rect x="279" y="47" width="2074" height="1377"/> </clipPath> </defs> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="338.375,1423.18 338.375,47.2441 "/> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="827.303,1423.18 827.303,47.2441 "/> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1316.23,1423.18 1316.23,47.2441 "/> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1805.16,1423.18 1805.16,47.2441 "/> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2294.08,1423.18 2294.08,47.2441 "/> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,1384.24 2352.76,1384.24 "/> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,1150.76 2352.76,1150.76 "/> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,917.284 2352.76,917.284 "/> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,683.806 2352.76,683.806 "/> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,450.329 2352.76,450.329 "/> -<polyline clip-path="url(#clip082)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,216.852 2352.76,216.852 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,1423.18 2352.76,1423.18 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="338.375,1423.18 338.375,1404.28 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="827.303,1423.18 827.303,1404.28 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1316.23,1423.18 1316.23,1404.28 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1805.16,1423.18 1805.16,1404.28 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2294.08,1423.18 2294.08,1404.28 "/> -<path clip-path="url(#clip080)" d="M284.903 1468.75 L314.579 1468.75 L314.579 1472.69 L284.903 1472.69 L284.903 1468.75 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M325.482 1481.64 L333.121 1481.64 L333.121 1455.28 L324.81 1456.95 L324.81 1452.69 L333.074 1451.02 L337.75 1451.02 L337.75 1481.64 L345.389 1481.64 L345.389 1485.58 L325.482 1485.58 L325.482 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M354.833 1479.7 L359.718 1479.7 L359.718 1485.58 L354.833 1485.58 L354.833 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M379.903 1454.1 Q376.292 1454.1 374.463 1457.66 Q372.657 1461.2 372.657 1468.33 Q372.657 1475.44 374.463 1479.01 Q376.292 1482.55 379.903 1482.55 Q383.537 1482.55 385.343 1479.01 Q387.171 1475.44 387.171 1468.33 Q387.171 1461.2 385.343 1457.66 Q383.537 1454.1 379.903 1454.1 M379.903 1450.39 Q385.713 1450.39 388.768 1455 Q391.847 1459.58 391.847 1468.33 Q391.847 1477.06 388.768 1481.67 Q385.713 1486.25 379.903 1486.25 Q374.093 1486.25 371.014 1481.67 Q367.958 1477.06 367.958 1468.33 Q367.958 1459.58 371.014 1455 Q374.093 1450.39 379.903 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M774.328 1468.75 L804.004 1468.75 L804.004 1472.69 L774.328 1472.69 L774.328 1468.75 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M824.097 1454.1 Q820.485 1454.1 818.657 1457.66 Q816.851 1461.2 816.851 1468.33 Q816.851 1475.44 818.657 1479.01 Q820.485 1482.55 824.097 1482.55 Q827.731 1482.55 829.536 1479.01 Q831.365 1475.44 831.365 1468.33 Q831.365 1461.2 829.536 1457.66 Q827.731 1454.1 824.097 1454.1 M824.097 1450.39 Q829.907 1450.39 832.962 1455 Q836.041 1459.58 836.041 1468.33 Q836.041 1477.06 832.962 1481.67 Q829.907 1486.25 824.097 1486.25 Q818.286 1486.25 815.208 1481.67 Q812.152 1477.06 812.152 1468.33 Q812.152 1459.58 815.208 1455 Q818.286 1450.39 824.097 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M844.258 1479.7 L849.143 1479.7 L849.143 1485.58 L844.258 1485.58 L844.258 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M859.374 1451.02 L877.731 1451.02 L877.731 1454.96 L863.657 1454.96 L863.657 1463.43 Q864.675 1463.08 865.694 1462.92 Q866.712 1462.73 867.731 1462.73 Q873.518 1462.73 876.897 1465.9 Q880.277 1469.08 880.277 1474.49 Q880.277 1480.07 876.805 1483.17 Q873.332 1486.25 867.013 1486.25 Q864.837 1486.25 862.569 1485.88 Q860.323 1485.51 857.916 1484.77 L857.916 1480.07 Q859.999 1481.2 862.221 1481.76 Q864.444 1482.32 866.92 1482.32 Q870.925 1482.32 873.263 1480.21 Q875.601 1478.1 875.601 1474.49 Q875.601 1470.88 873.263 1468.77 Q870.925 1466.67 866.92 1466.67 Q865.045 1466.67 863.17 1467.08 Q861.319 1467.5 859.374 1468.38 L859.374 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1293.61 1454.1 Q1290 1454.1 1288.17 1457.66 Q1286.37 1461.2 1286.37 1468.33 Q1286.37 1475.44 1288.17 1479.01 Q1290 1482.55 1293.61 1482.55 Q1297.25 1482.55 1299.05 1479.01 Q1300.88 1475.44 1300.88 1468.33 Q1300.88 1461.2 1299.05 1457.66 Q1297.25 1454.1 1293.61 1454.1 M1293.61 1450.39 Q1299.42 1450.39 1302.48 1455 Q1305.56 1459.58 1305.56 1468.33 Q1305.56 1477.06 1302.48 1481.67 Q1299.42 1486.25 1293.61 1486.25 Q1287.8 1486.25 1284.73 1481.67 Q1281.67 1477.06 1281.67 1468.33 Q1281.67 1459.58 1284.73 1455 Q1287.8 1450.39 1293.61 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1313.78 1479.7 L1318.66 1479.7 L1318.66 1485.58 L1313.78 1485.58 L1313.78 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1338.85 1454.1 Q1335.23 1454.1 1333.41 1457.66 Q1331.6 1461.2 1331.6 1468.33 Q1331.6 1475.44 1333.41 1479.01 Q1335.23 1482.55 1338.85 1482.55 Q1342.48 1482.55 1344.29 1479.01 Q1346.11 1475.44 1346.11 1468.33 Q1346.11 1461.2 1344.29 1457.66 Q1342.48 1454.1 1338.85 1454.1 M1338.85 1450.39 Q1344.66 1450.39 1347.71 1455 Q1350.79 1459.58 1350.79 1468.33 Q1350.79 1477.06 1347.71 1481.67 Q1344.66 1486.25 1338.85 1486.25 Q1333.04 1486.25 1329.96 1481.67 Q1326.9 1477.06 1326.9 1468.33 Q1326.9 1459.58 1329.96 1455 Q1333.04 1450.39 1338.85 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1783.04 1454.1 Q1779.43 1454.1 1777.6 1457.66 Q1775.79 1461.2 1775.79 1468.33 Q1775.79 1475.44 1777.6 1479.01 Q1779.43 1482.55 1783.04 1482.55 Q1786.67 1482.55 1788.48 1479.01 Q1790.31 1475.44 1790.31 1468.33 Q1790.31 1461.2 1788.48 1457.66 Q1786.67 1454.1 1783.04 1454.1 M1783.04 1450.39 Q1788.85 1450.39 1791.91 1455 Q1794.98 1459.58 1794.98 1468.33 Q1794.98 1477.06 1791.91 1481.67 Q1788.85 1486.25 1783.04 1486.25 Q1777.23 1486.25 1774.15 1481.67 Q1771.09 1477.06 1771.09 1468.33 Q1771.09 1459.58 1774.15 1455 Q1777.23 1450.39 1783.04 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1803.2 1479.7 L1808.09 1479.7 L1808.09 1485.58 L1803.2 1485.58 L1803.2 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1818.32 1451.02 L1836.67 1451.02 L1836.67 1454.96 L1822.6 1454.96 L1822.6 1463.43 Q1823.62 1463.08 1824.64 1462.92 Q1825.65 1462.73 1826.67 1462.73 Q1832.46 1462.73 1835.84 1465.9 Q1839.22 1469.08 1839.22 1474.49 Q1839.22 1480.07 1835.75 1483.17 Q1832.28 1486.25 1825.96 1486.25 Q1823.78 1486.25 1821.51 1485.88 Q1819.27 1485.51 1816.86 1484.77 L1816.86 1480.07 Q1818.94 1481.2 1821.16 1481.76 Q1823.39 1482.32 1825.86 1482.32 Q1829.87 1482.32 1832.21 1480.21 Q1834.54 1478.1 1834.54 1474.49 Q1834.54 1470.88 1832.21 1468.77 Q1829.87 1466.67 1825.86 1466.67 Q1823.99 1466.67 1822.11 1467.08 Q1820.26 1467.5 1818.32 1468.38 L1818.32 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M2261.24 1481.64 L2268.88 1481.64 L2268.88 1455.28 L2260.57 1456.95 L2260.57 1452.69 L2268.83 1451.02 L2273.51 1451.02 L2273.51 1481.64 L2281.14 1481.64 L2281.14 1485.58 L2261.24 1485.58 L2261.24 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M2290.59 1479.7 L2295.47 1479.7 L2295.47 1485.58 L2290.59 1485.58 L2290.59 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M2315.66 1454.1 Q2312.05 1454.1 2310.22 1457.66 Q2308.41 1461.2 2308.41 1468.33 Q2308.41 1475.44 2310.22 1479.01 Q2312.05 1482.55 2315.66 1482.55 Q2319.29 1482.55 2321.1 1479.01 Q2322.93 1475.44 2322.93 1468.33 Q2322.93 1461.2 2321.1 1457.66 Q2319.29 1454.1 2315.66 1454.1 M2315.66 1450.39 Q2321.47 1450.39 2324.52 1455 Q2327.6 1459.58 2327.6 1468.33 Q2327.6 1477.06 2324.52 1481.67 Q2321.47 1486.25 2315.66 1486.25 Q2309.85 1486.25 2306.77 1481.67 Q2303.71 1477.06 2303.71 1468.33 Q2303.71 1459.58 2306.77 1455 Q2309.85 1450.39 2315.66 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1124.96 1532.4 L1112.07 1549.74 L1125.62 1568.04 L1118.72 1568.04 L1108.34 1554.04 L1097.97 1568.04 L1091.06 1568.04 L1104.9 1549.39 L1092.24 1532.4 L1099.14 1532.4 L1108.6 1545.1 L1118.05 1532.4 L1124.96 1532.4 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1168.69 1518.58 Q1164.42 1525.9 1162.35 1533.06 Q1160.29 1540.23 1160.29 1547.58 Q1160.29 1554.93 1162.35 1562.16 Q1164.46 1569.35 1168.69 1576.64 L1163.6 1576.64 Q1158.82 1569.16 1156.43 1561.93 Q1154.08 1554.71 1154.08 1547.58 Q1154.08 1540.48 1156.43 1533.29 Q1158.79 1526.09 1163.6 1518.58 L1168.69 1518.58 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1205.71 1533.76 L1205.71 1539.24 Q1203.22 1537.87 1200.71 1537.2 Q1198.23 1536.5 1195.68 1536.5 Q1189.98 1536.5 1186.83 1540.13 Q1183.68 1543.73 1183.68 1550.25 Q1183.68 1556.78 1186.83 1560.4 Q1189.98 1564 1195.68 1564 Q1198.23 1564 1200.71 1563.33 Q1203.22 1562.63 1205.71 1561.26 L1205.71 1566.68 Q1203.25 1567.82 1200.61 1568.39 Q1198 1568.97 1195.04 1568.97 Q1186.99 1568.97 1182.25 1563.91 Q1177.51 1558.85 1177.51 1550.25 Q1177.51 1541.53 1182.28 1536.53 Q1187.09 1531.54 1195.42 1531.54 Q1198.13 1531.54 1200.71 1532.11 Q1203.29 1532.65 1205.71 1533.76 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1229.7 1536.5 Q1224.99 1536.5 1222.26 1540.19 Q1219.52 1543.85 1219.52 1550.25 Q1219.52 1556.65 1222.22 1560.34 Q1224.96 1564 1229.7 1564 Q1234.38 1564 1237.12 1560.31 Q1239.86 1556.62 1239.86 1550.25 Q1239.86 1543.92 1237.12 1540.23 Q1234.38 1536.5 1229.7 1536.5 M1229.7 1531.54 Q1237.34 1531.54 1241.7 1536.5 Q1246.06 1541.47 1246.06 1550.25 Q1246.06 1559 1241.7 1564 Q1237.34 1568.97 1229.7 1568.97 Q1222.03 1568.97 1217.67 1564 Q1213.34 1559 1213.34 1550.25 Q1213.34 1541.47 1217.67 1536.5 Q1222.03 1531.54 1229.7 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1269.59 1536.5 Q1264.87 1536.5 1262.14 1540.19 Q1259.4 1543.85 1259.4 1550.25 Q1259.4 1556.65 1262.11 1560.34 Q1264.84 1564 1269.59 1564 Q1274.26 1564 1277 1560.31 Q1279.74 1556.62 1279.74 1550.25 Q1279.74 1543.92 1277 1540.23 Q1274.26 1536.5 1269.59 1536.5 M1269.59 1531.54 Q1277.22 1531.54 1281.58 1536.5 Q1285.95 1541.47 1285.95 1550.25 Q1285.95 1559 1281.58 1564 Q1277.22 1568.97 1269.59 1568.97 Q1261.91 1568.97 1257.55 1564 Q1253.23 1559 1253.23 1550.25 Q1253.23 1541.47 1257.55 1536.5 Q1261.91 1531.54 1269.59 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1316.31 1537.87 Q1315.32 1537.3 1314.15 1537.04 Q1313 1536.76 1311.6 1536.76 Q1306.63 1536.76 1303.96 1540 Q1301.32 1543.22 1301.32 1549.27 L1301.32 1568.04 L1295.43 1568.04 L1295.43 1532.4 L1301.32 1532.4 L1301.32 1537.93 Q1303.16 1534.69 1306.12 1533.13 Q1309.08 1531.54 1313.32 1531.54 Q1313.92 1531.54 1314.65 1531.63 Q1315.39 1531.7 1316.28 1531.85 L1316.31 1537.87 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1344.76 1537.81 L1344.76 1518.52 L1350.62 1518.52 L1350.62 1568.04 L1344.76 1568.04 L1344.76 1562.7 Q1342.92 1565.88 1340.09 1567.44 Q1337.28 1568.97 1333.34 1568.97 Q1326.88 1568.97 1322.8 1563.81 Q1318.76 1558.65 1318.76 1550.25 Q1318.76 1541.85 1322.8 1536.69 Q1326.88 1531.54 1333.34 1531.54 Q1337.28 1531.54 1340.09 1533.1 Q1342.92 1534.62 1344.76 1537.81 M1324.81 1550.25 Q1324.81 1556.71 1327.45 1560.4 Q1330.12 1564.07 1334.77 1564.07 Q1339.42 1564.07 1342.09 1560.4 Q1344.76 1556.71 1344.76 1550.25 Q1344.76 1543.79 1342.09 1540.13 Q1339.42 1536.44 1334.77 1536.44 Q1330.12 1536.44 1327.45 1540.13 Q1324.81 1543.79 1324.81 1550.25 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1362.68 1532.4 L1368.54 1532.4 L1368.54 1568.04 L1362.68 1568.04 L1362.68 1532.4 M1362.68 1518.52 L1368.54 1518.52 L1368.54 1525.93 L1362.68 1525.93 L1362.68 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1410.43 1546.53 L1410.43 1568.04 L1404.57 1568.04 L1404.57 1546.72 Q1404.57 1541.66 1402.6 1539.14 Q1400.62 1536.63 1396.68 1536.63 Q1391.93 1536.63 1389.2 1539.65 Q1386.46 1542.68 1386.46 1547.9 L1386.46 1568.04 L1380.57 1568.04 L1380.57 1532.4 L1386.46 1532.4 L1386.46 1537.93 Q1388.56 1534.72 1391.39 1533.13 Q1394.26 1531.54 1397.98 1531.54 Q1404.12 1531.54 1407.28 1535.36 Q1410.43 1539.14 1410.43 1546.53 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1438.31 1550.12 Q1431.21 1550.12 1428.47 1551.75 Q1425.74 1553.37 1425.74 1557.29 Q1425.74 1560.4 1427.77 1562.25 Q1429.84 1564.07 1433.37 1564.07 Q1438.24 1564.07 1441.17 1560.63 Q1444.13 1557.16 1444.13 1551.43 L1444.13 1550.12 L1438.31 1550.12 M1449.99 1547.71 L1449.99 1568.04 L1444.13 1568.04 L1444.13 1562.63 Q1442.13 1565.88 1439.14 1567.44 Q1436.14 1568.97 1431.82 1568.97 Q1426.34 1568.97 1423.09 1565.91 Q1419.88 1562.82 1419.88 1557.67 Q1419.88 1551.65 1423.89 1548.6 Q1427.93 1545.54 1435.92 1545.54 L1444.13 1545.54 L1444.13 1544.97 Q1444.13 1540.93 1441.46 1538.73 Q1438.82 1536.5 1434.01 1536.5 Q1430.96 1536.5 1428.06 1537.23 Q1425.16 1537.97 1422.49 1539.43 L1422.49 1534.02 Q1425.7 1532.78 1428.73 1532.17 Q1431.75 1531.54 1434.62 1531.54 Q1442.35 1531.54 1446.17 1535.55 Q1449.99 1539.56 1449.99 1547.71 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1467.85 1522.27 L1467.85 1532.4 L1479.91 1532.4 L1479.91 1536.95 L1467.85 1536.95 L1467.85 1556.3 Q1467.85 1560.66 1469.02 1561.9 Q1470.23 1563.14 1473.89 1563.14 L1479.91 1563.14 L1479.91 1568.04 L1473.89 1568.04 Q1467.11 1568.04 1464.53 1565.53 Q1461.96 1562.98 1461.96 1556.3 L1461.96 1536.95 L1457.66 1536.95 L1457.66 1532.4 L1461.96 1532.4 L1461.96 1522.27 L1467.85 1522.27 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1518.1 1548.76 L1518.1 1551.62 L1491.18 1551.62 Q1491.56 1557.67 1494.8 1560.85 Q1498.08 1564 1503.91 1564 Q1507.28 1564 1510.43 1563.17 Q1513.61 1562.35 1516.73 1560.69 L1516.73 1566.23 Q1513.58 1567.57 1510.27 1568.27 Q1506.96 1568.97 1503.56 1568.97 Q1495.03 1568.97 1490.03 1564 Q1485.06 1559.04 1485.06 1550.57 Q1485.06 1541.82 1489.77 1536.69 Q1494.52 1531.54 1502.54 1531.54 Q1509.73 1531.54 1513.9 1536.18 Q1518.1 1540.8 1518.1 1548.76 M1512.25 1547.04 Q1512.18 1542.23 1509.54 1539.37 Q1506.93 1536.5 1502.6 1536.5 Q1497.7 1536.5 1494.74 1539.27 Q1491.81 1542.04 1491.37 1547.07 L1512.25 1547.04 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M1526.79 1518.58 L1531.88 1518.58 Q1536.66 1526.09 1539.01 1533.29 Q1541.4 1540.48 1541.4 1547.58 Q1541.4 1554.71 1539.01 1561.93 Q1536.66 1569.16 1531.88 1576.64 L1526.79 1576.64 Q1531.02 1569.35 1533.09 1562.16 Q1535.19 1554.93 1535.19 1547.58 Q1535.19 1540.23 1533.09 1533.06 Q1531.02 1525.9 1526.79 1518.58 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,1423.18 279.704,47.2441 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,1384.24 298.602,1384.24 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,1150.76 298.602,1150.76 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,917.284 298.602,917.284 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,683.806 298.602,683.806 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,450.329 298.602,450.329 "/> -<polyline clip-path="url(#clip080)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,216.852 298.602,216.852 "/> -<path clip-path="url(#clip080)" d="M126.205 1370.04 Q122.593 1370.04 120.765 1373.6 Q118.959 1377.14 118.959 1384.27 Q118.959 1391.38 120.765 1394.94 Q122.593 1398.49 126.205 1398.49 Q129.839 1398.49 131.644 1394.94 Q133.473 1391.38 133.473 1384.27 Q133.473 1377.14 131.644 1373.6 Q129.839 1370.04 126.205 1370.04 M126.205 1366.33 Q132.015 1366.33 135.07 1370.94 Q138.149 1375.52 138.149 1384.27 Q138.149 1393 135.07 1397.61 Q132.015 1402.19 126.205 1402.19 Q120.394 1402.19 117.316 1397.61 Q114.26 1393 114.26 1384.27 Q114.26 1375.52 117.316 1370.94 Q120.394 1366.33 126.205 1366.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M146.366 1395.64 L151.251 1395.64 L151.251 1401.52 L146.366 1401.52 L146.366 1395.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M171.436 1370.04 Q167.825 1370.04 165.996 1373.6 Q164.19 1377.14 164.19 1384.27 Q164.19 1391.38 165.996 1394.94 Q167.825 1398.49 171.436 1398.49 Q175.07 1398.49 176.876 1394.94 Q178.704 1391.38 178.704 1384.27 Q178.704 1377.14 176.876 1373.6 Q175.07 1370.04 171.436 1370.04 M171.436 1366.33 Q177.246 1366.33 180.301 1370.94 Q183.38 1375.52 183.38 1384.27 Q183.38 1393 180.301 1397.61 Q177.246 1402.19 171.436 1402.19 Q165.626 1402.19 162.547 1397.61 Q159.491 1393 159.491 1384.27 Q159.491 1375.52 162.547 1370.94 Q165.626 1366.33 171.436 1366.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M201.598 1370.04 Q197.987 1370.04 196.158 1373.6 Q194.352 1377.14 194.352 1384.27 Q194.352 1391.38 196.158 1394.94 Q197.987 1398.49 201.598 1398.49 Q205.232 1398.49 207.037 1394.94 Q208.866 1391.38 208.866 1384.27 Q208.866 1377.14 207.037 1373.6 Q205.232 1370.04 201.598 1370.04 M201.598 1366.33 Q207.408 1366.33 210.463 1370.94 Q213.542 1375.52 213.542 1384.27 Q213.542 1393 210.463 1397.61 Q207.408 1402.19 201.598 1402.19 Q195.787 1402.19 192.709 1397.61 Q189.653 1393 189.653 1384.27 Q189.653 1375.52 192.709 1370.94 Q195.787 1366.33 201.598 1366.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M231.76 1370.04 Q228.148 1370.04 226.32 1373.6 Q224.514 1377.14 224.514 1384.27 Q224.514 1391.38 226.32 1394.94 Q228.148 1398.49 231.76 1398.49 Q235.394 1398.49 237.199 1394.94 Q239.028 1391.38 239.028 1384.27 Q239.028 1377.14 237.199 1373.6 Q235.394 1370.04 231.76 1370.04 M231.76 1366.33 Q237.57 1366.33 240.625 1370.94 Q243.704 1375.52 243.704 1384.27 Q243.704 1393 240.625 1397.61 Q237.57 1402.19 231.76 1402.19 Q225.949 1402.19 222.871 1397.61 Q219.815 1393 219.815 1384.27 Q219.815 1375.52 222.871 1370.94 Q225.949 1366.33 231.76 1366.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M127.2 1136.56 Q123.589 1136.56 121.76 1140.12 Q119.955 1143.67 119.955 1150.8 Q119.955 1157.9 121.76 1161.47 Q123.589 1165.01 127.2 1165.01 Q130.834 1165.01 132.64 1161.47 Q134.468 1157.9 134.468 1150.8 Q134.468 1143.67 132.64 1140.12 Q130.834 1136.56 127.2 1136.56 M127.2 1132.86 Q133.01 1132.86 136.066 1137.46 Q139.144 1142.05 139.144 1150.8 Q139.144 1159.52 136.066 1164.13 Q133.01 1168.71 127.2 1168.71 Q121.39 1168.71 118.311 1164.13 Q115.256 1159.52 115.256 1150.8 Q115.256 1142.05 118.311 1137.46 Q121.39 1132.86 127.2 1132.86 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M147.362 1162.16 L152.246 1162.16 L152.246 1168.04 L147.362 1168.04 L147.362 1162.16 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M172.431 1136.56 Q168.82 1136.56 166.991 1140.12 Q165.186 1143.67 165.186 1150.8 Q165.186 1157.9 166.991 1161.47 Q168.82 1165.01 172.431 1165.01 Q176.065 1165.01 177.871 1161.47 Q179.7 1157.9 179.7 1150.8 Q179.7 1143.67 177.871 1140.12 Q176.065 1136.56 172.431 1136.56 M172.431 1132.86 Q178.241 1132.86 181.297 1137.46 Q184.376 1142.05 184.376 1150.8 Q184.376 1159.52 181.297 1164.13 Q178.241 1168.71 172.431 1168.71 Q166.621 1168.71 163.542 1164.13 Q160.487 1159.52 160.487 1150.8 Q160.487 1142.05 163.542 1137.46 Q166.621 1132.86 172.431 1132.86 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M196.621 1164.11 L212.94 1164.11 L212.94 1168.04 L190.996 1168.04 L190.996 1164.11 Q193.658 1161.35 198.241 1156.72 Q202.848 1152.07 204.028 1150.73 Q206.274 1148.2 207.153 1146.47 Q208.056 1144.71 208.056 1143.02 Q208.056 1140.26 206.112 1138.53 Q204.19 1136.79 201.088 1136.79 Q198.889 1136.79 196.436 1137.55 Q194.005 1138.32 191.227 1139.87 L191.227 1135.15 Q194.051 1134.01 196.505 1133.43 Q198.959 1132.86 200.996 1132.86 Q206.366 1132.86 209.561 1135.54 Q212.755 1138.23 212.755 1142.72 Q212.755 1144.85 211.945 1146.77 Q211.158 1148.67 209.051 1151.26 Q208.473 1151.93 205.371 1155.15 Q202.269 1158.34 196.621 1164.11 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M222.801 1133.48 L241.158 1133.48 L241.158 1137.42 L227.084 1137.42 L227.084 1145.89 Q228.102 1145.54 229.121 1145.38 Q230.139 1145.19 231.158 1145.19 Q236.945 1145.19 240.324 1148.37 Q243.704 1151.54 243.704 1156.95 Q243.704 1162.53 240.232 1165.63 Q236.76 1168.71 230.44 1168.71 Q228.264 1168.71 225.996 1168.34 Q223.75 1167.97 221.343 1167.23 L221.343 1162.53 Q223.426 1163.67 225.648 1164.22 Q227.871 1164.78 230.347 1164.78 Q234.352 1164.78 236.69 1162.67 Q239.028 1160.56 239.028 1156.95 Q239.028 1153.34 236.69 1151.24 Q234.352 1149.13 230.347 1149.13 Q228.473 1149.13 226.598 1149.55 Q224.746 1149.96 222.801 1150.84 L222.801 1133.48 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M126.205 903.082 Q122.593 903.082 120.765 906.647 Q118.959 910.189 118.959 917.318 Q118.959 924.425 120.765 927.99 Q122.593 931.531 126.205 931.531 Q129.839 931.531 131.644 927.99 Q133.473 924.425 133.473 917.318 Q133.473 910.189 131.644 906.647 Q129.839 903.082 126.205 903.082 M126.205 899.379 Q132.015 899.379 135.07 903.985 Q138.149 908.568 138.149 917.318 Q138.149 926.045 135.07 930.652 Q132.015 935.235 126.205 935.235 Q120.394 935.235 117.316 930.652 Q114.26 926.045 114.26 917.318 Q114.26 908.568 117.316 903.985 Q120.394 899.379 126.205 899.379 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M146.366 928.684 L151.251 928.684 L151.251 934.564 L146.366 934.564 L146.366 928.684 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M171.436 903.082 Q167.825 903.082 165.996 906.647 Q164.19 910.189 164.19 917.318 Q164.19 924.425 165.996 927.99 Q167.825 931.531 171.436 931.531 Q175.07 931.531 176.876 927.99 Q178.704 924.425 178.704 917.318 Q178.704 910.189 176.876 906.647 Q175.07 903.082 171.436 903.082 M171.436 899.379 Q177.246 899.379 180.301 903.985 Q183.38 908.568 183.38 917.318 Q183.38 926.045 180.301 930.652 Q177.246 935.235 171.436 935.235 Q165.626 935.235 162.547 930.652 Q159.491 926.045 159.491 917.318 Q159.491 908.568 162.547 903.985 Q165.626 899.379 171.436 899.379 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M191.644 900.004 L210 900.004 L210 903.939 L195.926 903.939 L195.926 912.411 Q196.945 912.064 197.963 911.902 Q198.982 911.716 200 911.716 Q205.787 911.716 209.167 914.888 Q212.547 918.059 212.547 923.476 Q212.547 929.054 209.074 932.156 Q205.602 935.235 199.283 935.235 Q197.107 935.235 194.838 934.865 Q192.593 934.494 190.186 933.753 L190.186 929.054 Q192.269 930.189 194.491 930.744 Q196.713 931.3 199.19 931.3 Q203.195 931.3 205.533 929.193 Q207.871 927.087 207.871 923.476 Q207.871 919.865 205.533 917.758 Q203.195 915.652 199.19 915.652 Q197.315 915.652 195.44 916.068 Q193.588 916.485 191.644 917.365 L191.644 900.004 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M231.76 903.082 Q228.148 903.082 226.32 906.647 Q224.514 910.189 224.514 917.318 Q224.514 924.425 226.32 927.99 Q228.148 931.531 231.76 931.531 Q235.394 931.531 237.199 927.99 Q239.028 924.425 239.028 917.318 Q239.028 910.189 237.199 906.647 Q235.394 903.082 231.76 903.082 M231.76 899.379 Q237.57 899.379 240.625 903.985 Q243.704 908.568 243.704 917.318 Q243.704 926.045 240.625 930.652 Q237.57 935.235 231.76 935.235 Q225.949 935.235 222.871 930.652 Q219.815 926.045 219.815 917.318 Q219.815 908.568 222.871 903.985 Q225.949 899.379 231.76 899.379 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M127.2 669.605 Q123.589 669.605 121.76 673.17 Q119.955 676.711 119.955 683.841 Q119.955 690.947 121.76 694.512 Q123.589 698.054 127.2 698.054 Q130.834 698.054 132.64 694.512 Q134.468 690.947 134.468 683.841 Q134.468 676.711 132.64 673.17 Q130.834 669.605 127.2 669.605 M127.2 665.901 Q133.01 665.901 136.066 670.508 Q139.144 675.091 139.144 683.841 Q139.144 692.568 136.066 697.174 Q133.01 701.758 127.2 701.758 Q121.39 701.758 118.311 697.174 Q115.256 692.568 115.256 683.841 Q115.256 675.091 118.311 670.508 Q121.39 665.901 127.2 665.901 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M147.362 695.207 L152.246 695.207 L152.246 701.086 L147.362 701.086 L147.362 695.207 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M172.431 669.605 Q168.82 669.605 166.991 673.17 Q165.186 676.711 165.186 683.841 Q165.186 690.947 166.991 694.512 Q168.82 698.054 172.431 698.054 Q176.065 698.054 177.871 694.512 Q179.7 690.947 179.7 683.841 Q179.7 676.711 177.871 673.17 Q176.065 669.605 172.431 669.605 M172.431 665.901 Q178.241 665.901 181.297 670.508 Q184.376 675.091 184.376 683.841 Q184.376 692.568 181.297 697.174 Q178.241 701.758 172.431 701.758 Q166.621 701.758 163.542 697.174 Q160.487 692.568 160.487 683.841 Q160.487 675.091 163.542 670.508 Q166.621 665.901 172.431 665.901 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M191.413 666.526 L213.635 666.526 L213.635 668.517 L201.088 701.086 L196.204 701.086 L208.01 670.461 L191.413 670.461 L191.413 666.526 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M222.801 666.526 L241.158 666.526 L241.158 670.461 L227.084 670.461 L227.084 678.934 Q228.102 678.586 229.121 678.424 Q230.139 678.239 231.158 678.239 Q236.945 678.239 240.324 681.41 Q243.704 684.582 243.704 689.998 Q243.704 695.577 240.232 698.679 Q236.76 701.758 230.44 701.758 Q228.264 701.758 225.996 701.387 Q223.75 701.017 221.343 700.276 L221.343 695.577 Q223.426 696.711 225.648 697.267 Q227.871 697.822 230.347 697.822 Q234.352 697.822 236.69 695.716 Q239.028 693.609 239.028 689.998 Q239.028 686.387 236.69 684.281 Q234.352 682.174 230.347 682.174 Q228.473 682.174 226.598 682.591 Q224.746 683.008 222.801 683.887 L222.801 666.526 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M126.205 436.128 Q122.593 436.128 120.765 439.692 Q118.959 443.234 118.959 450.364 Q118.959 457.47 120.765 461.035 Q122.593 464.577 126.205 464.577 Q129.839 464.577 131.644 461.035 Q133.473 457.47 133.473 450.364 Q133.473 443.234 131.644 439.692 Q129.839 436.128 126.205 436.128 M126.205 432.424 Q132.015 432.424 135.07 437.03 Q138.149 441.614 138.149 450.364 Q138.149 459.09 135.07 463.697 Q132.015 468.28 126.205 468.28 Q120.394 468.28 117.316 463.697 Q114.26 459.09 114.26 450.364 Q114.26 441.614 117.316 437.03 Q120.394 432.424 126.205 432.424 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M146.366 461.729 L151.251 461.729 L151.251 467.609 L146.366 467.609 L146.366 461.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M162.246 463.674 L169.885 463.674 L169.885 437.308 L161.575 438.975 L161.575 434.716 L169.839 433.049 L174.514 433.049 L174.514 463.674 L182.153 463.674 L182.153 467.609 L162.246 467.609 L162.246 463.674 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M201.598 436.128 Q197.987 436.128 196.158 439.692 Q194.352 443.234 194.352 450.364 Q194.352 457.47 196.158 461.035 Q197.987 464.577 201.598 464.577 Q205.232 464.577 207.037 461.035 Q208.866 457.47 208.866 450.364 Q208.866 443.234 207.037 439.692 Q205.232 436.128 201.598 436.128 M201.598 432.424 Q207.408 432.424 210.463 437.03 Q213.542 441.614 213.542 450.364 Q213.542 459.09 210.463 463.697 Q207.408 468.28 201.598 468.28 Q195.787 468.28 192.709 463.697 Q189.653 459.09 189.653 450.364 Q189.653 441.614 192.709 437.03 Q195.787 432.424 201.598 432.424 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M231.76 436.128 Q228.148 436.128 226.32 439.692 Q224.514 443.234 224.514 450.364 Q224.514 457.47 226.32 461.035 Q228.148 464.577 231.76 464.577 Q235.394 464.577 237.199 461.035 Q239.028 457.47 239.028 450.364 Q239.028 443.234 237.199 439.692 Q235.394 436.128 231.76 436.128 M231.76 432.424 Q237.57 432.424 240.625 437.03 Q243.704 441.614 243.704 450.364 Q243.704 459.09 240.625 463.697 Q237.57 468.28 231.76 468.28 Q225.949 468.28 222.871 463.697 Q219.815 459.09 219.815 450.364 Q219.815 441.614 222.871 437.03 Q225.949 432.424 231.76 432.424 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M127.2 202.65 Q123.589 202.65 121.76 206.215 Q119.955 209.757 119.955 216.886 Q119.955 223.993 121.76 227.558 Q123.589 231.099 127.2 231.099 Q130.834 231.099 132.64 227.558 Q134.468 223.993 134.468 216.886 Q134.468 209.757 132.64 206.215 Q130.834 202.65 127.2 202.65 M127.2 198.947 Q133.01 198.947 136.066 203.553 Q139.144 208.136 139.144 216.886 Q139.144 225.613 136.066 230.22 Q133.01 234.803 127.2 234.803 Q121.39 234.803 118.311 230.22 Q115.256 225.613 115.256 216.886 Q115.256 208.136 118.311 203.553 Q121.39 198.947 127.2 198.947 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M147.362 228.252 L152.246 228.252 L152.246 234.132 L147.362 234.132 L147.362 228.252 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M163.241 230.196 L170.88 230.196 L170.88 203.831 L162.57 205.497 L162.57 201.238 L170.834 199.572 L175.51 199.572 L175.51 230.196 L183.149 230.196 L183.149 234.132 L163.241 234.132 L163.241 230.196 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M196.621 230.196 L212.94 230.196 L212.94 234.132 L190.996 234.132 L190.996 230.196 Q193.658 227.442 198.241 222.812 Q202.848 218.159 204.028 216.817 Q206.274 214.294 207.153 212.558 Q208.056 210.798 208.056 209.109 Q208.056 206.354 206.112 204.618 Q204.19 202.882 201.088 202.882 Q198.889 202.882 196.436 203.646 Q194.005 204.41 191.227 205.96 L191.227 201.238 Q194.051 200.104 196.505 199.525 Q198.959 198.947 200.996 198.947 Q206.366 198.947 209.561 201.632 Q212.755 204.317 212.755 208.808 Q212.755 210.937 211.945 212.859 Q211.158 214.757 209.051 217.349 Q208.473 218.021 205.371 221.238 Q202.269 224.433 196.621 230.196 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M222.801 199.572 L241.158 199.572 L241.158 203.507 L227.084 203.507 L227.084 211.979 Q228.102 211.632 229.121 211.47 Q230.139 211.284 231.158 211.284 Q236.945 211.284 240.324 214.456 Q243.704 217.627 243.704 223.044 Q243.704 228.622 240.232 231.724 Q236.76 234.803 230.44 234.803 Q228.264 234.803 225.996 234.433 Q223.75 234.062 221.343 233.321 L221.343 228.622 Q223.426 229.757 225.648 230.312 Q227.871 230.868 230.347 230.868 Q234.352 230.868 236.69 228.761 Q239.028 226.655 239.028 223.044 Q239.028 219.433 236.69 217.326 Q234.352 215.22 230.347 215.22 Q228.473 215.22 226.598 215.636 Q224.746 216.053 222.801 216.933 L222.801 199.572 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M49.9359 990.954 L28.3562 990.954 L28.3562 985.098 L49.7131 985.098 Q54.7739 985.098 57.3202 983.124 Q59.8346 981.151 59.8346 977.204 Q59.8346 972.462 56.8109 969.725 Q53.7872 966.956 48.5673 966.956 L28.3562 966.956 L28.3562 961.099 L64.0042 961.099 L64.0042 966.956 L58.5296 966.956 Q61.7762 969.088 63.3676 971.921 Q64.9272 974.722 64.9272 978.446 Q64.9272 984.589 61.1078 987.771 Q57.2883 990.954 49.9359 990.954 M27.4968 976.218 L27.4968 976.218 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M14.5426 914.247 Q21.8632 918.512 29.0246 920.581 Q36.186 922.65 43.5384 922.65 Q50.8908 922.65 58.1159 920.581 Q65.3091 918.481 72.5979 914.247 L72.5979 919.34 Q65.1182 924.114 57.8931 926.501 Q50.668 928.857 43.5384 928.857 Q36.4406 928.857 29.2474 926.501 Q22.0542 924.146 14.5426 919.34 L14.5426 914.247 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M18.2347 897.092 L28.3562 897.092 L28.3562 885.029 L32.9077 885.029 L32.9077 897.092 L52.2594 897.092 Q56.6199 897.092 57.8613 895.914 Q59.1026 894.705 59.1026 891.044 L59.1026 885.029 L64.0042 885.029 L64.0042 891.044 Q64.0042 897.824 61.4897 900.402 Q58.9434 902.98 52.2594 902.98 L32.9077 902.98 L32.9077 907.277 L28.3562 907.277 L28.3562 902.98 L18.2347 902.98 L18.2347 897.092 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M44.7161 846.835 L47.5806 846.835 L47.5806 873.762 Q53.6281 873.38 56.8109 870.133 Q59.9619 866.855 59.9619 861.03 Q59.9619 857.656 59.1344 854.505 Q58.3069 851.322 56.6518 848.203 L62.1899 848.203 Q63.5267 851.354 64.227 854.664 Q64.9272 857.975 64.9272 861.38 Q64.9272 869.91 59.9619 874.907 Q54.9967 879.873 46.5303 879.873 Q37.7774 879.873 32.6531 875.162 Q27.4968 870.42 27.4968 862.399 Q27.4968 855.206 32.1438 851.036 Q36.7589 846.835 44.7161 846.835 M42.9973 852.691 Q38.1912 852.755 35.3266 855.397 Q32.4621 858.006 32.4621 862.335 Q32.4621 867.237 35.2312 870.197 Q38.0002 873.125 43.0292 873.571 L42.9973 852.691 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M35.1993 809.468 Q31.2526 807.272 29.3747 804.216 Q27.4968 801.161 27.4968 797.023 Q27.4968 791.453 31.4117 788.429 Q35.2948 785.406 42.4881 785.406 L64.0042 785.406 L64.0042 791.294 L42.679 791.294 Q37.5546 791.294 35.072 793.108 Q32.5894 794.922 32.5894 798.646 Q32.5894 803.198 35.6131 805.839 Q38.6368 808.481 43.8567 808.481 L64.0042 808.481 L64.0042 814.37 L42.679 814.37 Q37.5228 814.37 35.072 816.184 Q32.5894 817.998 32.5894 821.786 Q32.5894 826.273 35.6449 828.915 Q38.6686 831.557 43.8567 831.557 L64.0042 831.557 L64.0042 837.445 L28.3562 837.445 L28.3562 831.557 L33.8944 831.557 Q30.616 829.552 29.0564 826.751 Q27.4968 823.95 27.4968 820.099 Q27.4968 816.216 29.4702 813.51 Q31.4436 810.773 35.1993 809.468 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M58.657 768.059 L77.5631 768.059 L77.5631 773.947 L28.3562 773.947 L28.3562 768.059 L33.7671 768.059 Q30.5842 766.213 29.0564 763.412 Q27.4968 760.579 27.4968 756.664 Q27.4968 750.171 32.6531 746.129 Q37.8093 742.055 46.212 742.055 Q54.6147 742.055 59.771 746.129 Q64.9272 750.171 64.9272 756.664 Q64.9272 760.579 63.3994 763.412 Q61.8398 766.213 58.657 768.059 M46.212 748.134 Q39.7508 748.134 36.0905 750.808 Q32.3984 753.45 32.3984 758.097 Q32.3984 762.744 36.0905 765.417 Q39.7508 768.059 46.212 768.059 Q52.6732 768.059 56.3653 765.417 Q60.0256 762.744 60.0256 758.097 Q60.0256 753.45 56.3653 750.808 Q52.6732 748.134 46.212 748.134 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M44.7161 701.856 L47.5806 701.856 L47.5806 728.783 Q53.6281 728.401 56.8109 725.154 Q59.9619 721.876 59.9619 716.051 Q59.9619 712.677 59.1344 709.526 Q58.3069 706.343 56.6518 703.224 L62.1899 703.224 Q63.5267 706.375 64.227 709.685 Q64.9272 712.996 64.9272 716.401 Q64.9272 724.931 59.9619 729.928 Q54.9967 734.894 46.5303 734.894 Q37.7774 734.894 32.6531 730.183 Q27.4968 725.441 27.4968 717.42 Q27.4968 710.227 32.1438 706.057 Q36.7589 701.856 44.7161 701.856 M42.9973 707.712 Q38.1912 707.776 35.3266 710.418 Q32.4621 713.027 32.4621 717.356 Q32.4621 722.258 35.2312 725.218 Q38.0002 728.146 43.0292 728.592 L42.9973 707.712 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M33.8307 671.587 Q33.2578 672.573 33.0032 673.751 Q32.7167 674.897 32.7167 676.297 Q32.7167 681.263 35.9632 683.936 Q39.1779 686.578 45.2253 686.578 L64.0042 686.578 L64.0042 692.466 L28.3562 692.466 L28.3562 686.578 L33.8944 686.578 Q30.6479 684.732 29.0883 681.772 Q27.4968 678.812 27.4968 674.579 Q27.4968 673.974 27.5923 673.242 Q27.656 672.51 27.8151 671.619 L33.8307 671.587 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M46.0847 649.243 Q46.0847 656.341 47.7079 659.078 Q49.3312 661.815 53.2461 661.815 Q56.3653 661.815 58.2114 659.778 Q60.0256 657.709 60.0256 654.177 Q60.0256 649.307 56.5881 646.379 Q53.1188 643.418 47.3897 643.418 L46.0847 643.418 L46.0847 649.243 M43.6657 637.562 L64.0042 637.562 L64.0042 643.418 L58.5933 643.418 Q61.8398 645.424 63.3994 648.416 Q64.9272 651.407 64.9272 655.736 Q64.9272 661.211 61.8716 664.457 Q58.7843 667.672 53.6281 667.672 Q47.6125 667.672 44.5569 663.661 Q41.5014 659.619 41.5014 651.63 L41.5014 643.418 L40.9285 643.418 Q36.8862 643.418 34.6901 646.092 Q32.4621 648.734 32.4621 653.54 Q32.4621 656.595 33.1941 659.492 Q33.9262 662.388 35.3903 665.062 L29.9795 665.062 Q28.7381 661.847 28.1334 658.823 Q27.4968 655.8 27.4968 652.935 Q27.4968 645.201 31.5072 641.381 Q35.5176 637.562 43.6657 637.562 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M18.2347 619.706 L28.3562 619.706 L28.3562 607.643 L32.9077 607.643 L32.9077 619.706 L52.2594 619.706 Q56.6199 619.706 57.8613 618.529 Q59.1026 617.319 59.1026 613.659 L59.1026 607.643 L64.0042 607.643 L64.0042 613.659 Q64.0042 620.438 61.4897 623.016 Q58.9434 625.595 52.2594 625.595 L32.9077 625.595 L32.9077 629.891 L28.3562 629.891 L28.3562 625.595 L18.2347 625.595 L18.2347 619.706 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M49.9359 600.545 L28.3562 600.545 L28.3562 594.689 L49.7131 594.689 Q54.7739 594.689 57.3202 592.716 Q59.8346 590.742 59.8346 586.796 Q59.8346 582.053 56.8109 579.316 Q53.7872 576.547 48.5673 576.547 L28.3562 576.547 L28.3562 570.69 L64.0042 570.69 L64.0042 576.547 L58.5296 576.547 Q61.7762 578.679 63.3676 581.512 Q64.9272 584.313 64.9272 588.037 Q64.9272 594.18 61.1078 597.363 Q57.2883 600.545 49.9359 600.545 M27.4968 585.809 L27.4968 585.809 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M33.8307 537.971 Q33.2578 538.957 33.0032 540.135 Q32.7167 541.281 32.7167 542.681 Q32.7167 547.646 35.9632 550.32 Q39.1779 552.962 45.2253 552.962 L64.0042 552.962 L64.0042 558.85 L28.3562 558.85 L28.3562 552.962 L33.8944 552.962 Q30.6479 551.116 29.0883 548.156 Q27.4968 545.196 27.4968 540.962 Q27.4968 540.358 27.5923 539.626 Q27.656 538.894 27.8151 538.002 L33.8307 537.971 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M44.7161 502.768 L47.5806 502.768 L47.5806 529.695 Q53.6281 529.313 56.8109 526.067 Q59.9619 522.788 59.9619 516.964 Q59.9619 513.59 59.1344 510.439 Q58.3069 507.256 56.6518 504.137 L62.1899 504.137 Q63.5267 507.288 64.227 510.598 Q64.9272 513.908 64.9272 517.314 Q64.9272 525.844 59.9619 530.841 Q54.9967 535.806 46.5303 535.806 Q37.7774 535.806 32.6531 531.096 Q27.4968 526.353 27.4968 518.332 Q27.4968 511.139 32.1438 506.97 Q36.7589 502.768 44.7161 502.768 M42.9973 508.625 Q38.1912 508.688 35.3266 511.33 Q32.4621 513.94 32.4621 518.269 Q32.4621 523.17 35.2312 526.13 Q38.0002 529.059 43.0292 529.504 L42.9973 508.625 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip080)" d="M14.5426 494.079 L14.5426 488.986 Q22.0542 484.212 29.2474 481.857 Q36.4406 479.47 43.5384 479.47 Q50.668 479.47 57.8931 481.857 Q65.1182 484.212 72.5979 488.986 L72.5979 494.079 Q65.3091 489.846 58.1159 487.777 Q50.8908 485.676 43.5384 485.676 Q36.186 485.676 29.0246 487.777 Q21.8632 489.846 14.5426 494.079 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip082)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="338.375,1384.24 357.932,1319.8 377.489,1255.35 397.046,1190.91 416.604,1126.47 436.161,1062.03 455.718,1011.9 475.275,961.77 494.832,911.642 514.389,861.515 533.946,811.387 553.503,772.017 573.06,732.648 592.617,693.279 612.175,653.909 631.732,614.54 651.289,583.444 670.846,552.349 690.403,521.254 709.96,490.158 729.517,459.063 749.074,434.627 768.631,410.192 788.188,385.756 807.745,361.32 827.303,336.885 846.86,318.026 866.417,299.168 885.974,280.31 905.531,261.452 925.088,242.594 944.645,228.572 964.202,214.55 983.759,200.528 1003.32,186.505 1022.87,172.483 1042.43,162.792 1061.99,153.1 1081.54,143.408 1101.1,133.717 1120.66,124.025 1140.22,118.334 1159.77,112.643 1179.33,106.952 1198.89,101.261 1218.44,95.5699 1238,93.693 1257.56,91.8162 1277.12,89.9394 1296.67,88.0625 1316.23,86.1857 1335.79,88.0625 1355.34,89.9394 1374.9,91.8162 1394.46,93.693 1414.02,95.5699 1433.57,101.261 1453.13,106.952 1472.69,112.643 1492.24,118.334 1511.8,124.025 1531.36,133.717 1550.92,143.408 1570.47,153.1 1590.03,162.792 1609.59,172.483 1629.14,186.505 1648.7,200.528 1668.26,214.55 1687.81,228.572 1707.37,242.594 1726.93,261.452 1746.49,280.31 1766.04,299.168 1785.6,318.026 1805.16,336.885 1824.71,361.32 1844.27,385.756 1863.83,410.192 1883.39,434.627 1902.94,459.063 1922.5,490.158 1942.06,521.254 1961.61,552.349 1981.17,583.444 2000.73,614.54 2020.29,653.909 2039.84,693.279 2059.4,732.648 2078.96,772.017 2098.51,811.387 2118.07,861.515 2137.63,911.642 2157.18,961.77 2176.74,1011.9 2196.3,1062.03 2215.86,1126.47 2235.41,1190.91 2254.97,1255.35 2274.53,1319.8 2294.08,1384.24 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="338.375,1423.18 338.375,47.2441 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="827.303,1423.18 827.303,47.2441 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1316.23,1423.18 1316.23,47.2441 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1805.16,1423.18 1805.16,47.2441 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2294.08,1423.18 2294.08,47.2441 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,1384.24 2352.76,1384.24 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,1150.76 2352.76,1150.76 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,917.284 2352.76,917.284 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,683.806 2352.76,683.806 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,450.329 2352.76,450.329 "/> +<polyline clip-path="url(#clip692)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="279.704,216.852 2352.76,216.852 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,1423.18 2352.76,1423.18 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="338.375,1423.18 338.375,1404.28 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="827.303,1423.18 827.303,1404.28 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1316.23,1423.18 1316.23,1404.28 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1805.16,1423.18 1805.16,1404.28 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2294.08,1423.18 2294.08,1404.28 "/> +<path clip-path="url(#clip690)" d="M284.903 1468.75 L314.579 1468.75 L314.579 1472.69 L284.903 1472.69 L284.903 1468.75 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M325.482 1481.64 L333.121 1481.64 L333.121 1455.28 L324.81 1456.95 L324.81 1452.69 L333.074 1451.02 L337.75 1451.02 L337.75 1481.64 L345.389 1481.64 L345.389 1485.58 L325.482 1485.58 L325.482 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M354.833 1479.7 L359.718 1479.7 L359.718 1485.58 L354.833 1485.58 L354.833 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M379.903 1454.1 Q376.292 1454.1 374.463 1457.66 Q372.657 1461.2 372.657 1468.33 Q372.657 1475.44 374.463 1479.01 Q376.292 1482.55 379.903 1482.55 Q383.537 1482.55 385.343 1479.01 Q387.171 1475.44 387.171 1468.33 Q387.171 1461.2 385.343 1457.66 Q383.537 1454.1 379.903 1454.1 M379.903 1450.39 Q385.713 1450.39 388.768 1455 Q391.847 1459.58 391.847 1468.33 Q391.847 1477.06 388.768 1481.67 Q385.713 1486.25 379.903 1486.25 Q374.093 1486.25 371.014 1481.67 Q367.958 1477.06 367.958 1468.33 Q367.958 1459.58 371.014 1455 Q374.093 1450.39 379.903 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M774.328 1468.75 L804.004 1468.75 L804.004 1472.69 L774.328 1472.69 L774.328 1468.75 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M824.097 1454.1 Q820.485 1454.1 818.657 1457.66 Q816.851 1461.2 816.851 1468.33 Q816.851 1475.44 818.657 1479.01 Q820.485 1482.55 824.097 1482.55 Q827.731 1482.55 829.536 1479.01 Q831.365 1475.44 831.365 1468.33 Q831.365 1461.2 829.536 1457.66 Q827.731 1454.1 824.097 1454.1 M824.097 1450.39 Q829.907 1450.39 832.962 1455 Q836.041 1459.58 836.041 1468.33 Q836.041 1477.06 832.962 1481.67 Q829.907 1486.25 824.097 1486.25 Q818.286 1486.25 815.208 1481.67 Q812.152 1477.06 812.152 1468.33 Q812.152 1459.58 815.208 1455 Q818.286 1450.39 824.097 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M844.258 1479.7 L849.143 1479.7 L849.143 1485.58 L844.258 1485.58 L844.258 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M859.374 1451.02 L877.731 1451.02 L877.731 1454.96 L863.657 1454.96 L863.657 1463.43 Q864.675 1463.08 865.694 1462.92 Q866.712 1462.73 867.731 1462.73 Q873.518 1462.73 876.897 1465.9 Q880.277 1469.08 880.277 1474.49 Q880.277 1480.07 876.805 1483.17 Q873.332 1486.25 867.013 1486.25 Q864.837 1486.25 862.569 1485.88 Q860.323 1485.51 857.916 1484.77 L857.916 1480.07 Q859.999 1481.2 862.221 1481.76 Q864.444 1482.32 866.92 1482.32 Q870.925 1482.32 873.263 1480.21 Q875.601 1478.1 875.601 1474.49 Q875.601 1470.88 873.263 1468.77 Q870.925 1466.67 866.92 1466.67 Q865.045 1466.67 863.17 1467.08 Q861.319 1467.5 859.374 1468.38 L859.374 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1293.61 1454.1 Q1290 1454.1 1288.17 1457.66 Q1286.37 1461.2 1286.37 1468.33 Q1286.37 1475.44 1288.17 1479.01 Q1290 1482.55 1293.61 1482.55 Q1297.25 1482.55 1299.05 1479.01 Q1300.88 1475.44 1300.88 1468.33 Q1300.88 1461.2 1299.05 1457.66 Q1297.25 1454.1 1293.61 1454.1 M1293.61 1450.39 Q1299.42 1450.39 1302.48 1455 Q1305.56 1459.58 1305.56 1468.33 Q1305.56 1477.06 1302.48 1481.67 Q1299.42 1486.25 1293.61 1486.25 Q1287.8 1486.25 1284.73 1481.67 Q1281.67 1477.06 1281.67 1468.33 Q1281.67 1459.58 1284.73 1455 Q1287.8 1450.39 1293.61 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1313.78 1479.7 L1318.66 1479.7 L1318.66 1485.58 L1313.78 1485.58 L1313.78 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1338.85 1454.1 Q1335.23 1454.1 1333.41 1457.66 Q1331.6 1461.2 1331.6 1468.33 Q1331.6 1475.44 1333.41 1479.01 Q1335.23 1482.55 1338.85 1482.55 Q1342.48 1482.55 1344.29 1479.01 Q1346.11 1475.44 1346.11 1468.33 Q1346.11 1461.2 1344.29 1457.66 Q1342.48 1454.1 1338.85 1454.1 M1338.85 1450.39 Q1344.66 1450.39 1347.71 1455 Q1350.79 1459.58 1350.79 1468.33 Q1350.79 1477.06 1347.71 1481.67 Q1344.66 1486.25 1338.85 1486.25 Q1333.04 1486.25 1329.96 1481.67 Q1326.9 1477.06 1326.9 1468.33 Q1326.9 1459.58 1329.96 1455 Q1333.04 1450.39 1338.85 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1783.04 1454.1 Q1779.43 1454.1 1777.6 1457.66 Q1775.79 1461.2 1775.79 1468.33 Q1775.79 1475.44 1777.6 1479.01 Q1779.43 1482.55 1783.04 1482.55 Q1786.67 1482.55 1788.48 1479.01 Q1790.31 1475.44 1790.31 1468.33 Q1790.31 1461.2 1788.48 1457.66 Q1786.67 1454.1 1783.04 1454.1 M1783.04 1450.39 Q1788.85 1450.39 1791.91 1455 Q1794.98 1459.58 1794.98 1468.33 Q1794.98 1477.06 1791.91 1481.67 Q1788.85 1486.25 1783.04 1486.25 Q1777.23 1486.25 1774.15 1481.67 Q1771.09 1477.06 1771.09 1468.33 Q1771.09 1459.58 1774.15 1455 Q1777.23 1450.39 1783.04 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1803.2 1479.7 L1808.09 1479.7 L1808.09 1485.58 L1803.2 1485.58 L1803.2 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1818.32 1451.02 L1836.67 1451.02 L1836.67 1454.96 L1822.6 1454.96 L1822.6 1463.43 Q1823.62 1463.08 1824.64 1462.92 Q1825.65 1462.73 1826.67 1462.73 Q1832.46 1462.73 1835.84 1465.9 Q1839.22 1469.08 1839.22 1474.49 Q1839.22 1480.07 1835.75 1483.17 Q1832.28 1486.25 1825.96 1486.25 Q1823.78 1486.25 1821.51 1485.88 Q1819.27 1485.51 1816.86 1484.77 L1816.86 1480.07 Q1818.94 1481.2 1821.16 1481.76 Q1823.39 1482.32 1825.86 1482.32 Q1829.87 1482.32 1832.21 1480.21 Q1834.54 1478.1 1834.54 1474.49 Q1834.54 1470.88 1832.21 1468.77 Q1829.87 1466.67 1825.86 1466.67 Q1823.99 1466.67 1822.11 1467.08 Q1820.26 1467.5 1818.32 1468.38 L1818.32 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M2261.24 1481.64 L2268.88 1481.64 L2268.88 1455.28 L2260.57 1456.95 L2260.57 1452.69 L2268.83 1451.02 L2273.51 1451.02 L2273.51 1481.64 L2281.14 1481.64 L2281.14 1485.58 L2261.24 1485.58 L2261.24 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M2290.59 1479.7 L2295.47 1479.7 L2295.47 1485.58 L2290.59 1485.58 L2290.59 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M2315.66 1454.1 Q2312.05 1454.1 2310.22 1457.66 Q2308.41 1461.2 2308.41 1468.33 Q2308.41 1475.44 2310.22 1479.01 Q2312.05 1482.55 2315.66 1482.55 Q2319.29 1482.55 2321.1 1479.01 Q2322.93 1475.44 2322.93 1468.33 Q2322.93 1461.2 2321.1 1457.66 Q2319.29 1454.1 2315.66 1454.1 M2315.66 1450.39 Q2321.47 1450.39 2324.52 1455 Q2327.6 1459.58 2327.6 1468.33 Q2327.6 1477.06 2324.52 1481.67 Q2321.47 1486.25 2315.66 1486.25 Q2309.85 1486.25 2306.77 1481.67 Q2303.71 1477.06 2303.71 1468.33 Q2303.71 1459.58 2306.77 1455 Q2309.85 1450.39 2315.66 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1124.96 1532.4 L1112.07 1549.74 L1125.62 1568.04 L1118.72 1568.04 L1108.34 1554.04 L1097.97 1568.04 L1091.06 1568.04 L1104.9 1549.39 L1092.24 1532.4 L1099.14 1532.4 L1108.6 1545.1 L1118.05 1532.4 L1124.96 1532.4 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1168.69 1518.58 Q1164.42 1525.9 1162.35 1533.06 Q1160.29 1540.23 1160.29 1547.58 Q1160.29 1554.93 1162.35 1562.16 Q1164.46 1569.35 1168.69 1576.64 L1163.6 1576.64 Q1158.82 1569.16 1156.43 1561.93 Q1154.08 1554.71 1154.08 1547.58 Q1154.08 1540.48 1156.43 1533.29 Q1158.79 1526.09 1163.6 1518.58 L1168.69 1518.58 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1205.71 1533.76 L1205.71 1539.24 Q1203.22 1537.87 1200.71 1537.2 Q1198.23 1536.5 1195.68 1536.5 Q1189.98 1536.5 1186.83 1540.13 Q1183.68 1543.73 1183.68 1550.25 Q1183.68 1556.78 1186.83 1560.4 Q1189.98 1564 1195.68 1564 Q1198.23 1564 1200.71 1563.33 Q1203.22 1562.63 1205.71 1561.26 L1205.71 1566.68 Q1203.25 1567.82 1200.61 1568.39 Q1198 1568.97 1195.04 1568.97 Q1186.99 1568.97 1182.25 1563.91 Q1177.51 1558.85 1177.51 1550.25 Q1177.51 1541.53 1182.28 1536.53 Q1187.09 1531.54 1195.42 1531.54 Q1198.13 1531.54 1200.71 1532.11 Q1203.29 1532.65 1205.71 1533.76 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1229.7 1536.5 Q1224.99 1536.5 1222.26 1540.19 Q1219.52 1543.85 1219.52 1550.25 Q1219.52 1556.65 1222.22 1560.34 Q1224.96 1564 1229.7 1564 Q1234.38 1564 1237.12 1560.31 Q1239.86 1556.62 1239.86 1550.25 Q1239.86 1543.92 1237.12 1540.23 Q1234.38 1536.5 1229.7 1536.5 M1229.7 1531.54 Q1237.34 1531.54 1241.7 1536.5 Q1246.06 1541.47 1246.06 1550.25 Q1246.06 1559 1241.7 1564 Q1237.34 1568.97 1229.7 1568.97 Q1222.03 1568.97 1217.67 1564 Q1213.34 1559 1213.34 1550.25 Q1213.34 1541.47 1217.67 1536.5 Q1222.03 1531.54 1229.7 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1269.59 1536.5 Q1264.87 1536.5 1262.14 1540.19 Q1259.4 1543.85 1259.4 1550.25 Q1259.4 1556.65 1262.11 1560.34 Q1264.84 1564 1269.59 1564 Q1274.26 1564 1277 1560.31 Q1279.74 1556.62 1279.74 1550.25 Q1279.74 1543.92 1277 1540.23 Q1274.26 1536.5 1269.59 1536.5 M1269.59 1531.54 Q1277.22 1531.54 1281.58 1536.5 Q1285.95 1541.47 1285.95 1550.25 Q1285.95 1559 1281.58 1564 Q1277.22 1568.97 1269.59 1568.97 Q1261.91 1568.97 1257.55 1564 Q1253.23 1559 1253.23 1550.25 Q1253.23 1541.47 1257.55 1536.5 Q1261.91 1531.54 1269.59 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1316.31 1537.87 Q1315.32 1537.3 1314.15 1537.04 Q1313 1536.76 1311.6 1536.76 Q1306.63 1536.76 1303.96 1540 Q1301.32 1543.22 1301.32 1549.27 L1301.32 1568.04 L1295.43 1568.04 L1295.43 1532.4 L1301.32 1532.4 L1301.32 1537.93 Q1303.16 1534.69 1306.12 1533.13 Q1309.08 1531.54 1313.32 1531.54 Q1313.92 1531.54 1314.65 1531.63 Q1315.39 1531.7 1316.28 1531.85 L1316.31 1537.87 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1344.76 1537.81 L1344.76 1518.52 L1350.62 1518.52 L1350.62 1568.04 L1344.76 1568.04 L1344.76 1562.7 Q1342.92 1565.88 1340.09 1567.44 Q1337.28 1568.97 1333.34 1568.97 Q1326.88 1568.97 1322.8 1563.81 Q1318.76 1558.65 1318.76 1550.25 Q1318.76 1541.85 1322.8 1536.69 Q1326.88 1531.54 1333.34 1531.54 Q1337.28 1531.54 1340.09 1533.1 Q1342.92 1534.62 1344.76 1537.81 M1324.81 1550.25 Q1324.81 1556.71 1327.45 1560.4 Q1330.12 1564.07 1334.77 1564.07 Q1339.42 1564.07 1342.09 1560.4 Q1344.76 1556.71 1344.76 1550.25 Q1344.76 1543.79 1342.09 1540.13 Q1339.42 1536.44 1334.77 1536.44 Q1330.12 1536.44 1327.45 1540.13 Q1324.81 1543.79 1324.81 1550.25 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1362.68 1532.4 L1368.54 1532.4 L1368.54 1568.04 L1362.68 1568.04 L1362.68 1532.4 M1362.68 1518.52 L1368.54 1518.52 L1368.54 1525.93 L1362.68 1525.93 L1362.68 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1410.43 1546.53 L1410.43 1568.04 L1404.57 1568.04 L1404.57 1546.72 Q1404.57 1541.66 1402.6 1539.14 Q1400.62 1536.63 1396.68 1536.63 Q1391.93 1536.63 1389.2 1539.65 Q1386.46 1542.68 1386.46 1547.9 L1386.46 1568.04 L1380.57 1568.04 L1380.57 1532.4 L1386.46 1532.4 L1386.46 1537.93 Q1388.56 1534.72 1391.39 1533.13 Q1394.26 1531.54 1397.98 1531.54 Q1404.12 1531.54 1407.28 1535.36 Q1410.43 1539.14 1410.43 1546.53 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1438.31 1550.12 Q1431.21 1550.12 1428.47 1551.75 Q1425.74 1553.37 1425.74 1557.29 Q1425.74 1560.4 1427.77 1562.25 Q1429.84 1564.07 1433.37 1564.07 Q1438.24 1564.07 1441.17 1560.63 Q1444.13 1557.16 1444.13 1551.43 L1444.13 1550.12 L1438.31 1550.12 M1449.99 1547.71 L1449.99 1568.04 L1444.13 1568.04 L1444.13 1562.63 Q1442.13 1565.88 1439.14 1567.44 Q1436.14 1568.97 1431.82 1568.97 Q1426.34 1568.97 1423.09 1565.91 Q1419.88 1562.82 1419.88 1557.67 Q1419.88 1551.65 1423.89 1548.6 Q1427.93 1545.54 1435.92 1545.54 L1444.13 1545.54 L1444.13 1544.97 Q1444.13 1540.93 1441.46 1538.73 Q1438.82 1536.5 1434.01 1536.5 Q1430.96 1536.5 1428.06 1537.23 Q1425.16 1537.97 1422.49 1539.43 L1422.49 1534.02 Q1425.7 1532.78 1428.73 1532.17 Q1431.75 1531.54 1434.62 1531.54 Q1442.35 1531.54 1446.17 1535.55 Q1449.99 1539.56 1449.99 1547.71 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1467.85 1522.27 L1467.85 1532.4 L1479.91 1532.4 L1479.91 1536.95 L1467.85 1536.95 L1467.85 1556.3 Q1467.85 1560.66 1469.02 1561.9 Q1470.23 1563.14 1473.89 1563.14 L1479.91 1563.14 L1479.91 1568.04 L1473.89 1568.04 Q1467.11 1568.04 1464.53 1565.53 Q1461.96 1562.98 1461.96 1556.3 L1461.96 1536.95 L1457.66 1536.95 L1457.66 1532.4 L1461.96 1532.4 L1461.96 1522.27 L1467.85 1522.27 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1518.1 1548.76 L1518.1 1551.62 L1491.18 1551.62 Q1491.56 1557.67 1494.8 1560.85 Q1498.08 1564 1503.91 1564 Q1507.28 1564 1510.43 1563.17 Q1513.61 1562.35 1516.73 1560.69 L1516.73 1566.23 Q1513.58 1567.57 1510.27 1568.27 Q1506.96 1568.97 1503.56 1568.97 Q1495.03 1568.97 1490.03 1564 Q1485.06 1559.04 1485.06 1550.57 Q1485.06 1541.82 1489.77 1536.69 Q1494.52 1531.54 1502.54 1531.54 Q1509.73 1531.54 1513.9 1536.18 Q1518.1 1540.8 1518.1 1548.76 M1512.25 1547.04 Q1512.18 1542.23 1509.54 1539.37 Q1506.93 1536.5 1502.6 1536.5 Q1497.7 1536.5 1494.74 1539.27 Q1491.81 1542.04 1491.37 1547.07 L1512.25 1547.04 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M1526.79 1518.58 L1531.88 1518.58 Q1536.66 1526.09 1539.01 1533.29 Q1541.4 1540.48 1541.4 1547.58 Q1541.4 1554.71 1539.01 1561.93 Q1536.66 1569.16 1531.88 1576.64 L1526.79 1576.64 Q1531.02 1569.35 1533.09 1562.16 Q1535.19 1554.93 1535.19 1547.58 Q1535.19 1540.23 1533.09 1533.06 Q1531.02 1525.9 1526.79 1518.58 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,1423.18 279.704,47.2441 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,1384.24 298.602,1384.24 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,1150.76 298.602,1150.76 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,917.284 298.602,917.284 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,683.806 298.602,683.806 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,450.329 298.602,450.329 "/> +<polyline clip-path="url(#clip690)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="279.704,216.852 298.602,216.852 "/> +<path clip-path="url(#clip690)" d="M126.205 1370.04 Q122.593 1370.04 120.765 1373.6 Q118.959 1377.14 118.959 1384.27 Q118.959 1391.38 120.765 1394.94 Q122.593 1398.49 126.205 1398.49 Q129.839 1398.49 131.644 1394.94 Q133.473 1391.38 133.473 1384.27 Q133.473 1377.14 131.644 1373.6 Q129.839 1370.04 126.205 1370.04 M126.205 1366.33 Q132.015 1366.33 135.07 1370.94 Q138.149 1375.52 138.149 1384.27 Q138.149 1393 135.07 1397.61 Q132.015 1402.19 126.205 1402.19 Q120.394 1402.19 117.316 1397.61 Q114.26 1393 114.26 1384.27 Q114.26 1375.52 117.316 1370.94 Q120.394 1366.33 126.205 1366.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M146.366 1395.64 L151.251 1395.64 L151.251 1401.52 L146.366 1401.52 L146.366 1395.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M171.436 1370.04 Q167.825 1370.04 165.996 1373.6 Q164.19 1377.14 164.19 1384.27 Q164.19 1391.38 165.996 1394.94 Q167.825 1398.49 171.436 1398.49 Q175.07 1398.49 176.876 1394.94 Q178.704 1391.38 178.704 1384.27 Q178.704 1377.14 176.876 1373.6 Q175.07 1370.04 171.436 1370.04 M171.436 1366.33 Q177.246 1366.33 180.301 1370.94 Q183.38 1375.52 183.38 1384.27 Q183.38 1393 180.301 1397.61 Q177.246 1402.19 171.436 1402.19 Q165.626 1402.19 162.547 1397.61 Q159.491 1393 159.491 1384.27 Q159.491 1375.52 162.547 1370.94 Q165.626 1366.33 171.436 1366.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M201.598 1370.04 Q197.987 1370.04 196.158 1373.6 Q194.352 1377.14 194.352 1384.27 Q194.352 1391.38 196.158 1394.94 Q197.987 1398.49 201.598 1398.49 Q205.232 1398.49 207.037 1394.94 Q208.866 1391.38 208.866 1384.27 Q208.866 1377.14 207.037 1373.6 Q205.232 1370.04 201.598 1370.04 M201.598 1366.33 Q207.408 1366.33 210.463 1370.94 Q213.542 1375.52 213.542 1384.27 Q213.542 1393 210.463 1397.61 Q207.408 1402.19 201.598 1402.19 Q195.787 1402.19 192.709 1397.61 Q189.653 1393 189.653 1384.27 Q189.653 1375.52 192.709 1370.94 Q195.787 1366.33 201.598 1366.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M231.76 1370.04 Q228.148 1370.04 226.32 1373.6 Q224.514 1377.14 224.514 1384.27 Q224.514 1391.38 226.32 1394.94 Q228.148 1398.49 231.76 1398.49 Q235.394 1398.49 237.199 1394.94 Q239.028 1391.38 239.028 1384.27 Q239.028 1377.14 237.199 1373.6 Q235.394 1370.04 231.76 1370.04 M231.76 1366.33 Q237.57 1366.33 240.625 1370.94 Q243.704 1375.52 243.704 1384.27 Q243.704 1393 240.625 1397.61 Q237.57 1402.19 231.76 1402.19 Q225.949 1402.19 222.871 1397.61 Q219.815 1393 219.815 1384.27 Q219.815 1375.52 222.871 1370.94 Q225.949 1366.33 231.76 1366.33 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M127.2 1136.56 Q123.589 1136.56 121.76 1140.12 Q119.955 1143.67 119.955 1150.8 Q119.955 1157.9 121.76 1161.47 Q123.589 1165.01 127.2 1165.01 Q130.834 1165.01 132.64 1161.47 Q134.468 1157.9 134.468 1150.8 Q134.468 1143.67 132.64 1140.12 Q130.834 1136.56 127.2 1136.56 M127.2 1132.86 Q133.01 1132.86 136.066 1137.46 Q139.144 1142.05 139.144 1150.8 Q139.144 1159.52 136.066 1164.13 Q133.01 1168.71 127.2 1168.71 Q121.39 1168.71 118.311 1164.13 Q115.256 1159.52 115.256 1150.8 Q115.256 1142.05 118.311 1137.46 Q121.39 1132.86 127.2 1132.86 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M147.362 1162.16 L152.246 1162.16 L152.246 1168.04 L147.362 1168.04 L147.362 1162.16 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M172.431 1136.56 Q168.82 1136.56 166.991 1140.12 Q165.186 1143.67 165.186 1150.8 Q165.186 1157.9 166.991 1161.47 Q168.82 1165.01 172.431 1165.01 Q176.065 1165.01 177.871 1161.47 Q179.7 1157.9 179.7 1150.8 Q179.7 1143.67 177.871 1140.12 Q176.065 1136.56 172.431 1136.56 M172.431 1132.86 Q178.241 1132.86 181.297 1137.46 Q184.376 1142.05 184.376 1150.8 Q184.376 1159.52 181.297 1164.13 Q178.241 1168.71 172.431 1168.71 Q166.621 1168.71 163.542 1164.13 Q160.487 1159.52 160.487 1150.8 Q160.487 1142.05 163.542 1137.46 Q166.621 1132.86 172.431 1132.86 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M196.621 1164.11 L212.94 1164.11 L212.94 1168.04 L190.996 1168.04 L190.996 1164.11 Q193.658 1161.35 198.241 1156.72 Q202.848 1152.07 204.028 1150.73 Q206.274 1148.2 207.153 1146.47 Q208.056 1144.71 208.056 1143.02 Q208.056 1140.26 206.112 1138.53 Q204.19 1136.79 201.088 1136.79 Q198.889 1136.79 196.436 1137.55 Q194.005 1138.32 191.227 1139.87 L191.227 1135.15 Q194.051 1134.01 196.505 1133.43 Q198.959 1132.86 200.996 1132.86 Q206.366 1132.86 209.561 1135.54 Q212.755 1138.23 212.755 1142.72 Q212.755 1144.85 211.945 1146.77 Q211.158 1148.67 209.051 1151.26 Q208.473 1151.93 205.371 1155.15 Q202.269 1158.34 196.621 1164.11 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M222.801 1133.48 L241.158 1133.48 L241.158 1137.42 L227.084 1137.42 L227.084 1145.89 Q228.102 1145.54 229.121 1145.38 Q230.139 1145.19 231.158 1145.19 Q236.945 1145.19 240.324 1148.37 Q243.704 1151.54 243.704 1156.95 Q243.704 1162.53 240.232 1165.63 Q236.76 1168.71 230.44 1168.71 Q228.264 1168.71 225.996 1168.34 Q223.75 1167.97 221.343 1167.23 L221.343 1162.53 Q223.426 1163.67 225.648 1164.22 Q227.871 1164.78 230.347 1164.78 Q234.352 1164.78 236.69 1162.67 Q239.028 1160.56 239.028 1156.95 Q239.028 1153.34 236.69 1151.24 Q234.352 1149.13 230.347 1149.13 Q228.473 1149.13 226.598 1149.55 Q224.746 1149.96 222.801 1150.84 L222.801 1133.48 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M126.205 903.082 Q122.593 903.082 120.765 906.647 Q118.959 910.189 118.959 917.318 Q118.959 924.425 120.765 927.99 Q122.593 931.531 126.205 931.531 Q129.839 931.531 131.644 927.99 Q133.473 924.425 133.473 917.318 Q133.473 910.189 131.644 906.647 Q129.839 903.082 126.205 903.082 M126.205 899.379 Q132.015 899.379 135.07 903.985 Q138.149 908.568 138.149 917.318 Q138.149 926.045 135.07 930.652 Q132.015 935.235 126.205 935.235 Q120.394 935.235 117.316 930.652 Q114.26 926.045 114.26 917.318 Q114.26 908.568 117.316 903.985 Q120.394 899.379 126.205 899.379 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M146.366 928.684 L151.251 928.684 L151.251 934.564 L146.366 934.564 L146.366 928.684 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M171.436 903.082 Q167.825 903.082 165.996 906.647 Q164.19 910.189 164.19 917.318 Q164.19 924.425 165.996 927.99 Q167.825 931.531 171.436 931.531 Q175.07 931.531 176.876 927.99 Q178.704 924.425 178.704 917.318 Q178.704 910.189 176.876 906.647 Q175.07 903.082 171.436 903.082 M171.436 899.379 Q177.246 899.379 180.301 903.985 Q183.38 908.568 183.38 917.318 Q183.38 926.045 180.301 930.652 Q177.246 935.235 171.436 935.235 Q165.626 935.235 162.547 930.652 Q159.491 926.045 159.491 917.318 Q159.491 908.568 162.547 903.985 Q165.626 899.379 171.436 899.379 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M191.644 900.004 L210 900.004 L210 903.939 L195.926 903.939 L195.926 912.411 Q196.945 912.064 197.963 911.902 Q198.982 911.716 200 911.716 Q205.787 911.716 209.167 914.888 Q212.547 918.059 212.547 923.476 Q212.547 929.054 209.074 932.156 Q205.602 935.235 199.283 935.235 Q197.107 935.235 194.838 934.865 Q192.593 934.494 190.186 933.753 L190.186 929.054 Q192.269 930.189 194.491 930.744 Q196.713 931.3 199.19 931.3 Q203.195 931.3 205.533 929.193 Q207.871 927.087 207.871 923.476 Q207.871 919.865 205.533 917.758 Q203.195 915.652 199.19 915.652 Q197.315 915.652 195.44 916.068 Q193.588 916.485 191.644 917.365 L191.644 900.004 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M231.76 903.082 Q228.148 903.082 226.32 906.647 Q224.514 910.189 224.514 917.318 Q224.514 924.425 226.32 927.99 Q228.148 931.531 231.76 931.531 Q235.394 931.531 237.199 927.99 Q239.028 924.425 239.028 917.318 Q239.028 910.189 237.199 906.647 Q235.394 903.082 231.76 903.082 M231.76 899.379 Q237.57 899.379 240.625 903.985 Q243.704 908.568 243.704 917.318 Q243.704 926.045 240.625 930.652 Q237.57 935.235 231.76 935.235 Q225.949 935.235 222.871 930.652 Q219.815 926.045 219.815 917.318 Q219.815 908.568 222.871 903.985 Q225.949 899.379 231.76 899.379 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M127.2 669.605 Q123.589 669.605 121.76 673.17 Q119.955 676.711 119.955 683.841 Q119.955 690.947 121.76 694.512 Q123.589 698.054 127.2 698.054 Q130.834 698.054 132.64 694.512 Q134.468 690.947 134.468 683.841 Q134.468 676.711 132.64 673.17 Q130.834 669.605 127.2 669.605 M127.2 665.901 Q133.01 665.901 136.066 670.508 Q139.144 675.091 139.144 683.841 Q139.144 692.568 136.066 697.174 Q133.01 701.758 127.2 701.758 Q121.39 701.758 118.311 697.174 Q115.256 692.568 115.256 683.841 Q115.256 675.091 118.311 670.508 Q121.39 665.901 127.2 665.901 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M147.362 695.207 L152.246 695.207 L152.246 701.086 L147.362 701.086 L147.362 695.207 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M172.431 669.605 Q168.82 669.605 166.991 673.17 Q165.186 676.711 165.186 683.841 Q165.186 690.947 166.991 694.512 Q168.82 698.054 172.431 698.054 Q176.065 698.054 177.871 694.512 Q179.7 690.947 179.7 683.841 Q179.7 676.711 177.871 673.17 Q176.065 669.605 172.431 669.605 M172.431 665.901 Q178.241 665.901 181.297 670.508 Q184.376 675.091 184.376 683.841 Q184.376 692.568 181.297 697.174 Q178.241 701.758 172.431 701.758 Q166.621 701.758 163.542 697.174 Q160.487 692.568 160.487 683.841 Q160.487 675.091 163.542 670.508 Q166.621 665.901 172.431 665.901 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M191.413 666.526 L213.635 666.526 L213.635 668.517 L201.088 701.086 L196.204 701.086 L208.01 670.461 L191.413 670.461 L191.413 666.526 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M222.801 666.526 L241.158 666.526 L241.158 670.461 L227.084 670.461 L227.084 678.934 Q228.102 678.586 229.121 678.424 Q230.139 678.239 231.158 678.239 Q236.945 678.239 240.324 681.41 Q243.704 684.582 243.704 689.998 Q243.704 695.577 240.232 698.679 Q236.76 701.758 230.44 701.758 Q228.264 701.758 225.996 701.387 Q223.75 701.017 221.343 700.276 L221.343 695.577 Q223.426 696.711 225.648 697.267 Q227.871 697.822 230.347 697.822 Q234.352 697.822 236.69 695.716 Q239.028 693.609 239.028 689.998 Q239.028 686.387 236.69 684.281 Q234.352 682.174 230.347 682.174 Q228.473 682.174 226.598 682.591 Q224.746 683.008 222.801 683.887 L222.801 666.526 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M126.205 436.128 Q122.593 436.128 120.765 439.692 Q118.959 443.234 118.959 450.364 Q118.959 457.47 120.765 461.035 Q122.593 464.577 126.205 464.577 Q129.839 464.577 131.644 461.035 Q133.473 457.47 133.473 450.364 Q133.473 443.234 131.644 439.692 Q129.839 436.128 126.205 436.128 M126.205 432.424 Q132.015 432.424 135.07 437.03 Q138.149 441.614 138.149 450.364 Q138.149 459.09 135.07 463.697 Q132.015 468.28 126.205 468.28 Q120.394 468.28 117.316 463.697 Q114.26 459.09 114.26 450.364 Q114.26 441.614 117.316 437.03 Q120.394 432.424 126.205 432.424 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M146.366 461.729 L151.251 461.729 L151.251 467.609 L146.366 467.609 L146.366 461.729 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M162.246 463.674 L169.885 463.674 L169.885 437.308 L161.575 438.975 L161.575 434.716 L169.839 433.049 L174.514 433.049 L174.514 463.674 L182.153 463.674 L182.153 467.609 L162.246 467.609 L162.246 463.674 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M201.598 436.128 Q197.987 436.128 196.158 439.692 Q194.352 443.234 194.352 450.364 Q194.352 457.47 196.158 461.035 Q197.987 464.577 201.598 464.577 Q205.232 464.577 207.037 461.035 Q208.866 457.47 208.866 450.364 Q208.866 443.234 207.037 439.692 Q205.232 436.128 201.598 436.128 M201.598 432.424 Q207.408 432.424 210.463 437.03 Q213.542 441.614 213.542 450.364 Q213.542 459.09 210.463 463.697 Q207.408 468.28 201.598 468.28 Q195.787 468.28 192.709 463.697 Q189.653 459.09 189.653 450.364 Q189.653 441.614 192.709 437.03 Q195.787 432.424 201.598 432.424 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M231.76 436.128 Q228.148 436.128 226.32 439.692 Q224.514 443.234 224.514 450.364 Q224.514 457.47 226.32 461.035 Q228.148 464.577 231.76 464.577 Q235.394 464.577 237.199 461.035 Q239.028 457.47 239.028 450.364 Q239.028 443.234 237.199 439.692 Q235.394 436.128 231.76 436.128 M231.76 432.424 Q237.57 432.424 240.625 437.03 Q243.704 441.614 243.704 450.364 Q243.704 459.09 240.625 463.697 Q237.57 468.28 231.76 468.28 Q225.949 468.28 222.871 463.697 Q219.815 459.09 219.815 450.364 Q219.815 441.614 222.871 437.03 Q225.949 432.424 231.76 432.424 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M127.2 202.65 Q123.589 202.65 121.76 206.215 Q119.955 209.757 119.955 216.886 Q119.955 223.993 121.76 227.558 Q123.589 231.099 127.2 231.099 Q130.834 231.099 132.64 227.558 Q134.468 223.993 134.468 216.886 Q134.468 209.757 132.64 206.215 Q130.834 202.65 127.2 202.65 M127.2 198.947 Q133.01 198.947 136.066 203.553 Q139.144 208.136 139.144 216.886 Q139.144 225.613 136.066 230.22 Q133.01 234.803 127.2 234.803 Q121.39 234.803 118.311 230.22 Q115.256 225.613 115.256 216.886 Q115.256 208.136 118.311 203.553 Q121.39 198.947 127.2 198.947 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M147.362 228.252 L152.246 228.252 L152.246 234.132 L147.362 234.132 L147.362 228.252 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M163.241 230.196 L170.88 230.196 L170.88 203.831 L162.57 205.497 L162.57 201.238 L170.834 199.572 L175.51 199.572 L175.51 230.196 L183.149 230.196 L183.149 234.132 L163.241 234.132 L163.241 230.196 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M196.621 230.196 L212.94 230.196 L212.94 234.132 L190.996 234.132 L190.996 230.196 Q193.658 227.442 198.241 222.812 Q202.848 218.159 204.028 216.817 Q206.274 214.294 207.153 212.558 Q208.056 210.798 208.056 209.109 Q208.056 206.354 206.112 204.618 Q204.19 202.882 201.088 202.882 Q198.889 202.882 196.436 203.646 Q194.005 204.41 191.227 205.96 L191.227 201.238 Q194.051 200.104 196.505 199.525 Q198.959 198.947 200.996 198.947 Q206.366 198.947 209.561 201.632 Q212.755 204.317 212.755 208.808 Q212.755 210.937 211.945 212.859 Q211.158 214.757 209.051 217.349 Q208.473 218.021 205.371 221.238 Q202.269 224.433 196.621 230.196 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M222.801 199.572 L241.158 199.572 L241.158 203.507 L227.084 203.507 L227.084 211.979 Q228.102 211.632 229.121 211.47 Q230.139 211.284 231.158 211.284 Q236.945 211.284 240.324 214.456 Q243.704 217.627 243.704 223.044 Q243.704 228.622 240.232 231.724 Q236.76 234.803 230.44 234.803 Q228.264 234.803 225.996 234.433 Q223.75 234.062 221.343 233.321 L221.343 228.622 Q223.426 229.757 225.648 230.312 Q227.871 230.868 230.347 230.868 Q234.352 230.868 236.69 228.761 Q239.028 226.655 239.028 223.044 Q239.028 219.433 236.69 217.326 Q234.352 215.22 230.347 215.22 Q228.473 215.22 226.598 215.636 Q224.746 216.053 222.801 216.933 L222.801 199.572 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M49.9359 990.954 L28.3562 990.954 L28.3562 985.098 L49.7131 985.098 Q54.7739 985.098 57.3202 983.124 Q59.8346 981.151 59.8346 977.204 Q59.8346 972.462 56.8109 969.725 Q53.7872 966.956 48.5673 966.956 L28.3562 966.956 L28.3562 961.099 L64.0042 961.099 L64.0042 966.956 L58.5296 966.956 Q61.7762 969.088 63.3676 971.921 Q64.9272 974.722 64.9272 978.446 Q64.9272 984.589 61.1078 987.771 Q57.2883 990.954 49.9359 990.954 M27.4968 976.218 L27.4968 976.218 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M14.5426 914.247 Q21.8632 918.512 29.0246 920.581 Q36.186 922.65 43.5384 922.65 Q50.8908 922.65 58.1159 920.581 Q65.3091 918.481 72.5979 914.247 L72.5979 919.34 Q65.1182 924.114 57.8931 926.501 Q50.668 928.857 43.5384 928.857 Q36.4406 928.857 29.2474 926.501 Q22.0542 924.146 14.5426 919.34 L14.5426 914.247 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M18.2347 897.092 L28.3562 897.092 L28.3562 885.029 L32.9077 885.029 L32.9077 897.092 L52.2594 897.092 Q56.6199 897.092 57.8613 895.914 Q59.1026 894.705 59.1026 891.044 L59.1026 885.029 L64.0042 885.029 L64.0042 891.044 Q64.0042 897.824 61.4897 900.402 Q58.9434 902.98 52.2594 902.98 L32.9077 902.98 L32.9077 907.277 L28.3562 907.277 L28.3562 902.98 L18.2347 902.98 L18.2347 897.092 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M44.7161 846.835 L47.5806 846.835 L47.5806 873.762 Q53.6281 873.38 56.8109 870.133 Q59.9619 866.855 59.9619 861.03 Q59.9619 857.656 59.1344 854.505 Q58.3069 851.322 56.6518 848.203 L62.1899 848.203 Q63.5267 851.354 64.227 854.664 Q64.9272 857.975 64.9272 861.38 Q64.9272 869.91 59.9619 874.907 Q54.9967 879.873 46.5303 879.873 Q37.7774 879.873 32.6531 875.162 Q27.4968 870.42 27.4968 862.399 Q27.4968 855.206 32.1438 851.036 Q36.7589 846.835 44.7161 846.835 M42.9973 852.691 Q38.1912 852.755 35.3266 855.397 Q32.4621 858.006 32.4621 862.335 Q32.4621 867.237 35.2312 870.197 Q38.0002 873.125 43.0292 873.571 L42.9973 852.691 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M35.1993 809.468 Q31.2526 807.272 29.3747 804.216 Q27.4968 801.161 27.4968 797.023 Q27.4968 791.453 31.4117 788.429 Q35.2948 785.406 42.4881 785.406 L64.0042 785.406 L64.0042 791.294 L42.679 791.294 Q37.5546 791.294 35.072 793.108 Q32.5894 794.922 32.5894 798.646 Q32.5894 803.198 35.6131 805.839 Q38.6368 808.481 43.8567 808.481 L64.0042 808.481 L64.0042 814.37 L42.679 814.37 Q37.5228 814.37 35.072 816.184 Q32.5894 817.998 32.5894 821.786 Q32.5894 826.273 35.6449 828.915 Q38.6686 831.557 43.8567 831.557 L64.0042 831.557 L64.0042 837.445 L28.3562 837.445 L28.3562 831.557 L33.8944 831.557 Q30.616 829.552 29.0564 826.751 Q27.4968 823.95 27.4968 820.099 Q27.4968 816.216 29.4702 813.51 Q31.4436 810.773 35.1993 809.468 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M58.657 768.059 L77.5631 768.059 L77.5631 773.947 L28.3562 773.947 L28.3562 768.059 L33.7671 768.059 Q30.5842 766.213 29.0564 763.412 Q27.4968 760.579 27.4968 756.664 Q27.4968 750.171 32.6531 746.129 Q37.8093 742.055 46.212 742.055 Q54.6147 742.055 59.771 746.129 Q64.9272 750.171 64.9272 756.664 Q64.9272 760.579 63.3994 763.412 Q61.8398 766.213 58.657 768.059 M46.212 748.134 Q39.7508 748.134 36.0905 750.808 Q32.3984 753.45 32.3984 758.097 Q32.3984 762.744 36.0905 765.417 Q39.7508 768.059 46.212 768.059 Q52.6732 768.059 56.3653 765.417 Q60.0256 762.744 60.0256 758.097 Q60.0256 753.45 56.3653 750.808 Q52.6732 748.134 46.212 748.134 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M44.7161 701.856 L47.5806 701.856 L47.5806 728.783 Q53.6281 728.401 56.8109 725.154 Q59.9619 721.876 59.9619 716.051 Q59.9619 712.677 59.1344 709.526 Q58.3069 706.343 56.6518 703.224 L62.1899 703.224 Q63.5267 706.375 64.227 709.685 Q64.9272 712.996 64.9272 716.401 Q64.9272 724.931 59.9619 729.928 Q54.9967 734.894 46.5303 734.894 Q37.7774 734.894 32.6531 730.183 Q27.4968 725.441 27.4968 717.42 Q27.4968 710.227 32.1438 706.057 Q36.7589 701.856 44.7161 701.856 M42.9973 707.712 Q38.1912 707.776 35.3266 710.418 Q32.4621 713.027 32.4621 717.356 Q32.4621 722.258 35.2312 725.218 Q38.0002 728.146 43.0292 728.592 L42.9973 707.712 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M33.8307 671.587 Q33.2578 672.573 33.0032 673.751 Q32.7167 674.897 32.7167 676.297 Q32.7167 681.263 35.9632 683.936 Q39.1779 686.578 45.2253 686.578 L64.0042 686.578 L64.0042 692.466 L28.3562 692.466 L28.3562 686.578 L33.8944 686.578 Q30.6479 684.732 29.0883 681.772 Q27.4968 678.812 27.4968 674.579 Q27.4968 673.974 27.5923 673.242 Q27.656 672.51 27.8151 671.619 L33.8307 671.587 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M46.0847 649.243 Q46.0847 656.341 47.7079 659.078 Q49.3312 661.815 53.2461 661.815 Q56.3653 661.815 58.2114 659.778 Q60.0256 657.709 60.0256 654.177 Q60.0256 649.307 56.5881 646.379 Q53.1188 643.418 47.3897 643.418 L46.0847 643.418 L46.0847 649.243 M43.6657 637.562 L64.0042 637.562 L64.0042 643.418 L58.5933 643.418 Q61.8398 645.424 63.3994 648.416 Q64.9272 651.407 64.9272 655.736 Q64.9272 661.211 61.8716 664.457 Q58.7843 667.672 53.6281 667.672 Q47.6125 667.672 44.5569 663.661 Q41.5014 659.619 41.5014 651.63 L41.5014 643.418 L40.9285 643.418 Q36.8862 643.418 34.6901 646.092 Q32.4621 648.734 32.4621 653.54 Q32.4621 656.595 33.1941 659.492 Q33.9262 662.388 35.3903 665.062 L29.9795 665.062 Q28.7381 661.847 28.1334 658.823 Q27.4968 655.8 27.4968 652.935 Q27.4968 645.201 31.5072 641.381 Q35.5176 637.562 43.6657 637.562 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M18.2347 619.706 L28.3562 619.706 L28.3562 607.643 L32.9077 607.643 L32.9077 619.706 L52.2594 619.706 Q56.6199 619.706 57.8613 618.529 Q59.1026 617.319 59.1026 613.659 L59.1026 607.643 L64.0042 607.643 L64.0042 613.659 Q64.0042 620.438 61.4897 623.016 Q58.9434 625.595 52.2594 625.595 L32.9077 625.595 L32.9077 629.891 L28.3562 629.891 L28.3562 625.595 L18.2347 625.595 L18.2347 619.706 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M49.9359 600.545 L28.3562 600.545 L28.3562 594.689 L49.7131 594.689 Q54.7739 594.689 57.3202 592.716 Q59.8346 590.742 59.8346 586.796 Q59.8346 582.053 56.8109 579.316 Q53.7872 576.547 48.5673 576.547 L28.3562 576.547 L28.3562 570.69 L64.0042 570.69 L64.0042 576.547 L58.5296 576.547 Q61.7762 578.679 63.3676 581.512 Q64.9272 584.313 64.9272 588.037 Q64.9272 594.18 61.1078 597.363 Q57.2883 600.545 49.9359 600.545 M27.4968 585.809 L27.4968 585.809 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M33.8307 537.971 Q33.2578 538.957 33.0032 540.135 Q32.7167 541.281 32.7167 542.681 Q32.7167 547.646 35.9632 550.32 Q39.1779 552.962 45.2253 552.962 L64.0042 552.962 L64.0042 558.85 L28.3562 558.85 L28.3562 552.962 L33.8944 552.962 Q30.6479 551.116 29.0883 548.156 Q27.4968 545.196 27.4968 540.962 Q27.4968 540.358 27.5923 539.626 Q27.656 538.894 27.8151 538.002 L33.8307 537.971 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M44.7161 502.768 L47.5806 502.768 L47.5806 529.695 Q53.6281 529.313 56.8109 526.067 Q59.9619 522.788 59.9619 516.964 Q59.9619 513.59 59.1344 510.439 Q58.3069 507.256 56.6518 504.137 L62.1899 504.137 Q63.5267 507.288 64.227 510.598 Q64.9272 513.908 64.9272 517.314 Q64.9272 525.844 59.9619 530.841 Q54.9967 535.806 46.5303 535.806 Q37.7774 535.806 32.6531 531.096 Q27.4968 526.353 27.4968 518.332 Q27.4968 511.139 32.1438 506.97 Q36.7589 502.768 44.7161 502.768 M42.9973 508.625 Q38.1912 508.688 35.3266 511.33 Q32.4621 513.94 32.4621 518.269 Q32.4621 523.17 35.2312 526.13 Q38.0002 529.059 43.0292 529.504 L42.9973 508.625 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip690)" d="M14.5426 494.079 L14.5426 488.986 Q22.0542 484.212 29.2474 481.857 Q36.4406 479.47 43.5384 479.47 Q50.668 479.47 57.8931 481.857 Q65.1182 484.212 72.5979 488.986 L72.5979 494.079 Q65.3091 489.846 58.1159 487.777 Q50.8908 485.676 43.5384 485.676 Q36.186 485.676 29.0246 487.777 Q21.8632 489.846 14.5426 494.079 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip692)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="338.375,1384.24 357.932,1319.8 377.489,1255.35 397.046,1190.91 416.604,1126.47 436.161,1062.03 455.718,1011.9 475.275,961.77 494.832,911.642 514.389,861.515 533.946,811.387 553.503,772.017 573.06,732.648 592.617,693.279 612.175,653.909 631.732,614.54 651.289,583.444 670.846,552.349 690.403,521.254 709.96,490.158 729.517,459.063 749.074,434.627 768.631,410.192 788.188,385.756 807.745,361.32 827.303,336.885 846.86,318.026 866.417,299.168 885.974,280.31 905.531,261.452 925.088,242.594 944.645,228.572 964.202,214.55 983.759,200.528 1003.32,186.505 1022.87,172.483 1042.43,162.792 1061.99,153.1 1081.54,143.408 1101.1,133.717 1120.66,124.025 1140.22,118.334 1159.77,112.643 1179.33,106.952 1198.89,101.261 1218.44,95.5699 1238,93.693 1257.56,91.8162 1277.12,89.9394 1296.67,88.0625 1316.23,86.1857 1335.79,88.0625 1355.34,89.9394 1374.9,91.8162 1394.46,93.693 1414.02,95.5699 1433.57,101.261 1453.13,106.952 1472.69,112.643 1492.24,118.334 1511.8,124.025 1531.36,133.717 1550.92,143.408 1570.47,153.1 1590.03,162.792 1609.59,172.483 1629.14,186.505 1648.7,200.528 1668.26,214.55 1687.81,228.572 1707.37,242.594 1726.93,261.452 1746.49,280.31 1766.04,299.168 1785.6,318.026 1805.16,336.885 1824.71,361.32 1844.27,385.756 1863.83,410.192 1883.39,434.627 1902.94,459.063 1922.5,490.158 1942.06,521.254 1961.61,552.349 1981.17,583.444 2000.73,614.54 2020.29,653.909 2039.84,693.279 2059.4,732.648 2078.96,772.017 2098.51,811.387 2118.07,861.515 2137.63,911.642 2157.18,961.77 2176.74,1011.9 2196.3,1062.03 2215.86,1126.47 2235.41,1190.91 2254.97,1255.35 2274.53,1319.8 2294.08,1384.24 "/> </svg> diff --git a/dev/howto/postprocessing/index.html b/dev/howto/postprocessing/index.html index e701472aee..20697bd631 100644 --- a/dev/howto/postprocessing/index.html +++ b/dev/howto/postprocessing/index.html @@ -22,7 +22,7 @@ return q end</code></pre><p>Now call the function to get all the fluxes.</p><pre><code class="language-julia hljs">q_gp = compute_heat_fluxes(cellvalues, dh, u);</code></pre><p>Next, create an <a href="../../reference/export/#Ferrite.L2Projector-Tuple{Ferrite.AbstractGrid}"><code>L2Projector</code></a> using the same interpolation as was used to approximate the temperature field. On instantiation, the projector assembles the coefficient matrix <code>M</code> and computes the Cholesky factorization of it. By doing so, the projector can be reused without having to invert <code>M</code> every time.</p><pre><code class="language-julia hljs">projector = L2Projector(ip, grid);</code></pre><p>Project the integration point values to the nodal values</p><pre><code class="language-julia hljs">q_projected = project(projector, q_gp, qr);</code></pre><h2 id="Exporting-to-VTK"><a class="docs-heading-anchor" href="#Exporting-to-VTK">Exporting to VTK</a><a id="Exporting-to-VTK-1"></a><a class="docs-heading-anchor-permalink" href="#Exporting-to-VTK" title="Permalink"></a></h2><p>To visualize the heat flux, we export the projected field <code>q_projected</code> to a VTK-file, which can be viewed in e.g. <a href="https://www.paraview.org/">ParaView</a>. The result is also visualized in <em>Figure 1</em>.</p><pre><code class="language-julia hljs">VTKGridFile("heat_equation_flux", grid) do vtk write_projection(vtk, projector, q_projected, "q") -end;</code></pre><h2 id="Point-evaluation"><a class="docs-heading-anchor" href="#Point-evaluation">Point evaluation</a><a id="Point-evaluation-1"></a><a class="docs-heading-anchor-permalink" href="#Point-evaluation" title="Permalink"></a></h2><p><img src="../heat_square_pointevaluation.png" alt/></p><p><em>Figure 2</em>: Visualization of the cut line where we want to compute the temperature and heat flux.</p><p>Consider a cut-line through the domain like the black line in <em>Figure 2</em> above. We will evaluate the temperature and the heat flux distribution along a horizontal line.</p><pre><code class="language-julia hljs">points = [Vec((x, 0.75)) for x in range(-1.0, 1.0, length = 101)];</code></pre><p>First, we need to generate a <code>PointEvalHandler</code>. This will find and store the cells containing the input points.</p><pre><code class="language-julia hljs">ph = PointEvalHandler(grid, points);</code></pre><p>After the L2-Projection, the heat fluxes <code>q_projected</code> are stored in the DoF-ordering determined by the projector's internal DoFHandler, so to evaluate the flux <code>q</code> at our points we give the <code>PointEvalHandler</code>, the <code>L2Projector</code> and the values <code>q_projected</code>.</p><pre><code class="language-julia hljs">q_points = evaluate_at_points(ph, projector, q_projected);</code></pre><p>We can also extract the field values, here the temperature, right away from the result vector of the simulation, that is stored in <code>u</code>. These values are stored in the order of our initial DofHandler so the input is not the <code>PointEvalHandler</code>, the original <code>DofHandler</code>, the dof-vector <code>u</code>, and (optionally for single-field problems) the name of the field. From the <code>L2Projection</code>, the values are stored in the order of the degrees of freedom.</p><pre><code class="language-julia hljs">u_points = evaluate_at_points(ph, dh, u, :u);</code></pre><p>Now, we can plot the temperature and flux values with the help of any plotting library, e.g. Plots.jl. To do this, we need to import the package:</p><pre><code class="language-julia hljs">import Plots</code></pre><p>Firstly, we are going to plot the temperature values along the given line.</p><pre><code class="language-julia hljs">Plots.plot(getindex.(points, 1), u_points, xlabel = "x (coordinate)", ylabel = "u (temperature)", label = nothing)</code></pre><img src="d671bea3.svg" alt="Example block output"/><p><em>Figure 3</em>: Temperature along the cut line from <em>Figure 2</em>.</p><p>Secondly, the horizontal heat flux (i.e. the first component of the heat flux vector) is plotted.</p><pre><code class="language-julia hljs">Plots.plot(getindex.(points, 1), getindex.(q_points, 1), xlabel = "x (coordinate)", ylabel = "q_x (flux in x-direction)", label = nothing)</code></pre><img src="a13d7c95.svg" alt="Example block output"/><p><em>Figure 4</em>: <span>$x$</span>-component of the flux along the cut line from <em>Figure 2</em>.</p><h2 id="postprocessing-plain-program"><a class="docs-heading-anchor" href="#postprocessing-plain-program">Plain program</a><a id="postprocessing-plain-program-1"></a><a class="docs-heading-anchor-permalink" href="#postprocessing-plain-program" title="Permalink"></a></h2><p>Here follows a version of the program without any comments. The file is also available here: <a href="../postprocessing.jl"><code>postprocessing.jl</code></a>.</p><pre><code class="language-julia hljs">include("../tutorials/heat_equation.jl"); +end;</code></pre><h2 id="Point-evaluation"><a class="docs-heading-anchor" href="#Point-evaluation">Point evaluation</a><a id="Point-evaluation-1"></a><a class="docs-heading-anchor-permalink" href="#Point-evaluation" title="Permalink"></a></h2><p><img src="../heat_square_pointevaluation.png" alt/></p><p><em>Figure 2</em>: Visualization of the cut line where we want to compute the temperature and heat flux.</p><p>Consider a cut-line through the domain like the black line in <em>Figure 2</em> above. We will evaluate the temperature and the heat flux distribution along a horizontal line.</p><pre><code class="language-julia hljs">points = [Vec((x, 0.75)) for x in range(-1.0, 1.0, length = 101)];</code></pre><p>First, we need to generate a <code>PointEvalHandler</code>. This will find and store the cells containing the input points.</p><pre><code class="language-julia hljs">ph = PointEvalHandler(grid, points);</code></pre><p>After the L2-Projection, the heat fluxes <code>q_projected</code> are stored in the DoF-ordering determined by the projector's internal DoFHandler, so to evaluate the flux <code>q</code> at our points we give the <code>PointEvalHandler</code>, the <code>L2Projector</code> and the values <code>q_projected</code>.</p><pre><code class="language-julia hljs">q_points = evaluate_at_points(ph, projector, q_projected);</code></pre><p>We can also extract the field values, here the temperature, right away from the result vector of the simulation, that is stored in <code>u</code>. These values are stored in the order of our initial DofHandler so the input is not the <code>PointEvalHandler</code>, the original <code>DofHandler</code>, the dof-vector <code>u</code>, and (optionally for single-field problems) the name of the field. From the <code>L2Projection</code>, the values are stored in the order of the degrees of freedom.</p><pre><code class="language-julia hljs">u_points = evaluate_at_points(ph, dh, u, :u);</code></pre><p>Now, we can plot the temperature and flux values with the help of any plotting library, e.g. Plots.jl. To do this, we need to import the package:</p><pre><code class="language-julia hljs">import Plots</code></pre><p>Firstly, we are going to plot the temperature values along the given line.</p><pre><code class="language-julia hljs">Plots.plot(getindex.(points, 1), u_points, xlabel = "x (coordinate)", ylabel = "u (temperature)", label = nothing)</code></pre><img src="f282e318.svg" alt="Example block output"/><p><em>Figure 3</em>: Temperature along the cut line from <em>Figure 2</em>.</p><p>Secondly, the horizontal heat flux (i.e. the first component of the heat flux vector) is plotted.</p><pre><code class="language-julia hljs">Plots.plot(getindex.(points, 1), getindex.(q_points, 1), xlabel = "x (coordinate)", ylabel = "q_x (flux in x-direction)", label = nothing)</code></pre><img src="b5acc34e.svg" alt="Example block output"/><p><em>Figure 4</em>: <span>$x$</span>-component of the flux along the cut line from <em>Figure 2</em>.</p><h2 id="postprocessing-plain-program"><a class="docs-heading-anchor" href="#postprocessing-plain-program">Plain program</a><a id="postprocessing-plain-program-1"></a><a class="docs-heading-anchor-permalink" href="#postprocessing-plain-program" title="Permalink"></a></h2><p>Here follows a version of the program without any comments. The file is also available here: <a href="../postprocessing.jl"><code>postprocessing.jl</code></a>.</p><pre><code class="language-julia hljs">include("../tutorials/heat_equation.jl"); function compute_heat_fluxes(cellvalues::CellValues, dh::DofHandler, a::AbstractVector{T}) where {T} @@ -69,4 +69,4 @@ Plots.plot(getindex.(points, 1), u_points, xlabel = "x (coordinate)", ylabel = "u (temperature)", label = nothing) -Plots.plot(getindex.(points, 1), getindex.(q_points, 1), xlabel = "x (coordinate)", ylabel = "q_x (flux in x-direction)", label = nothing)</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« How-to guide overview</a><a class="docs-footer-nextpage" href="../threaded_assembly/">Multi-threaded assembly »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +Plots.plot(getindex.(points, 1), getindex.(q_points, 1), xlabel = "x (coordinate)", ylabel = "q_x (flux in x-direction)", label = nothing)</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« How-to guide overview</a><a class="docs-footer-nextpage" href="../threaded_assembly/">Multi-threaded assembly »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/howto/threaded_assembly/index.html b/dev/howto/threaded_assembly/index.html index 5c99f0f401..d49ea2fad5 100644 --- a/dev/howto/threaded_assembly/index.html +++ b/dev/howto/threaded_assembly/index.html @@ -275,4 +275,4 @@ @time assemble_global!(K, f, dh, colors, cellvalues; ntasks = ntasks) return end -nothing # hide</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../postprocessing/">« Post processing and visualization</a><a class="docs-footer-nextpage" href="../../gallery/">Code gallery »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +nothing # hide</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../postprocessing/">« Post processing and visualization</a><a class="docs-footer-nextpage" href="../../gallery/">Code gallery »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/index.html b/dev/index.html index 708b3be72d..624ab673b7 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Home · Ferrite.jl</title><meta name="title" content="Home · Ferrite.jl"/><meta property="og:title" content="Home · Ferrite.jl"/><meta property="twitter:title" content="Home · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/"/><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="search_index.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script><link href="assets/custom.css" rel="stylesheet" type="text/css"/><link href="assets/citations.css" rel="stylesheet" type="text/css"/><link href="assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href><img src="assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href>Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li class="is-active"><a class="tocitem" href>Home</a><ul class="internal"><li><a class="tocitem" href="#How-the-documentation-is-organized"><span>How the documentation is organized</span></a></li><li><a class="tocitem" href="#Getting-started"><span>Getting started</span></a></li><li><a class="tocitem" href="#Contributing-to-Ferrite"><span>Contributing to Ferrite</span></a></li></ul></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="topics/">Topic guide overview</a></li><li><a class="tocitem" href="topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="topics/assembly/">Assembly</a></li><li><a class="tocitem" href="topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="topics/constraints/">Constraints</a></li><li><a class="tocitem" href="topics/grid/">Grid</a></li><li><a class="tocitem" href="topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="reference/">Reference overview</a></li><li><a class="tocitem" href="reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="reference/assembly/">Assembly</a></li><li><a class="tocitem" href="reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="reference/export/">Postprocessing</a></li><li><a class="tocitem" href="reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="howto/">How-to guide overview</a></li><li><a class="tocitem" href="howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="gallery/">Code gallery</a></li><li><a class="tocitem" href="devdocs/">Developer documentation</a></li><li><a class="tocitem" href="cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Home</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Home</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Ferrite.jl"><a class="docs-heading-anchor" href="#Ferrite.jl">Ferrite.jl</a><a id="Ferrite.jl-1"></a><a class="docs-heading-anchor-permalink" href="#Ferrite.jl" title="Permalink"></a></h1><p>Welcome to the documentation for Ferrite.jl! Ferrite is a finite element toolbox that provides functionalities to implement finite element analysis in <a href="https://github.com/JuliaLang/julia">Julia</a>. The aim is to be i) general, ii) performant, and iii) to keep mathematical abstractions.</p><div class="admonition is-info"><header class="admonition-header">Upgrading code from version 0.3.x to version 1.0</header><div class="admonition-body"><p>Ferrite version 1.0 contains a number of breaking changes compared to version 0.3.x. The <a href="changelog/">Changelog</a> documents all changes and there is also a section specifically for <a href="changelog/#Upgrading-code-from-Ferrite-0.3-to-1.0">Upgrading code from Ferrite 0.3 to 1.0</a>.</p></div></div><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>Please help improve this documentation – if something confuses you, chances are you're not alone. It's easy to do as you read along: just click on the "Edit on GitHub" link at the top of each page, and then <a href="https://help.github.com/articles/editing-files-in-another-user-s-repository/">edit the files directly in your browser</a>. Your changes will be vetted by developers before becoming permanent, so don't worry about whether you might say something wrong. See also <a href="#Contributing-to-Ferrite">Contributing to Ferrite</a> for more details.</p></div></div><h2 id="How-the-documentation-is-organized"><a class="docs-heading-anchor" href="#How-the-documentation-is-organized">How the documentation is organized</a><a id="How-the-documentation-is-organized-1"></a><a class="docs-heading-anchor-permalink" href="#How-the-documentation-is-organized" title="Permalink"></a></h2><p>This high level view of the documentation structure will help you find what you are looking for. The document is organized as follows<sup class="footnote-reference"><a id="citeref-1" href="#footnote-1">[1]</a></sup>:</p><ul><li><a href="tutorials/"><strong>Tutorials</strong></a> are thoroughly documented examples which guides you through the process of solving partial differential equations using Ferrite.</li><li><a href="topics/"><strong>Topic guides</strong></a> contains more in-depth explanations and discussions about finite element programming concepts and ideas, and specifically how these are realized in Ferrite.</li><li><a href="reference/"><strong>Reference</strong></a> contains the technical API reference of functions and methods (e.g. the documentation strings).</li><li><a href="howto/"><strong>How-to guides</strong></a> will guide you through the steps involved in addressing common tasks and use-cases. These usually build on top of the tutorials and thus assume basic knowledge of how Ferrite works.</li></ul><p>The four sections above form the main user-facing parts of the documentation. In addition, the document also contain the following sections:</p><ul><li><a href="gallery/"><strong>Code gallery</strong></a> contain user contributed example programs showcasing what can be done with Ferrite.</li><li><a href="changelog/"><strong>Changelog</strong></a> contain release notes and information about how to upgrade between releases.</li><li><a href="devdocs/"><strong>Developer documentation</strong></a> contain documentation of Ferrite internal code and is mainly targeted at developers of Ferrite.</li></ul><h2 id="Getting-started"><a class="docs-heading-anchor" href="#Getting-started">Getting started</a><a id="Getting-started-1"></a><a class="docs-heading-anchor-permalink" href="#Getting-started" title="Permalink"></a></h2><p>As a new user of Ferrite it is suggested to start working with the tutorials before using Ferrite to tackle the specific equation you ultimately want to solve. The tutorials start with explaining the basic concepts and then increase in complexity. Understanding the first tutorial program, <a href="tutorials/heat_equation/#tutorial-heat-equation">solving the heat equation</a>, is essential in order to understand how Ferrite works. Already this rather simple program discusses many of the important concepts. See the <a href="tutorials/#Tutorials">tutorials overview</a> for suggestion on how to progress to more advanced usage.</p><h3 id="Getting-help"><a class="docs-heading-anchor" href="#Getting-help">Getting help</a><a id="Getting-help-1"></a><a class="docs-heading-anchor-permalink" href="#Getting-help" title="Permalink"></a></h3><p>If you have questions about Ferrite it is suggested to use the <code>#ferrite-fem</code> channel on the <a href="https://julialang.org/slack/">Julia Slack</a>, or the <code>#Ferrite.jl</code> stream on <a href="https://julialang.zulipchat.com/">Zulip</a>. Alternatively you can use the <a href="https://github.com/Ferrite-FEM/Ferrite.jl/discussions">discussion forum</a> on the GitHub repository.</p><h3 id="Installation"><a class="docs-heading-anchor" href="#Installation">Installation</a><a id="Installation-1"></a><a class="docs-heading-anchor-permalink" href="#Installation" title="Permalink"></a></h3><p>To use Ferrite you first need to install Julia, see <a href="https://julialang.org/">https://julialang.org/</a> for details. Installing Ferrite can then be done from the Pkg REPL; press <code>]</code> at the <code>julia></code> promp to enter <code>pkg></code> mode:</p><pre><code class="nohighlight hljs">pkg> add Ferrite</code></pre><p>This will install Ferrite and all necessary dependencies. Press backspace to get back to the <code>julia></code> prompt. (See the <a href="https://pkgdocs.julialang.org/">documentation for Pkg</a>, Julia's package manager, for more help regarding package installation and project management.)</p><p>Finally, to load Ferrite, use</p><pre><code class="language-julia hljs">using Ferrite</code></pre><p>You are now all set to start using Ferrite!</p><h2 id="Contributing-to-Ferrite"><a class="docs-heading-anchor" href="#Contributing-to-Ferrite">Contributing to Ferrite</a><a id="Contributing-to-Ferrite-1"></a><a class="docs-heading-anchor-permalink" href="#Contributing-to-Ferrite" title="Permalink"></a></h2><p>Ferrite is still under active development. If you find a bug, or have ideas for improvements, you are encouraged to interact with the developers on the <a href="https://github.com/Ferrite-FEM/Ferrite.jl">Ferrite GitHub repository</a>. There is also a thorough contributor guide which can be found in <a href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a>.</p><section class="footnotes is-size-7"><ul><li class="footnote" id="footnote-1"><a class="tag is-link" href="#citeref-1">1</a>The organization of the document follows the <a href="https://diataxis.fr">Diátaxis Framework</a>.</li></ul></section></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="changelog/">Changelog »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Home · Ferrite.jl</title><meta name="title" content="Home · Ferrite.jl"/><meta property="og:title" content="Home · Ferrite.jl"/><meta property="twitter:title" content="Home · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/"/><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="search_index.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script><link href="assets/custom.css" rel="stylesheet" type="text/css"/><link href="assets/citations.css" rel="stylesheet" type="text/css"/><link href="assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href><img src="assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href>Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li class="is-active"><a class="tocitem" href>Home</a><ul class="internal"><li><a class="tocitem" href="#How-the-documentation-is-organized"><span>How the documentation is organized</span></a></li><li><a class="tocitem" href="#Getting-started"><span>Getting started</span></a></li><li><a class="tocitem" href="#Contributing-to-Ferrite"><span>Contributing to Ferrite</span></a></li></ul></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="topics/">Topic guide overview</a></li><li><a class="tocitem" href="topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="topics/assembly/">Assembly</a></li><li><a class="tocitem" href="topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="topics/constraints/">Constraints</a></li><li><a class="tocitem" href="topics/grid/">Grid</a></li><li><a class="tocitem" href="topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="reference/">Reference overview</a></li><li><a class="tocitem" href="reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="reference/assembly/">Assembly</a></li><li><a class="tocitem" href="reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="reference/export/">Postprocessing</a></li><li><a class="tocitem" href="reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="howto/">How-to guide overview</a></li><li><a class="tocitem" href="howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="gallery/">Code gallery</a></li><li><a class="tocitem" href="devdocs/">Developer documentation</a></li><li><a class="tocitem" href="cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Home</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Home</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Ferrite.jl"><a class="docs-heading-anchor" href="#Ferrite.jl">Ferrite.jl</a><a id="Ferrite.jl-1"></a><a class="docs-heading-anchor-permalink" href="#Ferrite.jl" title="Permalink"></a></h1><p>Welcome to the documentation for Ferrite.jl! Ferrite is a finite element toolbox that provides functionalities to implement finite element analysis in <a href="https://github.com/JuliaLang/julia">Julia</a>. The aim is to be i) general, ii) performant, and iii) to keep mathematical abstractions.</p><div class="admonition is-info"><header class="admonition-header">Upgrading code from version 0.3.x to version 1.0</header><div class="admonition-body"><p>Ferrite version 1.0 contains a number of breaking changes compared to version 0.3.x. The <a href="changelog/">Changelog</a> documents all changes and there is also a section specifically for <a href="changelog/#Upgrading-code-from-Ferrite-0.3-to-1.0">Upgrading code from Ferrite 0.3 to 1.0</a>.</p></div></div><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>Please help improve this documentation – if something confuses you, chances are you're not alone. It's easy to do as you read along: just click on the "Edit on GitHub" link at the top of each page, and then <a href="https://help.github.com/articles/editing-files-in-another-user-s-repository/">edit the files directly in your browser</a>. Your changes will be vetted by developers before becoming permanent, so don't worry about whether you might say something wrong. See also <a href="#Contributing-to-Ferrite">Contributing to Ferrite</a> for more details.</p></div></div><h2 id="How-the-documentation-is-organized"><a class="docs-heading-anchor" href="#How-the-documentation-is-organized">How the documentation is organized</a><a id="How-the-documentation-is-organized-1"></a><a class="docs-heading-anchor-permalink" href="#How-the-documentation-is-organized" title="Permalink"></a></h2><p>This high level view of the documentation structure will help you find what you are looking for. The document is organized as follows<sup class="footnote-reference"><a id="citeref-1" href="#footnote-1">[1]</a></sup>:</p><ul><li><a href="tutorials/"><strong>Tutorials</strong></a> are thoroughly documented examples which guides you through the process of solving partial differential equations using Ferrite.</li><li><a href="topics/"><strong>Topic guides</strong></a> contains more in-depth explanations and discussions about finite element programming concepts and ideas, and specifically how these are realized in Ferrite.</li><li><a href="reference/"><strong>Reference</strong></a> contains the technical API reference of functions and methods (e.g. the documentation strings).</li><li><a href="howto/"><strong>How-to guides</strong></a> will guide you through the steps involved in addressing common tasks and use-cases. These usually build on top of the tutorials and thus assume basic knowledge of how Ferrite works.</li></ul><p>The four sections above form the main user-facing parts of the documentation. In addition, the document also contain the following sections:</p><ul><li><a href="gallery/"><strong>Code gallery</strong></a> contain user contributed example programs showcasing what can be done with Ferrite.</li><li><a href="changelog/"><strong>Changelog</strong></a> contain release notes and information about how to upgrade between releases.</li><li><a href="devdocs/"><strong>Developer documentation</strong></a> contain documentation of Ferrite internal code and is mainly targeted at developers of Ferrite.</li></ul><h2 id="Getting-started"><a class="docs-heading-anchor" href="#Getting-started">Getting started</a><a id="Getting-started-1"></a><a class="docs-heading-anchor-permalink" href="#Getting-started" title="Permalink"></a></h2><p>As a new user of Ferrite it is suggested to start working with the tutorials before using Ferrite to tackle the specific equation you ultimately want to solve. The tutorials start with explaining the basic concepts and then increase in complexity. Understanding the first tutorial program, <a href="tutorials/heat_equation/#tutorial-heat-equation">solving the heat equation</a>, is essential in order to understand how Ferrite works. Already this rather simple program discusses many of the important concepts. See the <a href="tutorials/#Tutorials">tutorials overview</a> for suggestion on how to progress to more advanced usage.</p><h3 id="Getting-help"><a class="docs-heading-anchor" href="#Getting-help">Getting help</a><a id="Getting-help-1"></a><a class="docs-heading-anchor-permalink" href="#Getting-help" title="Permalink"></a></h3><p>If you have questions about Ferrite it is suggested to use the <code>#ferrite-fem</code> channel on the <a href="https://julialang.org/slack/">Julia Slack</a>, or the <code>#Ferrite.jl</code> stream on <a href="https://julialang.zulipchat.com/">Zulip</a>. Alternatively you can use the <a href="https://github.com/Ferrite-FEM/Ferrite.jl/discussions">discussion forum</a> on the GitHub repository.</p><h3 id="Installation"><a class="docs-heading-anchor" href="#Installation">Installation</a><a id="Installation-1"></a><a class="docs-heading-anchor-permalink" href="#Installation" title="Permalink"></a></h3><p>To use Ferrite you first need to install Julia, see <a href="https://julialang.org/">https://julialang.org/</a> for details. Installing Ferrite can then be done from the Pkg REPL; press <code>]</code> at the <code>julia></code> promp to enter <code>pkg></code> mode:</p><pre><code class="nohighlight hljs">pkg> add Ferrite</code></pre><p>This will install Ferrite and all necessary dependencies. Press backspace to get back to the <code>julia></code> prompt. (See the <a href="https://pkgdocs.julialang.org/">documentation for Pkg</a>, Julia's package manager, for more help regarding package installation and project management.)</p><p>Finally, to load Ferrite, use</p><pre><code class="language-julia hljs">using Ferrite</code></pre><p>You are now all set to start using Ferrite!</p><h2 id="Contributing-to-Ferrite"><a class="docs-heading-anchor" href="#Contributing-to-Ferrite">Contributing to Ferrite</a><a id="Contributing-to-Ferrite-1"></a><a class="docs-heading-anchor-permalink" href="#Contributing-to-Ferrite" title="Permalink"></a></h2><p>Ferrite is still under active development. If you find a bug, or have ideas for improvements, you are encouraged to interact with the developers on the <a href="https://github.com/Ferrite-FEM/Ferrite.jl">Ferrite GitHub repository</a>. There is also a thorough contributor guide which can be found in <a href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a>.</p><section class="footnotes is-size-7"><ul><li class="footnote" id="footnote-1"><a class="tag is-link" href="#citeref-1">1</a>The organization of the document follows the <a href="https://diataxis.fr">Diátaxis Framework</a>.</li></ul></section></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="changelog/">Changelog »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/assembly/index.html b/dev/reference/assembly/index.html index a14588b2e3..a2ee96289e 100644 --- a/dev/reference/assembly/index.html +++ b/dev/reference/assembly/index.html @@ -1,6 +1,6 @@ <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Assembly · Ferrite.jl</title><meta name="title" content="Assembly · Ferrite.jl"/><meta property="og:title" content="Assembly · Ferrite.jl"/><meta property="twitter:title" content="Assembly · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/assembly/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/assembly/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/assembly/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li><a class="tocitem" href="../fevalues/">FEValues</a></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li class="is-active"><a class="tocitem" href>Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li><a class="tocitem" href="../utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Assembly</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Assembly</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/assembly.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Assembly"><a class="docs-heading-anchor" href="#Assembly">Assembly</a><a id="Assembly-1"></a><a class="docs-heading-anchor-permalink" href="#Assembly" title="Permalink"></a></h1><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.start_assemble" href="#Ferrite.start_assemble"><code>Ferrite.start_assemble</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">start_assemble(K::AbstractSparseMatrixCSC; fillzero::Bool=true) -> CSCAssembler start_assemble(K::AbstractSparseMatrixCSC, f::Vector; fillzero::Bool=true) -> CSCAssembler</code></pre><p>Create a <code>CSCAssembler</code> from the matrix <code>K</code> and optional vector <code>f</code>.</p><pre><code class="nohighlight hljs">start_assemble(K::Symmetric{AbstractSparseMatrixCSC}; fillzero::Bool=true) -> SymmetricCSCAssembler -start_assemble(K::Symmetric{AbstractSparseMatrixCSC}, f::Vector=Td[]; fillzero::Bool=true) -> SymmetricCSCAssembler</code></pre><p>Create a <code>SymmetricCSCAssembler</code> from the matrix <code>K</code> and optional vector <code>f</code>.</p><p><code>CSCAssembler</code> and <code>SymmetricCSCAssembler</code> allocate workspace necessary for efficient matrix assembly. To assemble the contribution from an element, use <a href="#Ferrite.assemble!"><code>assemble!</code></a>.</p><p>The keyword argument <code>fillzero</code> can be set to <code>false</code> if <code>K</code> and <code>f</code> should not be zeroed out, but instead keep their current values.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L207-L224">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.assemble!" href="#Ferrite.assemble!"><code>Ferrite.assemble!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">assemble!(a::COOAssembler, dofs, Ke) -assemble!(a::COOAssembler, dofs, Ke, fe)</code></pre><p>Assembles the element matrix <code>Ke</code> and element vector <code>fe</code> into <code>a</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L70-L75">source</a></section><section><div><pre><code class="language-julia hljs">assemble!(a::COOAssembler, rowdofs, coldofs, Ke)</code></pre><p>Assembles the matrix <code>Ke</code> into <code>a</code> according to the dofs specified by <code>rowdofs</code> and <code>coldofs</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L99-L103">source</a></section><section><div><pre><code class="language-julia hljs">assemble!(g, dofs, ge)</code></pre><p>Assembles the element residual <code>ge</code> into the global residual vector <code>g</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L149-L153">source</a></section><section><div><pre><code class="language-julia hljs">assemble!(A::AbstractAssembler, dofs::AbstractVector{Int}, Ke::AbstractMatrix) -assemble!(A::AbstractAssembler, dofs::AbstractVector{Int}, Ke::AbstractMatrix, fe::AbstractVector)</code></pre><p>Assemble the element stiffness matrix <code>Ke</code> (and optional force vector <code>fe</code>) into the global stiffness (and force) in <code>A</code>, given the element degrees of freedom <code>dofs</code>.</p><p>This is equivalent to <code>K[dofs, dofs] += Ke</code> and <code>f[dofs] += fe</code>, where <code>K</code> is the global stiffness matrix and <code>f</code> the global force/residual vector, but more efficient.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L240-L249">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.finish_assemble" href="#Ferrite.finish_assemble"><code>Ferrite.finish_assemble</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">finish_assemble(a::COOAssembler) -> K, f</code></pre><p>Finalize the assembly and return the sparse matrix <code>K::SparseMatrixCSC</code> and vector <code>f::Vector</code>. If the assembler have not been used for vector assembly, <code>f</code> is an empty vector.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L121-L127">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../sparsity_pattern/">« Sparsity pattern and sparse matrices</a><a class="docs-footer-nextpage" href="../boundary_conditions/">Boundary conditions »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +start_assemble(K::Symmetric{AbstractSparseMatrixCSC}, f::Vector=Td[]; fillzero::Bool=true) -> SymmetricCSCAssembler</code></pre><p>Create a <code>SymmetricCSCAssembler</code> from the matrix <code>K</code> and optional vector <code>f</code>.</p><p><code>CSCAssembler</code> and <code>SymmetricCSCAssembler</code> allocate workspace necessary for efficient matrix assembly. To assemble the contribution from an element, use <a href="#Ferrite.assemble!"><code>assemble!</code></a>.</p><p>The keyword argument <code>fillzero</code> can be set to <code>false</code> if <code>K</code> and <code>f</code> should not be zeroed out, but instead keep their current values.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L207-L224">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.assemble!" href="#Ferrite.assemble!"><code>Ferrite.assemble!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">assemble!(a::COOAssembler, dofs, Ke) +assemble!(a::COOAssembler, dofs, Ke, fe)</code></pre><p>Assembles the element matrix <code>Ke</code> and element vector <code>fe</code> into <code>a</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L70-L75">source</a></section><section><div><pre><code class="language-julia hljs">assemble!(a::COOAssembler, rowdofs, coldofs, Ke)</code></pre><p>Assembles the matrix <code>Ke</code> into <code>a</code> according to the dofs specified by <code>rowdofs</code> and <code>coldofs</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L99-L103">source</a></section><section><div><pre><code class="language-julia hljs">assemble!(g, dofs, ge)</code></pre><p>Assembles the element residual <code>ge</code> into the global residual vector <code>g</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L149-L153">source</a></section><section><div><pre><code class="language-julia hljs">assemble!(A::AbstractAssembler, dofs::AbstractVector{Int}, Ke::AbstractMatrix) +assemble!(A::AbstractAssembler, dofs::AbstractVector{Int}, Ke::AbstractMatrix, fe::AbstractVector)</code></pre><p>Assemble the element stiffness matrix <code>Ke</code> (and optional force vector <code>fe</code>) into the global stiffness (and force) in <code>A</code>, given the element degrees of freedom <code>dofs</code>.</p><p>This is equivalent to <code>K[dofs, dofs] += Ke</code> and <code>f[dofs] += fe</code>, where <code>K</code> is the global stiffness matrix and <code>f</code> the global force/residual vector, but more efficient.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L240-L249">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.finish_assemble" href="#Ferrite.finish_assemble"><code>Ferrite.finish_assemble</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">finish_assemble(a::COOAssembler) -> K, f</code></pre><p>Finalize the assembly and return the sparse matrix <code>K::SparseMatrixCSC</code> and vector <code>f::Vector</code>. If the assembler have not been used for vector assembly, <code>f</code> is an empty vector.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L121-L127">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../sparsity_pattern/">« Sparsity pattern and sparse matrices</a><a class="docs-footer-nextpage" href="../boundary_conditions/">Boundary conditions »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/boundary_conditions/index.html b/dev/reference/boundary_conditions/index.html index 68a215a1f8..c71b9c03a7 100644 --- a/dev/reference/boundary_conditions/index.html +++ b/dev/reference/boundary_conditions/index.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Boundary conditions · Ferrite.jl</title><meta name="title" content="Boundary conditions · Ferrite.jl"/><meta property="og:title" content="Boundary conditions · Ferrite.jl"/><meta property="twitter:title" content="Boundary conditions · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/boundary_conditions/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/boundary_conditions/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/boundary_conditions/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li><a class="tocitem" href="../fevalues/">FEValues</a></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li class="is-active"><a class="tocitem" href>Boundary conditions</a><ul class="internal"><li class="toplevel"><a class="tocitem" href="#Initial-conditions"><span>Initial conditions</span></a></li></ul></li><li><a class="tocitem" href="../grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li><a class="tocitem" href="../utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Boundary conditions</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Boundary conditions</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/boundary_conditions.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Boundary-conditions"><a class="docs-heading-anchor" href="#Boundary-conditions">Boundary conditions</a><a id="Boundary-conditions-1"></a><a class="docs-heading-anchor-permalink" href="#Boundary-conditions" title="Permalink"></a></h1><ul><li><a href="#Ferrite.ConstraintHandler"><code>Ferrite.ConstraintHandler</code></a></li><li><a href="#Ferrite.Dirichlet"><code>Ferrite.Dirichlet</code></a></li><li><a href="#Ferrite.PeriodicDirichlet"><code>Ferrite.PeriodicDirichlet</code></a></li><li><a href="#Ferrite.RHSData"><code>Ferrite.RHSData</code></a></li><li><a href="#Ferrite.add!"><code>Ferrite.add!</code></a></li><li><a href="#Ferrite.apply!"><code>Ferrite.apply!</code></a></li><li><a href="#Ferrite.apply_analytical!"><code>Ferrite.apply_analytical!</code></a></li><li><a href="#Ferrite.apply_assemble!"><code>Ferrite.apply_assemble!</code></a></li><li><a href="#Ferrite.apply_local!"><code>Ferrite.apply_local!</code></a></li><li><a href="#Ferrite.apply_rhs!"><code>Ferrite.apply_rhs!</code></a></li><li><a href="#Ferrite.apply_zero!"><code>Ferrite.apply_zero!</code></a></li><li><a href="#Ferrite.close!"><code>Ferrite.close!</code></a></li><li><a href="#Ferrite.collect_periodic_facets"><code>Ferrite.collect_periodic_facets</code></a></li><li><a href="#Ferrite.collect_periodic_facets!"><code>Ferrite.collect_periodic_facets!</code></a></li><li><a href="#Ferrite.get_rhs_data"><code>Ferrite.get_rhs_data</code></a></li><li><a href="#Ferrite.update!"><code>Ferrite.update!</code></a></li></ul><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.ConstraintHandler" href="#Ferrite.ConstraintHandler"><code>Ferrite.ConstraintHandler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ConstraintHandler([T=Float64], dh::AbstractDofHandler)</code></pre><p>A collection of constraints associated with the dof handler <code>dh</code>. <code>T</code> is the numeric type for stored values.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L78-L83">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.Dirichlet" href="#Ferrite.Dirichlet"><code>Ferrite.Dirichlet</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Dirichlet(u::Symbol, ∂Ω::AbstractVecOrSet, f::Function, components=nothing)</code></pre><p>Create a Dirichlet boundary condition on <code>u</code> on the <code>∂Ω</code> part of the boundary. <code>f</code> is a function of the form <code>f(x)</code> or <code>f(x, t)</code> where <code>x</code> is the spatial coordinate and <code>t</code> is the current time, and returns the prescribed value. <code>components</code> specify the components of <code>u</code> that are prescribed by this condition. By default all components of <code>u</code> are prescribed.</p><p>The set, <code>∂Ω</code>, can be an <code>AbstractSet</code> or <code>AbstractVector</code> with elements of type <a href="../grid/#Ferrite.FacetIndex"><code>FacetIndex</code></a>, <a href="../grid/#Ferrite.FaceIndex"><code>FaceIndex</code></a>, <a href="../grid/#Ferrite.EdgeIndex"><code>EdgeIndex</code></a>, <a href="../grid/#Ferrite.VertexIndex"><code>VertexIndex</code></a>, or <code>Int</code>. For most cases, the element type is <code>FacetIndex</code>, as shown below. To constrain a single point, using <code>VertexIndex</code> is recommended, but it is also possible to constrain a specific nodes by giving the node numbers via <code>Int</code> elements. To constrain e.g. an edge in 3d <code>EdgeIndex</code> elements can be given.</p><p>For example, here we create a Dirichlet condition for the <code>:u</code> field, on the facetset called <code>∂Ω</code> and the value given by the <code>sin</code> function:</p><p><em>Examples</em></p><pre><code class="language-julia hljs"># Obtain the facetset from the grid +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Boundary conditions · Ferrite.jl</title><meta name="title" content="Boundary conditions · Ferrite.jl"/><meta property="og:title" content="Boundary conditions · Ferrite.jl"/><meta property="twitter:title" content="Boundary conditions · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/boundary_conditions/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/boundary_conditions/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/boundary_conditions/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li><a class="tocitem" href="../fevalues/">FEValues</a></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li class="is-active"><a class="tocitem" href>Boundary conditions</a><ul class="internal"><li class="toplevel"><a class="tocitem" href="#Initial-conditions"><span>Initial conditions</span></a></li></ul></li><li><a class="tocitem" href="../grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li><a class="tocitem" href="../utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Boundary conditions</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Boundary conditions</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/boundary_conditions.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Boundary-conditions"><a class="docs-heading-anchor" href="#Boundary-conditions">Boundary conditions</a><a id="Boundary-conditions-1"></a><a class="docs-heading-anchor-permalink" href="#Boundary-conditions" title="Permalink"></a></h1><ul><li><a href="#Ferrite.ConstraintHandler"><code>Ferrite.ConstraintHandler</code></a></li><li><a href="#Ferrite.Dirichlet"><code>Ferrite.Dirichlet</code></a></li><li><a href="#Ferrite.PeriodicDirichlet"><code>Ferrite.PeriodicDirichlet</code></a></li><li><a href="#Ferrite.RHSData"><code>Ferrite.RHSData</code></a></li><li><a href="#Ferrite.add!"><code>Ferrite.add!</code></a></li><li><a href="#Ferrite.apply!"><code>Ferrite.apply!</code></a></li><li><a href="#Ferrite.apply_analytical!"><code>Ferrite.apply_analytical!</code></a></li><li><a href="#Ferrite.apply_assemble!"><code>Ferrite.apply_assemble!</code></a></li><li><a href="#Ferrite.apply_local!"><code>Ferrite.apply_local!</code></a></li><li><a href="#Ferrite.apply_rhs!"><code>Ferrite.apply_rhs!</code></a></li><li><a href="#Ferrite.apply_zero!"><code>Ferrite.apply_zero!</code></a></li><li><a href="#Ferrite.close!"><code>Ferrite.close!</code></a></li><li><a href="#Ferrite.collect_periodic_facets"><code>Ferrite.collect_periodic_facets</code></a></li><li><a href="#Ferrite.collect_periodic_facets!"><code>Ferrite.collect_periodic_facets!</code></a></li><li><a href="#Ferrite.get_rhs_data"><code>Ferrite.get_rhs_data</code></a></li><li><a href="#Ferrite.update!"><code>Ferrite.update!</code></a></li></ul><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.ConstraintHandler" href="#Ferrite.ConstraintHandler"><code>Ferrite.ConstraintHandler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ConstraintHandler([T=Float64], dh::AbstractDofHandler)</code></pre><p>A collection of constraints associated with the dof handler <code>dh</code>. <code>T</code> is the numeric type for stored values.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L78-L83">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.Dirichlet" href="#Ferrite.Dirichlet"><code>Ferrite.Dirichlet</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Dirichlet(u::Symbol, ∂Ω::AbstractVecOrSet, f::Function, components=nothing)</code></pre><p>Create a Dirichlet boundary condition on <code>u</code> on the <code>∂Ω</code> part of the boundary. <code>f</code> is a function of the form <code>f(x)</code> or <code>f(x, t)</code> where <code>x</code> is the spatial coordinate and <code>t</code> is the current time, and returns the prescribed value. <code>components</code> specify the components of <code>u</code> that are prescribed by this condition. By default all components of <code>u</code> are prescribed.</p><p>The set, <code>∂Ω</code>, can be an <code>AbstractSet</code> or <code>AbstractVector</code> with elements of type <a href="../grid/#Ferrite.FacetIndex"><code>FacetIndex</code></a>, <a href="../grid/#Ferrite.FaceIndex"><code>FaceIndex</code></a>, <a href="../grid/#Ferrite.EdgeIndex"><code>EdgeIndex</code></a>, <a href="../grid/#Ferrite.VertexIndex"><code>VertexIndex</code></a>, or <code>Int</code>. For most cases, the element type is <code>FacetIndex</code>, as shown below. To constrain a single point, using <code>VertexIndex</code> is recommended, but it is also possible to constrain a specific nodes by giving the node numbers via <code>Int</code> elements. To constrain e.g. an edge in 3d <code>EdgeIndex</code> elements can be given.</p><p>For example, here we create a Dirichlet condition for the <code>:u</code> field, on the facetset called <code>∂Ω</code> and the value given by the <code>sin</code> function:</p><p><em>Examples</em></p><pre><code class="language-julia hljs"># Obtain the facetset from the grid ∂Ω = getfacetset(grid, "boundary-1") # Prescribe scalar field :s on ∂Ω to sin(t) @@ -9,26 +9,26 @@ dbc = Dirichlet(:v, ∂Ω, x -> 0 * x) # Prescribe component 2 and 3 of vector field :v on ∂Ω to [sin(t), cos(t)] -dbc = Dirichlet(:v, ∂Ω, (x, t) -> [sin(t), cos(t)], [2, 3])</code></pre><p><code>Dirichlet</code> boundary conditions are added to a <a href="#Ferrite.ConstraintHandler"><code>ConstraintHandler</code></a> which applies the condition via <a href="#Ferrite.apply!"><code>apply!</code></a> and/or <a href="#Ferrite.apply_zero!"><code>apply_zero!</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L2-L40">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PeriodicDirichlet" href="#Ferrite.PeriodicDirichlet"><code>Ferrite.PeriodicDirichlet</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PeriodicDirichlet(u::Symbol, facet_mapping, components=nothing) +dbc = Dirichlet(:v, ∂Ω, (x, t) -> [sin(t), cos(t)], [2, 3])</code></pre><p><code>Dirichlet</code> boundary conditions are added to a <a href="#Ferrite.ConstraintHandler"><code>ConstraintHandler</code></a> which applies the condition via <a href="#Ferrite.apply!"><code>apply!</code></a> and/or <a href="#Ferrite.apply_zero!"><code>apply_zero!</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L2-L40">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PeriodicDirichlet" href="#Ferrite.PeriodicDirichlet"><code>Ferrite.PeriodicDirichlet</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PeriodicDirichlet(u::Symbol, facet_mapping, components=nothing) PeriodicDirichlet(u::Symbol, facet_mapping, R::AbstractMatrix, components=nothing) -PeriodicDirichlet(u::Symbol, facet_mapping, f::Function, components=nothing)</code></pre><p>Create a periodic Dirichlet boundary condition for the field <code>u</code> on the facet-pairs given in <code>facet_mapping</code>. The mapping can be computed with <a href="#Ferrite.collect_periodic_facets"><code>collect_periodic_facets</code></a>. The constraint ensures that degrees-of-freedom on the mirror facet are constrained to the corresponding degrees-of-freedom on the image facet. <code>components</code> specify the components of <code>u</code> that are prescribed by this condition. By default all components of <code>u</code> are prescribed.</p><p>If the mapping is not aligned with the coordinate axis (e.g. rotated) a rotation matrix <code>R</code> should be passed to the constructor. This matrix rotates dofs on the mirror facet to the image facet. Note that this is only applicable for vector-valued problems.</p><p>To construct an inhomogeneous periodic constraint it is possible to pass a function <code>f</code>. Note that this is currently only supported when the periodicity is aligned with the coordinate axes.</p><p>See the manual section on <a href="../../topics/boundary_conditions/#Periodic-boundary-conditions">Periodic boundary conditions</a> for more information.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L896-L916">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.collect_periodic_facets" href="#Ferrite.collect_periodic_facets"><code>Ferrite.collect_periodic_facets</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">collect_periodic_facets(grid::Grid, mset, iset, transform::Union{Function,Nothing}=nothing; tol=1e-12)</code></pre><p>Match all mirror facets in <code>mset</code> with a corresponding image facet in <code>iset</code>. Return a dictionary which maps each mirror facet to a image facet. The result can then be passed to <a href="#Ferrite.PeriodicDirichlet"><code>PeriodicDirichlet</code></a>.</p><p><code>mset</code> and <code>iset</code> can be given as a <code>String</code> (an existing facet set in the grid) or as a <code>AbstractSet{FacetIndex}</code> directly.</p><p>By default this function looks for a matching facet in the directions of the coordinate system. For other types of periodicities the <code>transform</code> function can be used. The <code>transform</code> function is applied on the coordinates of the image facet, and is expected to transform the coordinates to the matching locations in the mirror set.</p><p>The keyword <code>tol</code> specifies the tolerance (i.e. distance and deviation in facet-normals) between a image-facet and mirror-facet, for them to be considered matched.</p><p>See also: <a href="#Ferrite.collect_periodic_facets!"><code>collect_periodic_facets!</code></a>, <a href="#Ferrite.PeriodicDirichlet"><code>PeriodicDirichlet</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L1258-L1277">source</a></section><section><div><pre><code class="language-julia hljs">collect_periodic_facets(grid::Grid, all_facets::Union{AbstractSet{FacetIndex},String,Nothing}=nothing; tol=1e-12)</code></pre><p>Split all facets in <code>all_facets</code> into image and mirror sets. For each matching pair, the facet located further along the vector <code>(1, 1, 1)</code> becomes the image facet.</p><p>If no set is given, all facets on the outer boundary of the grid (i.e. all facets that do not have a neighbor) is used.</p><p>See also: <a href="#Ferrite.collect_periodic_facets!"><code>collect_periodic_facets!</code></a>, <a href="#Ferrite.PeriodicDirichlet"><code>PeriodicDirichlet</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L1282-L1292">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.collect_periodic_facets!" href="#Ferrite.collect_periodic_facets!"><code>Ferrite.collect_periodic_facets!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">collect_periodic_facets!(facet_map::Vector{PeriodicFacetPair}, grid::Grid, mset, iset, transform::Union{Function,Nothing}; tol=1e-12)</code></pre><p>Same as <a href="#Ferrite.collect_periodic_facets"><code>collect_periodic_facets</code></a> but adds all matches to the existing <code>facet_map</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L1298-L1302">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add!" href="#Ferrite.add!"><code>Ferrite.add!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add!(sdh::SubDofHandler, name::Symbol, ip::Interpolation)</code></pre><p>Add a field called <code>name</code> approximated by <code>ip</code> to the SubDofHandler <code>sdh</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L259-L263">source</a></section><section><div><pre><code class="language-julia hljs">add!(dh::DofHandler, name::Symbol, ip::Interpolation)</code></pre><p>Add a field called <code>name</code> approximated by <code>ip</code> to the DofHandler <code>dh</code>.</p><p>The field is added to all cells of the underlying grid, use <a href="../dofhandler/#Ferrite.SubDofHandler"><code>SubDofHandler</code></a>s if the grid contains multiple cell types, or to add the field to subset of all the cells.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L298-L306">source</a></section><section><div><pre><code class="language-julia hljs">add!(ch::ConstraintHandler, ac::AffineConstraint)</code></pre><p>Add the <code>AffineConstraint</code> to the <code>ConstraintHandler</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L265-L269">source</a></section><section><div><pre><code class="language-julia hljs">add!(ch::ConstraintHandler, dbc::Dirichlet)</code></pre><p>Add a <code>Dirichlet</code> boundary condition to the <code>ConstraintHandler</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L818-L822">source</a></section><section><div><pre><code class="language-julia hljs">add!(proj::L2Projector, set::AbstractVecOrSet{Int}, ip::Interpolation; - qr_rhs, [qr_lhs])</code></pre><p>Add an interpolation <code>ip</code> on the cells in <code>set</code> to the <code>L2Projector</code> <code>proj</code>.</p><ul><li><code>qr_rhs</code> sets the quadrature rule used to later integrate the right-hand-side of the projection equation, when calling <a href="../export/#Ferrite.project"><code>project</code></a>. It should match the quadrature points used when creating the quadrature-point variables to project.</li><li>The <em>optional</em> <code>qr_lhs</code> sets the quadrature rule used to integrate the left-hand-side of the projection equation, and defaults to a quadrature rule that integrates the mass-matrix exactly for the given interpolation <code>ip</code>.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/L2_projection.jl#L94-L106">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.close!" href="#Ferrite.close!"><code>Ferrite.close!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">close!(dh::AbstractDofHandler)</code></pre><p>Closes <code>dh</code> and creates degrees of freedom for each cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L328-L332">source</a></section><section><div><pre><code class="language-julia hljs">close!(ch::ConstraintHandler)</code></pre><p>Close and finalize the <code>ConstraintHandler</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L206-L210">source</a></section><section><div><pre><code class="language-julia hljs">close!(proj::L2Projector)</code></pre><p>Close <code>proj</code> which assembles and calculates the left-hand-side of the projection equation, before doing a Cholesky factorization of the mass-matrix.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/L2_projection.jl#L126-L131">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.update!" href="#Ferrite.update!"><code>Ferrite.update!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">update!(ch::ConstraintHandler, time::Real=0.0)</code></pre><p>Update time-dependent inhomogeneities for the new time. This calls <code>f(x)</code> or <code>f(x, t)</code> when applicable, where <code>f</code> is the function(s) corresponding to the constraints in the handler, to compute the inhomogeneities.</p><p>Note that this is called implicitly in <code>close!(::ConstraintHandler)</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L397-L405">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply!" href="#Ferrite.apply!"><code>Ferrite.apply!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply!(K::SparseMatrixCSC, rhs::AbstractVector, ch::ConstraintHandler)</code></pre><p>Adjust the matrix <code>K</code> and right hand side <code>rhs</code> to account for the Dirichlet boundary conditions specified in <code>ch</code> such that <code>K \ rhs</code> gives the expected solution.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p><code>apply!(K, rhs, ch)</code> essentially calculates</p><pre><code class="language-julia hljs">rhs[free] = rhs[free] - K[constrained, constrained] * a[constrained]</code></pre><p>where <code>a[constrained]</code> are the inhomogeneities. Consequently, the sign of <code>rhs</code> matters (in contrast with <code>apply_zero!</code>).</p></div></div><pre><code class="language-julia hljs">apply!(v::AbstractVector, ch::ConstraintHandler)</code></pre><p>Apply Dirichlet boundary conditions and affine constraints, specified in <code>ch</code>, to the solution vector <code>v</code>.</p><p><strong>Examples</strong></p><pre><code class="language-julia hljs">K, f = assemble_system(...) # Assemble system +PeriodicDirichlet(u::Symbol, facet_mapping, f::Function, components=nothing)</code></pre><p>Create a periodic Dirichlet boundary condition for the field <code>u</code> on the facet-pairs given in <code>facet_mapping</code>. The mapping can be computed with <a href="#Ferrite.collect_periodic_facets"><code>collect_periodic_facets</code></a>. The constraint ensures that degrees-of-freedom on the mirror facet are constrained to the corresponding degrees-of-freedom on the image facet. <code>components</code> specify the components of <code>u</code> that are prescribed by this condition. By default all components of <code>u</code> are prescribed.</p><p>If the mapping is not aligned with the coordinate axis (e.g. rotated) a rotation matrix <code>R</code> should be passed to the constructor. This matrix rotates dofs on the mirror facet to the image facet. Note that this is only applicable for vector-valued problems.</p><p>To construct an inhomogeneous periodic constraint it is possible to pass a function <code>f</code>. Note that this is currently only supported when the periodicity is aligned with the coordinate axes.</p><p>See the manual section on <a href="../../topics/boundary_conditions/#Periodic-boundary-conditions">Periodic boundary conditions</a> for more information.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L896-L916">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.collect_periodic_facets" href="#Ferrite.collect_periodic_facets"><code>Ferrite.collect_periodic_facets</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">collect_periodic_facets(grid::Grid, mset, iset, transform::Union{Function,Nothing}=nothing; tol=1e-12)</code></pre><p>Match all mirror facets in <code>mset</code> with a corresponding image facet in <code>iset</code>. Return a dictionary which maps each mirror facet to a image facet. The result can then be passed to <a href="#Ferrite.PeriodicDirichlet"><code>PeriodicDirichlet</code></a>.</p><p><code>mset</code> and <code>iset</code> can be given as a <code>String</code> (an existing facet set in the grid) or as a <code>AbstractSet{FacetIndex}</code> directly.</p><p>By default this function looks for a matching facet in the directions of the coordinate system. For other types of periodicities the <code>transform</code> function can be used. The <code>transform</code> function is applied on the coordinates of the image facet, and is expected to transform the coordinates to the matching locations in the mirror set.</p><p>The keyword <code>tol</code> specifies the tolerance (i.e. distance and deviation in facet-normals) between a image-facet and mirror-facet, for them to be considered matched.</p><p>See also: <a href="#Ferrite.collect_periodic_facets!"><code>collect_periodic_facets!</code></a>, <a href="#Ferrite.PeriodicDirichlet"><code>PeriodicDirichlet</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L1258-L1277">source</a></section><section><div><pre><code class="language-julia hljs">collect_periodic_facets(grid::Grid, all_facets::Union{AbstractSet{FacetIndex},String,Nothing}=nothing; tol=1e-12)</code></pre><p>Split all facets in <code>all_facets</code> into image and mirror sets. For each matching pair, the facet located further along the vector <code>(1, 1, 1)</code> becomes the image facet.</p><p>If no set is given, all facets on the outer boundary of the grid (i.e. all facets that do not have a neighbor) is used.</p><p>See also: <a href="#Ferrite.collect_periodic_facets!"><code>collect_periodic_facets!</code></a>, <a href="#Ferrite.PeriodicDirichlet"><code>PeriodicDirichlet</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L1282-L1292">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.collect_periodic_facets!" href="#Ferrite.collect_periodic_facets!"><code>Ferrite.collect_periodic_facets!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">collect_periodic_facets!(facet_map::Vector{PeriodicFacetPair}, grid::Grid, mset, iset, transform::Union{Function,Nothing}; tol=1e-12)</code></pre><p>Same as <a href="#Ferrite.collect_periodic_facets"><code>collect_periodic_facets</code></a> but adds all matches to the existing <code>facet_map</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L1298-L1302">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add!" href="#Ferrite.add!"><code>Ferrite.add!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add!(sdh::SubDofHandler, name::Symbol, ip::Interpolation)</code></pre><p>Add a field called <code>name</code> approximated by <code>ip</code> to the SubDofHandler <code>sdh</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L259-L263">source</a></section><section><div><pre><code class="language-julia hljs">add!(dh::DofHandler, name::Symbol, ip::Interpolation)</code></pre><p>Add a field called <code>name</code> approximated by <code>ip</code> to the DofHandler <code>dh</code>.</p><p>The field is added to all cells of the underlying grid, use <a href="../dofhandler/#Ferrite.SubDofHandler"><code>SubDofHandler</code></a>s if the grid contains multiple cell types, or to add the field to subset of all the cells.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L298-L306">source</a></section><section><div><pre><code class="language-julia hljs">add!(ch::ConstraintHandler, ac::AffineConstraint)</code></pre><p>Add the <code>AffineConstraint</code> to the <code>ConstraintHandler</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L265-L269">source</a></section><section><div><pre><code class="language-julia hljs">add!(ch::ConstraintHandler, dbc::Dirichlet)</code></pre><p>Add a <code>Dirichlet</code> boundary condition to the <code>ConstraintHandler</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L818-L822">source</a></section><section><div><pre><code class="language-julia hljs">add!(proj::L2Projector, set::AbstractVecOrSet{Int}, ip::Interpolation; + qr_rhs, [qr_lhs])</code></pre><p>Add an interpolation <code>ip</code> on the cells in <code>set</code> to the <code>L2Projector</code> <code>proj</code>.</p><ul><li><code>qr_rhs</code> sets the quadrature rule used to later integrate the right-hand-side of the projection equation, when calling <a href="../export/#Ferrite.project"><code>project</code></a>. It should match the quadrature points used when creating the quadrature-point variables to project.</li><li>The <em>optional</em> <code>qr_lhs</code> sets the quadrature rule used to integrate the left-hand-side of the projection equation, and defaults to a quadrature rule that integrates the mass-matrix exactly for the given interpolation <code>ip</code>.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/L2_projection.jl#L94-L106">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.close!" href="#Ferrite.close!"><code>Ferrite.close!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">close!(dh::AbstractDofHandler)</code></pre><p>Closes <code>dh</code> and creates degrees of freedom for each cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L328-L332">source</a></section><section><div><pre><code class="language-julia hljs">close!(ch::ConstraintHandler)</code></pre><p>Close and finalize the <code>ConstraintHandler</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L206-L210">source</a></section><section><div><pre><code class="language-julia hljs">close!(proj::L2Projector)</code></pre><p>Close <code>proj</code> which assembles and calculates the left-hand-side of the projection equation, before doing a Cholesky factorization of the mass-matrix.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/L2_projection.jl#L126-L131">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.update!" href="#Ferrite.update!"><code>Ferrite.update!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">update!(ch::ConstraintHandler, time::Real=0.0)</code></pre><p>Update time-dependent inhomogeneities for the new time. This calls <code>f(x)</code> or <code>f(x, t)</code> when applicable, where <code>f</code> is the function(s) corresponding to the constraints in the handler, to compute the inhomogeneities.</p><p>Note that this is called implicitly in <code>close!(::ConstraintHandler)</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L397-L405">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply!" href="#Ferrite.apply!"><code>Ferrite.apply!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply!(K::SparseMatrixCSC, rhs::AbstractVector, ch::ConstraintHandler)</code></pre><p>Adjust the matrix <code>K</code> and right hand side <code>rhs</code> to account for the Dirichlet boundary conditions specified in <code>ch</code> such that <code>K \ rhs</code> gives the expected solution.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p><code>apply!(K, rhs, ch)</code> essentially calculates</p><pre><code class="language-julia hljs">rhs[free] = rhs[free] - K[constrained, constrained] * a[constrained]</code></pre><p>where <code>a[constrained]</code> are the inhomogeneities. Consequently, the sign of <code>rhs</code> matters (in contrast with <code>apply_zero!</code>).</p></div></div><pre><code class="language-julia hljs">apply!(v::AbstractVector, ch::ConstraintHandler)</code></pre><p>Apply Dirichlet boundary conditions and affine constraints, specified in <code>ch</code>, to the solution vector <code>v</code>.</p><p><strong>Examples</strong></p><pre><code class="language-julia hljs">K, f = assemble_system(...) # Assemble system apply!(K, f, ch) # Adjust K and f to account for boundary conditions u = K \ f # Solve the system, u should be "approximately correct" -apply!(u, ch) # Explicitly make sure bcs are correct</code></pre><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The last operation is not strictly necessary since the boundary conditions should already be fulfilled after <code>apply!(K, f, ch)</code>. However, solvers of linear systems are not exact, and thus <code>apply!(u, ch)</code> can be used to make sure the boundary conditions are fulfilled exactly.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L507-L542">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply_zero!" href="#Ferrite.apply_zero!"><code>Ferrite.apply_zero!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply_zero!(K::SparseMatrixCSC, rhs::AbstractVector, ch::ConstraintHandler)</code></pre><p>Adjust the matrix <code>K</code> and the right hand side <code>rhs</code> to account for prescribed Dirichlet boundary conditions and affine constraints such that <code>du = K \ rhs</code> gives the expected result (e.g. <code>du</code> zero for all prescribed degrees of freedom).</p><pre><code class="nohighlight hljs">apply_zero!(v::AbstractVector, ch::ConstraintHandler)</code></pre><p>Zero-out values in <code>v</code> corresponding to prescribed degrees of freedom and update values prescribed by affine constraints, such that if <code>a</code> fulfills the constraints, <code>a ± v</code> also will.</p><p>These methods are typically used in e.g. a Newton solver where the increment, <code>du</code>, should be prescribed to zero even for non-homogeneouos boundary conditions.</p><p>See also: <a href="#Ferrite.apply!"><code>apply!</code></a>.</p><p><strong>Examples</strong></p><pre><code class="language-julia hljs">u = un + Δu # Current guess +apply!(u, ch) # Explicitly make sure bcs are correct</code></pre><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The last operation is not strictly necessary since the boundary conditions should already be fulfilled after <code>apply!(K, f, ch)</code>. However, solvers of linear systems are not exact, and thus <code>apply!(u, ch)</code> can be used to make sure the boundary conditions are fulfilled exactly.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L507-L542">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply_zero!" href="#Ferrite.apply_zero!"><code>Ferrite.apply_zero!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply_zero!(K::SparseMatrixCSC, rhs::AbstractVector, ch::ConstraintHandler)</code></pre><p>Adjust the matrix <code>K</code> and the right hand side <code>rhs</code> to account for prescribed Dirichlet boundary conditions and affine constraints such that <code>du = K \ rhs</code> gives the expected result (e.g. <code>du</code> zero for all prescribed degrees of freedom).</p><pre><code class="nohighlight hljs">apply_zero!(v::AbstractVector, ch::ConstraintHandler)</code></pre><p>Zero-out values in <code>v</code> corresponding to prescribed degrees of freedom and update values prescribed by affine constraints, such that if <code>a</code> fulfills the constraints, <code>a ± v</code> also will.</p><p>These methods are typically used in e.g. a Newton solver where the increment, <code>du</code>, should be prescribed to zero even for non-homogeneouos boundary conditions.</p><p>See also: <a href="#Ferrite.apply!"><code>apply!</code></a>.</p><p><strong>Examples</strong></p><pre><code class="language-julia hljs">u = un + Δu # Current guess K, g = assemble_system(...) # Assemble residual and tangent for current guess apply_zero!(K, g, ch) # Adjust tangent and residual to take prescribed values into account ΔΔu = K \ g # Compute the (negative) increment, prescribed values are "approximately" zero apply_zero!(ΔΔu, ch) # Make sure values are exactly zero -Δu .-= ΔΔu # Update current guess</code></pre><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The last call to <code>apply_zero!</code> is only strictly necessary for affine constraints. However, even if the Dirichlet boundary conditions should be fulfilled after <code>apply!(K, g, ch)</code>, solvers of linear systems are not exact. <code>apply!(ΔΔu, ch)</code> can be used to make sure the values for the prescribed degrees of freedom are fulfilled exactly.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L545-L579">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply_local!" href="#Ferrite.apply_local!"><code>Ferrite.apply_local!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply_local!( +Δu .-= ΔΔu # Update current guess</code></pre><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The last call to <code>apply_zero!</code> is only strictly necessary for affine constraints. However, even if the Dirichlet boundary conditions should be fulfilled after <code>apply!(K, g, ch)</code>, solvers of linear systems are not exact. <code>apply!(ΔΔu, ch)</code> can be used to make sure the values for the prescribed degrees of freedom are fulfilled exactly.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L545-L579">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply_local!" href="#Ferrite.apply_local!"><code>Ferrite.apply_local!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply_local!( local_matrix::AbstractMatrix, local_vector::AbstractVector, global_dofs::AbstractVector, ch::ConstraintHandler; apply_zero::Bool = false -)</code></pre><p>Similar to <a href="#Ferrite.apply!"><code>apply!</code></a> but perform condensation of constrained degrees-of-freedom locally in <code>local_matrix</code> and <code>local_vector</code> <em>before</em> they are to be assembled into the global system.</p><p>When the keyword argument <code>apply_zero</code> is <code>true</code> all inhomogeneities are set to <code>0</code> (cf. <a href="#Ferrite.apply!"><code>apply!</code></a> vs <a href="#Ferrite.apply_zero!"><code>apply_zero!</code></a>).</p><p>This method can only be used if all constraints are "local", i.e. no constraint couples with dofs outside of the element dofs (<code>global_dofs</code>) since condensation of such constraints requires writing to entries in the global matrix/vector. For such a case, <a href="#Ferrite.apply_assemble!"><code>apply_assemble!</code></a> can be used instead.</p><p>Note that this method is destructive since it, by definition, modifies <code>local_matrix</code> and <code>local_vector</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L1582-L1603">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply_assemble!" href="#Ferrite.apply_assemble!"><code>Ferrite.apply_assemble!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply_assemble!( +)</code></pre><p>Similar to <a href="#Ferrite.apply!"><code>apply!</code></a> but perform condensation of constrained degrees-of-freedom locally in <code>local_matrix</code> and <code>local_vector</code> <em>before</em> they are to be assembled into the global system.</p><p>When the keyword argument <code>apply_zero</code> is <code>true</code> all inhomogeneities are set to <code>0</code> (cf. <a href="#Ferrite.apply!"><code>apply!</code></a> vs <a href="#Ferrite.apply_zero!"><code>apply_zero!</code></a>).</p><p>This method can only be used if all constraints are "local", i.e. no constraint couples with dofs outside of the element dofs (<code>global_dofs</code>) since condensation of such constraints requires writing to entries in the global matrix/vector. For such a case, <a href="#Ferrite.apply_assemble!"><code>apply_assemble!</code></a> can be used instead.</p><p>Note that this method is destructive since it, by definition, modifies <code>local_matrix</code> and <code>local_vector</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L1582-L1603">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply_assemble!" href="#Ferrite.apply_assemble!"><code>Ferrite.apply_assemble!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply_assemble!( assembler::AbstractAssembler, ch::ConstraintHandler, global_dofs::AbstractVector{Int}, local_matrix::AbstractMatrix, local_vector::AbstractVector; apply_zero::Bool = false -)</code></pre><p>Assemble <code>local_matrix</code> and <code>local_vector</code> into the global system in <code>assembler</code> by first doing constraint condensation using <a href="#Ferrite.apply_local!"><code>apply_local!</code></a>.</p><p>This is similar to using <a href="#Ferrite.apply_local!"><code>apply_local!</code></a> followed by <a href="../assembly/#Ferrite.assemble!"><code>assemble!</code></a> with the advantage that non-local constraints can be handled, since this method can write to entries of the global matrix and vector outside of the indices in <code>global_dofs</code>.</p><p>When the keyword argument <code>apply_zero</code> is <code>true</code> all inhomogeneities are set to <code>0</code> (cf. <a href="#Ferrite.apply!"><code>apply!</code></a> vs <a href="#Ferrite.apply_zero!"><code>apply_zero!</code></a>).</p><p>Note that this method is destructive since it modifies <code>local_matrix</code> and <code>local_vector</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/assembler.jl#L345-L364">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_rhs_data" href="#Ferrite.get_rhs_data"><code>Ferrite.get_rhs_data</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">get_rhs_data(ch::ConstraintHandler, A::SparseMatrixCSC) -> RHSData</code></pre><p>Returns the needed <a href="#Ferrite.RHSData"><code>RHSData</code></a> for <a href="#Ferrite.apply_rhs!"><code>apply_rhs!</code></a>.</p><p>This must be used when the same stiffness matrix is reused for multiple steps, for example when timestepping, with different non-homogeneouos Dirichlet boundary conditions.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L121-L129">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply_rhs!" href="#Ferrite.apply_rhs!"><code>Ferrite.apply_rhs!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply_rhs!(data::RHSData, f::AbstractVector, ch::ConstraintHandler, applyzero::Bool=false)</code></pre><p>Applies the boundary condition to the right-hand-side vector without modifying the stiffness matrix.</p><p>See also: <a href="#Ferrite.get_rhs_data"><code>get_rhs_data</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L136-L142">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RHSData" href="#Ferrite.RHSData"><code>Ferrite.RHSData</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RHSData</code></pre><p>Stores the constrained columns and mean of the diagonal of stiffness matrix <code>A</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/ConstraintHandler.jl#L111-L115">source</a></section></article><h1 id="Initial-conditions"><a class="docs-heading-anchor" href="#Initial-conditions">Initial conditions</a><a id="Initial-conditions-1"></a><a class="docs-heading-anchor-permalink" href="#Initial-conditions" title="Permalink"></a></h1><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply_analytical!" href="#Ferrite.apply_analytical!"><code>Ferrite.apply_analytical!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply_analytical!( +)</code></pre><p>Assemble <code>local_matrix</code> and <code>local_vector</code> into the global system in <code>assembler</code> by first doing constraint condensation using <a href="#Ferrite.apply_local!"><code>apply_local!</code></a>.</p><p>This is similar to using <a href="#Ferrite.apply_local!"><code>apply_local!</code></a> followed by <a href="../assembly/#Ferrite.assemble!"><code>assemble!</code></a> with the advantage that non-local constraints can be handled, since this method can write to entries of the global matrix and vector outside of the indices in <code>global_dofs</code>.</p><p>When the keyword argument <code>apply_zero</code> is <code>true</code> all inhomogeneities are set to <code>0</code> (cf. <a href="#Ferrite.apply!"><code>apply!</code></a> vs <a href="#Ferrite.apply_zero!"><code>apply_zero!</code></a>).</p><p>Note that this method is destructive since it modifies <code>local_matrix</code> and <code>local_vector</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/assembler.jl#L345-L364">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_rhs_data" href="#Ferrite.get_rhs_data"><code>Ferrite.get_rhs_data</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">get_rhs_data(ch::ConstraintHandler, A::SparseMatrixCSC) -> RHSData</code></pre><p>Returns the needed <a href="#Ferrite.RHSData"><code>RHSData</code></a> for <a href="#Ferrite.apply_rhs!"><code>apply_rhs!</code></a>.</p><p>This must be used when the same stiffness matrix is reused for multiple steps, for example when timestepping, with different non-homogeneouos Dirichlet boundary conditions.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L121-L129">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply_rhs!" href="#Ferrite.apply_rhs!"><code>Ferrite.apply_rhs!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply_rhs!(data::RHSData, f::AbstractVector, ch::ConstraintHandler, applyzero::Bool=false)</code></pre><p>Applies the boundary condition to the right-hand-side vector without modifying the stiffness matrix.</p><p>See also: <a href="#Ferrite.get_rhs_data"><code>get_rhs_data</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L136-L142">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RHSData" href="#Ferrite.RHSData"><code>Ferrite.RHSData</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RHSData</code></pre><p>Stores the constrained columns and mean of the diagonal of stiffness matrix <code>A</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/ConstraintHandler.jl#L111-L115">source</a></section></article><h1 id="Initial-conditions"><a class="docs-heading-anchor" href="#Initial-conditions">Initial conditions</a><a id="Initial-conditions-1"></a><a class="docs-heading-anchor-permalink" href="#Initial-conditions" title="Permalink"></a></h1><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.apply_analytical!" href="#Ferrite.apply_analytical!"><code>Ferrite.apply_analytical!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">apply_analytical!( a::AbstractVector, dh::AbstractDofHandler, fieldname::Symbol, - f::Function, cellset=1:getncells(get_grid(dh)))</code></pre><p>Apply a solution <code>f(x)</code> by modifying the values in the degree of freedom vector <code>a</code> pertaining to the field <code>fieldname</code> for all cells in <code>cellset</code>. The function <code>f(x)</code> are given the spatial coordinate of the degree of freedom. For scalar fields, <code>f(x)::Number</code>, and for vector fields with dimension <code>dim</code>, <code>f(x)::Vec{dim}</code>.</p><p>This function can be used to apply initial conditions for time dependent problems.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>This function only works for standard nodal finite element interpolations when the function value at the (algebraic) node is equal to the corresponding degree of freedom value. This holds for e.g. Lagrange and Serendipity interpolations, including sub- and superparametric elements.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/apply_analytical.jl#L7-L27">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../assembly/">« Assembly</a><a class="docs-footer-nextpage" href="../grid/">Grid & AbstractGrid »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + f::Function, cellset=1:getncells(get_grid(dh)))</code></pre><p>Apply a solution <code>f(x)</code> by modifying the values in the degree of freedom vector <code>a</code> pertaining to the field <code>fieldname</code> for all cells in <code>cellset</code>. The function <code>f(x)</code> are given the spatial coordinate of the degree of freedom. For scalar fields, <code>f(x)::Number</code>, and for vector fields with dimension <code>dim</code>, <code>f(x)::Vec{dim}</code>.</p><p>This function can be used to apply initial conditions for time dependent problems.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>This function only works for standard nodal finite element interpolations when the function value at the (algebraic) node is equal to the corresponding degree of freedom value. This holds for e.g. Lagrange and Serendipity interpolations, including sub- and superparametric elements.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/apply_analytical.jl#L7-L27">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../assembly/">« Assembly</a><a class="docs-footer-nextpage" href="../grid/">Grid & AbstractGrid »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/dofhandler/index.html b/dev/reference/dofhandler/index.html index 6c40fc547e..bbbc1acf76 100644 --- a/dev/reference/dofhandler/index.html +++ b/dev/reference/dofhandler/index.html @@ -4,7 +4,7 @@ ip_p = Lagrange{RefTriangle, 1}() # scalar interpolation for a field p add!(dh, :u, ip_u) add!(dh, :p, ip_p) -close!(dh)</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L111-L132">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.SubDofHandler" href="#Ferrite.SubDofHandler"><code>Ferrite.SubDofHandler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">SubDofHandler(dh::AbstractDofHandler, cellset::AbstractVecOrSet{Int})</code></pre><p>Create an <code>sdh::SubDofHandler</code> from the parent <code>dh</code>, pertaining to the cells in <code>cellset</code>. This allows you to add fields to parts of the domain, or using different interpolations or cell types (e.g. <code>Triangles</code> and <code>Quadrilaterals</code>). All fields and cell types must be the same in one <code>SubDofHandler</code>.</p><p>After construction any number of discrete fields can be added to the SubDofHandler using <a href="../boundary_conditions/#Ferrite.add!"><code>add!</code></a>. Construction is finalized by calling <a href="../boundary_conditions/#Ferrite.close!"><code>close!</code></a> on the parent <code>dh</code>.</p><p><strong>Examples</strong></p><p>We assume we have a <code>grid</code> containing "Triangle" and "Quadrilateral" cells, including the cellsets "triangles" and "quadilaterals" for to these cells.</p><pre><code class="language-julia hljs">dh = DofHandler(grid) +close!(dh)</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L111-L132">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.SubDofHandler" href="#Ferrite.SubDofHandler"><code>Ferrite.SubDofHandler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">SubDofHandler(dh::AbstractDofHandler, cellset::AbstractVecOrSet{Int})</code></pre><p>Create an <code>sdh::SubDofHandler</code> from the parent <code>dh</code>, pertaining to the cells in <code>cellset</code>. This allows you to add fields to parts of the domain, or using different interpolations or cell types (e.g. <code>Triangles</code> and <code>Quadrilaterals</code>). All fields and cell types must be the same in one <code>SubDofHandler</code>.</p><p>After construction any number of discrete fields can be added to the SubDofHandler using <a href="../boundary_conditions/#Ferrite.add!"><code>add!</code></a>. Construction is finalized by calling <a href="../boundary_conditions/#Ferrite.close!"><code>close!</code></a> on the parent <code>dh</code>.</p><p><strong>Examples</strong></p><p>We assume we have a <code>grid</code> containing "Triangle" and "Quadrilateral" cells, including the cellsets "triangles" and "quadilaterals" for to these cells.</p><pre><code class="language-julia hljs">dh = DofHandler(grid) sdh_tri = SubDofHandler(dh, getcellset(grid, "triangles")) ip_tri = Lagrange{RefTriangle, 2}()^2 # vector interpolation for a field u @@ -14,10 +14,10 @@ ip_quad = Lagrange{RefQuadrilateral, 2}()^2 # vector interpolation for a field u add!(sdh_quad, :u, ip_quad) -close!(dh) # Finalize by closing the parent</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L28-L55">source</a></section></article><h2 id="Adding-fields-to-the-DofHandlers"><a class="docs-heading-anchor" href="#Adding-fields-to-the-DofHandlers">Adding fields to the DofHandlers</a><a id="Adding-fields-to-the-DofHandlers-1"></a><a class="docs-heading-anchor-permalink" href="#Adding-fields-to-the-DofHandlers" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add!-Tuple{DofHandler, Symbol, Interpolation}" href="#Ferrite.add!-Tuple{DofHandler, Symbol, Interpolation}"><code>Ferrite.add!</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add!(dh::DofHandler, name::Symbol, ip::Interpolation)</code></pre><p>Add a field called <code>name</code> approximated by <code>ip</code> to the DofHandler <code>dh</code>.</p><p>The field is added to all cells of the underlying grid, use <a href="#Ferrite.SubDofHandler"><code>SubDofHandler</code></a>s if the grid contains multiple cell types, or to add the field to subset of all the cells.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L298-L306">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add!-Tuple{SubDofHandler, Symbol, Interpolation}" href="#Ferrite.add!-Tuple{SubDofHandler, Symbol, Interpolation}"><code>Ferrite.add!</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add!(sdh::SubDofHandler, name::Symbol, ip::Interpolation)</code></pre><p>Add a field called <code>name</code> approximated by <code>ip</code> to the SubDofHandler <code>sdh</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L259-L263">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.close!-Tuple{DofHandler}" href="#Ferrite.close!-Tuple{DofHandler}"><code>Ferrite.close!</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">close!(dh::AbstractDofHandler)</code></pre><p>Closes <code>dh</code> and creates degrees of freedom for each cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L328-L332">source</a></section></article><h2 id="Dof-renumbering"><a class="docs-heading-anchor" href="#Dof-renumbering">Dof renumbering</a><a id="Dof-renumbering-1"></a><a class="docs-heading-anchor-permalink" href="#Dof-renumbering" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.renumber!" href="#Ferrite.renumber!"><code>Ferrite.renumber!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">renumber!(dh::AbstractDofHandler, order) -renumber!(dh::AbstractDofHandler, ch::ConstraintHandler, order)</code></pre><p>Renumber the degrees of freedom in the DofHandler and/or ConstraintHandler according to the ordering <code>order</code>.</p><p><code>order</code> can be given by one of the following options:</p><ul><li>A permutation vector <code>perm::AbstractVector{Int}</code> such that dof <code>i</code> is renumbered to <code>perm[i]</code>.</li><li><a href="#Ferrite.DofOrder.FieldWise"><code>DofOrder.FieldWise()</code></a> for renumbering dofs field wise.</li><li><a href="#Ferrite.DofOrder.ComponentWise"><code>DofOrder.ComponentWise()</code></a> for renumbering dofs component wise.</li><li><code>DofOrder.Ext{T}</code> for "external" renumber permutations, see documentation for <code>DofOrder.Ext</code> for details.</li></ul><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p>The dof numbering in the DofHandler and ConstraintHandler <em>must always be consistent</em>. It is therefore necessary to either renumber <em>before</em> creating the ConstraintHandler in the first place, or to renumber the DofHandler and the ConstraintHandler <em>together</em>.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofRenumbering.jl#L42-L61">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.DofOrder.FieldWise" href="#Ferrite.DofOrder.FieldWise"><code>Ferrite.DofOrder.FieldWise</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">DofOrder.FieldWise() -DofOrder.FieldWise(target_blocks::Vector{Int})</code></pre><p>Dof order passed to <a href="#Ferrite.renumber!"><code>renumber!</code></a> to renumber global dofs field wise resulting in a globally blocked system.</p><p>The default behavior is to group dofs of each field into their own block, with the same order as in the DofHandler. This can be customized by passing a vector of the same length as the total number of fields in the DofHandler (see <code>getfieldnames(dh)</code>) that maps each field to a "target block": to renumber a DofHandler with three fields <code>:u</code>, <code>:v</code>, <code>:w</code> such that dofs for <code>:u</code> and <code>:w</code> end up in the first global block, and dofs for <code>:v</code> in the second global block use <code>DofOrder.FieldWise([1, 2, 1])</code>.</p><p>This renumbering is stable such that the original relative ordering of dofs within each target block is maintained.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofRenumbering.jl#L128-L144">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.DofOrder.ComponentWise" href="#Ferrite.DofOrder.ComponentWise"><code>Ferrite.DofOrder.ComponentWise</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">DofOrder.ComponentWise() -DofOrder.ComponentWise(target_blocks::Vector{Int})</code></pre><p>Dof order passed to <a href="#Ferrite.renumber!"><code>renumber!</code></a> to renumber global dofs component wise resulting in a globally blocked system.</p><p>The default behavior is to group dofs of each component into their own block, with the same order as in the DofHandler. This can be customized by passing a vector of length <code>ncomponents</code> that maps each component to a "target block" (see <a href="#Ferrite.DofOrder.FieldWise"><code>DofOrder.FieldWise</code></a> for details).</p><p>This renumbering is stable such that the original relative ordering of dofs within each target block is maintained.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofRenumbering.jl#L161-L175">source</a></section></article><h2 id="Common-methods"><a class="docs-heading-anchor" href="#Common-methods">Common methods</a><a id="Common-methods-1"></a><a class="docs-heading-anchor-permalink" href="#Common-methods" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.ndofs" href="#Ferrite.ndofs"><code>Ferrite.ndofs</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ndofs(dh::AbstractDofHandler)</code></pre><p>Return the number of degrees of freedom in <code>dh</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L167-L171">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.ndofs_per_cell" href="#Ferrite.ndofs_per_cell"><code>Ferrite.ndofs_per_cell</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ndofs_per_cell(dh::AbstractDofHandler[, cell::Int=1])</code></pre><p>Return the number of degrees of freedom for the cell with index <code>cell</code>.</p><p>See also <a href="#Ferrite.ndofs"><code>ndofs</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L174-L180">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.dof_range" href="#Ferrite.dof_range"><code>Ferrite.dof_range</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">dof_range(sdh::SubDofHandler, field_idx::Int) +close!(dh) # Finalize by closing the parent</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L28-L55">source</a></section></article><h2 id="Adding-fields-to-the-DofHandlers"><a class="docs-heading-anchor" href="#Adding-fields-to-the-DofHandlers">Adding fields to the DofHandlers</a><a id="Adding-fields-to-the-DofHandlers-1"></a><a class="docs-heading-anchor-permalink" href="#Adding-fields-to-the-DofHandlers" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add!-Tuple{DofHandler, Symbol, Interpolation}" href="#Ferrite.add!-Tuple{DofHandler, Symbol, Interpolation}"><code>Ferrite.add!</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add!(dh::DofHandler, name::Symbol, ip::Interpolation)</code></pre><p>Add a field called <code>name</code> approximated by <code>ip</code> to the DofHandler <code>dh</code>.</p><p>The field is added to all cells of the underlying grid, use <a href="#Ferrite.SubDofHandler"><code>SubDofHandler</code></a>s if the grid contains multiple cell types, or to add the field to subset of all the cells.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L298-L306">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add!-Tuple{SubDofHandler, Symbol, Interpolation}" href="#Ferrite.add!-Tuple{SubDofHandler, Symbol, Interpolation}"><code>Ferrite.add!</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add!(sdh::SubDofHandler, name::Symbol, ip::Interpolation)</code></pre><p>Add a field called <code>name</code> approximated by <code>ip</code> to the SubDofHandler <code>sdh</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L259-L263">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.close!-Tuple{DofHandler}" href="#Ferrite.close!-Tuple{DofHandler}"><code>Ferrite.close!</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">close!(dh::AbstractDofHandler)</code></pre><p>Closes <code>dh</code> and creates degrees of freedom for each cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L328-L332">source</a></section></article><h2 id="Dof-renumbering"><a class="docs-heading-anchor" href="#Dof-renumbering">Dof renumbering</a><a id="Dof-renumbering-1"></a><a class="docs-heading-anchor-permalink" href="#Dof-renumbering" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.renumber!" href="#Ferrite.renumber!"><code>Ferrite.renumber!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">renumber!(dh::AbstractDofHandler, order) +renumber!(dh::AbstractDofHandler, ch::ConstraintHandler, order)</code></pre><p>Renumber the degrees of freedom in the DofHandler and/or ConstraintHandler according to the ordering <code>order</code>.</p><p><code>order</code> can be given by one of the following options:</p><ul><li>A permutation vector <code>perm::AbstractVector{Int}</code> such that dof <code>i</code> is renumbered to <code>perm[i]</code>.</li><li><a href="#Ferrite.DofOrder.FieldWise"><code>DofOrder.FieldWise()</code></a> for renumbering dofs field wise.</li><li><a href="#Ferrite.DofOrder.ComponentWise"><code>DofOrder.ComponentWise()</code></a> for renumbering dofs component wise.</li><li><code>DofOrder.Ext{T}</code> for "external" renumber permutations, see documentation for <code>DofOrder.Ext</code> for details.</li></ul><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p>The dof numbering in the DofHandler and ConstraintHandler <em>must always be consistent</em>. It is therefore necessary to either renumber <em>before</em> creating the ConstraintHandler in the first place, or to renumber the DofHandler and the ConstraintHandler <em>together</em>.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofRenumbering.jl#L42-L61">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.DofOrder.FieldWise" href="#Ferrite.DofOrder.FieldWise"><code>Ferrite.DofOrder.FieldWise</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">DofOrder.FieldWise() +DofOrder.FieldWise(target_blocks::Vector{Int})</code></pre><p>Dof order passed to <a href="#Ferrite.renumber!"><code>renumber!</code></a> to renumber global dofs field wise resulting in a globally blocked system.</p><p>The default behavior is to group dofs of each field into their own block, with the same order as in the DofHandler. This can be customized by passing a vector of the same length as the total number of fields in the DofHandler (see <code>getfieldnames(dh)</code>) that maps each field to a "target block": to renumber a DofHandler with three fields <code>:u</code>, <code>:v</code>, <code>:w</code> such that dofs for <code>:u</code> and <code>:w</code> end up in the first global block, and dofs for <code>:v</code> in the second global block use <code>DofOrder.FieldWise([1, 2, 1])</code>.</p><p>This renumbering is stable such that the original relative ordering of dofs within each target block is maintained.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofRenumbering.jl#L128-L144">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.DofOrder.ComponentWise" href="#Ferrite.DofOrder.ComponentWise"><code>Ferrite.DofOrder.ComponentWise</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">DofOrder.ComponentWise() +DofOrder.ComponentWise(target_blocks::Vector{Int})</code></pre><p>Dof order passed to <a href="#Ferrite.renumber!"><code>renumber!</code></a> to renumber global dofs component wise resulting in a globally blocked system.</p><p>The default behavior is to group dofs of each component into their own block, with the same order as in the DofHandler. This can be customized by passing a vector of length <code>ncomponents</code> that maps each component to a "target block" (see <a href="#Ferrite.DofOrder.FieldWise"><code>DofOrder.FieldWise</code></a> for details).</p><p>This renumbering is stable such that the original relative ordering of dofs within each target block is maintained.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofRenumbering.jl#L161-L175">source</a></section></article><h2 id="Common-methods"><a class="docs-heading-anchor" href="#Common-methods">Common methods</a><a id="Common-methods-1"></a><a class="docs-heading-anchor-permalink" href="#Common-methods" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.ndofs" href="#Ferrite.ndofs"><code>Ferrite.ndofs</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ndofs(dh::AbstractDofHandler)</code></pre><p>Return the number of degrees of freedom in <code>dh</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L167-L171">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.ndofs_per_cell" href="#Ferrite.ndofs_per_cell"><code>Ferrite.ndofs_per_cell</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ndofs_per_cell(dh::AbstractDofHandler[, cell::Int=1])</code></pre><p>Return the number of degrees of freedom for the cell with index <code>cell</code>.</p><p>See also <a href="#Ferrite.ndofs"><code>ndofs</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L174-L180">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.dof_range" href="#Ferrite.dof_range"><code>Ferrite.dof_range</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">dof_range(sdh::SubDofHandler, field_idx::Int) dof_range(sdh::SubDofHandler, field_name::Symbol) dof_range(dh:DofHandler, field_name::Symbol)</code></pre><p>Return the local dof range for a given field. The field can be specified by its name or index, where <code>field_idx</code> represents the index of a field within a <code>SubDofHandler</code> and <code>field_idxs</code> is a tuple of the <code>SubDofHandler</code>-index within the <code>DofHandler</code> and the <code>field_idx</code>.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The <code>dof_range</code> of a field can vary between different <code>SubDofHandler</code>s. Therefore, it is advised to use the <code>field_idxs</code> or refer to a given <code>SubDofHandler</code> directly in case several <code>SubDofHandler</code>s exist. Using the <code>field_name</code> will always refer to the first occurrence of <code>field</code> within the <code>DofHandler</code>.</p></div></div><p>Example:</p><pre><code class="language-julia-repl hljs">julia> grid = generate_grid(Triangle, (3, 3)) Grid{2, Triangle, Float64} with 18 Triangle cells and 16 nodes @@ -34,19 +34,19 @@ 1:9 julia> dof_range(dh.subdofhandlers[1], 2) # field :p -10:12</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L850-L885">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.celldofs" href="#Ferrite.celldofs"><code>Ferrite.celldofs</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">celldofs(dh::AbstractDofHandler, i::Int)</code></pre><p>Return a vector with the degrees of freedom that belong to cell <code>i</code>.</p><p>See also <a href="#Ferrite.celldofs!"><code>celldofs!</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L214-L220">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.celldofs!" href="#Ferrite.celldofs!"><code>Ferrite.celldofs!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">celldofs!(global_dofs::Vector{Int}, dh::AbstractDofHandler, i::Int)</code></pre><p>Store the degrees of freedom that belong to cell <code>i</code> in <code>global_dofs</code>.</p><p>See also <a href="#Ferrite.celldofs"><code>celldofs</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L196-L202">source</a></section></article><h1 id="Grid-iterators"><a class="docs-heading-anchor" href="#Grid-iterators">Grid iterators</a><a id="Grid-iterators-1"></a><a class="docs-heading-anchor-permalink" href="#Grid-iterators" title="Permalink"></a></h1><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CellCache" href="#Ferrite.CellCache"><code>Ferrite.CellCache</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">CellCache(grid::Grid) -CellCache(dh::AbstractDofHandler)</code></pre><p>Create a cache object with pre-allocated memory for the nodes, coordinates, and dofs of a cell. The cache is updated for a new cell by calling <code>reinit!(cache, cellid)</code> where <code>cellid::Int</code> is the cell id.</p><p><strong>Methods with <code>CellCache</code></strong></p><ul><li><code>reinit!(cc, i)</code>: reinitialize the cache for cell <code>i</code></li><li><code>cellid(cc)</code>: get the cell id of the currently cached cell</li><li><code>getnodes(cc)</code>: get the global node ids of the cell</li><li><code>getcoordinates(cc)</code>: get the coordinates of the cell</li><li><code>celldofs(cc)</code>: get the global dof ids of the cell</li><li><code>reinit!(fev, cc)</code>: reinitialize <a href="../fevalues/#Ferrite.CellValues"><code>CellValues</code></a> or <a href="../fevalues/#Ferrite.FacetValues"><code>FacetValues</code></a></li></ul><p>See also <a href="#Ferrite.CellIterator"><code>CellIterator</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/iterators.jl#L17-L34">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CellIterator" href="#Ferrite.CellIterator"><code>Ferrite.CellIterator</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">CellIterator(grid::Grid, cellset=1:getncells(grid)) +10:12</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L850-L885">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.celldofs" href="#Ferrite.celldofs"><code>Ferrite.celldofs</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">celldofs(dh::AbstractDofHandler, i::Int)</code></pre><p>Return a vector with the degrees of freedom that belong to cell <code>i</code>.</p><p>See also <a href="#Ferrite.celldofs!"><code>celldofs!</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L214-L220">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.celldofs!" href="#Ferrite.celldofs!"><code>Ferrite.celldofs!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">celldofs!(global_dofs::Vector{Int}, dh::AbstractDofHandler, i::Int)</code></pre><p>Store the degrees of freedom that belong to cell <code>i</code> in <code>global_dofs</code>.</p><p>See also <a href="#Ferrite.celldofs"><code>celldofs</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L196-L202">source</a></section></article><h1 id="Grid-iterators"><a class="docs-heading-anchor" href="#Grid-iterators">Grid iterators</a><a id="Grid-iterators-1"></a><a class="docs-heading-anchor-permalink" href="#Grid-iterators" title="Permalink"></a></h1><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CellCache" href="#Ferrite.CellCache"><code>Ferrite.CellCache</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">CellCache(grid::Grid) +CellCache(dh::AbstractDofHandler)</code></pre><p>Create a cache object with pre-allocated memory for the nodes, coordinates, and dofs of a cell. The cache is updated for a new cell by calling <code>reinit!(cache, cellid)</code> where <code>cellid::Int</code> is the cell id.</p><p><strong>Methods with <code>CellCache</code></strong></p><ul><li><code>reinit!(cc, i)</code>: reinitialize the cache for cell <code>i</code></li><li><code>cellid(cc)</code>: get the cell id of the currently cached cell</li><li><code>getnodes(cc)</code>: get the global node ids of the cell</li><li><code>getcoordinates(cc)</code>: get the coordinates of the cell</li><li><code>celldofs(cc)</code>: get the global dof ids of the cell</li><li><code>reinit!(fev, cc)</code>: reinitialize <a href="../fevalues/#Ferrite.CellValues"><code>CellValues</code></a> or <a href="../fevalues/#Ferrite.FacetValues"><code>FacetValues</code></a></li></ul><p>See also <a href="#Ferrite.CellIterator"><code>CellIterator</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/iterators.jl#L17-L34">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CellIterator" href="#Ferrite.CellIterator"><code>Ferrite.CellIterator</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">CellIterator(grid::Grid, cellset=1:getncells(grid)) CellIterator(dh::AbstractDofHandler, cellset=1:getncells(dh))</code></pre><p>Create a <code>CellIterator</code> to conveniently iterate over all, or a subset, of the cells in a grid. The elements of the iterator are <a href="#Ferrite.CellCache"><code>CellCache</code></a>s which are properly <code>reinit!</code>ialized. See <a href="#Ferrite.CellCache"><code>CellCache</code></a> for more details.</p><p>Looping over a <code>CellIterator</code>, i.e.:</p><pre><code class="language-julia hljs">for cc in CellIterator(grid, cellset) # ... end</code></pre><p>is thus simply convenience for the following equivalent snippet:</p><pre><code class="language-julia hljs">cc = CellCache(grid) for idx in cellset reinit!(cc, idx) # ... -end</code></pre><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p><code>CellIterator</code> is stateful and should not be used for things other than <code>for</code>-looping (e.g. broadcasting over, or collecting the iterator may yield unexpected results).</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/iterators.jl#L213-L238">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FacetCache" href="#Ferrite.FacetCache"><code>Ferrite.FacetCache</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">FacetCache(grid::Grid) -FacetCache(dh::AbstractDofHandler)</code></pre><p>Create a cache object with pre-allocated memory for the nodes, coordinates, and dofs of a cell suitable for looping over <em>facets</em> in a grid. The cache is updated for a new facet by calling <code>reinit!(cache, fi::FacetIndex)</code>.</p><p><strong>Methods with <code>fc::FacetCache</code></strong></p><ul><li><code>reinit!(fc, fi)</code>: reinitialize the cache for facet <code>fi::FacetIndex</code></li><li><code>cellid(fc)</code>: get the current cellid</li><li><code>getnodes(fc)</code>: get the global node ids of the <em>cell</em></li><li><code>getcoordinates(fc)</code>: get the coordinates of the <em>cell</em></li><li><code>celldofs(fc)</code>: get the global dof ids of the <em>cell</em></li><li><code>reinit!(fv, fc)</code>: reinitialize <a href="../fevalues/#Ferrite.FacetValues"><code>FacetValues</code></a></li></ul><p>See also <a href="#Ferrite.FacetIterator"><code>FacetIterator</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/iterators.jl#L100-L117">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FacetIterator" href="#Ferrite.FacetIterator"><code>Ferrite.FacetIterator</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">FacetIterator(gridordh::Union{Grid,AbstractDofHandler}, facetset::AbstractVecOrSet{FacetIndex})</code></pre><p>Create a <code>FacetIterator</code> to conveniently iterate over the faces in <code>facestet</code>. The elements of the iterator are <a href="#Ferrite.FacetCache"><code>FacetCache</code></a>s which are properly <code>reinit!</code>ialized. See <a href="#Ferrite.FacetCache"><code>FacetCache</code></a> for more details.</p><p>Looping over a <code>FacetIterator</code>, i.e.:</p><pre><code class="language-julia hljs">for fc in FacetIterator(grid, facetset) +end</code></pre><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p><code>CellIterator</code> is stateful and should not be used for things other than <code>for</code>-looping (e.g. broadcasting over, or collecting the iterator may yield unexpected results).</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/iterators.jl#L213-L238">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FacetCache" href="#Ferrite.FacetCache"><code>Ferrite.FacetCache</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">FacetCache(grid::Grid) +FacetCache(dh::AbstractDofHandler)</code></pre><p>Create a cache object with pre-allocated memory for the nodes, coordinates, and dofs of a cell suitable for looping over <em>facets</em> in a grid. The cache is updated for a new facet by calling <code>reinit!(cache, fi::FacetIndex)</code>.</p><p><strong>Methods with <code>fc::FacetCache</code></strong></p><ul><li><code>reinit!(fc, fi)</code>: reinitialize the cache for facet <code>fi::FacetIndex</code></li><li><code>cellid(fc)</code>: get the current cellid</li><li><code>getnodes(fc)</code>: get the global node ids of the <em>cell</em></li><li><code>getcoordinates(fc)</code>: get the coordinates of the <em>cell</em></li><li><code>celldofs(fc)</code>: get the global dof ids of the <em>cell</em></li><li><code>reinit!(fv, fc)</code>: reinitialize <a href="../fevalues/#Ferrite.FacetValues"><code>FacetValues</code></a></li></ul><p>See also <a href="#Ferrite.FacetIterator"><code>FacetIterator</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/iterators.jl#L100-L117">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FacetIterator" href="#Ferrite.FacetIterator"><code>Ferrite.FacetIterator</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">FacetIterator(gridordh::Union{Grid,AbstractDofHandler}, facetset::AbstractVecOrSet{FacetIndex})</code></pre><p>Create a <code>FacetIterator</code> to conveniently iterate over the faces in <code>facestet</code>. The elements of the iterator are <a href="#Ferrite.FacetCache"><code>FacetCache</code></a>s which are properly <code>reinit!</code>ialized. See <a href="#Ferrite.FacetCache"><code>FacetCache</code></a> for more details.</p><p>Looping over a <code>FacetIterator</code>, i.e.:</p><pre><code class="language-julia hljs">for fc in FacetIterator(grid, facetset) # ... -end</code></pre><p>is thus simply convenience for the following equivalent snippet: ```julia fc = FacetCache(grid) for faceindex in facetset reinit!(fc, faceindex) # ... end</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/iterators.jl#L275-L295">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.InterfaceCache" href="#Ferrite.InterfaceCache"><code>Ferrite.InterfaceCache</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">InterfaceCache(grid::Grid) -InterfaceCache(dh::AbstractDofHandler)</code></pre><p>Create a cache object with pre-allocated memory for the nodes, coordinates, and dofs of an interface. The cache is updated for a new cell by calling <code>reinit!(cache, facet_a, facet_b)</code> where <code>facet_a::FacetIndex</code> and <code>facet_b::FacetIndex</code> are the two interface facets.</p><p><strong>Struct fields of <code>InterfaceCache</code></strong></p><ul><li><code>ic.a :: FacetCache</code>: facet cache for the first facet of the interface</li><li><code>ic.b :: FacetCache</code>: facet cache for the second facet of the interface</li><li><code>ic.dofs :: Vector{Int}</code>: global dof ids for the interface (union of <code>ic.a.dofs</code> and <code>ic.b.dofs</code>)</li></ul><p><strong>Methods with <code>InterfaceCache</code></strong></p><ul><li><code>reinit!(cache::InterfaceCache, facet_a::FacetIndex, facet_b::FacetIndex)</code>: reinitialize the cache for a new interface</li><li><code>interfacedofs(ic)</code>: get the global dof ids of the interface</li></ul><p>See also <a href="#Ferrite.InterfaceIterator"><code>InterfaceIterator</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/iterators.jl#L148-L166">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.InterfaceIterator" href="#Ferrite.InterfaceIterator"><code>Ferrite.InterfaceIterator</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">InterfaceIterator(grid::Grid, [topology::ExclusiveTopology]) +end</code></pre><p>is thus simply convenience for the following equivalent snippet: ```julia fc = FacetCache(grid) for faceindex in facetset reinit!(fc, faceindex) # ... end</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/iterators.jl#L275-L295">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.InterfaceCache" href="#Ferrite.InterfaceCache"><code>Ferrite.InterfaceCache</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">InterfaceCache(grid::Grid) +InterfaceCache(dh::AbstractDofHandler)</code></pre><p>Create a cache object with pre-allocated memory for the nodes, coordinates, and dofs of an interface. The cache is updated for a new cell by calling <code>reinit!(cache, facet_a, facet_b)</code> where <code>facet_a::FacetIndex</code> and <code>facet_b::FacetIndex</code> are the two interface facets.</p><p><strong>Struct fields of <code>InterfaceCache</code></strong></p><ul><li><code>ic.a :: FacetCache</code>: facet cache for the first facet of the interface</li><li><code>ic.b :: FacetCache</code>: facet cache for the second facet of the interface</li><li><code>ic.dofs :: Vector{Int}</code>: global dof ids for the interface (union of <code>ic.a.dofs</code> and <code>ic.b.dofs</code>)</li></ul><p><strong>Methods with <code>InterfaceCache</code></strong></p><ul><li><code>reinit!(cache::InterfaceCache, facet_a::FacetIndex, facet_b::FacetIndex)</code>: reinitialize the cache for a new interface</li><li><code>interfacedofs(ic)</code>: get the global dof ids of the interface</li></ul><p>See also <a href="#Ferrite.InterfaceIterator"><code>InterfaceIterator</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/iterators.jl#L148-L166">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.InterfaceIterator" href="#Ferrite.InterfaceIterator"><code>Ferrite.InterfaceIterator</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">InterfaceIterator(grid::Grid, [topology::ExclusiveTopology]) InterfaceIterator(dh::AbstractDofHandler, [topology::ExclusiveTopology])</code></pre><p>Create an <code>InterfaceIterator</code> to conveniently iterate over all the interfaces in a grid. The elements of the iterator are <a href="#Ferrite.InterfaceCache"><code>InterfaceCache</code></a>s which are properly <code>reinit!</code>ialized. See <a href="#Ferrite.InterfaceCache"><code>InterfaceCache</code></a> for more details. Looping over an <code>InterfaceIterator</code>, i.e.:</p><pre><code class="language-julia hljs">for ic in InterfaceIterator(grid, topology) # ... end</code></pre><p>is thus simply convenience for the following equivalent snippet for grids of dimensions > 1:</p><pre><code class="language-julia hljs">ic = InterfaceCache(grid) @@ -57,4 +57,4 @@ neighbor_facet = neighbors[1] reinit!(ic, facet, neighbor_facet) # ... -end</code></pre><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p><code>InterfaceIterator</code> is stateful and should not be used for things other than <code>for</code>-looping (e.g. broadcasting over, or collecting the iterator may yield unexpected results).</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/iterators.jl#L316-L344">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../fevalues/">« FEValues</a><a class="docs-footer-nextpage" href="../sparsity_pattern/">Sparsity pattern and sparse matrices »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end</code></pre><div class="admonition is-warning"><header class="admonition-header">Warning</header><div class="admonition-body"><p><code>InterfaceIterator</code> is stateful and should not be used for things other than <code>for</code>-looping (e.g. broadcasting over, or collecting the iterator may yield unexpected results).</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/iterators.jl#L316-L344">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../fevalues/">« FEValues</a><a class="docs-footer-nextpage" href="../sparsity_pattern/">Sparsity pattern and sparse matrices »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/export/index.html b/dev/reference/export/index.html index 90f357cdd7..218570f861 100644 --- a/dev/reference/export/index.html +++ b/dev/reference/export/index.html @@ -15,8 +15,8 @@ end end -projected = project(proj, vals)</code></pre><p>where <code>projected</code> can be used in e.g. <code>evaluate_at_points</code> with the <a href="#Ferrite.PointEvalHandler"><code>PointEvalHandler</code></a>, or with <a href="#Ferrite.evaluate_at_grid_nodes"><code>evaluate_at_grid_nodes</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/L2_projection.jl#L28-L66">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add!-Tuple{L2Projector, Union{AbstractSet{Int64}, AbstractVector{Int64}}, Interpolation}" href="#Ferrite.add!-Tuple{L2Projector, Union{AbstractSet{Int64}, AbstractVector{Int64}}, Interpolation}"><code>Ferrite.add!</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add!(proj::L2Projector, set::AbstractVecOrSet{Int}, ip::Interpolation; - qr_rhs, [qr_lhs])</code></pre><p>Add an interpolation <code>ip</code> on the cells in <code>set</code> to the <code>L2Projector</code> <code>proj</code>.</p><ul><li><code>qr_rhs</code> sets the quadrature rule used to later integrate the right-hand-side of the projection equation, when calling <a href="#Ferrite.project"><code>project</code></a>. It should match the quadrature points used when creating the quadrature-point variables to project.</li><li>The <em>optional</em> <code>qr_lhs</code> sets the quadrature rule used to integrate the left-hand-side of the projection equation, and defaults to a quadrature rule that integrates the mass-matrix exactly for the given interpolation <code>ip</code>.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/L2_projection.jl#L94-L106">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.close!-Tuple{L2Projector}" href="#Ferrite.close!-Tuple{L2Projector}"><code>Ferrite.close!</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">close!(proj::L2Projector)</code></pre><p>Close <code>proj</code> which assembles and calculates the left-hand-side of the projection equation, before doing a Cholesky factorization of the mass-matrix.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/L2_projection.jl#L126-L131">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.L2Projector-Tuple{Interpolation, Ferrite.AbstractGrid}" href="#Ferrite.L2Projector-Tuple{Interpolation, Ferrite.AbstractGrid}"><code>Ferrite.L2Projector</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">L2Projector(ip::Interpolation, grid::AbstractGrid; [qr_lhs], [set])</code></pre><p>A quick way to initiate an <code>L2Projector</code>, add an interpolation <code>ip</code> on the <code>set</code> to it, and then <code>close!</code> it so that it can be used to <code>project</code>. The optional keyword argument <code>set</code> defaults to all cells in the <code>grid</code>, while <code>qr_lhs</code> defaults to a quadrature rule that integrates the mass matrix exactly for the interpolation <code>ip</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/L2_projection.jl#L72-L79">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.project" href="#Ferrite.project"><code>Ferrite.project</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">project(proj::L2Projector, vals, [qr_rhs::QuadratureRule])</code></pre><p>Makes a L2 projection of data <code>vals</code> to the nodes of the grid using the projector <code>proj</code> (see <a href="#Ferrite.L2Projector-Tuple{Ferrite.AbstractGrid}"><code>L2Projector</code></a>).</p><p><code>project</code> integrates the right hand side, and solves the projection <span>$u$</span> from the following projection equation: Find projection <span>$u \in U_h(\Omega) \subset L_2(\Omega)$</span> such that</p><p class="math-container">\[\int v u \ \mathrm{d}\Omega = \int v f \ \mathrm{d}\Omega \quad \forall v \in U_h(\Omega),\]</p><p>where <span>$f \in L_2(\Omega)$</span> is the data to project. The function space <span>$U_h(\Omega)$</span> is the finite element approximation given by the interpolations in <code>proj</code>.</p><p>The data <code>vals</code> should be an <code>AbstractVector</code> or <code>AbstractDict</code> that is indexed by the cell number. Each index in <code>vals</code> should give an <code>AbstractVector</code> with one element for each cell quadrature point.</p><p>If <code>proj</code> was created by calling <code>L2Projector(ip, grid, set)</code>, <code>qr_rhs</code> must be given. Otherwise, this is added for each domain when calling <code>add!(proj, args...)</code>.</p><p>Alternatively, <code>vals</code> can be a matrix, with the column index referring the cell number, and the row index corresponding to quadrature point number. Example (scalar) input data:</p><pre><code class="language-julia hljs">vals = [ +projected = project(proj, vals)</code></pre><p>where <code>projected</code> can be used in e.g. <code>evaluate_at_points</code> with the <a href="#Ferrite.PointEvalHandler"><code>PointEvalHandler</code></a>, or with <a href="#Ferrite.evaluate_at_grid_nodes"><code>evaluate_at_grid_nodes</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/L2_projection.jl#L28-L66">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add!-Tuple{L2Projector, Union{AbstractSet{Int64}, AbstractVector{Int64}}, Interpolation}" href="#Ferrite.add!-Tuple{L2Projector, Union{AbstractSet{Int64}, AbstractVector{Int64}}, Interpolation}"><code>Ferrite.add!</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add!(proj::L2Projector, set::AbstractVecOrSet{Int}, ip::Interpolation; + qr_rhs, [qr_lhs])</code></pre><p>Add an interpolation <code>ip</code> on the cells in <code>set</code> to the <code>L2Projector</code> <code>proj</code>.</p><ul><li><code>qr_rhs</code> sets the quadrature rule used to later integrate the right-hand-side of the projection equation, when calling <a href="#Ferrite.project"><code>project</code></a>. It should match the quadrature points used when creating the quadrature-point variables to project.</li><li>The <em>optional</em> <code>qr_lhs</code> sets the quadrature rule used to integrate the left-hand-side of the projection equation, and defaults to a quadrature rule that integrates the mass-matrix exactly for the given interpolation <code>ip</code>.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/L2_projection.jl#L94-L106">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.close!-Tuple{L2Projector}" href="#Ferrite.close!-Tuple{L2Projector}"><code>Ferrite.close!</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">close!(proj::L2Projector)</code></pre><p>Close <code>proj</code> which assembles and calculates the left-hand-side of the projection equation, before doing a Cholesky factorization of the mass-matrix.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/L2_projection.jl#L126-L131">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.L2Projector-Tuple{Interpolation, Ferrite.AbstractGrid}" href="#Ferrite.L2Projector-Tuple{Interpolation, Ferrite.AbstractGrid}"><code>Ferrite.L2Projector</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">L2Projector(ip::Interpolation, grid::AbstractGrid; [qr_lhs], [set])</code></pre><p>A quick way to initiate an <code>L2Projector</code>, add an interpolation <code>ip</code> on the <code>set</code> to it, and then <code>close!</code> it so that it can be used to <code>project</code>. The optional keyword argument <code>set</code> defaults to all cells in the <code>grid</code>, while <code>qr_lhs</code> defaults to a quadrature rule that integrates the mass matrix exactly for the interpolation <code>ip</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/L2_projection.jl#L72-L79">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.project" href="#Ferrite.project"><code>Ferrite.project</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">project(proj::L2Projector, vals, [qr_rhs::QuadratureRule])</code></pre><p>Makes a L2 projection of data <code>vals</code> to the nodes of the grid using the projector <code>proj</code> (see <a href="#Ferrite.L2Projector-Tuple{Ferrite.AbstractGrid}"><code>L2Projector</code></a>).</p><p><code>project</code> integrates the right hand side, and solves the projection <span>$u$</span> from the following projection equation: Find projection <span>$u \in U_h(\Omega) \subset L_2(\Omega)$</span> such that</p><p class="math-container">\[\int v u \ \mathrm{d}\Omega = \int v f \ \mathrm{d}\Omega \quad \forall v \in U_h(\Omega),\]</p><p>where <span>$f \in L_2(\Omega)$</span> is the data to project. The function space <span>$U_h(\Omega)$</span> is the finite element approximation given by the interpolations in <code>proj</code>.</p><p>The data <code>vals</code> should be an <code>AbstractVector</code> or <code>AbstractDict</code> that is indexed by the cell number. Each index in <code>vals</code> should give an <code>AbstractVector</code> with one element for each cell quadrature point.</p><p>If <code>proj</code> was created by calling <code>L2Projector(ip, grid, set)</code>, <code>qr_rhs</code> must be given. Otherwise, this is added for each domain when calling <code>add!(proj, args...)</code>.</p><p>Alternatively, <code>vals</code> can be a matrix, with the column index referring the cell number, and the row index corresponding to quadrature point number. Example (scalar) input data:</p><pre><code class="language-julia hljs">vals = [ [0.44, 0.98, 0.32], # data for quadrature point 1, 2, 3 of element 1 [0.29, 0.48, 0.55], # data for quadrature point 1, 2, 3 of element 2 # ... @@ -24,19 +24,19 @@ 0.44 0.29 # ... 0.98 0.48 # ... 0.32 0.55 # ... -]</code></pre><p>Supported data types to project are <code>Number</code>s and <code>AbstractTensor</code>s.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The order of the returned data correspond to the order of the <code>L2Projector</code>'s internal <code>DofHandler</code>. The data can be further analyzed with <a href="#Ferrite.evaluate_at_points"><code>evaluate_at_points</code></a> and <a href="#Ferrite.evaluate_at_grid_nodes"><code>evaluate_at_grid_nodes</code></a>. Use <a href="#Ferrite.write_projection"><code>write_projection</code></a> to export the result.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/L2_projection.jl#L196-L241">source</a></section></article><h2 id="Evaluation-at-points"><a class="docs-heading-anchor" href="#Evaluation-at-points">Evaluation at points</a><a id="Evaluation-at-points-1"></a><a class="docs-heading-anchor-permalink" href="#Evaluation-at-points" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.evaluate_at_grid_nodes" href="#Ferrite.evaluate_at_grid_nodes"><code>Ferrite.evaluate_at_grid_nodes</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">evaluate_at_grid_nodes(dh::AbstractDofHandler, u::AbstractVector{T}, fieldname::Symbol) where T</code></pre><p>Evaluate the approximated solution for field <code>fieldname</code> at the node coordinates of the grid given the Dof handler <code>dh</code> and the solution vector <code>u</code>.</p><p>Return a vector of length <code>getnnodes(grid)</code> where entry <code>i</code> contains the evaluation of the approximation in the coordinate of node <code>i</code>. If the field does not live on parts of the grid, the corresponding values for those nodes will be returned as <code>NaN</code>s.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/DofHandler.jl#L918-L927">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PointEvalHandler" href="#Ferrite.PointEvalHandler"><code>Ferrite.PointEvalHandler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PointEvalHandler(grid::Grid, points::AbstractVector{Vec{dim,T}}; kwargs...) where {dim, T}</code></pre><p>The <code>PointEvalHandler</code> can be used for function evaluation in <em>arbitrary points</em> in the domain – not just in quadrature points or nodes.</p><p>The constructor takes a grid and a vector of coordinates for the points. The <code>PointEvalHandler</code> computes i) the corresponding cell, and ii) the (local) coordinate within the cell, for each point. The fields of the <code>PointEvalHandler</code> are:</p><ul><li><code>cells::Vector{Union{Int,Nothing}}</code>: vector with cell IDs for the points, with <code>nothing</code> for points that could not be found.</li><li><code>local_coords::Vector{Union{Vec,Nothing}}</code>: vector with the local coordinates (i.e. coordinates in the reference configuration) for the points, with <code>nothing</code> for points that could not be found.</li></ul><p>There are two ways to use the <code>PointEvalHandler</code> to evaluate functions:</p><ul><li><a href="#Ferrite.evaluate_at_points"><code>evaluate_at_points</code></a>: can be used when the function is described by i) a <code>dh::DofHandler</code> + <code>uh::Vector</code> (for example the FE-solution), or ii) a <code>p::L2Projector</code> + <code>ph::Vector</code> (for projected data).</li><li>Iteration with <a href="#Ferrite.PointIterator"><code>PointIterator</code></a> + <a href="#Ferrite.PointValues"><code>PointValues</code></a>: can be used for more flexible evaluation in the points, for example to compute gradients.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/PointEvalHandler.jl#L7-L29">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.evaluate_at_points" href="#Ferrite.evaluate_at_points"><code>Ferrite.evaluate_at_points</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">evaluate_at_points(ph::PointEvalHandler, dh::AbstractDofHandler, dof_values::Vector{T}, [fieldname::Symbol]) where T -evaluate_at_points(ph::PointEvalHandler, proj::L2Projector, dof_values::Vector{T}) where T</code></pre><p>Return a <code>Vector{T}</code> (for a 1-dimensional field) or a <code>Vector{Vec{fielddim, T}}</code> (for a vector field) with the field values of field <code>fieldname</code> in the points of the <code>PointEvalHandler</code>. The <code>fieldname</code> can be omitted if only one field is stored in <code>dh</code>. The field values are computed based on the <code>dof_values</code> and interpolated to the local coordinates by the function interpolation of the corresponding <code>field</code> stored in the <code>AbstractDofHandler</code> or the <code>L2Projector</code>.</p><p>Points that could not be found in the domain when constructing the <code>PointEvalHandler</code> will have <code>NaN</code>s for the corresponding entries in the output vector.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/PointEvalHandler.jl#L205-L218">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PointValues" href="#Ferrite.PointValues"><code>Ferrite.PointValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PointValues(cv::CellValues) -PointValues([::Type{T}], func_interpol::Interpolation, [geom_interpol::Interpolation])</code></pre><p>Similar to <code>CellValues</code> but with a single updateable "quadrature point". <code>PointValues</code> are used for evaluation of functions/gradients in arbitrary points of the domain together with a <a href="#Ferrite.PointEvalHandler"><code>PointEvalHandler</code></a>.</p><p><code>PointValues</code> can be created from <code>CellValues</code>, or from the interpolations directly.</p><p><code>PointValues</code> are reinitialized like other <code>CellValues</code>, but since the local reference coordinate of the "quadrature point" changes this needs to be passed to <a href="../fevalues/#Ferrite.reinit!"><code>reinit!</code></a>, in addition to the element coordinates: <code>reinit!(pv, coords, local_coord)</code>. Alternatively, it can be reinitialized with a <a href="#Ferrite.PointLocation"><code>PointLocation</code></a> when iterating a <code>PointEvalHandler</code> with a <a href="#Ferrite.PointIterator"><code>PointIterator</code></a>.</p><p>For function/gradient evaluation, <code>PointValues</code> are used in the same way as <code>CellValues</code>, i.e. by using <a href="../fevalues/#Ferrite.function_value"><code>function_value</code></a>, <a href="../fevalues/#Ferrite.function_gradient"><code>function_gradient</code></a>, etc, with the exception that there is no need to specify the quadrature point index (since <code>PointValues</code> only have 1, this is the default).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/PointValues.jl#L1-L21">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PointIterator" href="#Ferrite.PointIterator"><code>Ferrite.PointIterator</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PointIterator(ph::PointEvalHandler)</code></pre><p>Create an iterator over the points in the <a href="#Ferrite.PointEvalHandler"><code>PointEvalHandler</code></a>. The elements of the iterator are either a <a href="#Ferrite.PointLocation"><code>PointLocation</code></a>, if the corresponding point could be found in the grid, or <code>nothing</code>, if the point was not found.</p><p>A <code>PointLocation</code> can be used to query the cell ID with the <code>cellid</code> function, and can be used to reinitialize <a href="#Ferrite.PointValues"><code>PointValues</code></a> with <a href="../fevalues/#Ferrite.reinit!"><code>reinit!</code></a>.</p><p><strong>Examples</strong></p><pre><code class="language-julia hljs">ph = PointEvalHandler(grid, points) +]</code></pre><p>Supported data types to project are <code>Number</code>s and <code>AbstractTensor</code>s.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The order of the returned data correspond to the order of the <code>L2Projector</code>'s internal <code>DofHandler</code>. The data can be further analyzed with <a href="#Ferrite.evaluate_at_points"><code>evaluate_at_points</code></a> and <a href="#Ferrite.evaluate_at_grid_nodes"><code>evaluate_at_grid_nodes</code></a>. Use <a href="#Ferrite.write_projection"><code>write_projection</code></a> to export the result.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/L2_projection.jl#L196-L241">source</a></section></article><h2 id="Evaluation-at-points"><a class="docs-heading-anchor" href="#Evaluation-at-points">Evaluation at points</a><a id="Evaluation-at-points-1"></a><a class="docs-heading-anchor-permalink" href="#Evaluation-at-points" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.evaluate_at_grid_nodes" href="#Ferrite.evaluate_at_grid_nodes"><code>Ferrite.evaluate_at_grid_nodes</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">evaluate_at_grid_nodes(dh::AbstractDofHandler, u::AbstractVector{T}, fieldname::Symbol) where T</code></pre><p>Evaluate the approximated solution for field <code>fieldname</code> at the node coordinates of the grid given the Dof handler <code>dh</code> and the solution vector <code>u</code>.</p><p>Return a vector of length <code>getnnodes(grid)</code> where entry <code>i</code> contains the evaluation of the approximation in the coordinate of node <code>i</code>. If the field does not live on parts of the grid, the corresponding values for those nodes will be returned as <code>NaN</code>s.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/DofHandler.jl#L918-L927">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PointEvalHandler" href="#Ferrite.PointEvalHandler"><code>Ferrite.PointEvalHandler</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PointEvalHandler(grid::Grid, points::AbstractVector{Vec{dim,T}}; kwargs...) where {dim, T}</code></pre><p>The <code>PointEvalHandler</code> can be used for function evaluation in <em>arbitrary points</em> in the domain – not just in quadrature points or nodes.</p><p>The constructor takes a grid and a vector of coordinates for the points. The <code>PointEvalHandler</code> computes i) the corresponding cell, and ii) the (local) coordinate within the cell, for each point. The fields of the <code>PointEvalHandler</code> are:</p><ul><li><code>cells::Vector{Union{Int,Nothing}}</code>: vector with cell IDs for the points, with <code>nothing</code> for points that could not be found.</li><li><code>local_coords::Vector{Union{Vec,Nothing}}</code>: vector with the local coordinates (i.e. coordinates in the reference configuration) for the points, with <code>nothing</code> for points that could not be found.</li></ul><p>There are two ways to use the <code>PointEvalHandler</code> to evaluate functions:</p><ul><li><a href="#Ferrite.evaluate_at_points"><code>evaluate_at_points</code></a>: can be used when the function is described by i) a <code>dh::DofHandler</code> + <code>uh::Vector</code> (for example the FE-solution), or ii) a <code>p::L2Projector</code> + <code>ph::Vector</code> (for projected data).</li><li>Iteration with <a href="#Ferrite.PointIterator"><code>PointIterator</code></a> + <a href="#Ferrite.PointValues"><code>PointValues</code></a>: can be used for more flexible evaluation in the points, for example to compute gradients.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/PointEvalHandler.jl#L7-L29">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.evaluate_at_points" href="#Ferrite.evaluate_at_points"><code>Ferrite.evaluate_at_points</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">evaluate_at_points(ph::PointEvalHandler, dh::AbstractDofHandler, dof_values::Vector{T}, [fieldname::Symbol]) where T +evaluate_at_points(ph::PointEvalHandler, proj::L2Projector, dof_values::Vector{T}) where T</code></pre><p>Return a <code>Vector{T}</code> (for a 1-dimensional field) or a <code>Vector{Vec{fielddim, T}}</code> (for a vector field) with the field values of field <code>fieldname</code> in the points of the <code>PointEvalHandler</code>. The <code>fieldname</code> can be omitted if only one field is stored in <code>dh</code>. The field values are computed based on the <code>dof_values</code> and interpolated to the local coordinates by the function interpolation of the corresponding <code>field</code> stored in the <code>AbstractDofHandler</code> or the <code>L2Projector</code>.</p><p>Points that could not be found in the domain when constructing the <code>PointEvalHandler</code> will have <code>NaN</code>s for the corresponding entries in the output vector.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/PointEvalHandler.jl#L205-L218">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PointValues" href="#Ferrite.PointValues"><code>Ferrite.PointValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PointValues(cv::CellValues) +PointValues([::Type{T}], func_interpol::Interpolation, [geom_interpol::Interpolation])</code></pre><p>Similar to <code>CellValues</code> but with a single updateable "quadrature point". <code>PointValues</code> are used for evaluation of functions/gradients in arbitrary points of the domain together with a <a href="#Ferrite.PointEvalHandler"><code>PointEvalHandler</code></a>.</p><p><code>PointValues</code> can be created from <code>CellValues</code>, or from the interpolations directly.</p><p><code>PointValues</code> are reinitialized like other <code>CellValues</code>, but since the local reference coordinate of the "quadrature point" changes this needs to be passed to <a href="../fevalues/#Ferrite.reinit!"><code>reinit!</code></a>, in addition to the element coordinates: <code>reinit!(pv, coords, local_coord)</code>. Alternatively, it can be reinitialized with a <a href="#Ferrite.PointLocation"><code>PointLocation</code></a> when iterating a <code>PointEvalHandler</code> with a <a href="#Ferrite.PointIterator"><code>PointIterator</code></a>.</p><p>For function/gradient evaluation, <code>PointValues</code> are used in the same way as <code>CellValues</code>, i.e. by using <a href="../fevalues/#Ferrite.function_value"><code>function_value</code></a>, <a href="../fevalues/#Ferrite.function_gradient"><code>function_gradient</code></a>, etc, with the exception that there is no need to specify the quadrature point index (since <code>PointValues</code> only have 1, this is the default).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/PointValues.jl#L1-L21">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PointIterator" href="#Ferrite.PointIterator"><code>Ferrite.PointIterator</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PointIterator(ph::PointEvalHandler)</code></pre><p>Create an iterator over the points in the <a href="#Ferrite.PointEvalHandler"><code>PointEvalHandler</code></a>. The elements of the iterator are either a <a href="#Ferrite.PointLocation"><code>PointLocation</code></a>, if the corresponding point could be found in the grid, or <code>nothing</code>, if the point was not found.</p><p>A <code>PointLocation</code> can be used to query the cell ID with the <code>cellid</code> function, and can be used to reinitialize <a href="#Ferrite.PointValues"><code>PointValues</code></a> with <a href="../fevalues/#Ferrite.reinit!"><code>reinit!</code></a>.</p><p><strong>Examples</strong></p><pre><code class="language-julia hljs">ph = PointEvalHandler(grid, points) for point in PointIterator(ph) point === nothing && continue # Skip any points that weren't found reinit!(pointvalues, point) # Update pointvalues # ... -end</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/PointEvalHandler.jl#L330-L350">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PointLocation" href="#Ferrite.PointLocation"><code>Ferrite.PointLocation</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PointLocation</code></pre><p>Element of a <a href="#Ferrite.PointIterator"><code>PointIterator</code></a>, typically used to reinitialize <a href="#Ferrite.PointValues"><code>PointValues</code></a>. Fields:</p><ul><li><code>cid::Int</code>: ID of the cell containing the point</li><li><code>local_coord::Vec</code>: the local (reference) coordinate of the point</li><li><code>coords::Vector{Vec}</code>: the coordinates of the cell</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/PointEvalHandler.jl#L364-L372">source</a></section></article><h2 id="VTK-export"><a class="docs-heading-anchor" href="#VTK-export">VTK export</a><a id="VTK-export-1"></a><a class="docs-heading-anchor-permalink" href="#VTK-export" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.VTKGridFile" href="#Ferrite.VTKGridFile"><code>Ferrite.VTKGridFile</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">VTKGridFile(filename::AbstractString, grid::AbstractGrid; kwargs...) +end</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/PointEvalHandler.jl#L330-L350">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.PointLocation" href="#Ferrite.PointLocation"><code>Ferrite.PointLocation</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">PointLocation</code></pre><p>Element of a <a href="#Ferrite.PointIterator"><code>PointIterator</code></a>, typically used to reinitialize <a href="#Ferrite.PointValues"><code>PointValues</code></a>. Fields:</p><ul><li><code>cid::Int</code>: ID of the cell containing the point</li><li><code>local_coord::Vec</code>: the local (reference) coordinate of the point</li><li><code>coords::Vector{Vec}</code>: the coordinates of the cell</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/PointEvalHandler.jl#L364-L372">source</a></section></article><h2 id="VTK-export"><a class="docs-heading-anchor" href="#VTK-export">VTK export</a><a id="VTK-export-1"></a><a class="docs-heading-anchor-permalink" href="#VTK-export" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.VTKGridFile" href="#Ferrite.VTKGridFile"><code>Ferrite.VTKGridFile</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">VTKGridFile(filename::AbstractString, grid::AbstractGrid; kwargs...) VTKGridFile(filename::AbstractString, dh::DofHandler; kwargs...)</code></pre><p>Create a <code>VTKGridFile</code> that contains an unstructured VTK grid. The keyword arguments are forwarded to <code>WriteVTK.vtk_grid</code>, see <a href="https://juliavtk.github.io/WriteVTK.jl/stable/grids/syntax/#Data-formatting-options">Data Formatting Options</a></p><p>This file handler can be used to to write data with</p><ul><li><a href="#Ferrite.write_solution"><code>write_solution</code></a></li><li><a href="#Ferrite.write_cell_data"><code>write_cell_data</code></a></li><li><a href="#Ferrite.write_projection"><code>write_projection</code></a></li><li><a href="#Ferrite.write_node_data"><code>write_node_data</code></a>.</li><li><a href="#Ferrite.write_cellset"><code>Ferrite.write_cellset</code></a></li><li><a href="#Ferrite.write_nodeset"><code>Ferrite.write_nodeset</code></a></li><li><a href="#Ferrite.write_constraints"><code>Ferrite.write_constraints</code></a></li></ul><p>It is necessary to call <code>close(::VTKGridFile)</code> to save the data after writing to the file handler. Using the supported <code>do</code>-block does this automatically:</p><pre><code class="language-julia hljs">VTKGridFile(filename, grid) do vtk write_solution(vtk, dh, u) write_cell_data(vtk, celldata) -end</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Export/VTK.jl#L1-L27">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_solution" href="#Ferrite.write_solution"><code>Ferrite.write_solution</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_solution(vtk::VTKGridFile, dh::AbstractDofHandler, u::Vector, suffix="")</code></pre><p>Save the values at the nodes in the degree of freedom vector <code>u</code> to <code>vtk</code>. Each field in <code>dh</code> will be saved separately, and <code>suffix</code> can be used to append to the fieldname.</p><p><code>u</code> can also contain tensorial values, but each entry in <code>u</code> must correspond to a degree of freedom in <code>dh</code>, see <a href="#Ferrite.write_node_data"><code>write_node_data</code></a> for details. Use <code>write_node_data</code> directly when exporting values that are already sorted by the nodes in the grid.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Export/VTK.jl#L177-L188">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_projection" href="#Ferrite.write_projection"><code>Ferrite.write_projection</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_projection(vtk::VTKGridFile, proj::L2Projector, vals::Vector, name::AbstractString)</code></pre><p>Project <code>vals</code> to the grid nodes with <code>proj</code> and save to <code>vtk</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Export/VTK.jl#L198-L202">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_cell_data" href="#Ferrite.write_cell_data"><code>Ferrite.write_cell_data</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_cell_data(vtk::VTKGridFile, celldata::AbstractVector, name::String)</code></pre><p>Write the <code>celldata</code> that is ordered by the cells in the grid to the vtk file.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Export/VTK.jl#L210-L214">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_node_data" href="#Ferrite.write_node_data"><code>Ferrite.write_node_data</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_node_data(vtk::VTKGridFile, nodedata::Vector{Real}, name) -write_node_data(vtk::VTKGridFile, nodedata::Vector{<:AbstractTensor}, name)</code></pre><p>Write the <code>nodedata</code> that is ordered by the nodes in the grid to <code>vtk</code>.</p><p>When <code>nodedata</code> contains <code>Tensors.Vec</code>s, each component is exported. Two-dimensional vectors are padded with zeros.</p><p>When <code>nodedata</code> contains second order tensors, the index order, <code>[11, 22, 33, 23, 13, 12, 32, 31, 21]</code>, follows the default Voigt order in Tensors.jl.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Export/VTK.jl#L220-L231">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_cellset" href="#Ferrite.write_cellset"><code>Ferrite.write_cellset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_cellset(vtk, grid::AbstractGrid) +end</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Export/VTK.jl#L1-L27">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_solution" href="#Ferrite.write_solution"><code>Ferrite.write_solution</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_solution(vtk::VTKGridFile, dh::AbstractDofHandler, u::Vector, suffix="")</code></pre><p>Save the values at the nodes in the degree of freedom vector <code>u</code> to <code>vtk</code>. Each field in <code>dh</code> will be saved separately, and <code>suffix</code> can be used to append to the fieldname.</p><p><code>u</code> can also contain tensorial values, but each entry in <code>u</code> must correspond to a degree of freedom in <code>dh</code>, see <a href="#Ferrite.write_node_data"><code>write_node_data</code></a> for details. Use <code>write_node_data</code> directly when exporting values that are already sorted by the nodes in the grid.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Export/VTK.jl#L177-L188">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_projection" href="#Ferrite.write_projection"><code>Ferrite.write_projection</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_projection(vtk::VTKGridFile, proj::L2Projector, vals::Vector, name::AbstractString)</code></pre><p>Project <code>vals</code> to the grid nodes with <code>proj</code> and save to <code>vtk</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Export/VTK.jl#L198-L202">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_cell_data" href="#Ferrite.write_cell_data"><code>Ferrite.write_cell_data</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_cell_data(vtk::VTKGridFile, celldata::AbstractVector, name::String)</code></pre><p>Write the <code>celldata</code> that is ordered by the cells in the grid to the vtk file.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Export/VTK.jl#L210-L214">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_node_data" href="#Ferrite.write_node_data"><code>Ferrite.write_node_data</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_node_data(vtk::VTKGridFile, nodedata::Vector{Real}, name) +write_node_data(vtk::VTKGridFile, nodedata::Vector{<:AbstractTensor}, name)</code></pre><p>Write the <code>nodedata</code> that is ordered by the nodes in the grid to <code>vtk</code>.</p><p>When <code>nodedata</code> contains <code>Tensors.Vec</code>s, each component is exported. Two-dimensional vectors are padded with zeros.</p><p>When <code>nodedata</code> contains second order tensors, the index order, <code>[11, 22, 33, 23, 13, 12, 32, 31, 21]</code>, follows the default Voigt order in Tensors.jl.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Export/VTK.jl#L220-L231">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_cellset" href="#Ferrite.write_cellset"><code>Ferrite.write_cellset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_cellset(vtk, grid::AbstractGrid) write_cellset(vtk, grid::AbstractGrid, cellset::String) -write_cellset(vtk, grid::AbstractGrid, cellsets::Union{AbstractVector{String},AbstractSet{String})</code></pre><p>Write all cell sets in the grid with name according to their keys and celldata 1 if the cell is in the set, and 0 otherwise. It is also possible to only export a single <code>cellset</code>, or multiple <code>cellsets</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Export/VTK.jl#L250-L258">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_nodeset" href="#Ferrite.write_nodeset"><code>Ferrite.write_nodeset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_nodeset(vtk::VTKGridFile, grid::AbstractGrid, nodeset::String)</code></pre><p>Write nodal values of 1 for nodes in <code>nodeset</code>, and 0 otherwise</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Export/VTK.jl#L238-L242">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_constraints" href="#Ferrite.write_constraints"><code>Ferrite.write_constraints</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_constraints(vtk::VTKGridFile, ch::ConstraintHandler)</code></pre><p>Saves the dirichlet boundary conditions to a vtkfile. Values will have a 1 where bcs are active and 0 otherwise</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Export/VTK.jl#L270-L275">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_cell_colors" href="#Ferrite.write_cell_colors"><code>Ferrite.write_cell_colors</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_cell_colors(vtk::VTKGridFile, grid::AbstractGrid, cell_colors, name="coloring")</code></pre><p>Write cell colors (see <a href="../grid/#Ferrite.create_coloring"><code>create_coloring</code></a>) to a VTK file for visualization.</p><p>In case of coloring a subset, the cells which are not part of the subset are represented as color 0.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Export/VTK.jl#L310-L316">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../grid/">« Grid & AbstractGrid</a><a class="docs-footer-nextpage" href="../utils/">Development utility functions »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +write_cellset(vtk, grid::AbstractGrid, cellsets::Union{AbstractVector{String},AbstractSet{String})</code></pre><p>Write all cell sets in the grid with name according to their keys and celldata 1 if the cell is in the set, and 0 otherwise. It is also possible to only export a single <code>cellset</code>, or multiple <code>cellsets</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Export/VTK.jl#L250-L258">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_nodeset" href="#Ferrite.write_nodeset"><code>Ferrite.write_nodeset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_nodeset(vtk::VTKGridFile, grid::AbstractGrid, nodeset::String)</code></pre><p>Write nodal values of 1 for nodes in <code>nodeset</code>, and 0 otherwise</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Export/VTK.jl#L238-L242">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_constraints" href="#Ferrite.write_constraints"><code>Ferrite.write_constraints</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_constraints(vtk::VTKGridFile, ch::ConstraintHandler)</code></pre><p>Saves the dirichlet boundary conditions to a vtkfile. Values will have a 1 where bcs are active and 0 otherwise</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Export/VTK.jl#L270-L275">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.write_cell_colors" href="#Ferrite.write_cell_colors"><code>Ferrite.write_cell_colors</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">write_cell_colors(vtk::VTKGridFile, grid::AbstractGrid, cell_colors, name="coloring")</code></pre><p>Write cell colors (see <a href="../grid/#Ferrite.create_coloring"><code>create_coloring</code></a>) to a VTK file for visualization.</p><p>In case of coloring a subset, the cells which are not part of the subset are represented as color 0.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Export/VTK.jl#L310-L316">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../grid/">« Grid & AbstractGrid</a><a class="docs-footer-nextpage" href="../utils/">Development utility functions »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/fevalues/index.html b/dev/reference/fevalues/index.html index 4562214c4e..f9fe53a64a 100644 --- a/dev/reference/fevalues/index.html +++ b/dev/reference/fevalues/index.html @@ -1,11 +1,11 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>FEValues · Ferrite.jl</title><meta name="title" content="FEValues · Ferrite.jl"/><meta property="og:title" content="FEValues · Ferrite.jl"/><meta property="twitter:title" content="FEValues · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/fevalues/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/fevalues/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/fevalues/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li class="is-active"><a class="tocitem" href>FEValues</a><ul class="internal"><li><a class="tocitem" href="#Main-types"><span>Main types</span></a></li><li><a class="tocitem" href="#Applicable-functions"><span>Applicable functions</span></a></li><li><a class="tocitem" href="#reference-interfacevalues"><span>InterfaceValues</span></a></li></ul></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li><a class="tocitem" href="../utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>FEValues</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>FEValues</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/fevalues.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="FEValues"><a class="docs-heading-anchor" href="#FEValues">FEValues</a><a id="FEValues-1"></a><a class="docs-heading-anchor-permalink" href="#FEValues" title="Permalink"></a></h1><h2 id="Main-types"><a class="docs-heading-anchor" href="#Main-types">Main types</a><a id="Main-types-1"></a><a class="docs-heading-anchor-permalink" href="#Main-types" title="Permalink"></a></h2><p><a href="#Ferrite.CellValues"><code>CellValues</code></a> and <a href="#Ferrite.FacetValues"><code>FacetValues</code></a> are the most common subtypes of <code>Ferrite.AbstractValues</code>. For more details about how these work, please see the related <a href="../../topics/FEValues/#fevalues_topicguide">topic guide</a>.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CellValues" href="#Ferrite.CellValues"><code>Ferrite.CellValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">CellValues([::Type{T},] quad_rule::QuadratureRule, func_interpol::Interpolation, [geom_interpol::Interpolation])</code></pre><p>A <code>CellValues</code> object facilitates the process of evaluating values of shape functions, gradients of shape functions, values of nodal functions, gradients and divergences of nodal functions etc. in the finite element cell.</p><p><strong>Arguments:</strong></p><ul><li><code>T</code>: an optional argument (default to <code>Float64</code>) to determine the type the internal data is stored as.</li><li><code>quad_rule</code>: an instance of a <a href="../quadrature/#Ferrite.QuadratureRule"><code>QuadratureRule</code></a></li><li><code>func_interpol</code>: an instance of an <a href="../interpolations/#Ferrite.Interpolation"><code>Interpolation</code></a> used to interpolate the approximated function</li><li><code>geom_interpol</code>: an optional instance of a <a href="../interpolations/#Ferrite.Interpolation"><code>Interpolation</code></a> which is used to interpolate the geometry. By default linear Lagrange interpolation is used. For embedded elements the geometric interpolations should be vectorized to the spatial dimension.</li></ul><p><strong>Keyword arguments:</strong> The following keyword arguments are experimental and may change in future minor releases</p><ul><li><code>update_gradients</code>: Specifies if the gradients of the shape functions should be updated (default true)</li><li><code>update_hessians</code>: Specifies if the hessians of the shape functions should be updated (default false)</li><li><code>update_detJdV</code>: Specifies if the volume associated with each quadrature point should be updated (default true)</li></ul><p><strong>Common methods:</strong></p><ul><li><p><a href="#Ferrite.reinit!"><code>reinit!</code></a></p></li><li><p><a href="#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></p></li><li><p><a href="#Ferrite.getdetJdV"><code>getdetJdV</code></a></p></li><li><p><a href="#Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_value</code></a></p></li><li><p><a href="#Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_gradient</code></a></p></li><li><p><a href="#Ferrite.shape_symmetric_gradient"><code>shape_symmetric_gradient</code></a></p></li><li><p><a href="#Ferrite.shape_divergence"><code>shape_divergence</code></a></p></li><li><p><a href="#Ferrite.function_value"><code>function_value</code></a></p></li><li><p><a href="#Ferrite.function_gradient"><code>function_gradient</code></a></p></li><li><p><a href="#Ferrite.function_symmetric_gradient"><code>function_symmetric_gradient</code></a></p></li><li><p><a href="#Ferrite.function_divergence"><code>function_divergence</code></a></p></li><li><p><a href="#Ferrite.spatial_coordinate"><code>spatial_coordinate</code></a></p></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/CellValues.jl#L1-L36">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FacetValues" href="#Ferrite.FacetValues"><code>Ferrite.FacetValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">FacetValues([::Type{T}], quad_rule::FacetQuadratureRule, func_interpol::Interpolation, [geom_interpol::Interpolation])</code></pre><p>A <code>FacetValues</code> object facilitates the process of evaluating values of shape functions, gradients of shape functions, values of nodal functions, gradients and divergences of nodal functions etc. on the facets of finite elements.</p><p><strong>Arguments:</strong></p><ul><li><code>T</code>: an optional argument (default to <code>Float64</code>) to determine the type the internal data is stored as.</li><li><code>quad_rule</code>: an instance of a <a href="../quadrature/#Ferrite.FacetQuadratureRule"><code>FacetQuadratureRule</code></a></li><li><code>func_interpol</code>: an instance of an <a href="../interpolations/#Ferrite.Interpolation"><code>Interpolation</code></a> used to interpolate the approximated function</li><li><code>geom_interpol</code>: an optional instance of an <a href="../interpolations/#Ferrite.Interpolation"><code>Interpolation</code></a> which is used to interpolate the geometry. By default linear Lagrange interpolation is used.</li></ul><p><strong>Keyword arguments:</strong> The following keyword arguments are experimental and may change in future minor releases</p><ul><li><code>update_gradients</code>: Specifies if the gradients of the shape functions should be updated (default true)</li><li><code>update_hessians</code>: Specifies if the hessians of the shape functions should be updated (default false)</li></ul><p><strong>Common methods:</strong></p><ul><li><p><a href="#Ferrite.reinit!"><code>reinit!</code></a></p></li><li><p><a href="#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></p></li><li><p><a href="#Ferrite.getdetJdV"><code>getdetJdV</code></a></p></li><li><p><a href="#Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_value</code></a></p></li><li><p><a href="#Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_gradient</code></a></p></li><li><p><a href="#Ferrite.shape_symmetric_gradient"><code>shape_symmetric_gradient</code></a></p></li><li><p><a href="#Ferrite.shape_divergence"><code>shape_divergence</code></a></p></li><li><p><a href="#Ferrite.function_value"><code>function_value</code></a></p></li><li><p><a href="#Ferrite.function_gradient"><code>function_gradient</code></a></p></li><li><p><a href="#Ferrite.function_symmetric_gradient"><code>function_symmetric_gradient</code></a></p></li><li><p><a href="#Ferrite.function_divergence"><code>function_divergence</code></a></p></li><li><p><a href="#Ferrite.spatial_coordinate"><code>spatial_coordinate</code></a></p></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/FacetValues.jl#L1-L36">source</a></section></article><div class="admonition is-warning"><header class="admonition-header">Embedded API</header><div class="admonition-body"><p>Currently, embedded <code>FEValues</code> returns <code>SArray</code>s, which behave differently from the <code>Tensor</code>s for normal value. In the future, we expect to return an <code>AbstractTensor</code>, this change may happen in a minor release, and the API for embedded <code>FEValues</code> should therefore be considered experimental.</p></div></div><h2 id="Applicable-functions"><a class="docs-heading-anchor" href="#Applicable-functions">Applicable functions</a><a id="Applicable-functions-1"></a><a class="docs-heading-anchor-permalink" href="#Applicable-functions" title="Permalink"></a></h2><p>The following functions are applicable to both <code>CellValues</code> and <code>FacetValues</code>.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reinit!" href="#Ferrite.reinit!"><code>Ferrite.reinit!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reinit!(cv::CellValues, cell::AbstractCell, x::AbstractVector) +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>FEValues · Ferrite.jl</title><meta name="title" content="FEValues · Ferrite.jl"/><meta property="og:title" content="FEValues · Ferrite.jl"/><meta property="twitter:title" content="FEValues · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/fevalues/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/fevalues/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/fevalues/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li class="is-active"><a class="tocitem" href>FEValues</a><ul class="internal"><li><a class="tocitem" href="#Main-types"><span>Main types</span></a></li><li><a class="tocitem" href="#Applicable-functions"><span>Applicable functions</span></a></li><li><a class="tocitem" href="#reference-interfacevalues"><span>InterfaceValues</span></a></li></ul></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li><a class="tocitem" href="../utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>FEValues</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>FEValues</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/fevalues.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="FEValues"><a class="docs-heading-anchor" href="#FEValues">FEValues</a><a id="FEValues-1"></a><a class="docs-heading-anchor-permalink" href="#FEValues" title="Permalink"></a></h1><h2 id="Main-types"><a class="docs-heading-anchor" href="#Main-types">Main types</a><a id="Main-types-1"></a><a class="docs-heading-anchor-permalink" href="#Main-types" title="Permalink"></a></h2><p><a href="#Ferrite.CellValues"><code>CellValues</code></a> and <a href="#Ferrite.FacetValues"><code>FacetValues</code></a> are the most common subtypes of <code>Ferrite.AbstractValues</code>. For more details about how these work, please see the related <a href="../../topics/FEValues/#fevalues_topicguide">topic guide</a>.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CellValues" href="#Ferrite.CellValues"><code>Ferrite.CellValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">CellValues([::Type{T},] quad_rule::QuadratureRule, func_interpol::Interpolation, [geom_interpol::Interpolation])</code></pre><p>A <code>CellValues</code> object facilitates the process of evaluating values of shape functions, gradients of shape functions, values of nodal functions, gradients and divergences of nodal functions etc. in the finite element cell.</p><p><strong>Arguments:</strong></p><ul><li><code>T</code>: an optional argument (default to <code>Float64</code>) to determine the type the internal data is stored as.</li><li><code>quad_rule</code>: an instance of a <a href="../quadrature/#Ferrite.QuadratureRule"><code>QuadratureRule</code></a></li><li><code>func_interpol</code>: an instance of an <a href="../interpolations/#Ferrite.Interpolation"><code>Interpolation</code></a> used to interpolate the approximated function</li><li><code>geom_interpol</code>: an optional instance of a <a href="../interpolations/#Ferrite.Interpolation"><code>Interpolation</code></a> which is used to interpolate the geometry. By default linear Lagrange interpolation is used. For embedded elements the geometric interpolations should be vectorized to the spatial dimension.</li></ul><p><strong>Keyword arguments:</strong> The following keyword arguments are experimental and may change in future minor releases</p><ul><li><code>update_gradients</code>: Specifies if the gradients of the shape functions should be updated (default true)</li><li><code>update_hessians</code>: Specifies if the hessians of the shape functions should be updated (default false)</li><li><code>update_detJdV</code>: Specifies if the volume associated with each quadrature point should be updated (default true)</li></ul><p><strong>Common methods:</strong></p><ul><li><p><a href="#Ferrite.reinit!"><code>reinit!</code></a></p></li><li><p><a href="#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></p></li><li><p><a href="#Ferrite.getdetJdV"><code>getdetJdV</code></a></p></li><li><p><a href="#Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_value</code></a></p></li><li><p><a href="#Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_gradient</code></a></p></li><li><p><a href="#Ferrite.shape_symmetric_gradient"><code>shape_symmetric_gradient</code></a></p></li><li><p><a href="#Ferrite.shape_divergence"><code>shape_divergence</code></a></p></li><li><p><a href="#Ferrite.function_value"><code>function_value</code></a></p></li><li><p><a href="#Ferrite.function_gradient"><code>function_gradient</code></a></p></li><li><p><a href="#Ferrite.function_symmetric_gradient"><code>function_symmetric_gradient</code></a></p></li><li><p><a href="#Ferrite.function_divergence"><code>function_divergence</code></a></p></li><li><p><a href="#Ferrite.spatial_coordinate"><code>spatial_coordinate</code></a></p></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/CellValues.jl#L1-L36">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FacetValues" href="#Ferrite.FacetValues"><code>Ferrite.FacetValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">FacetValues([::Type{T}], quad_rule::FacetQuadratureRule, func_interpol::Interpolation, [geom_interpol::Interpolation])</code></pre><p>A <code>FacetValues</code> object facilitates the process of evaluating values of shape functions, gradients of shape functions, values of nodal functions, gradients and divergences of nodal functions etc. on the facets of finite elements.</p><p><strong>Arguments:</strong></p><ul><li><code>T</code>: an optional argument (default to <code>Float64</code>) to determine the type the internal data is stored as.</li><li><code>quad_rule</code>: an instance of a <a href="../quadrature/#Ferrite.FacetQuadratureRule"><code>FacetQuadratureRule</code></a></li><li><code>func_interpol</code>: an instance of an <a href="../interpolations/#Ferrite.Interpolation"><code>Interpolation</code></a> used to interpolate the approximated function</li><li><code>geom_interpol</code>: an optional instance of an <a href="../interpolations/#Ferrite.Interpolation"><code>Interpolation</code></a> which is used to interpolate the geometry. By default linear Lagrange interpolation is used.</li></ul><p><strong>Keyword arguments:</strong> The following keyword arguments are experimental and may change in future minor releases</p><ul><li><code>update_gradients</code>: Specifies if the gradients of the shape functions should be updated (default true)</li><li><code>update_hessians</code>: Specifies if the hessians of the shape functions should be updated (default false)</li></ul><p><strong>Common methods:</strong></p><ul><li><p><a href="#Ferrite.reinit!"><code>reinit!</code></a></p></li><li><p><a href="#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></p></li><li><p><a href="#Ferrite.getdetJdV"><code>getdetJdV</code></a></p></li><li><p><a href="#Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_value</code></a></p></li><li><p><a href="#Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_gradient</code></a></p></li><li><p><a href="#Ferrite.shape_symmetric_gradient"><code>shape_symmetric_gradient</code></a></p></li><li><p><a href="#Ferrite.shape_divergence"><code>shape_divergence</code></a></p></li><li><p><a href="#Ferrite.function_value"><code>function_value</code></a></p></li><li><p><a href="#Ferrite.function_gradient"><code>function_gradient</code></a></p></li><li><p><a href="#Ferrite.function_symmetric_gradient"><code>function_symmetric_gradient</code></a></p></li><li><p><a href="#Ferrite.function_divergence"><code>function_divergence</code></a></p></li><li><p><a href="#Ferrite.spatial_coordinate"><code>spatial_coordinate</code></a></p></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/FacetValues.jl#L1-L36">source</a></section></article><div class="admonition is-warning"><header class="admonition-header">Embedded API</header><div class="admonition-body"><p>Currently, embedded <code>FEValues</code> returns <code>SArray</code>s, which behave differently from the <code>Tensor</code>s for normal value. In the future, we expect to return an <code>AbstractTensor</code>, this change may happen in a minor release, and the API for embedded <code>FEValues</code> should therefore be considered experimental.</p></div></div><h2 id="Applicable-functions"><a class="docs-heading-anchor" href="#Applicable-functions">Applicable functions</a><a id="Applicable-functions-1"></a><a class="docs-heading-anchor-permalink" href="#Applicable-functions" title="Permalink"></a></h2><p>The following functions are applicable to both <code>CellValues</code> and <code>FacetValues</code>.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.reinit!" href="#Ferrite.reinit!"><code>Ferrite.reinit!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">reinit!(cv::CellValues, cell::AbstractCell, x::AbstractVector) reinit!(cv::CellValues, x::AbstractVector) reinit!(fv::FacetValues, cell::AbstractCell, x::AbstractVector, facet::Int) -reinit!(fv::FacetValues, x::AbstractVector, function_gradient::Int)</code></pre><p>Update the <code>CellValues</code>/<code>FacetValues</code> object for a cell or facet with cell coordinates <code>x</code>. The derivatives of the shape functions, and the new integration weights are computed. For interpolations with non-identity mappings, the current <code>cell</code> is also required.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L46-L55">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnquadpoints" href="#Ferrite.getnquadpoints"><code>Ferrite.getnquadpoints</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnquadpoints(fe_v::AbstractValues)</code></pre><p>Return the number of quadrature points. For <code>FacetValues</code>, this is the number for the current facet.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L58-L63">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getdetJdV" href="#Ferrite.getdetJdV"><code>Ferrite.getdetJdV</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getdetJdV(fe_v::AbstractValues, q_point::Int)</code></pre><p>Return the product between the determinant of the Jacobian and the quadrature point weight for the given quadrature point: <span>$\det(J(\mathbf{x})) w_q$</span>.</p><p>This value is typically used when one integrates a function on a finite element cell or facet as</p><p><span>$\int\limits_\Omega f(\mathbf{x}) d \Omega \approx \sum\limits_{q = 1}^{n_q} f(\mathbf{x}_q) \det(J(\mathbf{x})) w_q$</span> <span>$\int\limits_\Gamma f(\mathbf{x}) d \Gamma \approx \sum\limits_{q = 1}^{n_q} f(\mathbf{x}_q) \det(J(\mathbf{x})) w_q$</span></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L66-L78">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}" href="#Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>Ferrite.shape_value</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_value(fe_v::AbstractValues, q_point::Int, base_function::Int)</code></pre><p>Return the value of shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L81-L86">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}" href="#Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>Ferrite.shape_gradient</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_gradient(fe_v::AbstractValues, q_point::Int, base_function::Int)</code></pre><p>Return the gradient of shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L98-L103">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_symmetric_gradient" href="#Ferrite.shape_symmetric_gradient"><code>Ferrite.shape_symmetric_gradient</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_symmetric_gradient(fe_v::AbstractValues, q_point::Int, base_function::Int)</code></pre><p>Return the symmetric gradient of shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L106-L111">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_divergence" href="#Ferrite.shape_divergence"><code>Ferrite.shape_divergence</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_divergence(fe_v::AbstractValues, q_point::Int, base_function::Int)</code></pre><p>Return the divergence of shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L114-L119">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_curl" href="#Ferrite.shape_curl"><code>Ferrite.shape_curl</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_curl(fe_v::AbstractValues, q_point::Int, base_function::Int)</code></pre><p>Return the curl of shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L126-L131">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.geometric_value" href="#Ferrite.geometric_value"><code>Ferrite.geometric_value</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">geometric_value(fe_v::AbstractValues, q_point, base_function::Int)</code></pre><p>Return the value of the geometric shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L89-L94">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_value" href="#Ferrite.function_value"><code>Ferrite.function_value</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_value(iv::InterfaceValues, q_point::Int, u; here::Bool) -function_value(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there; here::Bool)</code></pre><p>Compute the value of the function in quadrature point <code>q_point</code> on the "here" (<code>here=true</code>) or "there" (<code>here=false</code>) side of the interface. <code>u_here</code> and <code>u_there</code> are the values of the degrees of freedom for the respective element.</p><p><code>u</code> is a vector of scalar values for the degrees of freedom. This function can be used with a single <code>u</code> vector containing the dofs of both elements of the interface or two vectors (<code>u_here</code> and <code>u_there</code>) which contain the dofs of each cell of the interface respectively.</p><p><code>here</code> determines which element to use for calculating function value. <code>true</code> uses the value on the first element's side of the interface, while <code>false</code> uses the value on the second element's side.</p><p>The value of a scalar valued function is computed as <span>$u(\mathbf{x}) = \sum\limits_{i = 1}^n N_i (\mathbf{x}) u_i$</span> where <span>$u_i$</span> are the value of <span>$u$</span> in the nodes. For a vector valued function the value is calculated as <span>$\mathbf{u}(\mathbf{x}) = \sum\limits_{i = 1}^n N_i (\mathbf{x}) \mathbf{u}_i$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of <span>$\mathbf{u}$</span>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L159-L178">source</a></section><section><div><pre><code class="language-julia hljs">function_value(fe_v::AbstractValues, q_point::Int, u::AbstractVector, [dof_range])</code></pre><p>Compute the value of the function in a quadrature point. <code>u</code> is a vector with values for the degrees of freedom. For a scalar valued function, <code>u</code> contains scalars. For a vector valued function, <code>u</code> can be a vector of scalars (for use of <code>VectorValues</code>) or <code>u</code> can be a vector of <code>Vec</code>s (for use with ScalarValues).</p><p>The value of a scalar valued function is computed as <span>$u(\mathbf{x}) = \sum\limits_{i = 1}^n N_i (\mathbf{x}) u_i$</span> where <span>$u_i$</span> are the value of <span>$u$</span> in the nodes. For a vector valued function the value is calculated as <span>$\mathbf{u}(\mathbf{x}) = \sum\limits_{i = 1}^n N_i (\mathbf{x}) \mathbf{u}_i$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of <span>$\mathbf{u}$</span>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L138-L150">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_gradient" href="#Ferrite.function_gradient"><code>Ferrite.function_gradient</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_gradient(iv::InterfaceValues, q_point::Int, u; here::Bool) -function_gradient(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there; here::Bool)</code></pre><p>Compute the gradient of the function in a quadrature point. <code>u</code> is a vector of scalar values for the degrees of freedom. This function can be used with a single <code>u</code> vector containing the dofs of both elements of the interface or two vectors (<code>u_here</code> and <code>u_there</code>) which contain the dofs of each cell of the interface respectively.</p><p><code>here</code> determines which element to use for calculating function value. <code>true</code> uses the value on the first element's side of the interface, while <code>false</code> uses the value on the second element's side.</p><p>The gradient of a scalar function or a vector valued function with use of <code>VectorValues</code> is computed as <span>$\mathbf{\nabla} u(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{\nabla} N_i (\mathbf{x}) u_i$</span> or <span>$\mathbf{\nabla} u(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{\nabla} \mathbf{N}_i (\mathbf{x}) u_i$</span> respectively, where <span>$u_i$</span> are the nodal values of the function. For a vector valued function with use of <code>ScalarValues</code> the gradient is computed as <span>$\mathbf{\nabla} \mathbf{u}(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{u}_i \otimes \mathbf{\nabla} N_i (\mathbf{x})$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of <span>$\mathbf{u}$</span>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L182-L200">source</a></section><section><div><pre><code class="language-julia hljs">function_gradient(fe_v::AbstractValues{dim}, q_point::Int, u::AbstractVector, [dof_range])</code></pre><p>Compute the gradient of the function in a quadrature point. <code>u</code> is a vector with values for the degrees of freedom. For a scalar valued function, <code>u</code> contains scalars. For a vector valued function, <code>u</code> can be a vector of scalars (for use of <code>VectorValues</code>) or <code>u</code> can be a vector of <code>Vec</code>s (for use with ScalarValues).</p><p>The gradient of a scalar function or a vector valued function with use of <code>VectorValues</code> is computed as <span>$\mathbf{\nabla} u(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{\nabla} N_i (\mathbf{x}) u_i$</span> or <span>$\mathbf{\nabla} u(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{\nabla} \mathbf{N}_i (\mathbf{x}) u_i$</span> respectively, where <span>$u_i$</span> are the nodal values of the function. For a vector valued function with use of <code>ScalarValues</code> the gradient is computed as <span>$\mathbf{\nabla} \mathbf{u}(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{u}_i \otimes \mathbf{\nabla} N_i (\mathbf{x})$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of <span>$\mathbf{u}$</span>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L175-L190">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_symmetric_gradient" href="#Ferrite.function_symmetric_gradient"><code>Ferrite.function_symmetric_gradient</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_symmetric_gradient(fe_v::AbstractValues, q_point::Int, u::AbstractVector, [dof_range])</code></pre><p>Compute the symmetric gradient of the function, see <a href="#Ferrite.function_gradient"><code>function_gradient</code></a>. Return a <code>SymmetricTensor</code>.</p><p>The symmetric gradient of a scalar function is computed as <span>$\left[ \mathbf{\nabla} \mathbf{u}(\mathbf{x_q}) \right]^\text{sym} = \sum\limits_{i = 1}^n \frac{1}{2} \left[ \mathbf{\nabla} N_i (\mathbf{x}_q) \otimes \mathbf{u}_i + \mathbf{u}_i \otimes \mathbf{\nabla} N_i (\mathbf{x}_q) \right]$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of the function.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L264-L273">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_divergence" href="#Ferrite.function_divergence"><code>Ferrite.function_divergence</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_divergence(fe_v::AbstractValues, q_point::Int, u::AbstractVector, [dof_range])</code></pre><p>Compute the divergence of the vector valued function in a quadrature point.</p><p>The divergence of a vector valued functions in the quadrature point <span>$\mathbf{x}_q)$</span> is computed as <span>$\mathbf{\nabla} \cdot \mathbf{u}(\mathbf{x_q}) = \sum\limits_{i = 1}^n \mathbf{\nabla} N_i (\mathbf{x_q}) \cdot \mathbf{u}_i$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of the function.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L283-L291">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_curl" href="#Ferrite.function_curl"><code>Ferrite.function_curl</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_curl(fe_v::AbstractValues, q_point::Int, u::AbstractVector, [dof_range])</code></pre><p>Compute the curl of the vector valued function in a quadrature point.</p><p>The curl of a vector valued functions in the quadrature point <span>$\mathbf{x}_q)$</span> is computed as <span>$\mathbf{\nabla} \times \mathbf{u}(\mathbf{x_q}) = \sum\limits_{i = 1}^n \mathbf{\nabla} N_i \times (\mathbf{x_q}) \cdot \mathbf{u}_i$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of the function.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L308-L316">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.spatial_coordinate" href="#Ferrite.spatial_coordinate"><code>Ferrite.spatial_coordinate</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">spatial_coordinate(fe_v::AbstractValues, q_point::Int, x::AbstractVector)</code></pre><p>Compute the spatial coordinate in a quadrature point. <code>x</code> contains the nodal coordinates of the cell.</p><p>The coordinate is computed, using the geometric interpolation, as <span>$\mathbf{x} = \sum\limits_{i = 1}^n M_i (\mathbf{\xi}) \mathbf{\hat{x}}_i$</span>.</p><p>where <span>$\xi$</span>is the coordinate of the given quadrature point <code>q_point</code> of the associated quadrature rule.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L324-L335">source</a></section><section><div><pre><code class="language-julia hljs">spatial_coordinate(ip::ScalarInterpolation, ξ::Vec, x::AbstractVector{<:Vec{sdim, T}})</code></pre><p>Compute the spatial coordinate in a given quadrature point. <code>x</code> contains the nodal coordinates of the cell.</p><p>The coordinate is computed, using the geometric interpolation, as <span>$\mathbf{x} = \sum\limits_{i = 1}^n M_i (\mathbf{\xi}) \mathbf{\hat{x}}_i$</span></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/common_values.jl#L347-L354">source</a></section></article><p>In addition, there are some methods that are unique for <code>FacetValues</code>.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getcurrentfacet" href="#Ferrite.getcurrentfacet"><code>Ferrite.getcurrentfacet</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getcurrentfacet(fv::FacetValues)</code></pre><p>Return the current active facet of the <code>FacetValues</code> object (from last <code>reinit!</code>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/FacetValues.jl#L98-L102">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnormal" href="#Ferrite.getnormal"><code>Ferrite.getnormal</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnormal(fv::FacetValues, qp::Int)</code></pre><p>Return the normal at the quadrature point <code>qp</code> for the active facet of the <code>FacetValues</code> object(from last <code>reinit!</code>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/FacetValues.jl#L105-L110">source</a></section><section><div><pre><code class="language-julia hljs">getnormal(iv::InterfaceValues, qp::Int; here::Bool=true)</code></pre><p>Return the normal vector in the quadrature point <code>qp</code> on the interface. If <code>here = true</code> (default) the outward normal to the "here" element is returned, otherwise the outward normal to the "there" element.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L147-L153">source</a></section></article><h2 id="reference-interfacevalues"><a class="docs-heading-anchor" href="#reference-interfacevalues">InterfaceValues</a><a id="reference-interfacevalues-1"></a><a class="docs-heading-anchor-permalink" href="#reference-interfacevalues" title="Permalink"></a></h2><p>All of the methods for <a href="#Ferrite.FacetValues"><code>FacetValues</code></a> apply for <code>InterfaceValues</code> as well. In addition, there are some methods that are unique for <code>InterfaceValues</code>:</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.InterfaceValues" href="#Ferrite.InterfaceValues"><code>Ferrite.InterfaceValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">InterfaceValues</code></pre><p>An <code>InterfaceValues</code> object facilitates the process of evaluating values, averages, jumps and gradients of shape functions and function on the interfaces between elements.</p><p>The first element of the interface is denoted "here" and the second element "there".</p><p><strong>Constructors</strong></p><ul><li><code>InterfaceValues(qr::FacetQuadratureRule, ip::Interpolation)</code>: same quadrature rule and interpolation on both sides, default linear Lagrange geometric interpolation.</li><li><code>InterfaceValues(qr::FacetQuadratureRule, ip::Interpolation, ip_geo::Interpolation)</code>: same as above but with given geometric interpolation.</li><li><code>InterfaceValues(qr_here::FacetQuadratureRule, ip_here::Interpolation, qr_there::FacetQuadratureRule, ip_there::Interpolation)</code>: different quadrature rule and interpolation on the two sides, default linear Lagrange geometric interpolation.</li><li><code>InterfaceValues(qr_here::FacetQuadratureRule, ip_here::Interpolation, ip_geo_here::Interpolation, qr_there::FacetQuadratureRule, ip_there::Interpolation, ip_geo_there::Interpolation)</code>: same as above but with given geometric interpolation.</li><li><code>InterfaceValues(fv::FacetValues)</code>: quadrature rule and interpolations from facet values (same on both sides).</li><li><code>InterfaceValues(fv_here::FacetValues, fv_there::FacetValues)</code>: quadrature rule and interpolations from the facet values.</li></ul><p><strong>Associated methods:</strong></p><ul><li><a href="#Ferrite.shape_value_average"><code>shape_value_average</code></a></li><li><a href="#Ferrite.shape_value_jump"><code>shape_value_jump</code></a></li><li><a href="#Ferrite.shape_gradient_average"><code>shape_gradient_average</code></a></li><li><a href="#Ferrite.shape_gradient_jump"><code>shape_gradient_jump</code></a></li></ul><p><strong>Common methods:</strong></p><ul><li><p><a href="#Ferrite.reinit!"><code>reinit!</code></a></p></li><li><p><a href="#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></p></li><li><p><a href="#Ferrite.getdetJdV"><code>getdetJdV</code></a></p></li><li><p><a href="#Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_value</code></a></p></li><li><p><a href="#Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_gradient</code></a></p></li><li><p><a href="#Ferrite.shape_divergence"><code>shape_divergence</code></a></p></li><li><p><a href="#Ferrite.shape_curl"><code>shape_curl</code></a></p></li><li><p><a href="#Ferrite.function_value"><code>function_value</code></a></p></li><li><p><a href="#Ferrite.function_gradient"><code>function_gradient</code></a></p></li><li><p><a href="#Ferrite.function_symmetric_gradient"><code>function_symmetric_gradient</code></a></p></li><li><p><a href="#Ferrite.function_divergence"><code>function_divergence</code></a></p></li><li><p><a href="#Ferrite.function_curl"><code>function_curl</code></a></p></li><li><p><a href="#Ferrite.spatial_coordinate"><code>spatial_coordinate</code></a></p></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L2-L47">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_value_average" href="#Ferrite.shape_value_average"><code>Ferrite.shape_value_average</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_value_average(iv::InterfaceValues, qp::Int, i::Int)</code></pre><p>Compute the average of the value of shape function <code>i</code> at quadrature point <code>qp</code> across the interface.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L203-L208">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_value_jump" href="#Ferrite.shape_value_jump"><code>Ferrite.shape_value_jump</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_value_jump(iv::InterfaceValues, qp::Int, i::Int)</code></pre><p>Compute the jump of the value of shape function <code>i</code> at quadrature point <code>qp</code> across the interface in the default normal direction.</p><p>This function uses the definition <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} -\vec{v}^\text{here}$</span>. To obtain the form, <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} \cdot \vec{n}^\text{there} + \vec{v}^\text{here} \cdot \vec{n}^\text{here}$</span>, multiply by minus the outward facing normal to the first element's side of the interface (which is the default normal for <a href="#Ferrite.getnormal"><code>getnormal</code></a> with <a href="#Ferrite.InterfaceValues"><code>InterfaceValues</code></a>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L211-L219">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_gradient_average" href="#Ferrite.shape_gradient_average"><code>Ferrite.shape_gradient_average</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_gradient_average(iv::InterfaceValues, qp::Int, i::Int)</code></pre><p>Compute the average of the gradient of shape function <code>i</code> at quadrature point <code>qp</code> across the interface.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L222-L227">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_gradient_jump" href="#Ferrite.shape_gradient_jump"><code>Ferrite.shape_gradient_jump</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_gradient_jump(iv::InterfaceValues, qp::Int, i::Int)</code></pre><p>Compute the jump of the gradient of shape function <code>i</code> at quadrature point <code>qp</code> across the interface in the default normal direction.</p><p>This function uses the definition <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} -\vec{v}^\text{here}$</span>. To obtain the form, <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} ⋅ \vec{n}^\text{there} + \vec{v}^\text{here} ⋅ \vec{n}^\text{here}$</span>, multiply by minus the outward facing normal to the first element's side of the interface (which is the default normal for <a href="#Ferrite.getnormal"><code>getnormal</code></a> with <a href="#Ferrite.InterfaceValues"><code>InterfaceValues</code></a>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L230-L238">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_value_average" href="#Ferrite.function_value_average"><code>Ferrite.function_value_average</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_value_average(iv::InterfaceValues, q_point::Int, u) -function_value_average(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there)</code></pre><p>Compute the average of the function value at the quadrature point on the interface.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L280-L285">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_value_jump" href="#Ferrite.function_value_jump"><code>Ferrite.function_value_jump</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_value_jump(iv::InterfaceValues, q_point::Int, u) -function_value_jump(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there)</code></pre><p>Compute the jump of the function value at the quadrature point over the interface along the default normal direction.</p><p>This function uses the definition <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} -\vec{v}^\text{here}$</span>. To obtain the form, <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} ⋅ \vec{n}^\text{there} + \vec{v}^\text{here} ⋅ \vec{n}^\text{here}$</span>, multiply by minus the outward facing normal to the first element's side of the interface (which is the default normal for <a href="#Ferrite.getnormal"><code>getnormal</code></a> with <a href="#Ferrite.InterfaceValues"><code>InterfaceValues</code></a>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L288-L297">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_gradient_average" href="#Ferrite.function_gradient_average"><code>Ferrite.function_gradient_average</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_gradient_average(iv::InterfaceValues, q_point::Int, u) -function_gradient_average(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there)</code></pre><p>Compute the average of the function gradient at the quadrature point on the interface.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L300-L305">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_gradient_jump" href="#Ferrite.function_gradient_jump"><code>Ferrite.function_gradient_jump</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_gradient_jump(iv::InterfaceValues, q_point::Int, u) -function_gradient_jump(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there)</code></pre><p>Compute the jump of the function gradient at the quadrature point over the interface along the default normal direction.</p><p>This function uses the definition <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} -\vec{v}^\text{here}$</span>. To obtain the form, <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} ⋅ \vec{n}^\text{there} + \vec{v}^\text{here} ⋅ \vec{n}^\text{here}$</span>, multiply by minus the outward facing normal to the first element's side of the interface (which is the default normal for <a href="#Ferrite.getnormal"><code>getnormal</code></a> with <a href="#Ferrite.InterfaceValues"><code>InterfaceValues</code></a>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/FEValues/InterfaceValues.jl#L308-L317">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../interpolations/">« Interpolation</a><a class="docs-footer-nextpage" href="../dofhandler/">Degrees of Freedom »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +reinit!(fv::FacetValues, x::AbstractVector, function_gradient::Int)</code></pre><p>Update the <code>CellValues</code>/<code>FacetValues</code> object for a cell or facet with cell coordinates <code>x</code>. The derivatives of the shape functions, and the new integration weights are computed. For interpolations with non-identity mappings, the current <code>cell</code> is also required.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L46-L55">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnquadpoints" href="#Ferrite.getnquadpoints"><code>Ferrite.getnquadpoints</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnquadpoints(fe_v::AbstractValues)</code></pre><p>Return the number of quadrature points. For <code>FacetValues</code>, this is the number for the current facet.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L58-L63">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getdetJdV" href="#Ferrite.getdetJdV"><code>Ferrite.getdetJdV</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getdetJdV(fe_v::AbstractValues, q_point::Int)</code></pre><p>Return the product between the determinant of the Jacobian and the quadrature point weight for the given quadrature point: <span>$\det(J(\mathbf{x})) w_q$</span>.</p><p>This value is typically used when one integrates a function on a finite element cell or facet as</p><p><span>$\int\limits_\Omega f(\mathbf{x}) d \Omega \approx \sum\limits_{q = 1}^{n_q} f(\mathbf{x}_q) \det(J(\mathbf{x})) w_q$</span> <span>$\int\limits_\Gamma f(\mathbf{x}) d \Gamma \approx \sum\limits_{q = 1}^{n_q} f(\mathbf{x}_q) \det(J(\mathbf{x})) w_q$</span></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L66-L78">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}" href="#Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>Ferrite.shape_value</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_value(fe_v::AbstractValues, q_point::Int, base_function::Int)</code></pre><p>Return the value of shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L81-L86">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}" href="#Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>Ferrite.shape_gradient</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_gradient(fe_v::AbstractValues, q_point::Int, base_function::Int)</code></pre><p>Return the gradient of shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L98-L103">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_symmetric_gradient" href="#Ferrite.shape_symmetric_gradient"><code>Ferrite.shape_symmetric_gradient</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_symmetric_gradient(fe_v::AbstractValues, q_point::Int, base_function::Int)</code></pre><p>Return the symmetric gradient of shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L106-L111">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_divergence" href="#Ferrite.shape_divergence"><code>Ferrite.shape_divergence</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_divergence(fe_v::AbstractValues, q_point::Int, base_function::Int)</code></pre><p>Return the divergence of shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L114-L119">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_curl" href="#Ferrite.shape_curl"><code>Ferrite.shape_curl</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_curl(fe_v::AbstractValues, q_point::Int, base_function::Int)</code></pre><p>Return the curl of shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L126-L131">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.geometric_value" href="#Ferrite.geometric_value"><code>Ferrite.geometric_value</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">geometric_value(fe_v::AbstractValues, q_point, base_function::Int)</code></pre><p>Return the value of the geometric shape function <code>base_function</code> evaluated in quadrature point <code>q_point</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L89-L94">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_value" href="#Ferrite.function_value"><code>Ferrite.function_value</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_value(iv::InterfaceValues, q_point::Int, u; here::Bool) +function_value(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there; here::Bool)</code></pre><p>Compute the value of the function in quadrature point <code>q_point</code> on the "here" (<code>here=true</code>) or "there" (<code>here=false</code>) side of the interface. <code>u_here</code> and <code>u_there</code> are the values of the degrees of freedom for the respective element.</p><p><code>u</code> is a vector of scalar values for the degrees of freedom. This function can be used with a single <code>u</code> vector containing the dofs of both elements of the interface or two vectors (<code>u_here</code> and <code>u_there</code>) which contain the dofs of each cell of the interface respectively.</p><p><code>here</code> determines which element to use for calculating function value. <code>true</code> uses the value on the first element's side of the interface, while <code>false</code> uses the value on the second element's side.</p><p>The value of a scalar valued function is computed as <span>$u(\mathbf{x}) = \sum\limits_{i = 1}^n N_i (\mathbf{x}) u_i$</span> where <span>$u_i$</span> are the value of <span>$u$</span> in the nodes. For a vector valued function the value is calculated as <span>$\mathbf{u}(\mathbf{x}) = \sum\limits_{i = 1}^n N_i (\mathbf{x}) \mathbf{u}_i$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of <span>$\mathbf{u}$</span>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L159-L178">source</a></section><section><div><pre><code class="language-julia hljs">function_value(fe_v::AbstractValues, q_point::Int, u::AbstractVector, [dof_range])</code></pre><p>Compute the value of the function in a quadrature point. <code>u</code> is a vector with values for the degrees of freedom. For a scalar valued function, <code>u</code> contains scalars. For a vector valued function, <code>u</code> can be a vector of scalars (for use of <code>VectorValues</code>) or <code>u</code> can be a vector of <code>Vec</code>s (for use with ScalarValues).</p><p>The value of a scalar valued function is computed as <span>$u(\mathbf{x}) = \sum\limits_{i = 1}^n N_i (\mathbf{x}) u_i$</span> where <span>$u_i$</span> are the value of <span>$u$</span> in the nodes. For a vector valued function the value is calculated as <span>$\mathbf{u}(\mathbf{x}) = \sum\limits_{i = 1}^n N_i (\mathbf{x}) \mathbf{u}_i$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of <span>$\mathbf{u}$</span>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L138-L150">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_gradient" href="#Ferrite.function_gradient"><code>Ferrite.function_gradient</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_gradient(iv::InterfaceValues, q_point::Int, u; here::Bool) +function_gradient(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there; here::Bool)</code></pre><p>Compute the gradient of the function in a quadrature point. <code>u</code> is a vector of scalar values for the degrees of freedom. This function can be used with a single <code>u</code> vector containing the dofs of both elements of the interface or two vectors (<code>u_here</code> and <code>u_there</code>) which contain the dofs of each cell of the interface respectively.</p><p><code>here</code> determines which element to use for calculating function value. <code>true</code> uses the value on the first element's side of the interface, while <code>false</code> uses the value on the second element's side.</p><p>The gradient of a scalar function or a vector valued function with use of <code>VectorValues</code> is computed as <span>$\mathbf{\nabla} u(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{\nabla} N_i (\mathbf{x}) u_i$</span> or <span>$\mathbf{\nabla} u(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{\nabla} \mathbf{N}_i (\mathbf{x}) u_i$</span> respectively, where <span>$u_i$</span> are the nodal values of the function. For a vector valued function with use of <code>ScalarValues</code> the gradient is computed as <span>$\mathbf{\nabla} \mathbf{u}(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{u}_i \otimes \mathbf{\nabla} N_i (\mathbf{x})$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of <span>$\mathbf{u}$</span>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L182-L200">source</a></section><section><div><pre><code class="language-julia hljs">function_gradient(fe_v::AbstractValues{dim}, q_point::Int, u::AbstractVector, [dof_range])</code></pre><p>Compute the gradient of the function in a quadrature point. <code>u</code> is a vector with values for the degrees of freedom. For a scalar valued function, <code>u</code> contains scalars. For a vector valued function, <code>u</code> can be a vector of scalars (for use of <code>VectorValues</code>) or <code>u</code> can be a vector of <code>Vec</code>s (for use with ScalarValues).</p><p>The gradient of a scalar function or a vector valued function with use of <code>VectorValues</code> is computed as <span>$\mathbf{\nabla} u(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{\nabla} N_i (\mathbf{x}) u_i$</span> or <span>$\mathbf{\nabla} u(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{\nabla} \mathbf{N}_i (\mathbf{x}) u_i$</span> respectively, where <span>$u_i$</span> are the nodal values of the function. For a vector valued function with use of <code>ScalarValues</code> the gradient is computed as <span>$\mathbf{\nabla} \mathbf{u}(\mathbf{x}) = \sum\limits_{i = 1}^n \mathbf{u}_i \otimes \mathbf{\nabla} N_i (\mathbf{x})$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of <span>$\mathbf{u}$</span>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L175-L190">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_symmetric_gradient" href="#Ferrite.function_symmetric_gradient"><code>Ferrite.function_symmetric_gradient</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_symmetric_gradient(fe_v::AbstractValues, q_point::Int, u::AbstractVector, [dof_range])</code></pre><p>Compute the symmetric gradient of the function, see <a href="#Ferrite.function_gradient"><code>function_gradient</code></a>. Return a <code>SymmetricTensor</code>.</p><p>The symmetric gradient of a scalar function is computed as <span>$\left[ \mathbf{\nabla} \mathbf{u}(\mathbf{x_q}) \right]^\text{sym} = \sum\limits_{i = 1}^n \frac{1}{2} \left[ \mathbf{\nabla} N_i (\mathbf{x}_q) \otimes \mathbf{u}_i + \mathbf{u}_i \otimes \mathbf{\nabla} N_i (\mathbf{x}_q) \right]$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of the function.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L264-L273">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_divergence" href="#Ferrite.function_divergence"><code>Ferrite.function_divergence</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_divergence(fe_v::AbstractValues, q_point::Int, u::AbstractVector, [dof_range])</code></pre><p>Compute the divergence of the vector valued function in a quadrature point.</p><p>The divergence of a vector valued functions in the quadrature point <span>$\mathbf{x}_q)$</span> is computed as <span>$\mathbf{\nabla} \cdot \mathbf{u}(\mathbf{x_q}) = \sum\limits_{i = 1}^n \mathbf{\nabla} N_i (\mathbf{x_q}) \cdot \mathbf{u}_i$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of the function.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L283-L291">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_curl" href="#Ferrite.function_curl"><code>Ferrite.function_curl</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_curl(fe_v::AbstractValues, q_point::Int, u::AbstractVector, [dof_range])</code></pre><p>Compute the curl of the vector valued function in a quadrature point.</p><p>The curl of a vector valued functions in the quadrature point <span>$\mathbf{x}_q)$</span> is computed as <span>$\mathbf{\nabla} \times \mathbf{u}(\mathbf{x_q}) = \sum\limits_{i = 1}^n \mathbf{\nabla} N_i \times (\mathbf{x_q}) \cdot \mathbf{u}_i$</span> where <span>$\mathbf{u}_i$</span> are the nodal values of the function.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L308-L316">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.spatial_coordinate" href="#Ferrite.spatial_coordinate"><code>Ferrite.spatial_coordinate</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">spatial_coordinate(fe_v::AbstractValues, q_point::Int, x::AbstractVector)</code></pre><p>Compute the spatial coordinate in a quadrature point. <code>x</code> contains the nodal coordinates of the cell.</p><p>The coordinate is computed, using the geometric interpolation, as <span>$\mathbf{x} = \sum\limits_{i = 1}^n M_i (\mathbf{\xi}) \mathbf{\hat{x}}_i$</span>.</p><p>where <span>$\xi$</span>is the coordinate of the given quadrature point <code>q_point</code> of the associated quadrature rule.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L324-L335">source</a></section><section><div><pre><code class="language-julia hljs">spatial_coordinate(ip::ScalarInterpolation, ξ::Vec, x::AbstractVector{<:Vec{sdim, T}})</code></pre><p>Compute the spatial coordinate in a given quadrature point. <code>x</code> contains the nodal coordinates of the cell.</p><p>The coordinate is computed, using the geometric interpolation, as <span>$\mathbf{x} = \sum\limits_{i = 1}^n M_i (\mathbf{\xi}) \mathbf{\hat{x}}_i$</span></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/common_values.jl#L347-L354">source</a></section></article><p>In addition, there are some methods that are unique for <code>FacetValues</code>.</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getcurrentfacet" href="#Ferrite.getcurrentfacet"><code>Ferrite.getcurrentfacet</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getcurrentfacet(fv::FacetValues)</code></pre><p>Return the current active facet of the <code>FacetValues</code> object (from last <code>reinit!</code>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/FacetValues.jl#L98-L102">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnormal" href="#Ferrite.getnormal"><code>Ferrite.getnormal</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnormal(fv::FacetValues, qp::Int)</code></pre><p>Return the normal at the quadrature point <code>qp</code> for the active facet of the <code>FacetValues</code> object(from last <code>reinit!</code>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/FacetValues.jl#L105-L110">source</a></section><section><div><pre><code class="language-julia hljs">getnormal(iv::InterfaceValues, qp::Int; here::Bool=true)</code></pre><p>Return the normal vector in the quadrature point <code>qp</code> on the interface. If <code>here = true</code> (default) the outward normal to the "here" element is returned, otherwise the outward normal to the "there" element.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L147-L153">source</a></section></article><h2 id="reference-interfacevalues"><a class="docs-heading-anchor" href="#reference-interfacevalues">InterfaceValues</a><a id="reference-interfacevalues-1"></a><a class="docs-heading-anchor-permalink" href="#reference-interfacevalues" title="Permalink"></a></h2><p>All of the methods for <a href="#Ferrite.FacetValues"><code>FacetValues</code></a> apply for <code>InterfaceValues</code> as well. In addition, there are some methods that are unique for <code>InterfaceValues</code>:</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.InterfaceValues" href="#Ferrite.InterfaceValues"><code>Ferrite.InterfaceValues</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">InterfaceValues</code></pre><p>An <code>InterfaceValues</code> object facilitates the process of evaluating values, averages, jumps and gradients of shape functions and function on the interfaces between elements.</p><p>The first element of the interface is denoted "here" and the second element "there".</p><p><strong>Constructors</strong></p><ul><li><code>InterfaceValues(qr::FacetQuadratureRule, ip::Interpolation)</code>: same quadrature rule and interpolation on both sides, default linear Lagrange geometric interpolation.</li><li><code>InterfaceValues(qr::FacetQuadratureRule, ip::Interpolation, ip_geo::Interpolation)</code>: same as above but with given geometric interpolation.</li><li><code>InterfaceValues(qr_here::FacetQuadratureRule, ip_here::Interpolation, qr_there::FacetQuadratureRule, ip_there::Interpolation)</code>: different quadrature rule and interpolation on the two sides, default linear Lagrange geometric interpolation.</li><li><code>InterfaceValues(qr_here::FacetQuadratureRule, ip_here::Interpolation, ip_geo_here::Interpolation, qr_there::FacetQuadratureRule, ip_there::Interpolation, ip_geo_there::Interpolation)</code>: same as above but with given geometric interpolation.</li><li><code>InterfaceValues(fv::FacetValues)</code>: quadrature rule and interpolations from facet values (same on both sides).</li><li><code>InterfaceValues(fv_here::FacetValues, fv_there::FacetValues)</code>: quadrature rule and interpolations from the facet values.</li></ul><p><strong>Associated methods:</strong></p><ul><li><a href="#Ferrite.shape_value_average"><code>shape_value_average</code></a></li><li><a href="#Ferrite.shape_value_jump"><code>shape_value_jump</code></a></li><li><a href="#Ferrite.shape_gradient_average"><code>shape_gradient_average</code></a></li><li><a href="#Ferrite.shape_gradient_jump"><code>shape_gradient_jump</code></a></li></ul><p><strong>Common methods:</strong></p><ul><li><p><a href="#Ferrite.reinit!"><code>reinit!</code></a></p></li><li><p><a href="#Ferrite.getnquadpoints"><code>getnquadpoints</code></a></p></li><li><p><a href="#Ferrite.getdetJdV"><code>getdetJdV</code></a></p></li><li><p><a href="#Ferrite.shape_value-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_value</code></a></p></li><li><p><a href="#Ferrite.shape_gradient-Tuple{Ferrite.AbstractValues, Int64, Int64}"><code>shape_gradient</code></a></p></li><li><p><a href="#Ferrite.shape_divergence"><code>shape_divergence</code></a></p></li><li><p><a href="#Ferrite.shape_curl"><code>shape_curl</code></a></p></li><li><p><a href="#Ferrite.function_value"><code>function_value</code></a></p></li><li><p><a href="#Ferrite.function_gradient"><code>function_gradient</code></a></p></li><li><p><a href="#Ferrite.function_symmetric_gradient"><code>function_symmetric_gradient</code></a></p></li><li><p><a href="#Ferrite.function_divergence"><code>function_divergence</code></a></p></li><li><p><a href="#Ferrite.function_curl"><code>function_curl</code></a></p></li><li><p><a href="#Ferrite.spatial_coordinate"><code>spatial_coordinate</code></a></p></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L2-L47">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_value_average" href="#Ferrite.shape_value_average"><code>Ferrite.shape_value_average</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_value_average(iv::InterfaceValues, qp::Int, i::Int)</code></pre><p>Compute the average of the value of shape function <code>i</code> at quadrature point <code>qp</code> across the interface.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L203-L208">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_value_jump" href="#Ferrite.shape_value_jump"><code>Ferrite.shape_value_jump</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_value_jump(iv::InterfaceValues, qp::Int, i::Int)</code></pre><p>Compute the jump of the value of shape function <code>i</code> at quadrature point <code>qp</code> across the interface in the default normal direction.</p><p>This function uses the definition <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} -\vec{v}^\text{here}$</span>. To obtain the form, <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} \cdot \vec{n}^\text{there} + \vec{v}^\text{here} \cdot \vec{n}^\text{here}$</span>, multiply by minus the outward facing normal to the first element's side of the interface (which is the default normal for <a href="#Ferrite.getnormal"><code>getnormal</code></a> with <a href="#Ferrite.InterfaceValues"><code>InterfaceValues</code></a>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L211-L219">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_gradient_average" href="#Ferrite.shape_gradient_average"><code>Ferrite.shape_gradient_average</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_gradient_average(iv::InterfaceValues, qp::Int, i::Int)</code></pre><p>Compute the average of the gradient of shape function <code>i</code> at quadrature point <code>qp</code> across the interface.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L222-L227">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.shape_gradient_jump" href="#Ferrite.shape_gradient_jump"><code>Ferrite.shape_gradient_jump</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">shape_gradient_jump(iv::InterfaceValues, qp::Int, i::Int)</code></pre><p>Compute the jump of the gradient of shape function <code>i</code> at quadrature point <code>qp</code> across the interface in the default normal direction.</p><p>This function uses the definition <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} -\vec{v}^\text{here}$</span>. To obtain the form, <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} ⋅ \vec{n}^\text{there} + \vec{v}^\text{here} ⋅ \vec{n}^\text{here}$</span>, multiply by minus the outward facing normal to the first element's side of the interface (which is the default normal for <a href="#Ferrite.getnormal"><code>getnormal</code></a> with <a href="#Ferrite.InterfaceValues"><code>InterfaceValues</code></a>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L230-L238">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_value_average" href="#Ferrite.function_value_average"><code>Ferrite.function_value_average</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_value_average(iv::InterfaceValues, q_point::Int, u) +function_value_average(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there)</code></pre><p>Compute the average of the function value at the quadrature point on the interface.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L280-L285">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_value_jump" href="#Ferrite.function_value_jump"><code>Ferrite.function_value_jump</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_value_jump(iv::InterfaceValues, q_point::Int, u) +function_value_jump(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there)</code></pre><p>Compute the jump of the function value at the quadrature point over the interface along the default normal direction.</p><p>This function uses the definition <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} -\vec{v}^\text{here}$</span>. To obtain the form, <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} ⋅ \vec{n}^\text{there} + \vec{v}^\text{here} ⋅ \vec{n}^\text{here}$</span>, multiply by minus the outward facing normal to the first element's side of the interface (which is the default normal for <a href="#Ferrite.getnormal"><code>getnormal</code></a> with <a href="#Ferrite.InterfaceValues"><code>InterfaceValues</code></a>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L288-L297">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_gradient_average" href="#Ferrite.function_gradient_average"><code>Ferrite.function_gradient_average</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_gradient_average(iv::InterfaceValues, q_point::Int, u) +function_gradient_average(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there)</code></pre><p>Compute the average of the function gradient at the quadrature point on the interface.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L300-L305">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.function_gradient_jump" href="#Ferrite.function_gradient_jump"><code>Ferrite.function_gradient_jump</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">function_gradient_jump(iv::InterfaceValues, q_point::Int, u) +function_gradient_jump(iv::InterfaceValues, q_point::Int, u, dof_range_here, dof_range_there)</code></pre><p>Compute the jump of the function gradient at the quadrature point over the interface along the default normal direction.</p><p>This function uses the definition <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} -\vec{v}^\text{here}$</span>. To obtain the form, <span>$\llbracket \vec{v} \rrbracket=\vec{v}^\text{there} ⋅ \vec{n}^\text{there} + \vec{v}^\text{here} ⋅ \vec{n}^\text{here}$</span>, multiply by minus the outward facing normal to the first element's side of the interface (which is the default normal for <a href="#Ferrite.getnormal"><code>getnormal</code></a> with <a href="#Ferrite.InterfaceValues"><code>InterfaceValues</code></a>).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/FEValues/InterfaceValues.jl#L308-L317">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../interpolations/">« Interpolation</a><a class="docs-footer-nextpage" href="../dofhandler/">Degrees of Freedom »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/grid/index.html b/dev/reference/grid/index.html index 2ab3871abe..ab90cfc1bb 100644 --- a/dev/reference/grid/index.html +++ b/dev/reference/grid/index.html @@ -1,26 +1,26 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Grid & AbstractGrid · Ferrite.jl</title><meta name="title" content="Grid & AbstractGrid · Ferrite.jl"/><meta property="og:title" content="Grid & AbstractGrid · Ferrite.jl"/><meta property="twitter:title" content="Grid & AbstractGrid · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/grid/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/grid/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/grid/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li><a class="tocitem" href="../fevalues/">FEValues</a></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary conditions</a></li><li class="is-active"><a class="tocitem" href>Grid & AbstractGrid</a><ul class="internal"><li><a class="tocitem" href="#Grid"><span>Grid</span></a></li></ul></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li><a class="tocitem" href="../utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Grid & AbstractGrid</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Grid & AbstractGrid</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/grid.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Grid-and-AbstractGrid"><a class="docs-heading-anchor" href="#Grid-and-AbstractGrid">Grid & AbstractGrid</a><a id="Grid-and-AbstractGrid-1"></a><a class="docs-heading-anchor-permalink" href="#Grid-and-AbstractGrid" title="Permalink"></a></h1><h2 id="Grid"><a class="docs-heading-anchor" href="#Grid">Grid</a><a id="Grid-1"></a><a class="docs-heading-anchor-permalink" href="#Grid" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.generate_grid" href="#Ferrite.generate_grid"><code>Ferrite.generate_grid</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">generate_grid(celltype::Cell, nel::NTuple, [left::Vec, right::Vec)</code></pre><p>Return a <code>Grid</code> for a rectangle in 1, 2 or 3 dimensions. <code>celltype</code> defined the type of cells, e.g. <code>Triangle</code> or <code>Hexahedron</code>. <code>nel</code> is a tuple of the number of elements in each direction. <code>left</code> and <code>right</code> are optional endpoints of the domain. Defaults to -1 and 1 in all directions.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid_generators.jl#L1-L7">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.Node" href="#Ferrite.Node"><code>Ferrite.Node</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Node{dim, T}</code></pre><p>A <code>Node</code> is a point in space.</p><p><strong>Fields</strong></p><ul><li><code>x::Vec{dim,T}</code>: stores the coordinates</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L4-L11">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CellIndex" href="#Ferrite.CellIndex"><code>Ferrite.CellIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>A <code>CellIndex</code> wraps an Int and corresponds to a cell with that number in the mesh</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Ferrite.jl#L75-L77">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.VertexIndex" href="#Ferrite.VertexIndex"><code>Ferrite.VertexIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>A <code>VertexIndex</code> wraps an (Int, Int) and defines a local vertex by pointing to a (cell, vert).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Ferrite.jl#L96-L98">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.EdgeIndex" href="#Ferrite.EdgeIndex"><code>Ferrite.EdgeIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>A <code>EdgeIndex</code> wraps an (Int, Int) and defines a local edge by pointing to a (cell, edge).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Ferrite.jl#L89-L91">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FaceIndex" href="#Ferrite.FaceIndex"><code>Ferrite.FaceIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>A <code>FaceIndex</code> wraps an (Int, Int) and defines a local face by pointing to a (cell, face).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Ferrite.jl#L82-L84">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FacetIndex" href="#Ferrite.FacetIndex"><code>Ferrite.FacetIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>A <code>FacetIndex</code> wraps an (Int, Int) and defines a local facet by pointing to a (cell, facet).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Ferrite.jl#L103-L105">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.Grid" href="#Ferrite.Grid"><code>Ferrite.Grid</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Grid{dim, C<:AbstractCell, T<:Real} <: AbstractGrid}</code></pre><p>A <code>Grid</code> is a collection of <code>Ferrite.AbstractCell</code>s and <code>Ferrite.Node</code>s which covers the computational domain. Helper structures for applying boundary conditions or define subdomains are gathered in <code>cellsets</code>, <code>nodesets</code>, <code>facetsets</code>, and <code>vertexsets</code>.</p><p><strong>Fields</strong></p><ul><li><code>cells::Vector{C}</code>: stores all cells of the grid</li><li><code>nodes::Vector{Node{dim,T}}</code>: stores the <code>dim</code> dimensional nodes of the grid</li><li><code>cellsets::Dict{String, OrderedSet{Int}}</code>: maps a <code>String</code> key to an <code>OrderedSet</code> of cell ids</li><li><code>nodesets::Dict{String, OrderedSet{Int}}</code>: maps a <code>String</code> key to an <code>OrderedSet</code> of global node ids</li><li><code>facetsets::Dict{String, OrderedSet{FacetIndex}}</code>: maps a <code>String</code> to an <code>OrderedSet</code> of <code>FacetIndex</code></li><li><code>vertexsets::Dict{String, OrderedSet{VertexIndex}}</code>: maps a <code>String</code> key to an <code>OrderedSet</code> of <code>VertexIndex</code></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L354-L368">source</a></section></article><h3 id="Utility-Functions"><a class="docs-heading-anchor" href="#Utility-Functions">Utility Functions</a><a id="Utility-Functions-1"></a><a class="docs-heading-anchor-permalink" href="#Utility-Functions" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getcells" href="#Ferrite.getcells"><code>Ferrite.getcells</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getcells(grid::AbstractGrid) +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Grid & AbstractGrid · Ferrite.jl</title><meta name="title" content="Grid & AbstractGrid · Ferrite.jl"/><meta property="og:title" content="Grid & AbstractGrid · Ferrite.jl"/><meta property="twitter:title" content="Grid & AbstractGrid · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/grid/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/grid/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/grid/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li><a class="tocitem" href="../fevalues/">FEValues</a></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary conditions</a></li><li class="is-active"><a class="tocitem" href>Grid & AbstractGrid</a><ul class="internal"><li><a class="tocitem" href="#Grid"><span>Grid</span></a></li></ul></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li><a class="tocitem" href="../utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Grid & AbstractGrid</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Grid & AbstractGrid</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/grid.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Grid-and-AbstractGrid"><a class="docs-heading-anchor" href="#Grid-and-AbstractGrid">Grid & AbstractGrid</a><a id="Grid-and-AbstractGrid-1"></a><a class="docs-heading-anchor-permalink" href="#Grid-and-AbstractGrid" title="Permalink"></a></h1><h2 id="Grid"><a class="docs-heading-anchor" href="#Grid">Grid</a><a id="Grid-1"></a><a class="docs-heading-anchor-permalink" href="#Grid" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.generate_grid" href="#Ferrite.generate_grid"><code>Ferrite.generate_grid</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">generate_grid(celltype::Cell, nel::NTuple, [left::Vec, right::Vec)</code></pre><p>Return a <code>Grid</code> for a rectangle in 1, 2 or 3 dimensions. <code>celltype</code> defined the type of cells, e.g. <code>Triangle</code> or <code>Hexahedron</code>. <code>nel</code> is a tuple of the number of elements in each direction. <code>left</code> and <code>right</code> are optional endpoints of the domain. Defaults to -1 and 1 in all directions.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid_generators.jl#L1-L7">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.Node" href="#Ferrite.Node"><code>Ferrite.Node</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Node{dim, T}</code></pre><p>A <code>Node</code> is a point in space.</p><p><strong>Fields</strong></p><ul><li><code>x::Vec{dim,T}</code>: stores the coordinates</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L4-L11">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CellIndex" href="#Ferrite.CellIndex"><code>Ferrite.CellIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>A <code>CellIndex</code> wraps an Int and corresponds to a cell with that number in the mesh</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Ferrite.jl#L75-L77">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.VertexIndex" href="#Ferrite.VertexIndex"><code>Ferrite.VertexIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>A <code>VertexIndex</code> wraps an (Int, Int) and defines a local vertex by pointing to a (cell, vert).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Ferrite.jl#L96-L98">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.EdgeIndex" href="#Ferrite.EdgeIndex"><code>Ferrite.EdgeIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>A <code>EdgeIndex</code> wraps an (Int, Int) and defines a local edge by pointing to a (cell, edge).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Ferrite.jl#L89-L91">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FaceIndex" href="#Ferrite.FaceIndex"><code>Ferrite.FaceIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>A <code>FaceIndex</code> wraps an (Int, Int) and defines a local face by pointing to a (cell, face).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Ferrite.jl#L82-L84">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FacetIndex" href="#Ferrite.FacetIndex"><code>Ferrite.FacetIndex</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>A <code>FacetIndex</code> wraps an (Int, Int) and defines a local facet by pointing to a (cell, facet).</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Ferrite.jl#L103-L105">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.Grid" href="#Ferrite.Grid"><code>Ferrite.Grid</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Grid{dim, C<:AbstractCell, T<:Real} <: AbstractGrid}</code></pre><p>A <code>Grid</code> is a collection of <code>Ferrite.AbstractCell</code>s and <code>Ferrite.Node</code>s which covers the computational domain. Helper structures for applying boundary conditions or define subdomains are gathered in <code>cellsets</code>, <code>nodesets</code>, <code>facetsets</code>, and <code>vertexsets</code>.</p><p><strong>Fields</strong></p><ul><li><code>cells::Vector{C}</code>: stores all cells of the grid</li><li><code>nodes::Vector{Node{dim,T}}</code>: stores the <code>dim</code> dimensional nodes of the grid</li><li><code>cellsets::Dict{String, OrderedSet{Int}}</code>: maps a <code>String</code> key to an <code>OrderedSet</code> of cell ids</li><li><code>nodesets::Dict{String, OrderedSet{Int}}</code>: maps a <code>String</code> key to an <code>OrderedSet</code> of global node ids</li><li><code>facetsets::Dict{String, OrderedSet{FacetIndex}}</code>: maps a <code>String</code> to an <code>OrderedSet</code> of <code>FacetIndex</code></li><li><code>vertexsets::Dict{String, OrderedSet{VertexIndex}}</code>: maps a <code>String</code> key to an <code>OrderedSet</code> of <code>VertexIndex</code></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L354-L368">source</a></section></article><h3 id="Utility-Functions"><a class="docs-heading-anchor" href="#Utility-Functions">Utility Functions</a><a id="Utility-Functions-1"></a><a class="docs-heading-anchor-permalink" href="#Utility-Functions" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getcells" href="#Ferrite.getcells"><code>Ferrite.getcells</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getcells(grid::AbstractGrid) getcells(grid::AbstractGrid, v::Union{Int,Vector{Int}} -getcells(grid::AbstractGrid, setname::String)</code></pre><p>Returns either all <code>cells::Collection{C<:AbstractCell}</code> of a <code><:AbstractGrid</code> or a subset based on an <code>Int</code>, <code>Vector{Int}</code> or <code>String</code>. Whereas the last option tries to call a <code>cellset</code> of the <code>grid</code>. <code>Collection</code> can be any indexable type, for <code>Grid</code> it is <code>Vector{C<:AbstractCell}</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L459-L466">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getncells" href="#Ferrite.getncells"><code>Ferrite.getncells</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Returns the number of cells in the <code><:AbstractGrid</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L470">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnodes" href="#Ferrite.getnodes"><code>Ferrite.getnodes</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnodes(grid::AbstractGrid) +getcells(grid::AbstractGrid, setname::String)</code></pre><p>Returns either all <code>cells::Collection{C<:AbstractCell}</code> of a <code><:AbstractGrid</code> or a subset based on an <code>Int</code>, <code>Vector{Int}</code> or <code>String</code>. Whereas the last option tries to call a <code>cellset</code> of the <code>grid</code>. <code>Collection</code> can be any indexable type, for <code>Grid</code> it is <code>Vector{C<:AbstractCell}</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L459-L466">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getncells" href="#Ferrite.getncells"><code>Ferrite.getncells</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Returns the number of cells in the <code><:AbstractGrid</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L470">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnodes" href="#Ferrite.getnodes"><code>Ferrite.getnodes</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnodes(grid::AbstractGrid) getnodes(grid::AbstractGrid, v::Union{Int,Vector{Int}} -getnodes(grid::AbstractGrid, setname::String)</code></pre><p>Returns either all <code>nodes::Collection{N}</code> of a <code><:AbstractGrid</code> or a subset based on an <code>Int</code>, <code>Vector{Int}</code> or <code>String</code>. The last option tries to call a <code>nodeset</code> of the <code><:AbstractGrid</code>. <code>Collection{N}</code> refers to some indexable collection where each element corresponds to a Node.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L476-L484">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnnodes" href="#Ferrite.getnnodes"><code>Ferrite.getnnodes</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Returns the number of nodes in the grid.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L488">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.nnodes_per_cell" href="#Ferrite.nnodes_per_cell"><code>Ferrite.nnodes_per_cell</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Returns the number of nodes of the <code>i</code>-th cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L490">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getcellset" href="#Ferrite.getcellset"><code>Ferrite.getcellset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getcellset(grid::AbstractGrid, setname::String)</code></pre><p>Returns all cells as cellid in the set with name <code>setname</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L502-L506">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnodeset" href="#Ferrite.getnodeset"><code>Ferrite.getnodeset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnodeset(grid::AbstractGrid, setname::String)</code></pre><p>Returns all nodes as nodeid in the set with name <code>setname</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L515-L519">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getfacetset" href="#Ferrite.getfacetset"><code>Ferrite.getfacetset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getfacetset(grid::AbstractGrid, setname::String)</code></pre><p>Returns all facets as <code>FacetIndex</code> in the set with name <code>setname</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L528-L532">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getvertexset" href="#Ferrite.getvertexset"><code>Ferrite.getvertexset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getvertexset(grid::AbstractGrid, setname::String)</code></pre><p>Returns all vertices as <code>VertexIndex</code> in the set with name <code>setname</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L542-L546">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.transform_coordinates!" href="#Ferrite.transform_coordinates!"><code>Ferrite.transform_coordinates!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">transform_coordinates!(grid::Abstractgrid, f::Function)</code></pre><p>Transform the coordinates of all nodes of the <code>grid</code> based on some transformation function <code>f(x)</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L556-L560">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getcoordinates" href="#Ferrite.getcoordinates"><code>Ferrite.getcoordinates</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getcoordinates(grid::AbstractGrid, idx::Union{Int,CellIndex}) -getcoordinates(cache::CellCache)</code></pre><p>Get a vector with the coordinates of the cell corresponding to <code>idx</code> or <code>cache</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L566-L571">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getcoordinates!" href="#Ferrite.getcoordinates!"><code>Ferrite.getcoordinates!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getcoordinates!(x::Vector{<:Vec}, grid::AbstractGrid, idx::Union{Int,CellIndex}) -getcoordinates!(x::Vector{<:Vec}, grid::AbstractGrid, cell::AbstractCell)</code></pre><p>Mutate <code>x</code> to the coordinates of the cell corresponding to <code>idx</code> or <code>cell</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L581-L586">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.geometric_interpolation-Tuple{Ferrite.AbstractCell}" href="#Ferrite.geometric_interpolation-Tuple{Ferrite.AbstractCell}"><code>Ferrite.geometric_interpolation</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">geometric_interpolation(::AbstractCell)::ScalarInterpolation -geometric_interpolation(::Type{<:AbstractCell})::ScalarInterpolation</code></pre><p>Each <code>AbstractCell</code> type has a unique geometric interpolation describing its geometry. This function returns that interpolation, which is always a scalar interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L156-L162">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_node_coordinate" href="#Ferrite.get_node_coordinate"><code>Ferrite.get_node_coordinate</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">get_node_coordinate(::Node)</code></pre><p>Get the value of the node coordinate.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L17-L21">source</a></section><section><div><pre><code class="language-julia hljs">get_node_coordinate(grid::AbstractGrid, n::Int)</code></pre><p>Return the coordinate of the <code>n</code>th node in <code>grid</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L600-L604">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getspatialdim-Tuple{Ferrite.AbstractGrid}" href="#Ferrite.getspatialdim-Tuple{Ferrite.AbstractGrid}"><code>Ferrite.getspatialdim</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getspatialdim(grid::AbstractGrid)</code></pre><p>Get the spatial dimension of the grid, corresponding to the vector dimension of the grid's coordinates.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L430-L434">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getrefdim-Tuple{Ferrite.AbstractCell}" href="#Ferrite.getrefdim-Tuple{Ferrite.AbstractCell}"><code>Ferrite.getrefdim</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getrefdim(cell::AbstractCell) -Ferrite.getrefdim(::Type{<:AbstractCell})</code></pre><p>Get the reference dimension of the cell, i.e. the dimension of the cell's reference shape.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/grid.jl#L338-L344">source</a></section></article><h3 id="Topology"><a class="docs-heading-anchor" href="#Topology">Topology</a><a id="Topology-1"></a><a class="docs-heading-anchor-permalink" href="#Topology" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.ExclusiveTopology" href="#Ferrite.ExclusiveTopology"><code>Ferrite.ExclusiveTopology</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ExclusiveTopology(grid::AbstractGrid)</code></pre><p>The <strong>experimental feature</strong> <code>ExclusiveTopology</code> saves topological (connectivity/neighborhood) data of the grid. Only the highest dimensional neighborhood is saved. I.e., if something is connected by a face and an edge, only the face neighborhood is saved. The lower dimensional neighborhood is recomputed when calling getneighborhood if needed.</p><p><strong>Fields</strong></p><ul><li><code>vertex_to_cell::AbstractArray{AbstractVector{Int}, 1}</code>: global vertex id to all cells containing the vertex</li><li><code>cell_neighbor::AbstractArray{AbstractVector{Int}, 1}</code>: cellid to all connected cells</li><li><code>face_neighbor::AbstractArray{AbstractVector{FaceIndex}, 2}</code>: <code>face_neighbor[cellid, local_face_id]</code> -> neighboring faces</li><li><code>edge_neighbor::AbstractArray{AbstractVector{EdgeIndex}, 2}</code>: <code>edge_neighbor[cellid, local_edge_id]</code> -> neighboring edges</li><li><code>vertex_neighbor::AbstractArray{AbstractVector{VertexIndex}, 2}</code>: <code>vertex_neighbor[cellid, local_vertex_id]</code> -> neighboring vertices</li><li><code>face_skeleton::Union{Vector{FaceIndex}, Nothing}</code>: List of unique faces in the grid given as <code>FaceIndex</code></li><li><code>edge_skeleton::Union{Vector{EdgeIndex}, Nothing}</code>: List of unique edges in the grid given as <code>EdgeIndex</code></li><li><code>vertex_skeleton::Union{Vector{VertexIndex}, Nothing}</code>: List of unique vertices in the grid given as <code>VertexIndex</code></li></ul><div class="admonition is-warning"><header class="admonition-header">Limitations</header><div class="admonition-body"><p>The implementation only works with conforming grids, i.e. grids without "hanging nodes". Non-conforming grids will give unexpected results. Grids with embedded cells (different reference dimension compared to the spatial dimension) are not supported, and will error on construction.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/topology.jl#L19-L41">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getneighborhood" href="#Ferrite.getneighborhood"><code>Ferrite.getneighborhood</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getneighborhood(topology, grid::AbstractGrid, cellidx::CellIndex, include_self=false) +getnodes(grid::AbstractGrid, setname::String)</code></pre><p>Returns either all <code>nodes::Collection{N}</code> of a <code><:AbstractGrid</code> or a subset based on an <code>Int</code>, <code>Vector{Int}</code> or <code>String</code>. The last option tries to call a <code>nodeset</code> of the <code><:AbstractGrid</code>. <code>Collection{N}</code> refers to some indexable collection where each element corresponds to a Node.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L476-L484">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnnodes" href="#Ferrite.getnnodes"><code>Ferrite.getnnodes</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Returns the number of nodes in the grid.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L488">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.nnodes_per_cell" href="#Ferrite.nnodes_per_cell"><code>Ferrite.nnodes_per_cell</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Returns the number of nodes of the <code>i</code>-th cell.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L490">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getcellset" href="#Ferrite.getcellset"><code>Ferrite.getcellset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getcellset(grid::AbstractGrid, setname::String)</code></pre><p>Returns all cells as cellid in the set with name <code>setname</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L502-L506">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnodeset" href="#Ferrite.getnodeset"><code>Ferrite.getnodeset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnodeset(grid::AbstractGrid, setname::String)</code></pre><p>Returns all nodes as nodeid in the set with name <code>setname</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L515-L519">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getfacetset" href="#Ferrite.getfacetset"><code>Ferrite.getfacetset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getfacetset(grid::AbstractGrid, setname::String)</code></pre><p>Returns all facets as <code>FacetIndex</code> in the set with name <code>setname</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L528-L532">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getvertexset" href="#Ferrite.getvertexset"><code>Ferrite.getvertexset</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getvertexset(grid::AbstractGrid, setname::String)</code></pre><p>Returns all vertices as <code>VertexIndex</code> in the set with name <code>setname</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L542-L546">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.transform_coordinates!" href="#Ferrite.transform_coordinates!"><code>Ferrite.transform_coordinates!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">transform_coordinates!(grid::Abstractgrid, f::Function)</code></pre><p>Transform the coordinates of all nodes of the <code>grid</code> based on some transformation function <code>f(x)</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L556-L560">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getcoordinates" href="#Ferrite.getcoordinates"><code>Ferrite.getcoordinates</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getcoordinates(grid::AbstractGrid, idx::Union{Int,CellIndex}) +getcoordinates(cache::CellCache)</code></pre><p>Get a vector with the coordinates of the cell corresponding to <code>idx</code> or <code>cache</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L566-L571">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getcoordinates!" href="#Ferrite.getcoordinates!"><code>Ferrite.getcoordinates!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getcoordinates!(x::Vector{<:Vec}, grid::AbstractGrid, idx::Union{Int,CellIndex}) +getcoordinates!(x::Vector{<:Vec}, grid::AbstractGrid, cell::AbstractCell)</code></pre><p>Mutate <code>x</code> to the coordinates of the cell corresponding to <code>idx</code> or <code>cell</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L581-L586">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.geometric_interpolation-Tuple{Ferrite.AbstractCell}" href="#Ferrite.geometric_interpolation-Tuple{Ferrite.AbstractCell}"><code>Ferrite.geometric_interpolation</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">geometric_interpolation(::AbstractCell)::ScalarInterpolation +geometric_interpolation(::Type{<:AbstractCell})::ScalarInterpolation</code></pre><p>Each <code>AbstractCell</code> type has a unique geometric interpolation describing its geometry. This function returns that interpolation, which is always a scalar interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L156-L162">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.get_node_coordinate" href="#Ferrite.get_node_coordinate"><code>Ferrite.get_node_coordinate</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">get_node_coordinate(::Node)</code></pre><p>Get the value of the node coordinate.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L17-L21">source</a></section><section><div><pre><code class="language-julia hljs">get_node_coordinate(grid::AbstractGrid, n::Int)</code></pre><p>Return the coordinate of the <code>n</code>th node in <code>grid</code></p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L600-L604">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getspatialdim-Tuple{Ferrite.AbstractGrid}" href="#Ferrite.getspatialdim-Tuple{Ferrite.AbstractGrid}"><code>Ferrite.getspatialdim</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getspatialdim(grid::AbstractGrid)</code></pre><p>Get the spatial dimension of the grid, corresponding to the vector dimension of the grid's coordinates.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L430-L434">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getrefdim-Tuple{Ferrite.AbstractCell}" href="#Ferrite.getrefdim-Tuple{Ferrite.AbstractCell}"><code>Ferrite.getrefdim</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getrefdim(cell::AbstractCell) +Ferrite.getrefdim(::Type{<:AbstractCell})</code></pre><p>Get the reference dimension of the cell, i.e. the dimension of the cell's reference shape.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/grid.jl#L338-L344">source</a></section></article><h3 id="Topology"><a class="docs-heading-anchor" href="#Topology">Topology</a><a id="Topology-1"></a><a class="docs-heading-anchor-permalink" href="#Topology" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.ExclusiveTopology" href="#Ferrite.ExclusiveTopology"><code>Ferrite.ExclusiveTopology</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">ExclusiveTopology(grid::AbstractGrid)</code></pre><p>The <strong>experimental feature</strong> <code>ExclusiveTopology</code> saves topological (connectivity/neighborhood) data of the grid. Only the highest dimensional neighborhood is saved. I.e., if something is connected by a face and an edge, only the face neighborhood is saved. The lower dimensional neighborhood is recomputed when calling getneighborhood if needed.</p><p><strong>Fields</strong></p><ul><li><code>vertex_to_cell::AbstractArray{AbstractVector{Int}, 1}</code>: global vertex id to all cells containing the vertex</li><li><code>cell_neighbor::AbstractArray{AbstractVector{Int}, 1}</code>: cellid to all connected cells</li><li><code>face_neighbor::AbstractArray{AbstractVector{FaceIndex}, 2}</code>: <code>face_neighbor[cellid, local_face_id]</code> -> neighboring faces</li><li><code>edge_neighbor::AbstractArray{AbstractVector{EdgeIndex}, 2}</code>: <code>edge_neighbor[cellid, local_edge_id]</code> -> neighboring edges</li><li><code>vertex_neighbor::AbstractArray{AbstractVector{VertexIndex}, 2}</code>: <code>vertex_neighbor[cellid, local_vertex_id]</code> -> neighboring vertices</li><li><code>face_skeleton::Union{Vector{FaceIndex}, Nothing}</code>: List of unique faces in the grid given as <code>FaceIndex</code></li><li><code>edge_skeleton::Union{Vector{EdgeIndex}, Nothing}</code>: List of unique edges in the grid given as <code>EdgeIndex</code></li><li><code>vertex_skeleton::Union{Vector{VertexIndex}, Nothing}</code>: List of unique vertices in the grid given as <code>VertexIndex</code></li></ul><div class="admonition is-warning"><header class="admonition-header">Limitations</header><div class="admonition-body"><p>The implementation only works with conforming grids, i.e. grids without "hanging nodes". Non-conforming grids will give unexpected results. Grids with embedded cells (different reference dimension compared to the spatial dimension) are not supported, and will error on construction.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/topology.jl#L19-L41">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getneighborhood" href="#Ferrite.getneighborhood"><code>Ferrite.getneighborhood</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getneighborhood(topology, grid::AbstractGrid, cellidx::CellIndex, include_self=false) getneighborhood(topology, grid::AbstractGrid, faceidx::FaceIndex, include_self=false) getneighborhood(topology, grid::AbstractGrid, vertexidx::VertexIndex, include_self=false) -getneighborhood(topology, grid::AbstractGrid, edgeidx::EdgeIndex, include_self=false)</code></pre><p>Returns all connected entities of the same type as defined by the respective topology. If <code>include_self</code> is true, the given entity is included in the returned list as well.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/topology.jl#L5-L13">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.facetskeleton" href="#Ferrite.facetskeleton"><code>Ferrite.facetskeleton</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">facetskeleton(top::ExclusiveTopology, grid::AbstractGrid)</code></pre><p>Materializes the skeleton from the <code>neighborhood</code> information by returning an iterable over the unique facets in the grid, described by <code>FacetIndex</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/topology.jl#L375-L380">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.vertex_star_stencils" href="#Ferrite.vertex_star_stencils"><code>Ferrite.vertex_star_stencils</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">vertex_star_stencils(top::ExclusiveTopology, grid::Grid) -> AbstractVector{AbstractVector{VertexIndex}}</code></pre><p>Computes the stencils induced by the edge connectivity of the vertices.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/topology.jl#L320-L323">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getstencil" href="#Ferrite.getstencil"><code>Ferrite.getstencil</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getstencil(top::ArrayOfVectorViews{VertexIndex, 1}, grid::AbstractGrid, vertex_idx::VertexIndex) -> AbstractVector{VertexIndex}</code></pre><p>Get an iterateable over the stencil members for a given local entity.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/topology.jl#L347-L350">source</a></section></article><h3 id="Grid-Sets-Utility"><a class="docs-heading-anchor" href="#Grid-Sets-Utility">Grid Sets Utility</a><a id="Grid-Sets-Utility-1"></a><a class="docs-heading-anchor-permalink" href="#Grid-Sets-Utility" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addcellset!" href="#Ferrite.addcellset!"><code>Ferrite.addcellset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">addcellset!(grid::AbstractGrid, name::String, cellid::AbstractVecOrSet{Int}) +getneighborhood(topology, grid::AbstractGrid, edgeidx::EdgeIndex, include_self=false)</code></pre><p>Returns all connected entities of the same type as defined by the respective topology. If <code>include_self</code> is true, the given entity is included in the returned list as well.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/topology.jl#L5-L13">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.facetskeleton" href="#Ferrite.facetskeleton"><code>Ferrite.facetskeleton</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">facetskeleton(top::ExclusiveTopology, grid::AbstractGrid)</code></pre><p>Materializes the skeleton from the <code>neighborhood</code> information by returning an iterable over the unique facets in the grid, described by <code>FacetIndex</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/topology.jl#L375-L380">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.vertex_star_stencils" href="#Ferrite.vertex_star_stencils"><code>Ferrite.vertex_star_stencils</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">vertex_star_stencils(top::ExclusiveTopology, grid::Grid) -> AbstractVector{AbstractVector{VertexIndex}}</code></pre><p>Computes the stencils induced by the edge connectivity of the vertices.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/topology.jl#L320-L323">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getstencil" href="#Ferrite.getstencil"><code>Ferrite.getstencil</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getstencil(top::ArrayOfVectorViews{VertexIndex, 1}, grid::AbstractGrid, vertex_idx::VertexIndex) -> AbstractVector{VertexIndex}</code></pre><p>Get an iterateable over the stencil members for a given local entity.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/topology.jl#L347-L350">source</a></section></article><h3 id="Grid-Sets-Utility"><a class="docs-heading-anchor" href="#Grid-Sets-Utility">Grid Sets Utility</a><a id="Grid-Sets-Utility-1"></a><a class="docs-heading-anchor-permalink" href="#Grid-Sets-Utility" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addcellset!" href="#Ferrite.addcellset!"><code>Ferrite.addcellset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">addcellset!(grid::AbstractGrid, name::String, cellid::AbstractVecOrSet{Int}) addcellset!(grid::AbstractGrid, name::String, f::function; all::Bool=true)</code></pre><p>Adds a cellset to the grid with key <code>name</code>. Cellsets are typically used to define subdomains of the problem, e.g. two materials in the computational domain. The <code>DofHandler</code> can construct different fields which live not on the whole domain, but rather on a cellset. <code>all=true</code> implies that <code>f(x)</code> must return <code>true</code> for all nodal coordinates <code>x</code> in the cell if the cell should be added to the set, otherwise it suffices that <code>f(x)</code> returns <code>true</code> for one node.</p><pre><code class="language-julia hljs">addcellset!(grid, "left", Set((1,3))) #add cells with id 1 and 3 to cellset left -addcellset!(grid, "right", x -> norm(x[1]) < 2.0 ) #add cell to cellset right, if x[1] of each cell's node is smaller than 2.0</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/utils.jl#L6-L20">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addfacetset!" href="#Ferrite.addfacetset!"><code>Ferrite.addfacetset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">addfacetset!(grid::AbstractGrid, name::String, faceid::AbstractVecOrSet{FacetIndex}) +addcellset!(grid, "right", x -> norm(x[1]) < 2.0 ) #add cell to cellset right, if x[1] of each cell's node is smaller than 2.0</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/utils.jl#L6-L20">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addfacetset!" href="#Ferrite.addfacetset!"><code>Ferrite.addfacetset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">addfacetset!(grid::AbstractGrid, name::String, faceid::AbstractVecOrSet{FacetIndex}) addfacetset!(grid::AbstractGrid, name::String, f::Function; all::Bool=true)</code></pre><p>Adds a facetset to the grid with key <code>name</code>. A facetset maps a <code>String</code> key to a <code>OrderedSet</code> of tuples corresponding to <code>(global_cell_id, local_facet_id)</code>. Facetsets can be used to initialize <code>Dirichlet</code> boundary conditions for the <code>ConstraintHandler</code>. <code>all=true</code> implies that <code>f(x)</code> must return <code>true</code> for all nodal coordinates <code>x</code> on the facet if the facet should be added to the set, otherwise it suffices that <code>f(x)</code> returns <code>true</code> for one node.</p><pre><code class="language-julia hljs">addfacetset!(grid, "right", Set((FacetIndex(2,2), FacetIndex(4,2)))) #see grid manual example for reference -addfacetset!(grid, "clamped", x -> norm(x[1]) ≈ 0.0) #see incompressible elasticity example for reference</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/utils.jl#L42-L56">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addboundaryfacetset!" href="#Ferrite.addboundaryfacetset!"><code>Ferrite.addboundaryfacetset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>addboundaryfacetset!(grid::AbstractGrid, topology::ExclusiveTopology, name::String, f::Function; all::Bool=true)</p><p>Adds a boundary facetset to the grid with key <code>name</code>. A facetset maps a <code>String</code> key to a <code>OrderedSet</code> of tuples corresponding to <code>(global_cell_id, local_facet_id)</code>. Facetsets are used to initialize <code>Dirichlet</code> structs, that are needed to specify the boundary for the <code>ConstraintHandler</code>. <code>all=true</code> implies that <code>f(x)</code> must return <code>true</code> for all nodal coordinates <code>x</code> on the facet if the facet should be added to the set, otherwise it suffices that <code>f(x)</code> returns <code>true</code> for one node.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/utils.jl#L104-L113">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addvertexset!" href="#Ferrite.addvertexset!"><code>Ferrite.addvertexset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">addvertexset!(grid::AbstractGrid, name::String, faceid::AbstractVecOrSet{FaceIndex}) +addfacetset!(grid, "clamped", x -> norm(x[1]) ≈ 0.0) #see incompressible elasticity example for reference</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/utils.jl#L42-L56">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addboundaryfacetset!" href="#Ferrite.addboundaryfacetset!"><code>Ferrite.addboundaryfacetset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>addboundaryfacetset!(grid::AbstractGrid, topology::ExclusiveTopology, name::String, f::Function; all::Bool=true)</p><p>Adds a boundary facetset to the grid with key <code>name</code>. A facetset maps a <code>String</code> key to a <code>OrderedSet</code> of tuples corresponding to <code>(global_cell_id, local_facet_id)</code>. Facetsets are used to initialize <code>Dirichlet</code> structs, that are needed to specify the boundary for the <code>ConstraintHandler</code>. <code>all=true</code> implies that <code>f(x)</code> must return <code>true</code> for all nodal coordinates <code>x</code> on the facet if the facet should be added to the set, otherwise it suffices that <code>f(x)</code> returns <code>true</code> for one node.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/utils.jl#L104-L113">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addvertexset!" href="#Ferrite.addvertexset!"><code>Ferrite.addvertexset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">addvertexset!(grid::AbstractGrid, name::String, faceid::AbstractVecOrSet{FaceIndex}) addvertexset!(grid::AbstractGrid, name::String, f::Function)</code></pre><p>Adds a vertexset to the grid with key <code>name</code>. A vertexset maps a <code>String</code> key to a <code>OrderedSet</code> of tuples corresponding to <code>(global_cell_id, local_vertex_id)</code>. Vertexsets can be used to initialize <code>Dirichlet</code> boundary conditions for the <code>ConstraintHandler</code>.</p><pre><code class="language-julia hljs">addvertexset!(grid, "right", Set((VertexIndex(2,2), VertexIndex(4,2)))) -addvertexset!(grid, "clamped", x -> norm(x[1]) ≈ 0.0)</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/utils.jl#L63-L75">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addboundaryvertexset!" href="#Ferrite.addboundaryvertexset!"><code>Ferrite.addboundaryvertexset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>addboundaryvertexset!(grid::AbstractGrid, topology::ExclusiveTopology, name::String, f::Function; all::Bool=true)</p><p>Adds a boundary vertexset to the grid with key <code>name</code>. A vertexset maps a <code>String</code> key to an <code>OrderedSet</code> of tuples corresponding to <code>(global_cell_id, local_vertex_id)</code>. <code>all=true</code> implies that <code>f(x)</code> must return <code>true</code> for all nodal coordinates <code>x</code> on the facet if the facet should be added to the set, otherwise it suffices that <code>f(x)</code> returns <code>true</code> for one node.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/utils.jl#L90-L98">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addnodeset!" href="#Ferrite.addnodeset!"><code>Ferrite.addnodeset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">addnodeset!(grid::AbstractGrid, name::String, nodeid::AbstractVecOrSet{Int}) -addnodeset!(grid::AbstractGrid, name::String, f::Function)</code></pre><p>Adds a <code>nodeset::OrderedSet{Int}</code> to the <code>grid</code>'s <code>nodesets</code> with key <code>name</code>. Has the same interface as <code>addcellset</code>. However, instead of mapping a cell id to the <code>String</code> key, a set of node ids is returned.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/utils.jl#L29-L35">source</a></section></article><h3 id="Multithreaded-Assembly"><a class="docs-heading-anchor" href="#Multithreaded-Assembly">Multithreaded Assembly</a><a id="Multithreaded-Assembly-1"></a><a class="docs-heading-anchor-permalink" href="#Multithreaded-Assembly" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.create_coloring" href="#Ferrite.create_coloring"><code>Ferrite.create_coloring</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">create_coloring(g::Grid, cellset=1:getncells(g); alg::ColoringAlgorithm)</code></pre><p>Create a coloring of the cells in grid <code>g</code> such that no neighboring cells have the same color. If only a subset of cells should be colored, the cells to color can be specified by <code>cellset</code>.</p><p>Returns a vector of vectors with cell indexes, e.g.:</p><pre><code class="language-julia hljs">ret = [ +addvertexset!(grid, "clamped", x -> norm(x[1]) ≈ 0.0)</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/utils.jl#L63-L75">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addboundaryvertexset!" href="#Ferrite.addboundaryvertexset!"><code>Ferrite.addboundaryvertexset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>addboundaryvertexset!(grid::AbstractGrid, topology::ExclusiveTopology, name::String, f::Function; all::Bool=true)</p><p>Adds a boundary vertexset to the grid with key <code>name</code>. A vertexset maps a <code>String</code> key to an <code>OrderedSet</code> of tuples corresponding to <code>(global_cell_id, local_vertex_id)</code>. <code>all=true</code> implies that <code>f(x)</code> must return <code>true</code> for all nodal coordinates <code>x</code> on the facet if the facet should be added to the set, otherwise it suffices that <code>f(x)</code> returns <code>true</code> for one node.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/utils.jl#L90-L98">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.addnodeset!" href="#Ferrite.addnodeset!"><code>Ferrite.addnodeset!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">addnodeset!(grid::AbstractGrid, name::String, nodeid::AbstractVecOrSet{Int}) +addnodeset!(grid::AbstractGrid, name::String, f::Function)</code></pre><p>Adds a <code>nodeset::OrderedSet{Int}</code> to the <code>grid</code>'s <code>nodesets</code> with key <code>name</code>. Has the same interface as <code>addcellset</code>. However, instead of mapping a cell id to the <code>String</code> key, a set of node ids is returned.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/utils.jl#L29-L35">source</a></section></article><h3 id="Multithreaded-Assembly"><a class="docs-heading-anchor" href="#Multithreaded-Assembly">Multithreaded Assembly</a><a id="Multithreaded-Assembly-1"></a><a class="docs-heading-anchor-permalink" href="#Multithreaded-Assembly" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.create_coloring" href="#Ferrite.create_coloring"><code>Ferrite.create_coloring</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">create_coloring(g::Grid, cellset=1:getncells(g); alg::ColoringAlgorithm)</code></pre><p>Create a coloring of the cells in grid <code>g</code> such that no neighboring cells have the same color. If only a subset of cells should be colored, the cells to color can be specified by <code>cellset</code>.</p><p>Returns a vector of vectors with cell indexes, e.g.:</p><pre><code class="language-julia hljs">ret = [ [1, 3, 5, 10, ...], # cells for color 1 [2, 4, 6, 12, ...], # cells for color 2 ]</code></pre><p>Two different algorithms are available, specified with the <code>alg</code> keyword argument:</p><ul><li><code>alg = ColoringAlgorithm.WorkStream</code> (default): Three step algorithm from Turcksin et al. [<a href="../../cited-literature/#Turcksin2016">11</a>], albeit with a greedy coloring in the second step. Generally results in more colors than <code>ColoringAlgorithm.Greedy</code>, however the cells are more equally distributed among the colors.</li><li><code>alg = ColoringAlgorithm.Greedy</code>: greedy algorithm that works well for structured quadrilateral grids such as e.g. quadrilateral grids from <code>generate_grid</code>.</li></ul><p>The resulting colors can be visualized using <a href="../export/#Ferrite.write_cell_colors"><code>Ferrite.write_cell_colors</code></a>.</p><div class="admonition is-info"><header class="admonition-header">Cell to color mapping</header><div class="admonition-body"><p>In a previous version of Ferrite this function returned a dictionary mapping cell ID to color numbers as the first argument. If you need this mapping you can create it using the following construct:</p><pre><code class="language-julia hljs">colors = create_coloring(...) cell_colormap = Dict{Int,Int}( cellid => color for (color, cellids) in enumerate(final_colors) for cellid in cellids -)</code></pre></div></div><p><strong>References</strong></p><ul><li>[<a href="../../cited-literature/#Turcksin2016">11</a>] Turcksin et al. ACM Trans. Math. Softw. 43 (2016).</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Grid/coloring.jl#L160-L197">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../boundary_conditions/">« Boundary conditions</a><a class="docs-footer-nextpage" href="../export/">Postprocessing »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +)</code></pre></div></div><p><strong>References</strong></p><ul><li>[<a href="../../cited-literature/#Turcksin2016">11</a>] Turcksin et al. ACM Trans. Math. Softw. 43 (2016).</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Grid/coloring.jl#L160-L197">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../boundary_conditions/">« Boundary conditions</a><a class="docs-footer-nextpage" href="../export/">Postprocessing »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/index.html b/dev/reference/index.html index 2f8cbc8685..1d7396feeb 100644 --- a/dev/reference/index.html +++ b/dev/reference/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Reference overview · Ferrite.jl</title><meta name="title" content="Reference overview · Ferrite.jl"/><meta property="og:title" content="Reference overview · Ferrite.jl"/><meta property="twitter:title" content="Reference overview · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li class="is-active"><a class="tocitem" href>Reference overview</a></li><li><a class="tocitem" href="quadrature/">Quadrature</a></li><li><a class="tocitem" href="interpolations/">Interpolation</a></li><li><a class="tocitem" href="fevalues/">FEValues</a></li><li><a class="tocitem" href="dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="assembly/">Assembly</a></li><li><a class="tocitem" href="boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="export/">Postprocessing</a></li><li><a class="tocitem" href="utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Reference overview</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Reference overview</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Reference"><a class="docs-heading-anchor" href="#Reference">Reference</a><a id="Reference-1"></a><a class="docs-heading-anchor-permalink" href="#Reference" title="Permalink"></a></h1><ul><li><a href="quadrature/#Quadrature">Quadrature</a></li><li><a href="interpolations/#reference-interpolation">Interpolation</a></li><li><a href="fevalues/#FEValues">FEValues</a></li><li class="no-marker"><ul><li><a href="fevalues/#Main-types">Main types</a></li><li><a href="fevalues/#Applicable-functions">Applicable functions</a></li><li><a href="fevalues/#reference-interfacevalues">InterfaceValues</a></li></ul></li><li><a href="dofhandler/#Degrees-of-Freedom">Degrees of Freedom</a></li><li class="no-marker"><ul><li><a href="dofhandler/#Adding-fields-to-the-DofHandlers">Adding fields to the DofHandlers</a></li><li><a href="dofhandler/#Dof-renumbering">Dof renumbering</a></li><li><a href="dofhandler/#Common-methods">Common methods</a></li></ul></li><li><a href="dofhandler/#Grid-iterators">Grid iterators</a></li><li><a href="assembly/#Assembly">Assembly</a></li><li><a href="boundary_conditions/#Boundary-conditions">Boundary conditions</a></li><li><a href="boundary_conditions/#Initial-conditions">Initial conditions</a></li><li><a href="grid/#Grid-and-AbstractGrid">Grid & AbstractGrid</a></li><li class="no-marker"><ul><li><a href="grid/#Grid">Grid</a></li></ul></li><li><a href="export/#Postprocessing">Postprocessing</a></li><li class="no-marker"><ul><li><a href="export/#Projection-of-quadrature-point-data">Projection of quadrature point data</a></li><li><a href="export/#Evaluation-at-points">Evaluation at points</a></li><li><a href="export/#VTK-export">VTK export</a></li></ul></li><li><a href="utils/#Development-utility-functions">Development utility functions</a></li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../topics/export/">« Export</a><a class="docs-footer-nextpage" href="quadrature/">Quadrature »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Reference overview · Ferrite.jl</title><meta name="title" content="Reference overview · Ferrite.jl"/><meta property="og:title" content="Reference overview · Ferrite.jl"/><meta property="twitter:title" content="Reference overview · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li class="is-active"><a class="tocitem" href>Reference overview</a></li><li><a class="tocitem" href="quadrature/">Quadrature</a></li><li><a class="tocitem" href="interpolations/">Interpolation</a></li><li><a class="tocitem" href="fevalues/">FEValues</a></li><li><a class="tocitem" href="dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="assembly/">Assembly</a></li><li><a class="tocitem" href="boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="export/">Postprocessing</a></li><li><a class="tocitem" href="utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Reference overview</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Reference overview</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Reference"><a class="docs-heading-anchor" href="#Reference">Reference</a><a id="Reference-1"></a><a class="docs-heading-anchor-permalink" href="#Reference" title="Permalink"></a></h1><ul><li><a href="quadrature/#Quadrature">Quadrature</a></li><li><a href="interpolations/#reference-interpolation">Interpolation</a></li><li><a href="fevalues/#FEValues">FEValues</a></li><li class="no-marker"><ul><li><a href="fevalues/#Main-types">Main types</a></li><li><a href="fevalues/#Applicable-functions">Applicable functions</a></li><li><a href="fevalues/#reference-interfacevalues">InterfaceValues</a></li></ul></li><li><a href="dofhandler/#Degrees-of-Freedom">Degrees of Freedom</a></li><li class="no-marker"><ul><li><a href="dofhandler/#Adding-fields-to-the-DofHandlers">Adding fields to the DofHandlers</a></li><li><a href="dofhandler/#Dof-renumbering">Dof renumbering</a></li><li><a href="dofhandler/#Common-methods">Common methods</a></li></ul></li><li><a href="dofhandler/#Grid-iterators">Grid iterators</a></li><li><a href="assembly/#Assembly">Assembly</a></li><li><a href="boundary_conditions/#Boundary-conditions">Boundary conditions</a></li><li><a href="boundary_conditions/#Initial-conditions">Initial conditions</a></li><li><a href="grid/#Grid-and-AbstractGrid">Grid & AbstractGrid</a></li><li class="no-marker"><ul><li><a href="grid/#Grid">Grid</a></li></ul></li><li><a href="export/#Postprocessing">Postprocessing</a></li><li class="no-marker"><ul><li><a href="export/#Projection-of-quadrature-point-data">Projection of quadrature point data</a></li><li><a href="export/#Evaluation-at-points">Evaluation at points</a></li><li><a href="export/#VTK-export">VTK export</a></li></ul></li><li><a href="utils/#Development-utility-functions">Development utility functions</a></li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../topics/export/">« Export</a><a class="docs-footer-nextpage" href="quadrature/">Quadrature »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/interpolations/index.html b/dev/reference/interpolations/index.html index 18bde46a33..dcba4fb464 100644 --- a/dev/reference/interpolations/index.html +++ b/dev/reference/interpolations/index.html @@ -3,4 +3,4 @@ Lagrange{RefTriangle, 2}() julia> getnbasefunctions(ip) -6</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L1-L46">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnbasefunctions" href="#Ferrite.getnbasefunctions"><code>Ferrite.getnbasefunctions</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getnbasefunctions(ip::Interpolation)</code></pre><p>Return the number of base functions for the interpolation <code>ip</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L148-L152">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getrefdim-Tuple{Interpolation}" href="#Ferrite.getrefdim-Tuple{Interpolation}"><code>Ferrite.getrefdim</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getrefdim(::Interpolation)</code></pre><p>Return the dimension of the reference element for a given interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L121-L125">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getrefshape" href="#Ferrite.getrefshape"><code>Ferrite.getrefshape</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getrefshape(::Interpolation)::AbstractRefShape</code></pre><p>Return the reference element shape of the interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L129-L133">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getorder" href="#Ferrite.getorder"><code>Ferrite.getorder</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getorder(::Interpolation)</code></pre><p>Return order of the interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L136-L140">source</a></section></article><p>Implemented interpolations:</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.Lagrange" href="#Ferrite.Lagrange"><code>Ferrite.Lagrange</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Lagrange{refshape, order} <: ScalarInterpolation</code></pre><p>Standard continuous Lagrange polynomials with equidistant node placement.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L500-L504">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.Serendipity" href="#Ferrite.Serendipity"><code>Ferrite.Serendipity</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Serendipity{refshape, order} <: ScalarInterpolation</code></pre><p>Serendipity element on hypercubes. Currently only second order variants are implemented.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L1357-L1361">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.DiscontinuousLagrange" href="#Ferrite.DiscontinuousLagrange"><code>Ferrite.DiscontinuousLagrange</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Piecewise discontinuous Lagrange basis via Gauss-Lobatto points.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L445-L447">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.BubbleEnrichedLagrange" href="#Ferrite.BubbleEnrichedLagrange"><code>Ferrite.BubbleEnrichedLagrange</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Lagrange element with bubble stabilization.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L1314-L1316">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CrouzeixRaviart" href="#Ferrite.CrouzeixRaviart"><code>Ferrite.CrouzeixRaviart</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">CrouzeixRaviart{refshape, order} <: ScalarInterpolation</code></pre><p>Classical non-conforming Crouzeix–Raviart element.</p><p>For details we refer to the original paper [<a href="../../cited-literature/#CroRav:1973:cnf">9</a>].</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L1506-L1512">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RannacherTurek" href="#Ferrite.RannacherTurek"><code>Ferrite.RannacherTurek</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RannacherTurek{refshape, order} <: ScalarInterpolation</code></pre><p>Classical non-conforming Rannacher-Turek element.</p><p>This element is basically the idea from Crouzeix and Raviart applied to hypercubes. For details see the original paper [<a href="../../cited-literature/#RanTur:1992:snq">10</a>].</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/interpolations.jl#L1576-L1583">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../quadrature/">« Quadrature</a><a class="docs-footer-nextpage" href="../fevalues/">FEValues »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +6</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L1-L46">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnbasefunctions" href="#Ferrite.getnbasefunctions"><code>Ferrite.getnbasefunctions</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getnbasefunctions(ip::Interpolation)</code></pre><p>Return the number of base functions for the interpolation <code>ip</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L148-L152">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getrefdim-Tuple{Interpolation}" href="#Ferrite.getrefdim-Tuple{Interpolation}"><code>Ferrite.getrefdim</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getrefdim(::Interpolation)</code></pre><p>Return the dimension of the reference element for a given interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L121-L125">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getrefshape" href="#Ferrite.getrefshape"><code>Ferrite.getrefshape</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getrefshape(::Interpolation)::AbstractRefShape</code></pre><p>Return the reference element shape of the interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L129-L133">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getorder" href="#Ferrite.getorder"><code>Ferrite.getorder</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.getorder(::Interpolation)</code></pre><p>Return order of the interpolation.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L136-L140">source</a></section></article><p>Implemented interpolations:</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.Lagrange" href="#Ferrite.Lagrange"><code>Ferrite.Lagrange</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Lagrange{refshape, order} <: ScalarInterpolation</code></pre><p>Standard continuous Lagrange polynomials with equidistant node placement.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L500-L504">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.Serendipity" href="#Ferrite.Serendipity"><code>Ferrite.Serendipity</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Serendipity{refshape, order} <: ScalarInterpolation</code></pre><p>Serendipity element on hypercubes. Currently only second order variants are implemented.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L1357-L1361">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.DiscontinuousLagrange" href="#Ferrite.DiscontinuousLagrange"><code>Ferrite.DiscontinuousLagrange</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Piecewise discontinuous Lagrange basis via Gauss-Lobatto points.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L445-L447">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.BubbleEnrichedLagrange" href="#Ferrite.BubbleEnrichedLagrange"><code>Ferrite.BubbleEnrichedLagrange</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><p>Lagrange element with bubble stabilization.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L1314-L1316">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.CrouzeixRaviart" href="#Ferrite.CrouzeixRaviart"><code>Ferrite.CrouzeixRaviart</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">CrouzeixRaviart{refshape, order} <: ScalarInterpolation</code></pre><p>Classical non-conforming Crouzeix–Raviart element.</p><p>For details we refer to the original paper [<a href="../../cited-literature/#CroRav:1973:cnf">9</a>].</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L1506-L1512">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.RannacherTurek" href="#Ferrite.RannacherTurek"><code>Ferrite.RannacherTurek</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">RannacherTurek{refshape, order} <: ScalarInterpolation</code></pre><p>Classical non-conforming Rannacher-Turek element.</p><p>This element is basically the idea from Crouzeix and Raviart applied to hypercubes. For details see the original paper [<a href="../../cited-literature/#RanTur:1992:snq">10</a>].</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/interpolations.jl#L1576-L1583">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../quadrature/">« Quadrature</a><a class="docs-footer-nextpage" href="../fevalues/">FEValues »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/quadrature/index.html b/dev/reference/quadrature/index.html index 48279d8338..1885c4250d 100644 --- a/dev/reference/quadrature/index.html +++ b/dev/reference/quadrature/index.html @@ -5,20 +5,20 @@ julia> getpoints(qr) 1-element Vector{Vec{2, Float64}}: - [0.33333333333333, 0.33333333333333]</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Quadrature/quadrature.jl#L13-L51">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FacetQuadratureRule" href="#Ferrite.FacetQuadratureRule"><code>Ferrite.FacetQuadratureRule</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">FacetQuadratureRule{shape}([::Type{T},] [quad_rule_type::Symbol,] order::Int) + [0.33333333333333, 0.33333333333333]</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Quadrature/quadrature.jl#L13-L51">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.FacetQuadratureRule" href="#Ferrite.FacetQuadratureRule"><code>Ferrite.FacetQuadratureRule</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">FacetQuadratureRule{shape}([::Type{T},] [quad_rule_type::Symbol,] order::Int) FacetQuadratureRule{shape}(facet_rules::NTuple{<:Any, <:QuadratureRule{shape}}) -FacetQuadratureRule{shape}(facet_rules::AbstractVector{<:QuadratureRule{shape}})</code></pre><p>Create a <code>FacetQuadratureRule</code> used for integration of the facets of the refshape <code>shape</code> (of type <a href="../../devdocs/reference_cells/#Ferrite.AbstractRefShape"><code>AbstractRefShape</code></a>). <code>order</code> is the order of the quadrature rule. If no symbol is provided, the default <code>quad_rule_type</code> for each facet's reference shape is used (see <a href="#Ferrite.QuadratureRule">QuadratureRule</a>). For non-default <code>quad_rule_type</code>s on cells with mixed facet types (e.g. <code>RefPrism</code> and <code>RefPyramid</code>), the <code>facet_rules</code> must be provided explicitly.</p><p><code>FacetQuadratureRule</code> is used as one of the components to create <a href="../fevalues/#Ferrite.FacetValues"><code>FacetValues</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Quadrature/quadrature.jl#L174-L186">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnquadpoints-Tuple{QuadratureRule}" href="#Ferrite.getnquadpoints-Tuple{QuadratureRule}"><code>Ferrite.getnquadpoints</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnquadpoints(qr::QuadratureRule)</code></pre><p>Return the number of quadrature points in <code>qr</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Quadrature/quadrature.jl#L263-L267">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnquadpoints-Tuple{FacetQuadratureRule, Int64}" href="#Ferrite.getnquadpoints-Tuple{FacetQuadratureRule, Int64}"><code>Ferrite.getnquadpoints</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnquadpoints(qr::FacetQuadratureRule, facet::Int)</code></pre><p>Return the number of quadrature points in <code>qr</code> for local facet index <code>facet</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Quadrature/quadrature.jl#L270-L274">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getpoints" href="#Ferrite.getpoints"><code>Ferrite.getpoints</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getpoints(qr::QuadratureRule) +FacetQuadratureRule{shape}(facet_rules::AbstractVector{<:QuadratureRule{shape}})</code></pre><p>Create a <code>FacetQuadratureRule</code> used for integration of the facets of the refshape <code>shape</code> (of type <a href="../../devdocs/reference_cells/#Ferrite.AbstractRefShape"><code>AbstractRefShape</code></a>). <code>order</code> is the order of the quadrature rule. If no symbol is provided, the default <code>quad_rule_type</code> for each facet's reference shape is used (see <a href="#Ferrite.QuadratureRule">QuadratureRule</a>). For non-default <code>quad_rule_type</code>s on cells with mixed facet types (e.g. <code>RefPrism</code> and <code>RefPyramid</code>), the <code>facet_rules</code> must be provided explicitly.</p><p><code>FacetQuadratureRule</code> is used as one of the components to create <a href="../fevalues/#Ferrite.FacetValues"><code>FacetValues</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Quadrature/quadrature.jl#L174-L186">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnquadpoints-Tuple{QuadratureRule}" href="#Ferrite.getnquadpoints-Tuple{QuadratureRule}"><code>Ferrite.getnquadpoints</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnquadpoints(qr::QuadratureRule)</code></pre><p>Return the number of quadrature points in <code>qr</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Quadrature/quadrature.jl#L263-L267">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getnquadpoints-Tuple{FacetQuadratureRule, Int64}" href="#Ferrite.getnquadpoints-Tuple{FacetQuadratureRule, Int64}"><code>Ferrite.getnquadpoints</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getnquadpoints(qr::FacetQuadratureRule, facet::Int)</code></pre><p>Return the number of quadrature points in <code>qr</code> for local facet index <code>facet</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Quadrature/quadrature.jl#L270-L274">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getpoints" href="#Ferrite.getpoints"><code>Ferrite.getpoints</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getpoints(qr::QuadratureRule) getpoints(qr::FacetQuadratureRule, facet::Int)</code></pre><p>Return the points of the quadrature rule.</p><p><strong>Examples</strong></p><pre><code class="language-julia-repl hljs">julia> qr = QuadratureRule{RefTriangle}(:legendre, 2); julia> getpoints(qr) 3-element Vector{Vec{2, Float64}}: [0.16666666666667, 0.16666666666667] [0.16666666666667, 0.66666666666667] - [0.66666666666667, 0.16666666666667]</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Quadrature/quadrature.jl#L298-L314">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getweights" href="#Ferrite.getweights"><code>Ferrite.getweights</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getweights(qr::QuadratureRule) + [0.66666666666667, 0.16666666666667]</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Quadrature/quadrature.jl#L298-L314">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.getweights" href="#Ferrite.getweights"><code>Ferrite.getweights</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">getweights(qr::QuadratureRule) getweights(qr::FacetQuadratureRule, facet::Int)</code></pre><p>Return the weights of the quadrature rule.</p><p><strong>Examples</strong></p><pre><code class="language-julia-repl hljs">julia> qr = QuadratureRule{RefTriangle}(:legendre, 2); julia> getweights(qr) 3-element Array{Float64,1}: 0.166667 0.166667 - 0.166667</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Quadrature/quadrature.jl#L277-L293">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Reference overview</a><a class="docs-footer-nextpage" href="../interpolations/">Interpolation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + 0.166667</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Quadrature/quadrature.jl#L277-L293">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Reference overview</a><a class="docs-footer-nextpage" href="../interpolations/">Interpolation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/sparsity_pattern/index.html b/dev/reference/sparsity_pattern/index.html index 401ff04481..46eb296279 100644 --- a/dev/reference/sparsity_pattern/index.html +++ b/dev/reference/sparsity_pattern/index.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Sparsity pattern and sparse matrices · Ferrite.jl</title><meta name="title" content="Sparsity pattern and sparse matrices · Ferrite.jl"/><meta property="og:title" content="Sparsity pattern and sparse matrices · Ferrite.jl"/><meta property="twitter:title" content="Sparsity pattern and sparse matrices · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/sparsity_pattern/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/sparsity_pattern/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/sparsity_pattern/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li><a class="tocitem" href="../fevalues/">FEValues</a></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li class="is-active"><a class="tocitem" href>Sparsity pattern and sparse matrices</a><ul class="internal"><li><a class="tocitem" href="#Sparsity-patterns"><span>Sparsity patterns</span></a></li><li><a class="tocitem" href="#Sparse-matrices"><span>Sparse matrices</span></a></li></ul></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li><a class="tocitem" href="../utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Sparsity pattern and sparse matrices</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Sparsity pattern and sparse matrices</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/sparsity_pattern.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Sparsity-pattern-and-sparse-matrices"><a class="docs-heading-anchor" href="#Sparsity-pattern-and-sparse-matrices">Sparsity pattern and sparse matrices</a><a id="Sparsity-pattern-and-sparse-matrices-1"></a><a class="docs-heading-anchor-permalink" href="#Sparsity-pattern-and-sparse-matrices" title="Permalink"></a></h1><p>This is the reference documentation for sparsity patterns and sparse matrix instantiation. See the topic section on <a href="../../topics/sparse_matrix/#topic-sparse-matrix">Sparsity pattern and sparse matrices</a>.</p><h2 id="Sparsity-patterns"><a class="docs-heading-anchor" href="#Sparsity-patterns">Sparsity patterns</a><a id="Sparsity-patterns-1"></a><a class="docs-heading-anchor-permalink" href="#Sparsity-patterns" title="Permalink"></a></h2><h3 id="AbstractSparsityPattern"><a class="docs-heading-anchor" href="#AbstractSparsityPattern"><code>AbstractSparsityPattern</code></a><a id="AbstractSparsityPattern-1"></a><a class="docs-heading-anchor-permalink" href="#AbstractSparsityPattern" title="Permalink"></a></h3><p>The following applies to all subtypes of <code>AbstractSparsityPattern</code>:</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.AbstractSparsityPattern" href="#Ferrite.AbstractSparsityPattern"><code>Ferrite.AbstractSparsityPattern</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.AbstractSparsityPattern</code></pre><p>Supertype for sparsity pattern implementations, e.g. <a href="#SparsityPattern"><code>SparsityPattern</code></a> and <a href="#BlockSparsityPattern"><code>BlockSparsityPattern</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L5-L10">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.init_sparsity_pattern" href="#Ferrite.init_sparsity_pattern"><code>Ferrite.init_sparsity_pattern</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">init_sparsity_pattern(dh::DofHandler; nnz_per_row::Int)</code></pre><p>Initialize an empty <a href="#SparsityPattern"><code>SparsityPattern</code></a> with <code>ndofs(dh)</code> rows and <code>ndofs(dh)</code> columns.</p><p><strong>Keyword arguments</strong></p><ul><li><code>nnz_per_row</code>: memory optimization hint for the number of non-zero entries per row that will be added to the pattern.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L184-L192">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add_sparsity_entries!" href="#Ferrite.add_sparsity_entries!"><code>Ferrite.add_sparsity_entries!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add_sparsity_entries!( +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Sparsity pattern and sparse matrices · Ferrite.jl</title><meta name="title" content="Sparsity pattern and sparse matrices · Ferrite.jl"/><meta property="og:title" content="Sparsity pattern and sparse matrices · Ferrite.jl"/><meta property="twitter:title" content="Sparsity pattern and sparse matrices · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/sparsity_pattern/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/sparsity_pattern/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/sparsity_pattern/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li><a class="tocitem" href="../fevalues/">FEValues</a></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li class="is-active"><a class="tocitem" href>Sparsity pattern and sparse matrices</a><ul class="internal"><li><a class="tocitem" href="#Sparsity-patterns"><span>Sparsity patterns</span></a></li><li><a class="tocitem" href="#Sparse-matrices"><span>Sparse matrices</span></a></li></ul></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li><a class="tocitem" href="../utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Sparsity pattern and sparse matrices</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Sparsity pattern and sparse matrices</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/sparsity_pattern.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Sparsity-pattern-and-sparse-matrices"><a class="docs-heading-anchor" href="#Sparsity-pattern-and-sparse-matrices">Sparsity pattern and sparse matrices</a><a id="Sparsity-pattern-and-sparse-matrices-1"></a><a class="docs-heading-anchor-permalink" href="#Sparsity-pattern-and-sparse-matrices" title="Permalink"></a></h1><p>This is the reference documentation for sparsity patterns and sparse matrix instantiation. See the topic section on <a href="../../topics/sparse_matrix/#topic-sparse-matrix">Sparsity pattern and sparse matrices</a>.</p><h2 id="Sparsity-patterns"><a class="docs-heading-anchor" href="#Sparsity-patterns">Sparsity patterns</a><a id="Sparsity-patterns-1"></a><a class="docs-heading-anchor-permalink" href="#Sparsity-patterns" title="Permalink"></a></h2><h3 id="AbstractSparsityPattern"><a class="docs-heading-anchor" href="#AbstractSparsityPattern"><code>AbstractSparsityPattern</code></a><a id="AbstractSparsityPattern-1"></a><a class="docs-heading-anchor-permalink" href="#AbstractSparsityPattern" title="Permalink"></a></h3><p>The following applies to all subtypes of <code>AbstractSparsityPattern</code>:</p><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.AbstractSparsityPattern" href="#Ferrite.AbstractSparsityPattern"><code>Ferrite.AbstractSparsityPattern</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.AbstractSparsityPattern</code></pre><p>Supertype for sparsity pattern implementations, e.g. <a href="#SparsityPattern"><code>SparsityPattern</code></a> and <a href="#BlockSparsityPattern"><code>BlockSparsityPattern</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L5-L10">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.init_sparsity_pattern" href="#Ferrite.init_sparsity_pattern"><code>Ferrite.init_sparsity_pattern</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">init_sparsity_pattern(dh::DofHandler; nnz_per_row::Int)</code></pre><p>Initialize an empty <a href="#SparsityPattern"><code>SparsityPattern</code></a> with <code>ndofs(dh)</code> rows and <code>ndofs(dh)</code> columns.</p><p><strong>Keyword arguments</strong></p><ul><li><code>nnz_per_row</code>: memory optimization hint for the number of non-zero entries per row that will be added to the pattern.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L184-L192">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add_sparsity_entries!" href="#Ferrite.add_sparsity_entries!"><code>Ferrite.add_sparsity_entries!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add_sparsity_entries!( sp::AbstractSparsityPattern, dh::DofHandler, ch::Union{ConstraintHandler, Nothing} = nothing; @@ -7,37 +7,37 @@ keep_constrained::Bool = true, coupling = nothing, interface_coupling = nothing, -)</code></pre><p>Convenience method for doing the common task of calling <a href="#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a>, <a href="#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a>, and <a href="#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a>, depending on what arguments are passed:</p><ul><li><code>add_cell_entries!</code> is always called</li><li><code>add_interface_entries!</code> is called if <code>topology</code> is provided (i.e. not <code>nothing</code>)</li><li><code>add_constraint_entries!</code> is called if the ConstraintHandler is provided</li></ul><p>For more details about arguments and keyword arguments, see the respective functions.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L202-L221">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add_cell_entries!" href="#Ferrite.add_cell_entries!"><code>Ferrite.add_cell_entries!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add_cell_entries!( +)</code></pre><p>Convenience method for doing the common task of calling <a href="#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a>, <a href="#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a>, and <a href="#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a>, depending on what arguments are passed:</p><ul><li><code>add_cell_entries!</code> is always called</li><li><code>add_interface_entries!</code> is called if <code>topology</code> is provided (i.e. not <code>nothing</code>)</li><li><code>add_constraint_entries!</code> is called if the ConstraintHandler is provided</li></ul><p>For more details about arguments and keyword arguments, see the respective functions.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L202-L221">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add_cell_entries!" href="#Ferrite.add_cell_entries!"><code>Ferrite.add_cell_entries!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add_cell_entries!( sp::AbstractSparsityPattern, dh::DofHandler, ch::Union{ConstraintHandler, Nothing} = nothing; keep_constrained::Bool = true, coupling::Union{AbstractMatrix{Bool}, Nothing}, = nothing -)</code></pre><p>Add entries to the sparsity pattern <code>sp</code> corresponding to DoF couplings within the cells as described by the DofHandler <code>dh</code>.</p><p><strong>Keyword arguments</strong></p><ul><li><code>keep_constrained</code>: whether or not entries for constrained DoFs should be kept (<code>keep_constrained = true</code>) or eliminated (<code>keep_constrained = false</code>) from the sparsity pattern. <code>keep_constrained = false</code> requires passing the ConstraintHandler <code>ch</code>.</li><li><code>coupling</code>: the coupling between fields/components within each cell. By default (<code>coupling = nothing</code>) it is assumed that all DoFs in each cell couple with each other.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L247-L265">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add_interface_entries!" href="#Ferrite.add_interface_entries!"><code>Ferrite.add_interface_entries!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add_interface_entries!( +)</code></pre><p>Add entries to the sparsity pattern <code>sp</code> corresponding to DoF couplings within the cells as described by the DofHandler <code>dh</code>.</p><p><strong>Keyword arguments</strong></p><ul><li><code>keep_constrained</code>: whether or not entries for constrained DoFs should be kept (<code>keep_constrained = true</code>) or eliminated (<code>keep_constrained = false</code>) from the sparsity pattern. <code>keep_constrained = false</code> requires passing the ConstraintHandler <code>ch</code>.</li><li><code>coupling</code>: the coupling between fields/components within each cell. By default (<code>coupling = nothing</code>) it is assumed that all DoFs in each cell couple with each other.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L247-L265">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add_interface_entries!" href="#Ferrite.add_interface_entries!"><code>Ferrite.add_interface_entries!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add_interface_entries!( sp::SparsityPattern, dh::DofHandler, ch::Union{ConstraintHandler, Nothing}; topology::ExclusiveTopology, keep_constrained::Bool = true, interface_coupling::AbstractMatrix{Bool}, -)</code></pre><p>Add entries to the sparsity pattern <code>sp</code> corresponding to DoF couplings on the interface between cells as described by the DofHandler <code>dh</code>.</p><p><strong>Keyword arguments</strong></p><ul><li><code>topology</code>: the topology corresponding to the grid.</li><li><code>keep_constrained</code>: whether or not entries for constrained DoFs should be kept (<code>keep_constrained = true</code>) or eliminated (<code>keep_constrained = false</code>) from the sparsity pattern. <code>keep_constrained = false</code> requires passing the ConstraintHandler <code>ch</code>.</li><li><code>interface_coupling</code>: the coupling between fields/components across the interface.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L284-L300">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add_constraint_entries!" href="#Ferrite.add_constraint_entries!"><code>Ferrite.add_constraint_entries!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add_constraint_entries!( +)</code></pre><p>Add entries to the sparsity pattern <code>sp</code> corresponding to DoF couplings on the interface between cells as described by the DofHandler <code>dh</code>.</p><p><strong>Keyword arguments</strong></p><ul><li><code>topology</code>: the topology corresponding to the grid.</li><li><code>keep_constrained</code>: whether or not entries for constrained DoFs should be kept (<code>keep_constrained = true</code>) or eliminated (<code>keep_constrained = false</code>) from the sparsity pattern. <code>keep_constrained = false</code> requires passing the ConstraintHandler <code>ch</code>.</li><li><code>interface_coupling</code>: the coupling between fields/components across the interface.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L284-L300">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add_constraint_entries!" href="#Ferrite.add_constraint_entries!"><code>Ferrite.add_constraint_entries!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add_constraint_entries!( sp::AbstractSparsityPattern, ch::ConstraintHandler; keep_constrained::Bool = true, -)</code></pre><p>Add all entries resulting from constraints in the ConstraintHandler <code>ch</code> to the sparsity pattern. Note that, since this operation depends on existing entries in the pattern, this function must be called as the <em>last</em> step when creating the sparsity pattern.</p><p><strong>Keyword arguments</strong></p><ul><li><code>keep_constrained</code>: whether or not entries for constrained DoFs should be kept (<code>keep_constrained = true</code>) or eliminated (<code>keep_constrained = false</code>) from the sparsity pattern.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L314-L328">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add_entry!" href="#Ferrite.add_entry!"><code>Ferrite.add_entry!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add_entry!(sp::AbstractSparsityPattern, row::Int, col::Int)</code></pre><p>Add an entry to the sparsity pattern <code>sp</code> at row <code>row</code> and column <code>col</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L27-L31">source</a></section></article><h3 id="SparsityPattern"><a class="docs-heading-anchor" href="#SparsityPattern"><code>SparsityPattern</code></a><a id="SparsityPattern-1"></a><a class="docs-heading-anchor-permalink" href="#SparsityPattern" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.SparsityPattern-Tuple{Int64, Int64}" href="#Ferrite.SparsityPattern-Tuple{Int64, Int64}"><code>Ferrite.SparsityPattern</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">SparsityPattern(nrows::Int, ncols::Int; nnz_per_row::Int = 8)</code></pre><p>Create an empty <a href="#SparsityPattern"><code>SparsityPattern</code></a> with <code>nrows</code> rows and <code>ncols</code> columns. <code>nnz_per_row</code> is used as a memory hint for the number of non zero entries per row.</p><p><code>SparsityPattern</code> is the default sparsity pattern type for the standard DofHandler and is therefore commonly constructed using <a href="#Ferrite.init_sparsity_pattern"><code>init_sparsity_pattern</code></a> instead of with this constructor.</p><p><strong>Examples</strong></p><pre><code class="language-julia hljs"># Create a sparsity pattern for an 100 x 100 matrix, hinting at 10 entries per row -sparsity_pattern = SparsityPattern(100, 100; nnz_per_row = 10)</code></pre><p><strong>Methods</strong></p><p>The following methods apply to <code>SparsityPattern</code> (see their respective documentation for more details):</p><ul><li><a href="#Ferrite.add_sparsity_entries!"><code>add_sparsity_entries!</code></a>: convenience method for calling <a href="#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a>, <a href="#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a>, and <a href="#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a>.</li><li><a href="#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a>: add entries corresponding to DoF couplings within the cells.</li><li><a href="#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a>: add entries corresponding to DoF couplings on the interface between cells.</li><li><a href="#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a>: add entries resulting from constraints.</li><li><a href="#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a>: instantiate a matrix from the pattern. The default matrix type is <code>SparseMatrixCSC{Float64, Int}</code>.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L87-L116">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Tuple{SparsityPattern}" href="#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(sp::SparsityPattern)</code></pre><p>Allocate a sparse matrix of type <code>SparseMatrixCSC{Float64, Int}</code> from the sparsity pattern <code>sp</code>.</p><p>This method is a shorthand for the equivalent <a href="#Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{Ti}, Tuple{Tv}, Tuple{Type{S}, Ferrite.AbstractSparsityPattern}} where {Tv, Ti, S<:SparseMatrixCSC{Tv, Ti}}"><code>allocate_matrix(SparseMatrixCSC{Float64, Int}, sp)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L368-L377">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.SparsityPattern" href="#Ferrite.SparsityPattern"><code>Ferrite.SparsityPattern</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">struct SparsityPattern <: AbstractSparsityPattern</code></pre><p>Data structure representing non-zero entries in the eventual sparse matrix.</p><p>See the constructor <a href="#Ferrite.SparsityPattern-Tuple{Int64, Int64}"><code>SparsityPattern(::Int, ::Int)</code></a> for the user-facing documentation.</p><p><strong>Struct fields</strong></p><ul><li><code>nrows::Int</code>: number of rows</li><li><code>ncols::Int</code>: number of column</li><li><code>rows::Vector{Vector{Int}}</code>: vector of length <code>nrows</code>, where <code>rows[i]</code> is a <em>sorted</em> vector of column indices for non zero entries in row <code>i</code>.</li></ul><div class="admonition is-warning"><header class="admonition-header">Internal struct</header><div class="admonition-body"><p>The specific implementation of this struct, such as struct fields, type layout and type parameters, are internal and should not be relied upon.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L62-L79">source</a></section></article><h3 id="BlockSparsityPattern"><a class="docs-heading-anchor" href="#BlockSparsityPattern"><code>BlockSparsityPattern</code></a><a id="BlockSparsityPattern-1"></a><a class="docs-heading-anchor-permalink" href="#BlockSparsityPattern" title="Permalink"></a></h3><div class="admonition is-info"><header class="admonition-header">Package extension</header><div class="admonition-body"><p>This functionality is only enabled when the package <a href="https://github.com/JuliaArrays/BlockArrays.jl">BlockArrays.jl</a> is installed (<code>pkg> add BlockArrays</code>) and loaded (<code>using BlockArrays</code>) in the session.</p></div></div><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.BlockSparsityPattern-Tuple{Vector{Int64}}" href="#Ferrite.BlockSparsityPattern-Tuple{Vector{Int64}}"><code>Ferrite.BlockSparsityPattern</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">BlockSparsityPattern(block_sizes::Vector{Int})</code></pre><p>Create an empty <code>BlockSparsityPattern</code> with row and column block sizes given by <code>block_sizes</code>.</p><p><strong>Examples</strong></p><pre><code class="language-julia hljs"># Create a block sparsity pattern with block size 10 x 5 -sparsity_pattern = BlockSparsityPattern([10, 5])</code></pre><p><strong>Methods</strong></p><p>The following methods apply to <code>BlockSparsityPattern</code> (see their respective documentation for more details):</p><ul><li><a href="#Ferrite.add_sparsity_entries!"><code>add_sparsity_entries!</code></a>: convenience method for calling <a href="#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a>, <a href="#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a>, and <a href="#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a>.</li><li><a href="#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a>: add entries corresponding to DoF couplings within the cells.</li><li><a href="#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a>: add entries corresponding to DoF couplings on the interface between cells.</li><li><a href="#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a>: add entries resulting from constraints.</li><li><a href="#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a>: instantiate a (block) matrix from the pattern. The default matrix type is <code>BlockMatrix{Float64, Matrix{SparseMatrixCSC{Float64, Int}}}</code>, i.e. a <code>BlockMatrix</code>, where the individual blocks are of type <code>SparseMatrixCSC{Float64, Int}</code>.</li></ul><div class="admonition is-info"><header class="admonition-header">Package extension</header><div class="admonition-body"><p>This functionality is only enabled when the package <a href="https://github.com/JuliaArrays/BlockArrays.jl">BlockArrays.jl</a> is installed (<code>pkg> add BlockArrays</code>) and loaded (<code>using BlockArrays</code>) in the session.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/block_sparsity_pattern.jl#L32-L64">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.BlockSparsityPattern" href="#Ferrite.BlockSparsityPattern"><code>Ferrite.BlockSparsityPattern</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">struct BlockSparsityPattern <: AbstractSparsityPattern</code></pre><p>Data structure representing non-zero entries for an eventual <em>blocked</em> sparse matrix.</p><p>See the constructor <a href="#Ferrite.BlockSparsityPattern-Tuple{Vector{Int64}}"><code>BlockSparsityPattern(::Vector{Int})</code></a> for the user-facing documentation.</p><p><strong>Struct fields</strong></p><ul><li><code>nrows::Int</code>: number of rows</li><li><code>ncols::Int</code>: number of column</li><li><code>block_sizes::Vector{Int}</code>: row and column block sizes</li><li><code>blocks::Matrix{SparsityPattern}</code>: matrix of size <code>length(block_sizes) × length(block_sizes)</code> where <code>blocks[i, j]</code> is a <a href="#SparsityPattern"><code>SparsityPattern</code></a> corresponding to block <code>(i, j)</code>.</li></ul><div class="admonition is-warning"><header class="admonition-header">Internal struct</header><div class="admonition-body"><p>The specific implementation of this struct, such as struct fields, type layout and type parameters, are internal and should not be relied upon.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/block_sparsity_pattern.jl#L5-L24">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Tuple{BlockSparsityPattern}" href="#Ferrite.allocate_matrix-Tuple{BlockSparsityPattern}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{SparseMatrixCSC{Tv, Ti}}, sp::SparsityPattern)</code></pre><p>Allocate a sparse matrix of type <code>SparseMatrixCSC{Tv, Ti}</code> from the sparsity pattern <code>sp</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L348-L352">source</a></section><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{Symmetric{Tv, SparseMatrixCSC{Tv, Ti}}}, sp::SparsityPattern)</code></pre><p>Instantiate a sparse matrix of type <code>Symmetric{Tv, SparseMatrixCSC{Tv, Ti}}</code>, i.e. a <code>LinearAlgebra.Symmetric</code>-wrapped <code>SparseMatrixCSC</code>, from the sparsity pattern <code>sp</code>. The resulting matrix will only store entries above, and including, the diagonal.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L357-L363">source</a></section><section><div><pre><code class="language-julia hljs">allocate_matrix(MatrixType, dh::DofHandler, args...; kwargs...)</code></pre><p>Allocate a matrix of type <code>MatrixType</code> from the DofHandler <code>dh</code>.</p><p>This is a convenience method and is equivalent to:</p><p><code>julia sp = init_sparsity_pattern(dh) add_sparsity_entries!(sp, dh, args...; kwargs...) allocate_matrix(MatrixType, sp)</code>`</p><p>Refer to <a href="#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a> for supported matrix types, and to <a href="#Ferrite.init_sparsity_pattern"><code>init_sparsity_pattern</code></a> for details about supported arguments <code>args</code> and keyword arguments <code>kwargs</code>.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>If more than one sparse matrix is needed (e.g. a stiffness and a mass matrix) it is more efficient to explicitly create the sparsity pattern instead of using this method, i.e. use</p><pre><code class="language-julia hljs">sp = init_sparsity_pattern(dh) +)</code></pre><p>Add all entries resulting from constraints in the ConstraintHandler <code>ch</code> to the sparsity pattern. Note that, since this operation depends on existing entries in the pattern, this function must be called as the <em>last</em> step when creating the sparsity pattern.</p><p><strong>Keyword arguments</strong></p><ul><li><code>keep_constrained</code>: whether or not entries for constrained DoFs should be kept (<code>keep_constrained = true</code>) or eliminated (<code>keep_constrained = false</code>) from the sparsity pattern.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L314-L328">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.add_entry!" href="#Ferrite.add_entry!"><code>Ferrite.add_entry!</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">add_entry!(sp::AbstractSparsityPattern, row::Int, col::Int)</code></pre><p>Add an entry to the sparsity pattern <code>sp</code> at row <code>row</code> and column <code>col</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L27-L31">source</a></section></article><h3 id="SparsityPattern"><a class="docs-heading-anchor" href="#SparsityPattern"><code>SparsityPattern</code></a><a id="SparsityPattern-1"></a><a class="docs-heading-anchor-permalink" href="#SparsityPattern" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.SparsityPattern-Tuple{Int64, Int64}" href="#Ferrite.SparsityPattern-Tuple{Int64, Int64}"><code>Ferrite.SparsityPattern</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">SparsityPattern(nrows::Int, ncols::Int; nnz_per_row::Int = 8)</code></pre><p>Create an empty <a href="#SparsityPattern"><code>SparsityPattern</code></a> with <code>nrows</code> rows and <code>ncols</code> columns. <code>nnz_per_row</code> is used as a memory hint for the number of non zero entries per row.</p><p><code>SparsityPattern</code> is the default sparsity pattern type for the standard DofHandler and is therefore commonly constructed using <a href="#Ferrite.init_sparsity_pattern"><code>init_sparsity_pattern</code></a> instead of with this constructor.</p><p><strong>Examples</strong></p><pre><code class="language-julia hljs"># Create a sparsity pattern for an 100 x 100 matrix, hinting at 10 entries per row +sparsity_pattern = SparsityPattern(100, 100; nnz_per_row = 10)</code></pre><p><strong>Methods</strong></p><p>The following methods apply to <code>SparsityPattern</code> (see their respective documentation for more details):</p><ul><li><a href="#Ferrite.add_sparsity_entries!"><code>add_sparsity_entries!</code></a>: convenience method for calling <a href="#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a>, <a href="#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a>, and <a href="#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a>.</li><li><a href="#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a>: add entries corresponding to DoF couplings within the cells.</li><li><a href="#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a>: add entries corresponding to DoF couplings on the interface between cells.</li><li><a href="#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a>: add entries resulting from constraints.</li><li><a href="#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a>: instantiate a matrix from the pattern. The default matrix type is <code>SparseMatrixCSC{Float64, Int}</code>.</li></ul></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L87-L116">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Tuple{SparsityPattern}" href="#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(sp::SparsityPattern)</code></pre><p>Allocate a sparse matrix of type <code>SparseMatrixCSC{Float64, Int}</code> from the sparsity pattern <code>sp</code>.</p><p>This method is a shorthand for the equivalent <a href="#Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{Ti}, Tuple{Tv}, Tuple{Type{S}, Ferrite.AbstractSparsityPattern}} where {Tv, Ti, S<:SparseMatrixCSC{Tv, Ti}}"><code>allocate_matrix(SparseMatrixCSC{Float64, Int}, sp)</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L368-L377">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.SparsityPattern" href="#Ferrite.SparsityPattern"><code>Ferrite.SparsityPattern</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">struct SparsityPattern <: AbstractSparsityPattern</code></pre><p>Data structure representing non-zero entries in the eventual sparse matrix.</p><p>See the constructor <a href="#Ferrite.SparsityPattern-Tuple{Int64, Int64}"><code>SparsityPattern(::Int, ::Int)</code></a> for the user-facing documentation.</p><p><strong>Struct fields</strong></p><ul><li><code>nrows::Int</code>: number of rows</li><li><code>ncols::Int</code>: number of column</li><li><code>rows::Vector{Vector{Int}}</code>: vector of length <code>nrows</code>, where <code>rows[i]</code> is a <em>sorted</em> vector of column indices for non zero entries in row <code>i</code>.</li></ul><div class="admonition is-warning"><header class="admonition-header">Internal struct</header><div class="admonition-body"><p>The specific implementation of this struct, such as struct fields, type layout and type parameters, are internal and should not be relied upon.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L62-L79">source</a></section></article><h3 id="BlockSparsityPattern"><a class="docs-heading-anchor" href="#BlockSparsityPattern"><code>BlockSparsityPattern</code></a><a id="BlockSparsityPattern-1"></a><a class="docs-heading-anchor-permalink" href="#BlockSparsityPattern" title="Permalink"></a></h3><div class="admonition is-info"><header class="admonition-header">Package extension</header><div class="admonition-body"><p>This functionality is only enabled when the package <a href="https://github.com/JuliaArrays/BlockArrays.jl">BlockArrays.jl</a> is installed (<code>pkg> add BlockArrays</code>) and loaded (<code>using BlockArrays</code>) in the session.</p></div></div><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.BlockSparsityPattern-Tuple{Vector{Int64}}" href="#Ferrite.BlockSparsityPattern-Tuple{Vector{Int64}}"><code>Ferrite.BlockSparsityPattern</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">BlockSparsityPattern(block_sizes::Vector{Int})</code></pre><p>Create an empty <code>BlockSparsityPattern</code> with row and column block sizes given by <code>block_sizes</code>.</p><p><strong>Examples</strong></p><pre><code class="language-julia hljs"># Create a block sparsity pattern with block size 10 x 5 +sparsity_pattern = BlockSparsityPattern([10, 5])</code></pre><p><strong>Methods</strong></p><p>The following methods apply to <code>BlockSparsityPattern</code> (see their respective documentation for more details):</p><ul><li><a href="#Ferrite.add_sparsity_entries!"><code>add_sparsity_entries!</code></a>: convenience method for calling <a href="#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a>, <a href="#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a>, and <a href="#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a>.</li><li><a href="#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a>: add entries corresponding to DoF couplings within the cells.</li><li><a href="#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a>: add entries corresponding to DoF couplings on the interface between cells.</li><li><a href="#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a>: add entries resulting from constraints.</li><li><a href="#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a>: instantiate a (block) matrix from the pattern. The default matrix type is <code>BlockMatrix{Float64, Matrix{SparseMatrixCSC{Float64, Int}}}</code>, i.e. a <code>BlockMatrix</code>, where the individual blocks are of type <code>SparseMatrixCSC{Float64, Int}</code>.</li></ul><div class="admonition is-info"><header class="admonition-header">Package extension</header><div class="admonition-body"><p>This functionality is only enabled when the package <a href="https://github.com/JuliaArrays/BlockArrays.jl">BlockArrays.jl</a> is installed (<code>pkg> add BlockArrays</code>) and loaded (<code>using BlockArrays</code>) in the session.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/block_sparsity_pattern.jl#L32-L64">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.BlockSparsityPattern" href="#Ferrite.BlockSparsityPattern"><code>Ferrite.BlockSparsityPattern</code></a> — <span class="docstring-category">Type</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">struct BlockSparsityPattern <: AbstractSparsityPattern</code></pre><p>Data structure representing non-zero entries for an eventual <em>blocked</em> sparse matrix.</p><p>See the constructor <a href="#Ferrite.BlockSparsityPattern-Tuple{Vector{Int64}}"><code>BlockSparsityPattern(::Vector{Int})</code></a> for the user-facing documentation.</p><p><strong>Struct fields</strong></p><ul><li><code>nrows::Int</code>: number of rows</li><li><code>ncols::Int</code>: number of column</li><li><code>block_sizes::Vector{Int}</code>: row and column block sizes</li><li><code>blocks::Matrix{SparsityPattern}</code>: matrix of size <code>length(block_sizes) × length(block_sizes)</code> where <code>blocks[i, j]</code> is a <a href="#SparsityPattern"><code>SparsityPattern</code></a> corresponding to block <code>(i, j)</code>.</li></ul><div class="admonition is-warning"><header class="admonition-header">Internal struct</header><div class="admonition-body"><p>The specific implementation of this struct, such as struct fields, type layout and type parameters, are internal and should not be relied upon.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/block_sparsity_pattern.jl#L5-L24">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Tuple{BlockSparsityPattern}" href="#Ferrite.allocate_matrix-Tuple{BlockSparsityPattern}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{SparseMatrixCSC{Tv, Ti}}, sp::SparsityPattern)</code></pre><p>Allocate a sparse matrix of type <code>SparseMatrixCSC{Tv, Ti}</code> from the sparsity pattern <code>sp</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L348-L352">source</a></section><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{Symmetric{Tv, SparseMatrixCSC{Tv, Ti}}}, sp::SparsityPattern)</code></pre><p>Instantiate a sparse matrix of type <code>Symmetric{Tv, SparseMatrixCSC{Tv, Ti}}</code>, i.e. a <code>LinearAlgebra.Symmetric</code>-wrapped <code>SparseMatrixCSC</code>, from the sparsity pattern <code>sp</code>. The resulting matrix will only store entries above, and including, the diagonal.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L357-L363">source</a></section><section><div><pre><code class="language-julia hljs">allocate_matrix(MatrixType, dh::DofHandler, args...; kwargs...)</code></pre><p>Allocate a matrix of type <code>MatrixType</code> from the DofHandler <code>dh</code>.</p><p>This is a convenience method and is equivalent to:</p><p><code>julia sp = init_sparsity_pattern(dh) add_sparsity_entries!(sp, dh, args...; kwargs...) allocate_matrix(MatrixType, sp)</code>`</p><p>Refer to <a href="#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a> for supported matrix types, and to <a href="#Ferrite.init_sparsity_pattern"><code>init_sparsity_pattern</code></a> for details about supported arguments <code>args</code> and keyword arguments <code>kwargs</code>.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>If more than one sparse matrix is needed (e.g. a stiffness and a mass matrix) it is more efficient to explicitly create the sparsity pattern instead of using this method, i.e. use</p><pre><code class="language-julia hljs">sp = init_sparsity_pattern(dh) add_sparsity_entries!(sp, dh) K = allocate_matrix(sp) M = allocate_matrix(sp)</code></pre><p>instead of</p><pre><code class="language-julia hljs">K = allocate_matrix(dh) -M = allocate_matrix(dh)</code></pre><p>Note that for some matrix types it is possible to <code>copy</code> the instantiated matrix (<code>M = copy(K)</code>) instead.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L380-L414">source</a></section><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{BlockMatrix}, sp::BlockSparsityPattern) +M = allocate_matrix(dh)</code></pre><p>Note that for some matrix types it is possible to <code>copy</code> the instantiated matrix (<code>M = copy(K)</code>) instead.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L380-L414">source</a></section><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{BlockMatrix}, sp::BlockSparsityPattern) allocate_matrix(::Type{BlockMatrix{T, Matrix{S}}}, sp::BlockSparsityPattern)</code></pre><p>Instantiate a blocked sparse matrix from the blocked sparsity pattern <code>sp</code>.</p><p>The type of the returned matrix is a <code>BlockMatrix</code> with blocks of type <code>S</code> (defaults to <code>SparseMatrixCSC{T, Int}</code>).</p><p><strong>Examples</strong></p><pre><code class="nohighlight hljs"># Create a sparse matrix with default block type allocate_matrix(BlockMatrix, sparsity_pattern) # Create a sparse matrix with blocks of type SparseMatrixCSC{Float32, Int} -allocate_matrix(BlockMatrix{Float32, Matrix{SparseMatrixCSC{Float32, Int}}}, sparsity_pattern)</code></pre><div class="admonition is-info"><header class="admonition-header">Package extension</header><div class="admonition-body"><p>This functionality is only enabled when the package <a href="https://github.com/JuliaArrays/BlockArrays.jl">BlockArrays.jl</a> is installed (<code>pkg> add BlockArrays</code>) and loaded (<code>using BlockArrays</code>) in the session.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/ext/FerriteBlockArrays.jl#L26-L48">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{T}, Tuple{Type{<:BlockArray{T, 2, Matrix{S}, BS} where BS<:Tuple{AbstractUnitRange{<:Integer}, AbstractUnitRange{<:Integer}}}, BlockSparsityPattern}} where {T, S<:AbstractMatrix{T}}" href="#Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{T}, Tuple{Type{<:BlockArray{T, 2, Matrix{S}, BS} where BS<:Tuple{AbstractUnitRange{<:Integer}, AbstractUnitRange{<:Integer}}}, BlockSparsityPattern}} where {T, S<:AbstractMatrix{T}}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{BlockMatrix}, sp::BlockSparsityPattern) +allocate_matrix(BlockMatrix{Float32, Matrix{SparseMatrixCSC{Float32, Int}}}, sparsity_pattern)</code></pre><div class="admonition is-info"><header class="admonition-header">Package extension</header><div class="admonition-body"><p>This functionality is only enabled when the package <a href="https://github.com/JuliaArrays/BlockArrays.jl">BlockArrays.jl</a> is installed (<code>pkg> add BlockArrays</code>) and loaded (<code>using BlockArrays</code>) in the session.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/ext/FerriteBlockArrays.jl#L26-L48">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{T}, Tuple{Type{<:BlockArray{T, 2, Matrix{S}, BS} where BS<:Tuple{AbstractUnitRange{<:Integer}, AbstractUnitRange{<:Integer}}}, BlockSparsityPattern}} where {T, S<:AbstractMatrix{T}}" href="#Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{T}, Tuple{Type{<:BlockArray{T, 2, Matrix{S}, BS} where BS<:Tuple{AbstractUnitRange{<:Integer}, AbstractUnitRange{<:Integer}}}, BlockSparsityPattern}} where {T, S<:AbstractMatrix{T}}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{BlockMatrix}, sp::BlockSparsityPattern) allocate_matrix(::Type{BlockMatrix{T, Matrix{S}}}, sp::BlockSparsityPattern)</code></pre><p>Instantiate a blocked sparse matrix from the blocked sparsity pattern <code>sp</code>.</p><p>The type of the returned matrix is a <code>BlockMatrix</code> with blocks of type <code>S</code> (defaults to <code>SparseMatrixCSC{T, Int}</code>).</p><p><strong>Examples</strong></p><pre><code class="nohighlight hljs"># Create a sparse matrix with default block type allocate_matrix(BlockMatrix, sparsity_pattern) # Create a sparse matrix with blocks of type SparseMatrixCSC{Float32, Int} -allocate_matrix(BlockMatrix{Float32, Matrix{SparseMatrixCSC{Float32, Int}}}, sparsity_pattern)</code></pre><div class="admonition is-info"><header class="admonition-header">Package extension</header><div class="admonition-body"><p>This functionality is only enabled when the package <a href="https://github.com/JuliaArrays/BlockArrays.jl">BlockArrays.jl</a> is installed (<code>pkg> add BlockArrays</code>) and loaded (<code>using BlockArrays</code>) in the session.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/ext/FerriteBlockArrays.jl#L26-L48">source</a></section></article><h2 id="Sparse-matrices"><a class="docs-heading-anchor" href="#Sparse-matrices">Sparse matrices</a><a id="Sparse-matrices-1"></a><a class="docs-heading-anchor-permalink" href="#Sparse-matrices" title="Permalink"></a></h2><h3 id="Creating-matrix-from-SparsityPattern"><a class="docs-heading-anchor" href="#Creating-matrix-from-SparsityPattern">Creating matrix from <code>SparsityPattern</code></a><a id="Creating-matrix-from-SparsityPattern-1"></a><a class="docs-heading-anchor-permalink" href="#Creating-matrix-from-SparsityPattern" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{Ti}, Tuple{Tv}, Tuple{Type{S}, Ferrite.AbstractSparsityPattern}} where {Tv, Ti, S<:SparseMatrixCSC{Tv, Ti}}" href="#Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{Ti}, Tuple{Tv}, Tuple{Type{S}, Ferrite.AbstractSparsityPattern}} where {Tv, Ti, S<:SparseMatrixCSC{Tv, Ti}}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{SparseMatrixCSC{Tv, Ti}}, sp::SparsityPattern)</code></pre><p>Allocate a sparse matrix of type <code>SparseMatrixCSC{Tv, Ti}</code> from the sparsity pattern <code>sp</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L348-L352">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{Ti}, Tuple{Tv}, Tuple{Type{Symmetric{Tv, S}}, Ferrite.AbstractSparsityPattern}} where {Tv, Ti, S<:SparseMatrixCSC{Tv, Ti}}" href="#Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{Ti}, Tuple{Tv}, Tuple{Type{Symmetric{Tv, S}}, Ferrite.AbstractSparsityPattern}} where {Tv, Ti, S<:SparseMatrixCSC{Tv, Ti}}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{Symmetric{Tv, SparseMatrixCSC{Tv, Ti}}}, sp::SparsityPattern)</code></pre><p>Instantiate a sparse matrix of type <code>Symmetric{Tv, SparseMatrixCSC{Tv, Ti}}</code>, i.e. a <code>LinearAlgebra.Symmetric</code>-wrapped <code>SparseMatrixCSC</code>, from the sparsity pattern <code>sp</code>. The resulting matrix will only store entries above, and including, the diagonal.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L357-L363">source</a></section></article><h3 id="Creating-matrix-from-DofHandler"><a class="docs-heading-anchor" href="#Creating-matrix-from-DofHandler">Creating matrix from <code>DofHandler</code></a><a id="Creating-matrix-from-DofHandler-1"></a><a class="docs-heading-anchor-permalink" href="#Creating-matrix-from-DofHandler" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Union{Tuple{MatrixType}, Tuple{Type{MatrixType}, DofHandler, Vararg{Any}}} where MatrixType" href="#Ferrite.allocate_matrix-Union{Tuple{MatrixType}, Tuple{Type{MatrixType}, DofHandler, Vararg{Any}}} where MatrixType"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(MatrixType, dh::DofHandler, args...; kwargs...)</code></pre><p>Allocate a matrix of type <code>MatrixType</code> from the DofHandler <code>dh</code>.</p><p>This is a convenience method and is equivalent to:</p><p><code>julia sp = init_sparsity_pattern(dh) add_sparsity_entries!(sp, dh, args...; kwargs...) allocate_matrix(MatrixType, sp)</code>`</p><p>Refer to <a href="#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a> for supported matrix types, and to <a href="#Ferrite.init_sparsity_pattern"><code>init_sparsity_pattern</code></a> for details about supported arguments <code>args</code> and keyword arguments <code>kwargs</code>.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>If more than one sparse matrix is needed (e.g. a stiffness and a mass matrix) it is more efficient to explicitly create the sparsity pattern instead of using this method, i.e. use</p><pre><code class="language-julia hljs">sp = init_sparsity_pattern(dh) +allocate_matrix(BlockMatrix{Float32, Matrix{SparseMatrixCSC{Float32, Int}}}, sparsity_pattern)</code></pre><div class="admonition is-info"><header class="admonition-header">Package extension</header><div class="admonition-body"><p>This functionality is only enabled when the package <a href="https://github.com/JuliaArrays/BlockArrays.jl">BlockArrays.jl</a> is installed (<code>pkg> add BlockArrays</code>) and loaded (<code>using BlockArrays</code>) in the session.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/ext/FerriteBlockArrays.jl#L26-L48">source</a></section></article><h2 id="Sparse-matrices"><a class="docs-heading-anchor" href="#Sparse-matrices">Sparse matrices</a><a id="Sparse-matrices-1"></a><a class="docs-heading-anchor-permalink" href="#Sparse-matrices" title="Permalink"></a></h2><h3 id="Creating-matrix-from-SparsityPattern"><a class="docs-heading-anchor" href="#Creating-matrix-from-SparsityPattern">Creating matrix from <code>SparsityPattern</code></a><a id="Creating-matrix-from-SparsityPattern-1"></a><a class="docs-heading-anchor-permalink" href="#Creating-matrix-from-SparsityPattern" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{Ti}, Tuple{Tv}, Tuple{Type{S}, Ferrite.AbstractSparsityPattern}} where {Tv, Ti, S<:SparseMatrixCSC{Tv, Ti}}" href="#Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{Ti}, Tuple{Tv}, Tuple{Type{S}, Ferrite.AbstractSparsityPattern}} where {Tv, Ti, S<:SparseMatrixCSC{Tv, Ti}}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{SparseMatrixCSC{Tv, Ti}}, sp::SparsityPattern)</code></pre><p>Allocate a sparse matrix of type <code>SparseMatrixCSC{Tv, Ti}</code> from the sparsity pattern <code>sp</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L348-L352">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{Ti}, Tuple{Tv}, Tuple{Type{Symmetric{Tv, S}}, Ferrite.AbstractSparsityPattern}} where {Tv, Ti, S<:SparseMatrixCSC{Tv, Ti}}" href="#Ferrite.allocate_matrix-Union{Tuple{S}, Tuple{Ti}, Tuple{Tv}, Tuple{Type{Symmetric{Tv, S}}, Ferrite.AbstractSparsityPattern}} where {Tv, Ti, S<:SparseMatrixCSC{Tv, Ti}}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(::Type{Symmetric{Tv, SparseMatrixCSC{Tv, Ti}}}, sp::SparsityPattern)</code></pre><p>Instantiate a sparse matrix of type <code>Symmetric{Tv, SparseMatrixCSC{Tv, Ti}}</code>, i.e. a <code>LinearAlgebra.Symmetric</code>-wrapped <code>SparseMatrixCSC</code>, from the sparsity pattern <code>sp</code>. The resulting matrix will only store entries above, and including, the diagonal.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L357-L363">source</a></section></article><h3 id="Creating-matrix-from-DofHandler"><a class="docs-heading-anchor" href="#Creating-matrix-from-DofHandler">Creating matrix from <code>DofHandler</code></a><a id="Creating-matrix-from-DofHandler-1"></a><a class="docs-heading-anchor-permalink" href="#Creating-matrix-from-DofHandler" title="Permalink"></a></h3><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Union{Tuple{MatrixType}, Tuple{Type{MatrixType}, DofHandler, Vararg{Any}}} where MatrixType" href="#Ferrite.allocate_matrix-Union{Tuple{MatrixType}, Tuple{Type{MatrixType}, DofHandler, Vararg{Any}}} where MatrixType"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(MatrixType, dh::DofHandler, args...; kwargs...)</code></pre><p>Allocate a matrix of type <code>MatrixType</code> from the DofHandler <code>dh</code>.</p><p>This is a convenience method and is equivalent to:</p><p><code>julia sp = init_sparsity_pattern(dh) add_sparsity_entries!(sp, dh, args...; kwargs...) allocate_matrix(MatrixType, sp)</code>`</p><p>Refer to <a href="#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a> for supported matrix types, and to <a href="#Ferrite.init_sparsity_pattern"><code>init_sparsity_pattern</code></a> for details about supported arguments <code>args</code> and keyword arguments <code>kwargs</code>.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>If more than one sparse matrix is needed (e.g. a stiffness and a mass matrix) it is more efficient to explicitly create the sparsity pattern instead of using this method, i.e. use</p><pre><code class="language-julia hljs">sp = init_sparsity_pattern(dh) add_sparsity_entries!(sp, dh) K = allocate_matrix(sp) M = allocate_matrix(sp)</code></pre><p>instead of</p><pre><code class="language-julia hljs">K = allocate_matrix(dh) -M = allocate_matrix(dh)</code></pre><p>Note that for some matrix types it is possible to <code>copy</code> the instantiated matrix (<code>M = copy(K)</code>) instead.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L380-L414">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Tuple{DofHandler, Vararg{Any}}" href="#Ferrite.allocate_matrix-Tuple{DofHandler, Vararg{Any}}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(dh::DofHandler, args...; kwargs...)</code></pre><p>Allocate a matrix of type <code>SparseMatrixCSC{Float64, Int}</code> from the DofHandler <code>dh</code>.</p><p>This method is a shorthand for the equivalent <a href="#Ferrite.allocate_matrix-Union{Tuple{MatrixType}, Tuple{Type{MatrixType}, DofHandler, Vararg{Any}}} where MatrixType"><code>allocate_matrix(SparseMatrixCSC{Float64, Int}, dh, args...; kwargs...)</code></a> – refer to that method for details.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/Dofs/sparsity_pattern.jl#L421-L429">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../dofhandler/">« Degrees of Freedom</a><a class="docs-footer-nextpage" href="../assembly/">Assembly »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +M = allocate_matrix(dh)</code></pre><p>Note that for some matrix types it is possible to <code>copy</code> the instantiated matrix (<code>M = copy(K)</code>) instead.</p></div></div></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L380-L414">source</a></section></article><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.allocate_matrix-Tuple{DofHandler, Vararg{Any}}" href="#Ferrite.allocate_matrix-Tuple{DofHandler, Vararg{Any}}"><code>Ferrite.allocate_matrix</code></a> — <span class="docstring-category">Method</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">allocate_matrix(dh::DofHandler, args...; kwargs...)</code></pre><p>Allocate a matrix of type <code>SparseMatrixCSC{Float64, Int}</code> from the DofHandler <code>dh</code>.</p><p>This method is a shorthand for the equivalent <a href="#Ferrite.allocate_matrix-Union{Tuple{MatrixType}, Tuple{Type{MatrixType}, DofHandler, Vararg{Any}}} where MatrixType"><code>allocate_matrix(SparseMatrixCSC{Float64, Int}, dh, args...; kwargs...)</code></a> – refer to that method for details.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/Dofs/sparsity_pattern.jl#L421-L429">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../dofhandler/">« Degrees of Freedom</a><a class="docs-footer-nextpage" href="../assembly/">Assembly »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/reference/utils/index.html b/dev/reference/utils/index.html index 5355cb4f17..9df693cac2 100644 --- a/dev/reference/utils/index.html +++ b/dev/reference/utils/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Development utility functions · Ferrite.jl</title><meta name="title" content="Development utility functions · Ferrite.jl"/><meta property="og:title" content="Development utility functions · Ferrite.jl"/><meta property="twitter:title" content="Development utility functions · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/utils/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/utils/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/utils/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li><a class="tocitem" href="../fevalues/">FEValues</a></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li class="is-active"><a class="tocitem" href>Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Development utility functions</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Development utility functions</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/utils.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Development-utility-functions"><a class="docs-heading-anchor" href="#Development-utility-functions">Development utility functions</a><a id="Development-utility-functions-1"></a><a class="docs-heading-anchor-permalink" href="#Development-utility-functions" title="Permalink"></a></h1><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.debug_mode" href="#Ferrite.debug_mode"><code>Ferrite.debug_mode</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.debug_mode(; enable=true)</code></pre><p>Helper to turn on (<code>enable=true</code>) or off (<code>enable=false</code>) debug expressions in Ferrite.</p><p>Debug mode influences <code>Ferrite.@debug expr</code>: when debug mode is enabled, <code>expr</code> is evaluated, and when debug mode is disabled <code>expr</code> is ignored.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/907c8c9ebd08c77c745ec2bc63b0993b5c761cab/src/utils.jl#L5-L12">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../export/">« Postprocessing</a><a class="docs-footer-nextpage" href="../../howto/">How-to guide overview »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Development utility functions · Ferrite.jl</title><meta name="title" content="Development utility functions · Ferrite.jl"/><meta property="og:title" content="Development utility functions · Ferrite.jl"/><meta property="twitter:title" content="Development utility functions · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/utils/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/utils/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/reference/utils/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../../topics/grid/">Grid</a></li><li><a class="tocitem" href="../../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox" checked/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Reference overview</a></li><li><a class="tocitem" href="../quadrature/">Quadrature</a></li><li><a class="tocitem" href="../interpolations/">Interpolation</a></li><li><a class="tocitem" href="../fevalues/">FEValues</a></li><li><a class="tocitem" href="../dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../export/">Postprocessing</a></li><li class="is-active"><a class="tocitem" href>Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">API reference</a></li><li class="is-active"><a href>Development utility functions</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Development utility functions</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/reference/utils.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Development-utility-functions"><a class="docs-heading-anchor" href="#Development-utility-functions">Development utility functions</a><a id="Development-utility-functions-1"></a><a class="docs-heading-anchor-permalink" href="#Development-utility-functions" title="Permalink"></a></h1><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="Ferrite.debug_mode" href="#Ferrite.debug_mode"><code>Ferrite.debug_mode</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">Ferrite.debug_mode(; enable=true)</code></pre><p>Helper to turn on (<code>enable=true</code>) or off (<code>enable=false</code>) debug expressions in Ferrite.</p><p>Debug mode influences <code>Ferrite.@debug expr</code>: when debug mode is enabled, <code>expr</code> is evaluated, and when debug mode is disabled <code>expr</code> is ignored.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/db375ff4af88a8f5eb73a21438d8a58325ae10a9/src/utils.jl#L5-L12">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../export/">« Postprocessing</a><a class="docs-footer-nextpage" href="../../howto/">How-to guide overview »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/FEValues/index.html b/dev/topics/FEValues/index.html index a995a3b52f..290986db72 100644 --- a/dev/topics/FEValues/index.html +++ b/dev/topics/FEValues/index.html @@ -125,4 +125,4 @@ reinit!(cv, x);</code></pre><p>If we now pretend we are inside an element routine and have a vector of element degree of freedom values, <code>ue</code>. Then, we can check that our function values and gradients match Ferrite's builtin <code>CellValues</code>:</p><pre><code class="language-julia hljs">ue = rand(getnbasefunctions(simple_cv)) q_point = 2 @test function_value(cv, q_point, ue) ≈ function_value(simple_cv, q_point, ue) -@test function_gradient(cv, q_point, ue) ≈ function_gradient(simple_cv, q_point, ue)</code></pre><pre><code class="nohighlight hljs">Test Passed</code></pre><h2 id="Further-reading"><a class="docs-heading-anchor" href="#Further-reading">Further reading</a><a id="Further-reading-1"></a><a class="docs-heading-anchor-permalink" href="#Further-reading" title="Permalink"></a></h2><ul><li><a href="https://defelement.com/ciarlet.html#Mapping+finite+elements">defelement.com</a></li><li>Kirby (2017) [<a href="../../cited-literature/#Kirby2017">5</a>]</li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../reference_shapes/">« Reference shapes</a><a class="docs-footer-nextpage" href="../degrees_of_freedom/">Degrees of Freedom »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +@test function_gradient(cv, q_point, ue) ≈ function_gradient(simple_cv, q_point, ue)</code></pre><pre><code class="nohighlight hljs">Test Passed</code></pre><h2 id="Further-reading"><a class="docs-heading-anchor" href="#Further-reading">Further reading</a><a id="Further-reading-1"></a><a class="docs-heading-anchor-permalink" href="#Further-reading" title="Permalink"></a></h2><ul><li><a href="https://defelement.com/ciarlet.html#Mapping+finite+elements">defelement.com</a></li><li>Kirby (2017) [<a href="../../cited-literature/#Kirby2017">5</a>]</li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../reference_shapes/">« Reference shapes</a><a class="docs-footer-nextpage" href="../degrees_of_freedom/">Degrees of Freedom »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/assembly/index.html b/dev/topics/assembly/index.html index 2e61359fbd..c21e97e431 100644 --- a/dev/topics/assembly/index.html +++ b/dev/topics/assembly/index.html @@ -90,4 +90,4 @@ @time assemble_system!(assemble_v4, K, dh, cellvalues)</code></pre><p>We then obtain the following results (running on the same machine as above):</p><pre><code class="nohighlight hljs">12.175625 seconds (719.99 k allocations: 149.809 GiB, 11.59% gc time) 0.009313 seconds (8 allocations: 928 bytes) 0.006055 seconds (8 allocations: 928 bytes) - 0.004530 seconds (10 allocations: 1.062 KiB)</code></pre><p>This follows the same trend as for the benchmarks for individual cell assembly and shows that the efficiency of the assembly strategy is crucial for the overall performance of the program. In particular this benchmark shows that allocations in such a tight loop from the first strategy is very costly and puts a strain on the garbage collector: 11% of the time is spent in GC instead of crunching numbers.</p><p>It should of course be noted that the more expensive the element routine is, the less the performance of the assembly strategy matters for the total runtime. However, there are no reason not to use the fastest method given that it is readily available in Ferrite.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../sparse_matrix/">« Sparsity pattern and sparse matrices</a><a class="docs-footer-nextpage" href="../boundary_conditions/">Boundary and initial conditions »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + 0.004530 seconds (10 allocations: 1.062 KiB)</code></pre><p>This follows the same trend as for the benchmarks for individual cell assembly and shows that the efficiency of the assembly strategy is crucial for the overall performance of the program. In particular this benchmark shows that allocations in such a tight loop from the first strategy is very costly and puts a strain on the garbage collector: 11% of the time is spent in GC instead of crunching numbers.</p><p>It should of course be noted that the more expensive the element routine is, the less the performance of the assembly strategy matters for the total runtime. However, there are no reason not to use the fastest method given that it is readily available in Ferrite.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../sparse_matrix/">« Sparsity pattern and sparse matrices</a><a class="docs-footer-nextpage" href="../boundary_conditions/">Boundary and initial conditions »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/boundary_conditions/index.html b/dev/topics/boundary_conditions/index.html index 922a7b0b20..ce1556f4fc 100644 --- a/dev/topics/boundary_conditions/index.html +++ b/dev/topics/boundary_conditions/index.html @@ -78,4 +78,4 @@ grid = generate_grid(Quadrilateral, (10,10)) dh = DofHandler(grid); add!(dh, :u, 2); add!(dh, :p, 1); close!(dh) u = zeros(ndofs(dh)) -apply_analytical!(u, dh, :p, x -> ρ * g * x[2])</code></pre><p>See also <a href="../../tutorials/transient_heat_equation/#tutorial-transient-heat-equation">Transient heat equation</a> for one example.</p><div class="admonition is-info"><header class="admonition-header">Consistency</header><div class="admonition-body"><p><code>apply_analytical!</code> does not enforce consistency of the applied solution with the system of equations. Some problems, like for example differential-algebraic systems of equations (DAEs) need extra care during initialization. We refer to the paper <a href="https://dx.doi.org/10.1137/S1064827595289996">"Consistent Initial Condition Calculation for Differential-Algebraic Systems" by Brown et al.</a> for more details on this matter.</p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../assembly/">« Assembly</a><a class="docs-footer-nextpage" href="../constraints/">Constraints »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +apply_analytical!(u, dh, :p, x -> ρ * g * x[2])</code></pre><p>See also <a href="../../tutorials/transient_heat_equation/#tutorial-transient-heat-equation">Transient heat equation</a> for one example.</p><div class="admonition is-info"><header class="admonition-header">Consistency</header><div class="admonition-body"><p><code>apply_analytical!</code> does not enforce consistency of the applied solution with the system of equations. Some problems, like for example differential-algebraic systems of equations (DAEs) need extra care during initialization. We refer to the paper <a href="https://dx.doi.org/10.1137/S1064827595289996">"Consistent Initial Condition Calculation for Differential-Algebraic Systems" by Brown et al.</a> for more details on this matter.</p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../assembly/">« Assembly</a><a class="docs-footer-nextpage" href="../constraints/">Constraints »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/constraints/index.html b/dev/topics/constraints/index.html index 0eb883d1c7..a94c1dcb6a 100644 --- a/dev/topics/constraints/index.html +++ b/dev/topics/constraints/index.html @@ -21,4 +21,4 @@ apply_zero!(Δa, ch) # Change the constrained values in `Δa` such that `a-Δa` # fulfills constraints if `a` did. a .-= Δa -end</code></pre></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../boundary_conditions/">« Boundary and initial conditions</a><a class="docs-footer-nextpage" href="../grid/">Grid »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end</code></pre></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../boundary_conditions/">« Boundary and initial conditions</a><a class="docs-footer-nextpage" href="../grid/">Grid »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/degrees_of_freedom/index.html b/dev/topics/degrees_of_freedom/index.html index 26cf76da88..8dba399b5b 100644 --- a/dev/topics/degrees_of_freedom/index.html +++ b/dev/topics/degrees_of_freedom/index.html @@ -12,4 +12,4 @@ :p, Lagrange{RefTriangle, 1}() :u, Lagrange{RefTriangle, 1}()^2 Dofs per cell: 9 - Total dofs: 1323</code></pre><h2 id="Ordering-of-Dofs"><a class="docs-heading-anchor" href="#Ordering-of-Dofs">Ordering of Dofs</a><a id="Ordering-of-Dofs-1"></a><a class="docs-heading-anchor-permalink" href="#Ordering-of-Dofs" title="Permalink"></a></h2><div class="admonition is-todo"><header class="admonition-header">Todo</header><div class="admonition-body"><p>Describe dof ordering within elements (vertices -> edges -> faces -> volumes) and <code>dof_range</code>. Describe (global) dof renumbering</p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../FEValues/">« FEValues</a><a class="docs-footer-nextpage" href="../sparse_matrix/">Sparsity pattern and sparse matrices »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + Total dofs: 1323</code></pre><h2 id="Ordering-of-Dofs"><a class="docs-heading-anchor" href="#Ordering-of-Dofs">Ordering of Dofs</a><a id="Ordering-of-Dofs-1"></a><a class="docs-heading-anchor-permalink" href="#Ordering-of-Dofs" title="Permalink"></a></h2><div class="admonition is-todo"><header class="admonition-header">Todo</header><div class="admonition-body"><p>Describe dof ordering within elements (vertices -> edges -> faces -> volumes) and <code>dof_range</code>. Describe (global) dof renumbering</p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../FEValues/">« FEValues</a><a class="docs-footer-nextpage" href="../sparse_matrix/">Sparsity pattern and sparse matrices »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/export/index.html b/dev/topics/export/index.html index eb96c2ac2b..4db3bf058e 100644 --- a/dev/topics/export/index.html +++ b/dev/topics/export/index.html @@ -19,4 +19,4 @@ "my_results_2.vtu" "my_results_3.vtu" "my_results_4.vtu" - "my_results_5.vtu"</code></pre><p>See <a href="../../tutorials/transient_heat_equation/#tutorial-transient-heat-equation">Transient heat equation</a> for an example</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../grid/">« Grid</a><a class="docs-footer-nextpage" href="../../reference/">Reference overview »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + "my_results_5.vtu"</code></pre><p>See <a href="../../tutorials/transient_heat_equation/#tutorial-transient-heat-equation">Transient heat equation</a> for an example</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../grid/">« Grid</a><a class="docs-footer-nextpage" href="../../reference/">Reference overview »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/fe_intro/index.html b/dev/topics/fe_intro/index.html index d28e51bdb6..57392242ea 100644 --- a/dev/topics/fe_intro/index.html +++ b/dev/topics/fe_intro/index.html @@ -12,4 +12,4 @@ \int_{\Gamma_\mathrm{N}} \phi_i \, q^\mathrm{p} \, \mathrm{d}\Gamma + \int_{\Omega_\mathrm{h}} \phi_i \, f \, \mathrm{d}\Omega \, .\]</p><p>Finally we also need to take care of the Dirichlet boundary conditions. These are enforced by setting the corresponding <span>$\hat{u}_i$</span> to the prescribed values and eliminating the associated equations from the system. Now, solving this equation system yields the nodal values and thus an approximation to the true solution.</p><h2 id="Notes-on-the-implementation"><a class="docs-heading-anchor" href="#Notes-on-the-implementation">Notes on the implementation</a><a id="Notes-on-the-implementation-1"></a><a class="docs-heading-anchor-permalink" href="#Notes-on-the-implementation" title="Permalink"></a></h2><p>In practice, the shape functions <span>$\phi_i$</span> are only non-zero on parts of the domain <span>$\Omega_\mathrm{h}$</span>. Thus, the integrals are evaluated on sub-domains, called <em>elements</em> or <em>cells</em>.</p><p>Each cell gives a contribution to the global stiffness matrix and force vector. The process of constructing the system of equations is also called <em>assembly</em>. For clarification, let us rewrite the formula for the stiffness matrix entries as follows:</p><p class="math-container">\[(\underline{\underline{K}})_{ij} = \int_{\Omega_\mathrm{h}} \nabla \phi_i \cdot (k \nabla \phi_j) \mathrm{d}\Omega = \sum_{E \in \Omega_\mathrm{h}} \int_E \nabla \phi_i \cdot (k \nabla \phi_j) \mathrm{d}\Omega \, .\]</p><p>This formulation underlines the element-centric perspective of finite element methods and reflects how it is usually implemented in software.</p><p>Computing the element integrals by hand can become a tedious task. To avoid this issue we approximate the element integrals with a technique called <em>numerical integration</em>. Skipping any of the mathematical details, the basic idea is to evaluate the function under the integral at specific points and weighting the evaluations accordingly, such that their sum approximates the volume properly. A very nice feature of these techniques is, that under quite general circumstances the formula is not just an approximation, but the exact evaluation of the integral. To avoid the recomputation of the just mentioned evaluation positions of the integral for each individual element, we perform a coordinate transformation onto a so-called <em>reference element</em>. Formally we write</p><p class="math-container">\[ \int_E \nabla \phi_i \cdot (k \nabla \phi_j) \mathrm{d}\Omega - \approx \sum_q \nabla \phi_i(\textbf{x}_q) \cdot (k(\textbf{x}_q) \nabla \phi_j(\textbf{x}_q)) \, w_q \, \textrm{det}(J(\textbf{x}_q)) \, ,\]</p><p>where <span>$J$</span> is the Jacobian of the coordinate transformation function. The computation of the transformation, weights, positions and of the Jacobi determinant is handled by Ferrite. On an intuitive level, and to explain the notation used in the implementation, we think of</p><p class="math-container">\[ \mathrm{d}\Omega \approx \, w \, \textrm{det}(J)\]</p><p>being the chosen approximation when changing from the integral to the finite summation.</p><p>For an example of the implementation to solve a heat problem with Ferrite check out <a href="../../tutorials/heat_equation/#tutorial-heat-equation">this thoroughly commented example</a>.</p><h2 id="More-details"><a class="docs-heading-anchor" href="#More-details">More details</a><a id="More-details-1"></a><a class="docs-heading-anchor-permalink" href="#More-details" title="Permalink"></a></h2><p>We finally want to note that this quick introduction barely scratches the surface of the finite element method. Also, we presented some things in a simplified way for the sake of keeping this article short and concise. There is a large corpus of literature and online tutorials containing more details about the finite element method. To give a few recommendations there is:</p><ul><li><a href="https://hplgit.github.io/INF5620/doc/pub/sphinx-fem/index.html">Hans Petter Langtangen's Script</a></li><li><a href="https://www.math.colostate.edu/~bangerth/videos.html">Wolfgang Bangerth's Lecture Series</a></li><li><em>Introduction to the Finite Element Method</em> by Niels Ottosen and Hans Petersson</li><li><em>The Finite Element Method for Elliptic Problems</em> by Philippe Ciarlet</li><li><em>Finite Elements: Theory, Fast Solvers, and Applications in Elasticity Theory</em> by Dietrich Braess</li><li><em>An Analysis of the Finite Element Method</em> by Gilbert Strang and George Fix</li><li><em>Finite Element Procedures</em> by Klaus-Jürgen Bathe</li><li><em>The Finite Element Method: Its Basis and Fundamentals</em> by Olgierd Cecil Zienkiewicz, Robert Taylor and J.Z. Zhu</li><li><em>Higher-Order Finite Element Methods</em> by Pavel Šolín, Karel Segeth and Ivo Doležel</li></ul><p>This list is neither meant to be exhaustive, nor does the absence of a work mean that it is in any way bad or not recommendable. The ordering of the articles also has no particular meaning.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Topic guide overview</a><a class="docs-footer-nextpage" href="../reference_shapes/">Reference shapes »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + \approx \sum_q \nabla \phi_i(\textbf{x}_q) \cdot (k(\textbf{x}_q) \nabla \phi_j(\textbf{x}_q)) \, w_q \, \textrm{det}(J(\textbf{x}_q)) \, ,\]</p><p>where <span>$J$</span> is the Jacobian of the coordinate transformation function. The computation of the transformation, weights, positions and of the Jacobi determinant is handled by Ferrite. On an intuitive level, and to explain the notation used in the implementation, we think of</p><p class="math-container">\[ \mathrm{d}\Omega \approx \, w \, \textrm{det}(J)\]</p><p>being the chosen approximation when changing from the integral to the finite summation.</p><p>For an example of the implementation to solve a heat problem with Ferrite check out <a href="../../tutorials/heat_equation/#tutorial-heat-equation">this thoroughly commented example</a>.</p><h2 id="More-details"><a class="docs-heading-anchor" href="#More-details">More details</a><a id="More-details-1"></a><a class="docs-heading-anchor-permalink" href="#More-details" title="Permalink"></a></h2><p>We finally want to note that this quick introduction barely scratches the surface of the finite element method. Also, we presented some things in a simplified way for the sake of keeping this article short and concise. There is a large corpus of literature and online tutorials containing more details about the finite element method. To give a few recommendations there is:</p><ul><li><a href="https://hplgit.github.io/INF5620/doc/pub/sphinx-fem/index.html">Hans Petter Langtangen's Script</a></li><li><a href="https://www.math.colostate.edu/~bangerth/videos.html">Wolfgang Bangerth's Lecture Series</a></li><li><em>Introduction to the Finite Element Method</em> by Niels Ottosen and Hans Petersson</li><li><em>The Finite Element Method for Elliptic Problems</em> by Philippe Ciarlet</li><li><em>Finite Elements: Theory, Fast Solvers, and Applications in Elasticity Theory</em> by Dietrich Braess</li><li><em>An Analysis of the Finite Element Method</em> by Gilbert Strang and George Fix</li><li><em>Finite Element Procedures</em> by Klaus-Jürgen Bathe</li><li><em>The Finite Element Method: Its Basis and Fundamentals</em> by Olgierd Cecil Zienkiewicz, Robert Taylor and J.Z. Zhu</li><li><em>Higher-Order Finite Element Methods</em> by Pavel Šolín, Karel Segeth and Ivo Doležel</li></ul><p>This list is neither meant to be exhaustive, nor does the absence of a work mean that it is in any way bad or not recommendable. The ordering of the articles also has no particular meaning.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Topic guide overview</a><a class="docs-footer-nextpage" href="../reference_shapes/">Reference shapes »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/grid/index.html b/dev/topics/grid/index.html index 925465297b..ee09ae0133 100644 --- a/dev/topics/grid/index.html +++ b/dev/topics/grid/index.html @@ -19,4 +19,4 @@ Ferrite.getnnodes(grid::SmallGrid) = length(grid.nodes_test) Ferrite.get_coordinate_eltype(::SmallGrid) = Float64 Ferrite.get_coordinate_type(::SmallGrid{dim}) where dim = Vec{dim,Float64} -Ferrite.nnodes_per_cell(grid::SmallGrid, i::Int=1) = Ferrite.nnodes(grid.cells_test[i])</code></pre><p>These definitions make many of Ferrite functions work out of the box, e.g. you can now call <code>getcoordinates(grid, cellid)</code> on the <code>SmallGrid</code>.</p><p>Now, you would be able to assemble the heat equation example over the new custom <code>SmallGrid</code> type. Note that this particular subtype isn't able to handle boundary entity sets and so, you can't describe boundaries with it. In order to use boundaries, e.g. for Dirichlet constraints in the ConstraintHandler, you would need to dispatch the <code>AbstractGrid</code> sets utility functions on <code>SmallGrid</code>.</p><h2 id="Topology"><a class="docs-heading-anchor" href="#Topology">Topology</a><a id="Topology-1"></a><a class="docs-heading-anchor-permalink" href="#Topology" title="Permalink"></a></h2><p>Ferrite.jl's <code>Grid</code> type offers experimental features w.r.t. topology information. The functions <a href="../../reference/grid/#Ferrite.getneighborhood"><code>getneighborhood</code></a> and <a href="../../reference/grid/#Ferrite.facetskeleton"><code>facetskeleton</code></a> are the interface to obtain topological information. The <a href="../../reference/grid/#Ferrite.getneighborhood"><code>getneighborhood</code></a> can construct lists of directly connected entities based on a given entity (<code>CellIndex</code>, <code>FacetIndex</code>, <code>FaceIndex</code>, <code>EdgeIndex</code>, or <code>VertexIndex</code>). The <a href="../../reference/grid/#Ferrite.facetskeleton"><code>facetskeleton</code></a> function can be used to evaluate integrals over material interfaces or computing element interface values such as jumps.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../constraints/">« Constraints</a><a class="docs-footer-nextpage" href="../export/">Export »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +Ferrite.nnodes_per_cell(grid::SmallGrid, i::Int=1) = Ferrite.nnodes(grid.cells_test[i])</code></pre><p>These definitions make many of Ferrite functions work out of the box, e.g. you can now call <code>getcoordinates(grid, cellid)</code> on the <code>SmallGrid</code>.</p><p>Now, you would be able to assemble the heat equation example over the new custom <code>SmallGrid</code> type. Note that this particular subtype isn't able to handle boundary entity sets and so, you can't describe boundaries with it. In order to use boundaries, e.g. for Dirichlet constraints in the ConstraintHandler, you would need to dispatch the <code>AbstractGrid</code> sets utility functions on <code>SmallGrid</code>.</p><h2 id="Topology"><a class="docs-heading-anchor" href="#Topology">Topology</a><a id="Topology-1"></a><a class="docs-heading-anchor-permalink" href="#Topology" title="Permalink"></a></h2><p>Ferrite.jl's <code>Grid</code> type offers experimental features w.r.t. topology information. The functions <a href="../../reference/grid/#Ferrite.getneighborhood"><code>getneighborhood</code></a> and <a href="../../reference/grid/#Ferrite.facetskeleton"><code>facetskeleton</code></a> are the interface to obtain topological information. The <a href="../../reference/grid/#Ferrite.getneighborhood"><code>getneighborhood</code></a> can construct lists of directly connected entities based on a given entity (<code>CellIndex</code>, <code>FacetIndex</code>, <code>FaceIndex</code>, <code>EdgeIndex</code>, or <code>VertexIndex</code>). The <a href="../../reference/grid/#Ferrite.facetskeleton"><code>facetskeleton</code></a> function can be used to evaluate integrals over material interfaces or computing element interface values such as jumps.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../constraints/">« Constraints</a><a class="docs-footer-nextpage" href="../export/">Export »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/index.html b/dev/topics/index.html index 86c9d77116..f44f080e05 100644 --- a/dev/topics/index.html +++ b/dev/topics/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Topic guide overview · Ferrite.jl</title><meta name="title" content="Topic guide overview · Ferrite.jl"/><meta property="og:title" content="Topic guide overview · Ferrite.jl"/><meta property="twitter:title" content="Topic guide overview · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox" checked/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li class="is-active"><a class="tocitem" href>Topic guide overview</a></li><li><a class="tocitem" href="fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="FEValues/">FEValues</a></li><li><a class="tocitem" href="degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="assembly/">Assembly</a></li><li><a class="tocitem" href="boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="constraints/">Constraints</a></li><li><a class="tocitem" href="grid/">Grid</a></li><li><a class="tocitem" href="export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Topic guides</a></li><li class="is-active"><a href>Topic guide overview</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Topic guide overview</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/topics/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Topic-guides"><a class="docs-heading-anchor" href="#Topic-guides">Topic guides</a><a id="Topic-guides-1"></a><a class="docs-heading-anchor-permalink" href="#Topic-guides" title="Permalink"></a></h1><p>This is an overview of the <em>topic guides</em>.</p><ul><li><a href="fe_intro/#Introduction-to-FEM">Introduction to FEM</a></li><li class="no-marker"><ul><li><a href="fe_intro/#Strong-form">Strong form</a></li><li><a href="fe_intro/#Weak-form">Weak form</a></li><li><a href="fe_intro/#Finite-Element-approximation">Finite Element approximation</a></li><li><a href="fe_intro/#Notes-on-the-implementation">Notes on the implementation</a></li><li><a href="fe_intro/#More-details">More details</a></li></ul></li><li><a href="reference_shapes/#Reference-shapes">Reference shapes</a></li><li class="no-marker"><ul><li><a href="reference_shapes/#Entity-naming">Entity naming</a></li><li><a href="reference_shapes/#Entity-numbering">Entity numbering</a></li></ul></li><li><a href="FEValues/#fevalues_topicguide">FEValues</a></li><li class="no-marker"><ul><li><a href="FEValues/#mapping_theory">Mapping of finite elements</a></li><li><a href="FEValues/#SimpleCellValues">Walkthrough: Creating <code>SimpleCellValues</code></a></li><li><a href="FEValues/#Further-reading">Further reading</a></li></ul></li><li><a href="degrees_of_freedom/#Degrees-of-Freedom">Degrees of Freedom</a></li><li class="no-marker"><ul><li><a href="degrees_of_freedom/#Fields">Fields</a></li><li><a href="degrees_of_freedom/#Ordering-of-Dofs">Ordering of Dofs</a></li></ul></li><li><a href="assembly/#man-assembly">Assembly</a></li><li class="no-marker"><ul><li><a href="assembly/#Assembler"><code>Assembler</code></a></li><li><a href="assembly/#Pseudo-code-for-efficient-assembly">Pseudo-code for efficient assembly</a></li><li><a href="assembly/#Comparison-of-assembly-strategies">Comparison of assembly strategies</a></li></ul></li><li><a href="boundary_conditions/#Boundary-and-initial-conditions">Boundary and initial conditions</a></li><li class="no-marker"><ul><li><a href="boundary_conditions/#Dirichlet-boundary-conditions">Dirichlet boundary conditions</a></li><li><a href="boundary_conditions/#Neumann-boundary-conditions">Neumann boundary conditions</a></li><li><a href="boundary_conditions/#Periodic-boundary-conditions">Periodic boundary conditions</a></li><li><a href="boundary_conditions/#Initial-conditions">Initial conditions</a></li></ul></li><li><a href="constraints/#Constraints">Constraints</a></li><li class="no-marker"><ul><li><a href="constraints/#Affine-constraints">Affine constraints</a></li></ul></li><li><a href="grid/#Grid">Grid</a></li><li class="no-marker"><ul><li><a href="grid/#Mesh-reading">Mesh reading</a></li><li><a href="grid/#Grid-datastructure"><code>Grid</code> datastructure</a></li><li><a href="grid/#AbstractGrid">AbstractGrid</a></li><li><a href="grid/#Topology">Topology</a></li></ul></li><li><a href="export/#Export">Export</a></li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../tutorials/dg_heat_equation/">« Discontinuous Galerkin heat equation</a><a class="docs-footer-nextpage" href="fe_intro/">Introduction to FEM »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Topic guide overview · Ferrite.jl</title><meta name="title" content="Topic guide overview · Ferrite.jl"/><meta property="og:title" content="Topic guide overview · Ferrite.jl"/><meta property="twitter:title" content="Topic guide overview · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox" checked/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li class="is-active"><a class="tocitem" href>Topic guide overview</a></li><li><a class="tocitem" href="fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="FEValues/">FEValues</a></li><li><a class="tocitem" href="degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="assembly/">Assembly</a></li><li><a class="tocitem" href="boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="constraints/">Constraints</a></li><li><a class="tocitem" href="grid/">Grid</a></li><li><a class="tocitem" href="export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Topic guides</a></li><li class="is-active"><a href>Topic guide overview</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Topic guide overview</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/topics/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Topic-guides"><a class="docs-heading-anchor" href="#Topic-guides">Topic guides</a><a id="Topic-guides-1"></a><a class="docs-heading-anchor-permalink" href="#Topic-guides" title="Permalink"></a></h1><p>This is an overview of the <em>topic guides</em>.</p><ul><li><a href="fe_intro/#Introduction-to-FEM">Introduction to FEM</a></li><li class="no-marker"><ul><li><a href="fe_intro/#Strong-form">Strong form</a></li><li><a href="fe_intro/#Weak-form">Weak form</a></li><li><a href="fe_intro/#Finite-Element-approximation">Finite Element approximation</a></li><li><a href="fe_intro/#Notes-on-the-implementation">Notes on the implementation</a></li><li><a href="fe_intro/#More-details">More details</a></li></ul></li><li><a href="reference_shapes/#Reference-shapes">Reference shapes</a></li><li class="no-marker"><ul><li><a href="reference_shapes/#Entity-naming">Entity naming</a></li><li><a href="reference_shapes/#Entity-numbering">Entity numbering</a></li></ul></li><li><a href="FEValues/#fevalues_topicguide">FEValues</a></li><li class="no-marker"><ul><li><a href="FEValues/#mapping_theory">Mapping of finite elements</a></li><li><a href="FEValues/#SimpleCellValues">Walkthrough: Creating <code>SimpleCellValues</code></a></li><li><a href="FEValues/#Further-reading">Further reading</a></li></ul></li><li><a href="degrees_of_freedom/#Degrees-of-Freedom">Degrees of Freedom</a></li><li class="no-marker"><ul><li><a href="degrees_of_freedom/#Fields">Fields</a></li><li><a href="degrees_of_freedom/#Ordering-of-Dofs">Ordering of Dofs</a></li></ul></li><li><a href="assembly/#man-assembly">Assembly</a></li><li class="no-marker"><ul><li><a href="assembly/#Assembler"><code>Assembler</code></a></li><li><a href="assembly/#Pseudo-code-for-efficient-assembly">Pseudo-code for efficient assembly</a></li><li><a href="assembly/#Comparison-of-assembly-strategies">Comparison of assembly strategies</a></li></ul></li><li><a href="boundary_conditions/#Boundary-and-initial-conditions">Boundary and initial conditions</a></li><li class="no-marker"><ul><li><a href="boundary_conditions/#Dirichlet-boundary-conditions">Dirichlet boundary conditions</a></li><li><a href="boundary_conditions/#Neumann-boundary-conditions">Neumann boundary conditions</a></li><li><a href="boundary_conditions/#Periodic-boundary-conditions">Periodic boundary conditions</a></li><li><a href="boundary_conditions/#Initial-conditions">Initial conditions</a></li></ul></li><li><a href="constraints/#Constraints">Constraints</a></li><li class="no-marker"><ul><li><a href="constraints/#Affine-constraints">Affine constraints</a></li></ul></li><li><a href="grid/#Grid">Grid</a></li><li class="no-marker"><ul><li><a href="grid/#Mesh-reading">Mesh reading</a></li><li><a href="grid/#Grid-datastructure"><code>Grid</code> datastructure</a></li><li><a href="grid/#AbstractGrid">AbstractGrid</a></li><li><a href="grid/#Topology">Topology</a></li></ul></li><li><a href="export/#Export">Export</a></li></ul></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../tutorials/dg_heat_equation/">« Discontinuous Galerkin heat equation</a><a class="docs-footer-nextpage" href="fe_intro/">Introduction to FEM »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/my_results_1.vtu b/dev/topics/my_results_1.vtu index cef75ec1a4..aced059229 100644 Binary files a/dev/topics/my_results_1.vtu and b/dev/topics/my_results_1.vtu differ diff --git a/dev/topics/my_results_2.vtu b/dev/topics/my_results_2.vtu index cef75ec1a4..aced059229 100644 Binary files a/dev/topics/my_results_2.vtu and b/dev/topics/my_results_2.vtu differ diff --git a/dev/topics/my_results_3.vtu b/dev/topics/my_results_3.vtu index cef75ec1a4..aced059229 100644 Binary files a/dev/topics/my_results_3.vtu and b/dev/topics/my_results_3.vtu differ diff --git a/dev/topics/my_results_4.vtu b/dev/topics/my_results_4.vtu index cef75ec1a4..aced059229 100644 Binary files a/dev/topics/my_results_4.vtu and b/dev/topics/my_results_4.vtu differ diff --git a/dev/topics/my_results_5.vtu b/dev/topics/my_results_5.vtu index cef75ec1a4..aced059229 100644 Binary files a/dev/topics/my_results_5.vtu and b/dev/topics/my_results_5.vtu differ diff --git a/dev/topics/my_solution.vtu b/dev/topics/my_solution.vtu index cef75ec1a4..aced059229 100644 Binary files a/dev/topics/my_solution.vtu and b/dev/topics/my_solution.vtu differ diff --git a/dev/topics/reference_shapes/index.html b/dev/topics/reference_shapes/index.html index 9376e544e7..f2267c6e96 100644 --- a/dev/topics/reference_shapes/index.html +++ b/dev/topics/reference_shapes/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Reference shapes · Ferrite.jl</title><meta name="title" content="Reference shapes · Ferrite.jl"/><meta property="og:title" content="Reference shapes · Ferrite.jl"/><meta property="twitter:title" content="Reference shapes · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/reference_shapes/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/reference_shapes/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/reference_shapes/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox" checked/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Topic guide overview</a></li><li><a class="tocitem" href="../fe_intro/">Introduction to FEM</a></li><li class="is-active"><a class="tocitem" href>Reference shapes</a><ul class="internal"><li><a class="tocitem" href="#Entity-naming"><span>Entity naming</span></a></li><li><a class="tocitem" href="#Entity-numbering"><span>Entity numbering</span></a></li></ul></li><li><a class="tocitem" href="../FEValues/">FEValues</a></li><li><a class="tocitem" href="../degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../constraints/">Constraints</a></li><li><a class="tocitem" href="../grid/">Grid</a></li><li><a class="tocitem" href="../export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Topic guides</a></li><li class="is-active"><a href>Reference shapes</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Reference shapes</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/topics/reference_shapes.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Reference-shapes"><a class="docs-heading-anchor" href="#Reference-shapes">Reference shapes</a><a id="Reference-shapes-1"></a><a class="docs-heading-anchor-permalink" href="#Reference-shapes" title="Permalink"></a></h1><p>The reference shapes in Ferrite are used to define grid cells, function interpolations (i.e. shape functions), and quadrature rules. Currently, the following reference shapes are defined</p><ul><li><code>RefLine</code></li><li><code>RefTriangle</code></li><li><code>RefQuadrilateral</code></li><li><code>RefTetrahedron</code></li><li><code>RefHexahedron</code></li><li><code>RefPrism</code></li><li><code>RefPyramid</code></li></ul><h2 id="Entity-naming"><a class="docs-heading-anchor" href="#Entity-naming">Entity naming</a><a id="Entity-naming-1"></a><a class="docs-heading-anchor-permalink" href="#Entity-naming" title="Permalink"></a></h2><p>Ferrite denotes the entities of a reference shape as follows</p><table><tr><th style="text-align: left">Entity</th><th style="text-align: left">Description</th></tr><tr><td style="text-align: left">Vertex</td><td style="text-align: left">0-dimensional entity in the reference shape.</td></tr><tr><td style="text-align: left">Edge</td><td style="text-align: left">1-dimensional entity connecting two vertices.</td></tr><tr><td style="text-align: left">Face</td><td style="text-align: left">2-dimensional entity enclosed by edges.</td></tr><tr><td style="text-align: left">Volume</td><td style="text-align: left">3-dimensional entity enclosed by faces.</td></tr></table><p>Note that a node in Ferrite is not the same as a vertex. Vertices denote endpoints of edges, while nodes may also be located in the middle of edges (e.g. for a <code>QuadraticLine</code> cell).</p><p>To write dimensionally independent code, Ferrite also denotes entities by their <a href="https://en.wikipedia.org/wiki/Codimension"><em>codimension</em></a>, defined relative the reference shape dimension. Specifically, Ferrite has the entities</p><table><tr><th style="text-align: left">Entity</th><th style="text-align: left">Description</th></tr><tr><td style="text-align: left"><code>Cell</code></td><td style="text-align: left"><em>0-codimensional</em> entity, i.e. the same as the reference shape.</td></tr><tr><td style="text-align: left"><code>Facet</code></td><td style="text-align: left"><em>1-codimensional</em> entity defining the boundary of cells.</td></tr></table><p>Standard use cases mostly deal with these codimensional entities, such as <a href="../../reference/fevalues/#Ferrite.CellValues"><code>CellValues</code></a> and <a href="../../reference/fevalues/#Ferrite.FacetValues"><code>FacetValues</code></a>.</p><div class="admonition is-info"><header class="admonition-header">Definition of codimension</header><div class="admonition-body"><p>In Ferrite, <em>codimension</em> is defined relative to the reference dimension of the specific entity. Note that other finite element codes may define it differently (e.g. relative the highest reference dimension in the grid).</p></div></div><h2 id="Entity-numbering"><a class="docs-heading-anchor" href="#Entity-numbering">Entity numbering</a><a id="Entity-numbering-1"></a><a class="docs-heading-anchor-permalink" href="#Entity-numbering" title="Permalink"></a></h2><p>Each reference shape defines the numbering of its vertices, edges, and faces entities, where the edge and face entities are defined from their vertex numbers.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The numbering and identification of entities is (mostly) for internal use and typically not something users of Ferrite need to interact with.</p></div></div><h3 id="Example"><a class="docs-heading-anchor" href="#Example">Example</a><a id="Example-1"></a><a class="docs-heading-anchor-permalink" href="#Example" title="Permalink"></a></h3><p>The <code>RefQuadrilateral</code> is defined on the domain <span>$[-1, 1] \times [-1, 1]$</span> in the local <span>$\xi_1-\xi_2$</span> coordinate system.</p><p><img src="../assets/local_element.svg" alt="local element"/></p><p>The vertices of a <code>RefQuadrilateral</code> are then</p><pre><code class="language-julia hljs">Ferrite.reference_vertices(RefQuadrilateral)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">(1, 2, 3, 4)</code></pre><p>and its edges are then defined as</p><pre><code class="language-julia hljs">Ferrite.reference_edges(RefQuadrilateral)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">((1, 2), (2, 3), (3, 4), (4, 1))</code></pre><p>where the numbers refer to the vertex number. Finally, this reference shape is 2-dimensional, so it only has a single face, corresponding to the cell itself,</p><pre><code class="language-julia hljs">Ferrite.reference_faces(RefQuadrilateral)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">((1, 2, 3, 4),)</code></pre><p>also defined in terms of its vertices.</p><p>As this is a 2-dimensional reference shape, the facets are the edges, i.e.</p><pre><code class="language-julia hljs">Ferrite.reference_facets(RefQuadrilateral)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">((1, 2), (2, 3), (3, 4), (4, 1))</code></pre><div class="admonition is-info"><header class="admonition-header">Not public API</header><div class="admonition-body"><p>The functions <code>reference_vertices</code>, <code>reference_edges</code>, <code>reference_faces</code>, and <code>reference_facets</code> are not public and only shown here to explain the numbering concept. The specific ordering may also change, and is therefore only documented in the <a href="../../devdocs/#Developer-documentation">Developer documentation</a>.</p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../fe_intro/">« Introduction to FEM</a><a class="docs-footer-nextpage" href="../FEValues/">FEValues »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Reference shapes · Ferrite.jl</title><meta name="title" content="Reference shapes · Ferrite.jl"/><meta property="og:title" content="Reference shapes · Ferrite.jl"/><meta property="twitter:title" content="Reference shapes · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/reference_shapes/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/reference_shapes/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/topics/reference_shapes/"/><script data-outdated-warner src="../../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="../.."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../../assets/documenter.js"></script><script src="../../search_index.js"></script><script src="../../siteinfo.js"></script><script src="../../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../../assets/themeswap.js"></script><link href="../../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox"/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../tutorials/">Tutorials overview</a></li><li><a class="tocitem" href="../../tutorials/heat_equation/">Heat equation</a></li><li><a class="tocitem" href="../../tutorials/linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="../../tutorials/incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="../../tutorials/hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="../../tutorials/plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="../../tutorials/transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="../../tutorials/computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="../../tutorials/stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="../../tutorials/porous_media/">Porous media</a></li><li><a class="tocitem" href="../../tutorials/ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="../../tutorials/reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="../../tutorials/linear_shell/">Linear shell</a></li><li><a class="tocitem" href="../../tutorials/dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox" checked/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../">Topic guide overview</a></li><li><a class="tocitem" href="../fe_intro/">Introduction to FEM</a></li><li class="is-active"><a class="tocitem" href>Reference shapes</a><ul class="internal"><li><a class="tocitem" href="#Entity-naming"><span>Entity naming</span></a></li><li><a class="tocitem" href="#Entity-numbering"><span>Entity numbering</span></a></li></ul></li><li><a class="tocitem" href="../FEValues/">FEValues</a></li><li><a class="tocitem" href="../degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../assembly/">Assembly</a></li><li><a class="tocitem" href="../boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../constraints/">Constraints</a></li><li><a class="tocitem" href="../grid/">Grid</a></li><li><a class="tocitem" href="../export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../reference/">Reference overview</a></li><li><a class="tocitem" href="../../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../../gallery/">Code gallery</a></li><li><a class="tocitem" href="../../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Topic guides</a></li><li class="is-active"><a href>Reference shapes</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Reference shapes</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/topics/reference_shapes.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Reference-shapes"><a class="docs-heading-anchor" href="#Reference-shapes">Reference shapes</a><a id="Reference-shapes-1"></a><a class="docs-heading-anchor-permalink" href="#Reference-shapes" title="Permalink"></a></h1><p>The reference shapes in Ferrite are used to define grid cells, function interpolations (i.e. shape functions), and quadrature rules. Currently, the following reference shapes are defined</p><ul><li><code>RefLine</code></li><li><code>RefTriangle</code></li><li><code>RefQuadrilateral</code></li><li><code>RefTetrahedron</code></li><li><code>RefHexahedron</code></li><li><code>RefPrism</code></li><li><code>RefPyramid</code></li></ul><h2 id="Entity-naming"><a class="docs-heading-anchor" href="#Entity-naming">Entity naming</a><a id="Entity-naming-1"></a><a class="docs-heading-anchor-permalink" href="#Entity-naming" title="Permalink"></a></h2><p>Ferrite denotes the entities of a reference shape as follows</p><table><tr><th style="text-align: left">Entity</th><th style="text-align: left">Description</th></tr><tr><td style="text-align: left">Vertex</td><td style="text-align: left">0-dimensional entity in the reference shape.</td></tr><tr><td style="text-align: left">Edge</td><td style="text-align: left">1-dimensional entity connecting two vertices.</td></tr><tr><td style="text-align: left">Face</td><td style="text-align: left">2-dimensional entity enclosed by edges.</td></tr><tr><td style="text-align: left">Volume</td><td style="text-align: left">3-dimensional entity enclosed by faces.</td></tr></table><p>Note that a node in Ferrite is not the same as a vertex. Vertices denote endpoints of edges, while nodes may also be located in the middle of edges (e.g. for a <code>QuadraticLine</code> cell).</p><p>To write dimensionally independent code, Ferrite also denotes entities by their <a href="https://en.wikipedia.org/wiki/Codimension"><em>codimension</em></a>, defined relative the reference shape dimension. Specifically, Ferrite has the entities</p><table><tr><th style="text-align: left">Entity</th><th style="text-align: left">Description</th></tr><tr><td style="text-align: left"><code>Cell</code></td><td style="text-align: left"><em>0-codimensional</em> entity, i.e. the same as the reference shape.</td></tr><tr><td style="text-align: left"><code>Facet</code></td><td style="text-align: left"><em>1-codimensional</em> entity defining the boundary of cells.</td></tr></table><p>Standard use cases mostly deal with these codimensional entities, such as <a href="../../reference/fevalues/#Ferrite.CellValues"><code>CellValues</code></a> and <a href="../../reference/fevalues/#Ferrite.FacetValues"><code>FacetValues</code></a>.</p><div class="admonition is-info"><header class="admonition-header">Definition of codimension</header><div class="admonition-body"><p>In Ferrite, <em>codimension</em> is defined relative to the reference dimension of the specific entity. Note that other finite element codes may define it differently (e.g. relative the highest reference dimension in the grid).</p></div></div><h2 id="Entity-numbering"><a class="docs-heading-anchor" href="#Entity-numbering">Entity numbering</a><a id="Entity-numbering-1"></a><a class="docs-heading-anchor-permalink" href="#Entity-numbering" title="Permalink"></a></h2><p>Each reference shape defines the numbering of its vertices, edges, and faces entities, where the edge and face entities are defined from their vertex numbers.</p><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>The numbering and identification of entities is (mostly) for internal use and typically not something users of Ferrite need to interact with.</p></div></div><h3 id="Example"><a class="docs-heading-anchor" href="#Example">Example</a><a id="Example-1"></a><a class="docs-heading-anchor-permalink" href="#Example" title="Permalink"></a></h3><p>The <code>RefQuadrilateral</code> is defined on the domain <span>$[-1, 1] \times [-1, 1]$</span> in the local <span>$\xi_1-\xi_2$</span> coordinate system.</p><p><img src="../assets/local_element.svg" alt="local element"/></p><p>The vertices of a <code>RefQuadrilateral</code> are then</p><pre><code class="language-julia hljs">Ferrite.reference_vertices(RefQuadrilateral)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">(1, 2, 3, 4)</code></pre><p>and its edges are then defined as</p><pre><code class="language-julia hljs">Ferrite.reference_edges(RefQuadrilateral)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">((1, 2), (2, 3), (3, 4), (4, 1))</code></pre><p>where the numbers refer to the vertex number. Finally, this reference shape is 2-dimensional, so it only has a single face, corresponding to the cell itself,</p><pre><code class="language-julia hljs">Ferrite.reference_faces(RefQuadrilateral)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">((1, 2, 3, 4),)</code></pre><p>also defined in terms of its vertices.</p><p>As this is a 2-dimensional reference shape, the facets are the edges, i.e.</p><pre><code class="language-julia hljs">Ferrite.reference_facets(RefQuadrilateral)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">((1, 2), (2, 3), (3, 4), (4, 1))</code></pre><div class="admonition is-info"><header class="admonition-header">Not public API</header><div class="admonition-body"><p>The functions <code>reference_vertices</code>, <code>reference_edges</code>, <code>reference_faces</code>, and <code>reference_facets</code> are not public and only shown here to explain the numbering concept. The specific ordering may also change, and is therefore only documented in the <a href="../../devdocs/#Developer-documentation">Developer documentation</a>.</p></div></div></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../fe_intro/">« Introduction to FEM</a><a class="docs-footer-nextpage" href="../FEValues/">FEValues »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/topics/sparse_matrix/index.html b/dev/topics/sparse_matrix/index.html index b5c3c9c573..673097e5ee 100644 --- a/dev/topics/sparse_matrix/index.html +++ b/dev/topics/sparse_matrix/index.html @@ -3,4 +3,4 @@ 0.0 0.0 ⋅ ⋅ 0.0 0.0 0.0 ⋅ ⋅ 0.0 0.0 0.0 - ⋅ ⋅ 0.0 0.0</code></pre><p>Moreover, if the problem is solved with periodic boundary conditions, for example by constraining the value on the right side to the value on the left side, there will be additional couplings. In the example above, this means that DoF 4 should be equal to DoF</p><ol><li>Since DoF 4 is constrained it has to be eliminated from the system. Existing entries</li></ol><p>that include DoF 4 are <code>(3, 4)</code>, <code>(4, 3)</code>, and <code>(4, 4)</code>. Given the simple constraint in this case we can simply replace DoF 4 with DoF 1 in these entries and we end up with entries <code>(3, 1)</code>, <code>(1, 3)</code>, and <code>(1, 1)</code>. This results in two new entries: <code>(3, 1)</code> and <code>(1, 3)</code> (entry <code>(1, 1)</code> is already included).</p></div></details><h2 id="Creating-sparsity-patterns"><a class="docs-heading-anchor" href="#Creating-sparsity-patterns">Creating sparsity patterns</a><a id="Creating-sparsity-patterns-1"></a><a class="docs-heading-anchor-permalink" href="#Creating-sparsity-patterns" title="Permalink"></a></h2><p>Creating a sparsity pattern can be quite expensive if not done properly and therefore Ferrite provides efficient methods and data structures for this. In general the sparsity pattern is not known in advance and has to be created incrementally. To make this incremental construction efficient it is necessary to use a dynamic data structure which allow for fast insertions.</p><p>The sparsity pattern also serves as a "matrix builder". When all entries are inserted into the sparsity pattern the dynamic data structure is typically converted, or "compressed", into a sparse matrix format such as e.g. the <a href="https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_row_(CSR,_CRS_or_Yale_format)"><em>compressed sparse row (CSR)</em></a> format or the <a href="https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_column_(CSC_or_CCS)"><em>compressed sparse column (CSC)</em></a> format, where the latter is the default sparse matrix type implemented in the <a href="https://github.com/JuliaSparse/SparseArrays.jl">SparseArrays standard library</a>. These matrix formats allow for fast linear algebra operations, such as factorizations and matrix-vector multiplications, that are needed when the linear system is solved. See <a href="#Instantiating-the-sparse-matrix">Instantiating the sparse matrix</a> for more details.</p><p>In summary, a dynamic structure is more efficient when incrementally building the pattern by inserting new entries, and a static or compressed structure is more efficient for linear algebra operations.</p><h3 id="Basic-sparsity-patterns-construction"><a class="docs-heading-anchor" href="#Basic-sparsity-patterns-construction">Basic sparsity patterns construction</a><a id="Basic-sparsity-patterns-construction-1"></a><a class="docs-heading-anchor-permalink" href="#Basic-sparsity-patterns-construction" title="Permalink"></a></h3><p>Working with the sparsity pattern explicitly is in many cases not necessary. For basic usage (e.g. when only one matrix needed, when no customization of the pattern is required, etc) there exist convenience methods of <a href="../../reference/sparsity_pattern/#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a> that return the matrix directly. Most examples in this documentation don't deal with the sparsity pattern explicitly because the basic method suffice. See also <a href="#Instantiating-the-sparse-matrix">Instantiating the sparse matrix</a> for more details.</p><h3 id="Custom-sparsity-pattern-construction"><a class="docs-heading-anchor" href="#Custom-sparsity-pattern-construction">Custom sparsity pattern construction</a><a id="Custom-sparsity-pattern-construction-1"></a><a class="docs-heading-anchor-permalink" href="#Custom-sparsity-pattern-construction" title="Permalink"></a></h3><p>In more advanced cases there might be a need for more fine grained control of the sparsity pattern. The following steps are typically taken when constructing a sparsity pattern in Ferrite:</p><ol><li><p><strong>Initialize an empty pattern:</strong> This can be done by either using the <a href="../../reference/sparsity_pattern/#Ferrite.init_sparsity_pattern"><code>init_sparsity_pattern(dh)</code></a> function or by using a constructor directly. <code>init_sparsity_pattern</code> will return a default pattern type that is compatible with the DofHandler. In some cases you might require another type of pattern (for example a blocked pattern, see <a href="#Blocked-sparsity-pattern">Blocked sparsity pattern</a>) and in that case you can use the constructor directly.</p></li><li><p><strong>Add entries to the pattern:</strong> There are a number of functions that add entries to the pattern:</p><ul><li><a href="../../reference/sparsity_pattern/#Ferrite.add_sparsity_entries!"><code>add_sparsity_entries!</code></a> is a convenience method for performing the common task of calling <code>add_cell_entries!</code>, <code>add_interface_entries!</code>, and <code>add_constraint_entries!</code> after each other (see below).</li><li><a href="../../reference/sparsity_pattern/#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a> adds entries for all couplings between the DoFs within each element. These entries correspond to assembling the standard element matrix and is thus almost always required.</li><li><a href="../../reference/sparsity_pattern/#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a> adds entries for couplings between the DoFs in neighboring elements. These entries are required when integrating along internal interfaces between elements (e.g. for discontinuous Galerkin methods).</li><li><a href="../../reference/sparsity_pattern/#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a> adds entries required from constraints and boundary conditions in the ConstraintHandler. Note that this operation depends on existing entries in the pattern and <em>must</em> be called as the last operation on the pattern.</li><li><a href="../../reference/sparsity_pattern/#Ferrite.add_entry!"><code>Ferrite.add_entry!</code></a> adds a single entry to the pattern. This can be used if you need to add custom entries that are not covered by the other functions.</li></ul></li><li><p><strong>Instantiate the matrix:</strong> A sparse matrix can be created from the sparsity pattern using <a href="../../reference/sparsity_pattern/#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a>, see <a href="#Instantiating-the-sparse-matrix">Instantiating the sparse matrix</a> below for more details.</p></li></ol><h3 id="Increasing-the-sparsity"><a class="docs-heading-anchor" href="#Increasing-the-sparsity">Increasing the sparsity</a><a id="Increasing-the-sparsity-1"></a><a class="docs-heading-anchor-permalink" href="#Increasing-the-sparsity" title="Permalink"></a></h3><p>By default, when creating a sparsity pattern, it is assumed that each DoF within an element couple with with <em>all</em> other DoFs in the element.</p><div class="admonition is-todo"><header class="admonition-header">Todo</header><div class="admonition-body"><ul><li>Discuss the <code>coupling</code> keyword argument.</li><li>Discuss the <code>keep_constrained</code> keyword argument.</li></ul></div></div><h3 id="Blocked-sparsity-pattern"><a class="docs-heading-anchor" href="#Blocked-sparsity-pattern">Blocked sparsity pattern</a><a id="Blocked-sparsity-pattern-1"></a><a class="docs-heading-anchor-permalink" href="#Blocked-sparsity-pattern" title="Permalink"></a></h3><div class="admonition is-todo"><header class="admonition-header">Todo</header><div class="admonition-body"><p>Discuss <code>BlockSparsityPattern</code> and <code>BlockArrays</code> extension.</p></div></div><h2 id="Instantiating-the-sparse-matrix"><a class="docs-heading-anchor" href="#Instantiating-the-sparse-matrix">Instantiating the sparse matrix</a><a id="Instantiating-the-sparse-matrix-1"></a><a class="docs-heading-anchor-permalink" href="#Instantiating-the-sparse-matrix" title="Permalink"></a></h2><p>As mentioned above, for many simple cases there is no need to work with the sparsity pattern directly and using methods of <a href="../../reference/sparsity_pattern/#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a> that take the DofHandler as input is enough, for example:</p><pre><code class="language-julia hljs">K = allocate_matrix(dh, ch)</code></pre><p><code>allocate_matrix</code> is also used to instantiate a matrix from a sparsity pattern, for example:</p><pre><code class="language-julia hljs">K = allocate_matrix(sp)</code></pre><div class="admonition is-info"><header class="admonition-header">Multiple matrices with the same pattern</header><div class="admonition-body"><p>For some problems there is a need for multiple matrices with the same sparsity pattern, for example a mass matrix and a stiffness matrix. In this case it is more efficient to create the sparsity pattern once and then instantiate both matrices from it.</p></div></div><section class="footnotes is-size-7"><ul><li class="footnote" id="footnote-1"><a class="tag is-link" href="#citeref-1">1</a>Structurally nonzero means that there is a possibility of a nonzero value even though the computed value might become zero in the end for various reasons.</li><li class="footnote" id="footnote-2"><a class="tag is-link" href="#citeref-2">2</a>At least for most practical problems using low order interpolations.</li></ul></section></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../degrees_of_freedom/">« Degrees of Freedom</a><a class="docs-footer-nextpage" href="../assembly/">Assembly »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + ⋅ ⋅ 0.0 0.0</code></pre><p>Moreover, if the problem is solved with periodic boundary conditions, for example by constraining the value on the right side to the value on the left side, there will be additional couplings. In the example above, this means that DoF 4 should be equal to DoF</p><ol><li>Since DoF 4 is constrained it has to be eliminated from the system. Existing entries</li></ol><p>that include DoF 4 are <code>(3, 4)</code>, <code>(4, 3)</code>, and <code>(4, 4)</code>. Given the simple constraint in this case we can simply replace DoF 4 with DoF 1 in these entries and we end up with entries <code>(3, 1)</code>, <code>(1, 3)</code>, and <code>(1, 1)</code>. This results in two new entries: <code>(3, 1)</code> and <code>(1, 3)</code> (entry <code>(1, 1)</code> is already included).</p></div></details><h2 id="Creating-sparsity-patterns"><a class="docs-heading-anchor" href="#Creating-sparsity-patterns">Creating sparsity patterns</a><a id="Creating-sparsity-patterns-1"></a><a class="docs-heading-anchor-permalink" href="#Creating-sparsity-patterns" title="Permalink"></a></h2><p>Creating a sparsity pattern can be quite expensive if not done properly and therefore Ferrite provides efficient methods and data structures for this. In general the sparsity pattern is not known in advance and has to be created incrementally. To make this incremental construction efficient it is necessary to use a dynamic data structure which allow for fast insertions.</p><p>The sparsity pattern also serves as a "matrix builder". When all entries are inserted into the sparsity pattern the dynamic data structure is typically converted, or "compressed", into a sparse matrix format such as e.g. the <a href="https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_row_(CSR,_CRS_or_Yale_format)"><em>compressed sparse row (CSR)</em></a> format or the <a href="https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_column_(CSC_or_CCS)"><em>compressed sparse column (CSC)</em></a> format, where the latter is the default sparse matrix type implemented in the <a href="https://github.com/JuliaSparse/SparseArrays.jl">SparseArrays standard library</a>. These matrix formats allow for fast linear algebra operations, such as factorizations and matrix-vector multiplications, that are needed when the linear system is solved. See <a href="#Instantiating-the-sparse-matrix">Instantiating the sparse matrix</a> for more details.</p><p>In summary, a dynamic structure is more efficient when incrementally building the pattern by inserting new entries, and a static or compressed structure is more efficient for linear algebra operations.</p><h3 id="Basic-sparsity-patterns-construction"><a class="docs-heading-anchor" href="#Basic-sparsity-patterns-construction">Basic sparsity patterns construction</a><a id="Basic-sparsity-patterns-construction-1"></a><a class="docs-heading-anchor-permalink" href="#Basic-sparsity-patterns-construction" title="Permalink"></a></h3><p>Working with the sparsity pattern explicitly is in many cases not necessary. For basic usage (e.g. when only one matrix needed, when no customization of the pattern is required, etc) there exist convenience methods of <a href="../../reference/sparsity_pattern/#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a> that return the matrix directly. Most examples in this documentation don't deal with the sparsity pattern explicitly because the basic method suffice. See also <a href="#Instantiating-the-sparse-matrix">Instantiating the sparse matrix</a> for more details.</p><h3 id="Custom-sparsity-pattern-construction"><a class="docs-heading-anchor" href="#Custom-sparsity-pattern-construction">Custom sparsity pattern construction</a><a id="Custom-sparsity-pattern-construction-1"></a><a class="docs-heading-anchor-permalink" href="#Custom-sparsity-pattern-construction" title="Permalink"></a></h3><p>In more advanced cases there might be a need for more fine grained control of the sparsity pattern. The following steps are typically taken when constructing a sparsity pattern in Ferrite:</p><ol><li><p><strong>Initialize an empty pattern:</strong> This can be done by either using the <a href="../../reference/sparsity_pattern/#Ferrite.init_sparsity_pattern"><code>init_sparsity_pattern(dh)</code></a> function or by using a constructor directly. <code>init_sparsity_pattern</code> will return a default pattern type that is compatible with the DofHandler. In some cases you might require another type of pattern (for example a blocked pattern, see <a href="#Blocked-sparsity-pattern">Blocked sparsity pattern</a>) and in that case you can use the constructor directly.</p></li><li><p><strong>Add entries to the pattern:</strong> There are a number of functions that add entries to the pattern:</p><ul><li><a href="../../reference/sparsity_pattern/#Ferrite.add_sparsity_entries!"><code>add_sparsity_entries!</code></a> is a convenience method for performing the common task of calling <code>add_cell_entries!</code>, <code>add_interface_entries!</code>, and <code>add_constraint_entries!</code> after each other (see below).</li><li><a href="../../reference/sparsity_pattern/#Ferrite.add_cell_entries!"><code>add_cell_entries!</code></a> adds entries for all couplings between the DoFs within each element. These entries correspond to assembling the standard element matrix and is thus almost always required.</li><li><a href="../../reference/sparsity_pattern/#Ferrite.add_interface_entries!"><code>add_interface_entries!</code></a> adds entries for couplings between the DoFs in neighboring elements. These entries are required when integrating along internal interfaces between elements (e.g. for discontinuous Galerkin methods).</li><li><a href="../../reference/sparsity_pattern/#Ferrite.add_constraint_entries!"><code>add_constraint_entries!</code></a> adds entries required from constraints and boundary conditions in the ConstraintHandler. Note that this operation depends on existing entries in the pattern and <em>must</em> be called as the last operation on the pattern.</li><li><a href="../../reference/sparsity_pattern/#Ferrite.add_entry!"><code>Ferrite.add_entry!</code></a> adds a single entry to the pattern. This can be used if you need to add custom entries that are not covered by the other functions.</li></ul></li><li><p><strong>Instantiate the matrix:</strong> A sparse matrix can be created from the sparsity pattern using <a href="../../reference/sparsity_pattern/#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a>, see <a href="#Instantiating-the-sparse-matrix">Instantiating the sparse matrix</a> below for more details.</p></li></ol><h3 id="Increasing-the-sparsity"><a class="docs-heading-anchor" href="#Increasing-the-sparsity">Increasing the sparsity</a><a id="Increasing-the-sparsity-1"></a><a class="docs-heading-anchor-permalink" href="#Increasing-the-sparsity" title="Permalink"></a></h3><p>By default, when creating a sparsity pattern, it is assumed that each DoF within an element couple with with <em>all</em> other DoFs in the element.</p><div class="admonition is-todo"><header class="admonition-header">Todo</header><div class="admonition-body"><ul><li>Discuss the <code>coupling</code> keyword argument.</li><li>Discuss the <code>keep_constrained</code> keyword argument.</li></ul></div></div><h3 id="Blocked-sparsity-pattern"><a class="docs-heading-anchor" href="#Blocked-sparsity-pattern">Blocked sparsity pattern</a><a id="Blocked-sparsity-pattern-1"></a><a class="docs-heading-anchor-permalink" href="#Blocked-sparsity-pattern" title="Permalink"></a></h3><div class="admonition is-todo"><header class="admonition-header">Todo</header><div class="admonition-body"><p>Discuss <code>BlockSparsityPattern</code> and <code>BlockArrays</code> extension.</p></div></div><h2 id="Instantiating-the-sparse-matrix"><a class="docs-heading-anchor" href="#Instantiating-the-sparse-matrix">Instantiating the sparse matrix</a><a id="Instantiating-the-sparse-matrix-1"></a><a class="docs-heading-anchor-permalink" href="#Instantiating-the-sparse-matrix" title="Permalink"></a></h2><p>As mentioned above, for many simple cases there is no need to work with the sparsity pattern directly and using methods of <a href="../../reference/sparsity_pattern/#Ferrite.allocate_matrix-Tuple{SparsityPattern}"><code>allocate_matrix</code></a> that take the DofHandler as input is enough, for example:</p><pre><code class="language-julia hljs">K = allocate_matrix(dh, ch)</code></pre><p><code>allocate_matrix</code> is also used to instantiate a matrix from a sparsity pattern, for example:</p><pre><code class="language-julia hljs">K = allocate_matrix(sp)</code></pre><div class="admonition is-info"><header class="admonition-header">Multiple matrices with the same pattern</header><div class="admonition-body"><p>For some problems there is a need for multiple matrices with the same sparsity pattern, for example a mass matrix and a stiffness matrix. In this case it is more efficient to create the sparsity pattern once and then instantiate both matrices from it.</p></div></div><section class="footnotes is-size-7"><ul><li class="footnote" id="footnote-1"><a class="tag is-link" href="#citeref-1">1</a>Structurally nonzero means that there is a possibility of a nonzero value even though the computed value might become zero in the end for various reasons.</li><li class="footnote" id="footnote-2"><a class="tag is-link" href="#citeref-2">2</a>At least for most practical problems using low order interpolations.</li></ul></section></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../degrees_of_freedom/">« Degrees of Freedom</a><a class="docs-footer-nextpage" href="../assembly/">Assembly »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/computational_homogenization/index.html b/dev/tutorials/computational_homogenization/index.html index 186e65053a..918e5ddabd 100644 --- a/dev/tutorials/computational_homogenization/index.html +++ b/dev/tutorials/computational_homogenization/index.html @@ -471,4 +471,4 @@ write_solution(vtk, dh, uM + u.periodic[i], "_periodic_$i") write_projection(vtk, projector, σ.periodic[i], "σvM_periodic_$i") end -end;</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../transient_heat_equation/">« Transient heat equation</a><a class="docs-footer-nextpage" href="../stokes-flow/">Stokes flow »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end;</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../transient_heat_equation/">« Transient heat equation</a><a class="docs-footer-nextpage" href="../stokes-flow/">Stokes flow »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/dg_heat_equation/index.html b/dev/tutorials/dg_heat_equation/index.html index 0e772b01a2..6b993c6fea 100644 --- a/dev/tutorials/dg_heat_equation/index.html +++ b/dev/tutorials/dg_heat_equation/index.html @@ -297,4 +297,4 @@ u = K \ f; VTKGridFile("dg_heat_equation", dh) do vtk write_solution(vtk, dh, u) -end;</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../linear_shell/">« Linear shell</a><a class="docs-footer-nextpage" href="../../topics/">Topic guide overview »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end;</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../linear_shell/">« Linear shell</a><a class="docs-footer-nextpage" href="../../topics/">Topic guide overview »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/heat_equation/index.html b/dev/tutorials/heat_equation/index.html index b648f764b5..513b911a36 100644 --- a/dev/tutorials/heat_equation/index.html +++ b/dev/tutorials/heat_equation/index.html @@ -159,4 +159,4 @@ VTKGridFile("heat_equation", dh) do vtk write_solution(vtk, dh, u) -end</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Tutorials overview</a><a class="docs-footer-nextpage" href="../linear_elasticity/">Linear elasticity »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Tutorials overview</a><a class="docs-footer-nextpage" href="../linear_elasticity/">Linear elasticity »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/hyperelasticity.ipynb b/dev/tutorials/hyperelasticity.ipynb index 1280974cee..c2e3923193 100644 --- a/dev/tutorials/hyperelasticity.ipynb +++ b/dev/tutorials/hyperelasticity.ipynb @@ -529,14 +529,14 @@ "-------------------------------------------------------------------------------\n", " Analysis with 6000 elements Time Allocations \n", " ----------------------- ------------------------\n", - " Tot / % measured: 1.99s / 49.6% 145MiB / 44.0% \n", + " Tot / % measured: 1.95s / 49.8% 145MiB / 44.0% \n", "\n", "Section ncalls time %tot avg alloc %tot avg\n", "-------------------------------------------------------------------------------\n", - "export 1 806ms 81.7% 806ms 58.0MiB 90.7% 58.0MiB\n", - "assemble 6 107ms 10.8% 17.8ms 5.50MiB 8.6% 938KiB\n", - " element assemble 36.0k 62.5ms 6.3% 1.74μs 0.00B 0.0% 0.00B\n", - "linear solve 5 74.4ms 7.5% 14.9ms 473KiB 0.7% 94.6KiB\n", + "export 1 791ms 81.4% 791ms 58.0MiB 90.7% 58.0MiB\n", + "assemble 6 106ms 10.9% 17.6ms 5.50MiB 8.6% 938KiB\n", + " element assemble 36.0k 62.1ms 6.4% 1.73μs 0.00B 0.0% 0.00B\n", + "linear solve 5 74.5ms 7.7% 14.9ms 473KiB 0.7% 94.6KiB\n", "-------------------------------------------------------------------------------\n" ] } diff --git a/dev/tutorials/hyperelasticity/index.html b/dev/tutorials/hyperelasticity/index.html index 97f38258df..0d3a0ed0f3 100644 --- a/dev/tutorials/hyperelasticity/index.html +++ b/dev/tutorials/hyperelasticity/index.html @@ -246,14 +246,14 @@ <span class="sgr1">-------------------------------------------------------------------------------</span> <span class="sgr1"> Analysis with 6000 elements </span> Time Allocations ----------------------- ------------------------ - Tot / % measured: 293ms / 66.8% 29.6MiB / 33.4% + Tot / % measured: 323ms / 61.2% 29.7MiB / 33.4% Section ncalls time %tot avg alloc %tot avg ------------------------------------------------------------------------------- -assemble 6 107ms 54.4% 17.8ms 5.50MiB 55.5% 938KiB - element assemble 36.0k 62.0ms 31.6% 1.72μs 0.00B 0.0% 0.00B -linear solve 5 74.9ms 38.2% 15.0ms 473KiB 4.7% 94.6KiB -export 1 14.4ms 7.4% 14.4ms 3.94MiB 39.8% 3.94MiB +assemble 6 109ms 55.1% 18.2ms 5.50MiB 55.5% 938KiB + element assemble 36.0k 64.7ms 32.7% 1.80μs 0.00B 0.0% 0.00B +linear solve 5 74.8ms 37.8% 15.0ms 473KiB 4.7% 94.6KiB +export 1 14.0ms 7.1% 14.0ms 3.94MiB 39.8% 3.94MiB <span class="sgr1">-------------------------------------------------------------------------------</span></code></pre><h2 id="Plain-program"><a class="docs-heading-anchor" href="#Plain-program">Plain program</a><a id="Plain-program-1"></a><a class="docs-heading-anchor-permalink" href="#Plain-program" title="Permalink"></a></h2><p>Here follows a version of the program without any comments. The file is also available here: <a href="../hyperelasticity.jl"><code>hyperelasticity.jl</code></a>.</p><pre><code class="language-julia hljs">using Ferrite, Tensors, TimerOutputs, ProgressMeter, IterativeSolvers struct NeoHooke @@ -463,4 +463,4 @@ return u end -u = solve();</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../incompressible_elasticity/">« Incompressible elasticity</a><a class="docs-footer-nextpage" href="../plasticity/">Von Mises plasticity »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +u = solve();</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../incompressible_elasticity/">« Incompressible elasticity</a><a class="docs-footer-nextpage" href="../plasticity/">Von Mises plasticity »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/incompressible_elasticity/index.html b/dev/tutorials/incompressible_elasticity/index.html index e785b4c3af..33feada659 100644 --- a/dev/tutorials/incompressible_elasticity/index.html +++ b/dev/tutorials/incompressible_elasticity/index.html @@ -443,4 +443,4 @@ quadratic_u = Lagrange{RefTriangle, 2}()^2 u1 = solve(0.5, linear_u, linear_p); -u2 = solve(0.5, quadratic_u, linear_p);</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../linear_elasticity/">« Linear elasticity</a><a class="docs-footer-nextpage" href="../hyperelasticity/">Hyperelasticity »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +u2 = solve(0.5, quadratic_u, linear_p);</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../linear_elasticity/">« Linear elasticity</a><a class="docs-footer-nextpage" href="../hyperelasticity/">Hyperelasticity »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/index.html b/dev/tutorials/index.html index 3d81ed7661..d0cf668f3a 100644 --- a/dev/tutorials/index.html +++ b/dev/tutorials/index.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Tutorials overview · Ferrite.jl</title><meta name="title" content="Tutorials overview · Ferrite.jl"/><meta property="og:title" content="Tutorials overview · Ferrite.jl"/><meta property="twitter:title" content="Tutorials overview · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/tutorials/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/tutorials/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/tutorials/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox" checked/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li class="is-active"><a class="tocitem" href>Tutorials overview</a></li><li><a class="tocitem" href="heat_equation/">Heat equation</a></li><li><a class="tocitem" href="linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="porous_media/">Porous media</a></li><li><a class="tocitem" href="ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="linear_shell/">Linear shell</a></li><li><a class="tocitem" href="dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Tutorials</a></li><li class="is-active"><a href>Tutorials overview</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Tutorials overview</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/tutorials/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Tutorials"><a class="docs-heading-anchor" href="#Tutorials">Tutorials</a><a id="Tutorials-1"></a><a class="docs-heading-anchor-permalink" href="#Tutorials" title="Permalink"></a></h1><p>On this page you find an overview of Ferrite tutorials. The tutorials explain and show how Ferrite can be used to solve a wide range of problems. See also the <a href="../gallery/">Code gallery</a> for more examples.</p><p>The tutorials all follow roughly the same structure:</p><ul><li><strong>Introduction</strong> introduces the problem to be solved and discusses the learning outcomes of the tutorial.</li><li><strong>Commented program</strong> is the code for solving the problem with explanations and comments.</li><li><strong>Plain program</strong> is the raw source code of the program.</li></ul><p>When studying the tutorials it is a good idea to obtain a local copy of the code and run it on your own machine as you read along. Some of the tutorials also include suggestions for tweaks to the program that you can try out on your own.</p><h3 id="Tutorial-index"><a class="docs-heading-anchor" href="#Tutorial-index">Tutorial index</a><a id="Tutorial-index-1"></a><a class="docs-heading-anchor-permalink" href="#Tutorial-index" title="Permalink"></a></h3><p>The tutorials are listed in roughly increasing order of complexity. However, since they focus on different aspects, and solve different problems, it is suggested to have a look at the brief descriptions below to get an idea about what you will learn from each tutorial.</p><p>If you are new to Ferrite then Tutorial 1 - Tutorial 6 is the best place to start. These tutorials introduces and teaches most of the basic finite element techniques (e.g. linear and non-linear problems, scalar- and vector-valued problems, Dirichlet and Neumann boundary conditions, mixed finite elements, time integration, direct and iterative linear solvers, etc). In particular the very first tutorial is essential in order to be able to follow any of the other tutorials. The remaining tutorials discuss more advanced topics.</p><hr/><h5 id="[Tutorial-1:-Heat-equation](heat_equation.md)"><a class="docs-heading-anchor" href="#[Tutorial-1:-Heat-equation](heat_equation.md)"><a href="heat_equation/">Tutorial 1: Heat equation</a></a><a id="[Tutorial-1:-Heat-equation](heat_equation.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-1:-Heat-equation](heat_equation.md)" title="Permalink"></a></h5><p>This tutorial guides you through the process of solving the linear stationary heat equation (i.e. Poisson's equation) on a unit square with homogeneous Dirichlet boundary conditions. This tutorial introduces and teaches many important parts of Ferrite: problem setup, degree of freedom management, assembly procedure, boundary conditions, solving the linear system, visualization of the result). <em>Understanding this tutorial is essential to follow more complex tutorials.</em></p><p><strong>Keywords</strong>: scalar-valued solution, Dirichlet boundary conditions.</p><hr/><h5 id="[Tutorial-2:-Linear-elasticity](linear_elasticity.md)"><a class="docs-heading-anchor" href="#[Tutorial-2:-Linear-elasticity](linear_elasticity.md)"><a href="linear_elasticity/">Tutorial 2: Linear elasticity</a></a><a id="[Tutorial-2:-Linear-elasticity](linear_elasticity.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-2:-Linear-elasticity](linear_elasticity.md)" title="Permalink"></a></h5><p>TBW.</p><p><strong>Keywords</strong>: vector-valued solution, Dirichlet and Neumann boundary conditions.</p><hr/><h5 id="[Tutorial-3:-Incompressible-elasticity](incompressible_elasticity.md)"><a class="docs-heading-anchor" href="#[Tutorial-3:-Incompressible-elasticity](incompressible_elasticity.md)"><a href="incompressible_elasticity/">Tutorial 3: Incompressible elasticity</a></a><a id="[Tutorial-3:-Incompressible-elasticity](incompressible_elasticity.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-3:-Incompressible-elasticity](incompressible_elasticity.md)" title="Permalink"></a></h5><p>This tutorial focuses on a mixed formulation of linear elasticity, with (vector) displacement and (scalar) pressure as the two unknowns, suitable for incompressibility. Thus, this tutorial guides you through the process of solving a problem with two unknowns from two coupled weak forms. The problem that is studied is Cook's membrane in the incompressible limit.</p><p><strong>Keywords</strong>: mixed finite elements, Dirichlet and Neumann boundary conditions.</p><hr/><h4 id="[Tutorial-4:-Hyperelasticity](hyperelasticity.md)"><a class="docs-heading-anchor" href="#[Tutorial-4:-Hyperelasticity](hyperelasticity.md)"><a href="hyperelasticity/">Tutorial 4: Hyperelasticity</a></a><a id="[Tutorial-4:-Hyperelasticity](hyperelasticity.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-4:-Hyperelasticity](hyperelasticity.md)" title="Permalink"></a></h4><p>In this tutorial you will learn how to solve a non-linear finite element problem. In particular, a hyperelastic material model, in a finite strain setting, is used to solve the rotation of a cube. Automatic differentiatio (AD) is used for the consitutive relations. Newton's method is used for the non-linear iteration, and a conjugate gradient (CG) solver is used for the linear solution of the increment.</p><p><strong>Keywords</strong>: non-linear finite element, finite strain, automatic differentiation (AD), Newton's method, conjugate gradient (CG).</p><hr/><h4 id="[Tutorial-5:-von-Mises-Plasticity](plasticity.md)"><a class="docs-heading-anchor" href="#[Tutorial-5:-von-Mises-Plasticity](plasticity.md)"><a href="plasticity/">Tutorial 5: von Mises Plasticity</a></a><a id="[Tutorial-5:-von-Mises-Plasticity](plasticity.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-5:-von-Mises-Plasticity](plasticity.md)" title="Permalink"></a></h4><p>This tutorial revisits the cantilever beam problem from <a href="linear_elasticity/">Tutorial 2: Linear elasticity</a>, but instead of linear elasticity a plasticity model is used for the constitutive relation. You will learn how to solve a problem which require the solution of a local material problem, and the storage of material state, in each quadrature point. Newton's method is used both locally in the material routine, and globally on the finite element level.</p><p><strong>Keywords</strong>: non-linear finite element, plasticity, material modeling, state variables, Newton’s method.</p><hr/><h4 id="[Tutorial-6:-Transient-heat-equation](@ref-tutorial-transient-heat-equation)"><a class="docs-heading-anchor" href="#[Tutorial-6:-Transient-heat-equation](@ref-tutorial-transient-heat-equation)"><a href="transient_heat_equation/#tutorial-transient-heat-equation">Tutorial 6: Transient heat equation</a></a><a id="[Tutorial-6:-Transient-heat-equation](@ref-tutorial-transient-heat-equation)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-6:-Transient-heat-equation](@ref-tutorial-transient-heat-equation)" title="Permalink"></a></h4><p>In this tutorial the transient heat equation is solved on the unit square. The problem to be solved is thus similar to the one solved in the first tutorial, <a href="heat_equation/">Heat equation</a>, but with time-varying boundary conditions. In particular you will learn how to solve a time dependent problem with an implicit Euler scheme for the time integration.</p><p><strong>Keywords</strong>: time dependent finite elements, implicit Euler time integration.</p><hr/><h4 id="[Tutorial-7:-Computational-homogenization](computational_homogenization.md)"><a class="docs-heading-anchor" href="#[Tutorial-7:-Computational-homogenization](computational_homogenization.md)"><a href="computational_homogenization/">Tutorial 7: Computational homogenization</a></a><a id="[Tutorial-7:-Computational-homogenization](computational_homogenization.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-7:-Computational-homogenization](computational_homogenization.md)" title="Permalink"></a></h4><p>This tutorial guides you through computational homogenization of an representative volume element (RVE) consisting of a soft matrix material with stiff inclusions. The computational mesh is read from an external mesh file generated with Gmsh. Dirichlet and periodic boundary conditions are used.</p><p><strong>Keywords</strong>: Gmsh mesh reading, Dirichlet and periodic boundary conditions</p><hr/><h4 id="[Tutorial-8:-Stokes-flow](stokes-flow.md)"><a class="docs-heading-anchor" href="#[Tutorial-8:-Stokes-flow](stokes-flow.md)"><a href="stokes-flow/">Tutorial 8: Stokes flow</a></a><a id="[Tutorial-8:-Stokes-flow](stokes-flow.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-8:-Stokes-flow](stokes-flow.md)" title="Permalink"></a></h4><p>In this tutorial Stokes flow with (vector) velocity and (scalar) pressure is solved on on a quarter circle. Rotationally periodic boundary conditions is used for the inlet/outlet coupling. To obtain a unique solution, a mean value constraint is applied on the pressure using an affine constraint. The computational mesh is generated directly using the Gmsh API.</p><p><strong>Keywords</strong>: periodic boundary conditions, mean value constraint, mesh generation with Gmsh.</p><hr/><h4 id="[Tutorial-9:-Porous-media-(SubDofHandler)](porous_media.md)"><a class="docs-heading-anchor" href="#[Tutorial-9:-Porous-media-(SubDofHandler)](porous_media.md)"><a href="porous_media/">Tutorial 9: Porous media (SubDofHandler)</a></a><a id="[Tutorial-9:-Porous-media-(SubDofHandler)](porous_media.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-9:-Porous-media-(SubDofHandler)](porous_media.md)" title="Permalink"></a></h4><p>This tutorial introduces how to solve a complex linear problem, where there are different fields on different subdomains, and different cell types in the grid. This requires using the <code>SubDofHandler</code> interface.</p><p><strong>Keywords</strong>: Mixed grids, multiple fields, porous media, <code>SubDofHandler</code></p><hr/><h4 id="[Tutorial-10:-Incompressible-Navier-Stokes-equations](ns_vs_diffeq.md)"><a class="docs-heading-anchor" href="#[Tutorial-10:-Incompressible-Navier-Stokes-equations](ns_vs_diffeq.md)"><a href="ns_vs_diffeq/">Tutorial 10: Incompressible Navier-Stokes equations</a></a><a id="[Tutorial-10:-Incompressible-Navier-Stokes-equations](ns_vs_diffeq.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-10:-Incompressible-Navier-Stokes-equations](ns_vs_diffeq.md)" title="Permalink"></a></h4><p>In this tutorial the incompressible Navier-Stokes equations are solved. The domain is discretized in space with Ferrite as usual, and then forumalated in a way to be compatible with the <a href="https://docs.sciml.ai/OrdinaryDiffEq/">OrdinaryDiffEq.jl</a> package, which is used for the time-integration.</p><p><strong>Keywords</strong>: non-linear time dependent problem</p><hr/><h4 id="[Tutorial-10:-Reactive-surface](@ref-tutorial-reactive-surface)"><a class="docs-heading-anchor" href="#[Tutorial-10:-Reactive-surface](@ref-tutorial-reactive-surface)"><a href="reactive_surface/#tutorial-reactive-surface">Tutorial 10: Reactive surface</a></a><a id="[Tutorial-10:-Reactive-surface](@ref-tutorial-reactive-surface)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-10:-Reactive-surface](@ref-tutorial-reactive-surface)" title="Permalink"></a></h4><p>In this tutorial a reaction diffusion system on a sphere surface embedded in 3D is solved. Ferrite is used to assemble the diffusion operators and the mass matrices. The problem is solved by using the usual first order reaction diffusion operator splitting.</p><p><strong>Keywords</strong>: embedded elements, operator splitting, gmsh</p><hr/><h4 id="[Tutorial-11:-Linear-shell](@ref-tutorial-linear-shell)"><a class="docs-heading-anchor" href="#[Tutorial-11:-Linear-shell](@ref-tutorial-linear-shell)"><a href="linear_shell/#tutorial-linear-shell">Tutorial 11: Linear shell</a></a><a id="[Tutorial-11:-Linear-shell](@ref-tutorial-linear-shell)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-11:-Linear-shell](@ref-tutorial-linear-shell)" title="Permalink"></a></h4><p>In this tutorial a linear shell element formulation is set up as a two-dimensional domain embedded in three-dimensional space. This will teach, and perhaps inspire, you on how Ferrite can be used for non-standard things and how to add "hacks" that build on top of Ferrite.</p><p><strong>Keywords</strong>: shell elements, automatic differentiation</p><hr/><h4 id="[Tutorial-12:-Discontinuous-Galerkin-heat-equation](@ref-tutorial-dg-heat-equation)"><a class="docs-heading-anchor" href="#[Tutorial-12:-Discontinuous-Galerkin-heat-equation](@ref-tutorial-dg-heat-equation)"><a href="dg_heat_equation/#tutorial-dg-heat-equation">Tutorial 12: Discontinuous Galerkin heat equation</a></a><a id="[Tutorial-12:-Discontinuous-Galerkin-heat-equation](@ref-tutorial-dg-heat-equation)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-12:-Discontinuous-Galerkin-heat-equation](@ref-tutorial-dg-heat-equation)" title="Permalink"></a></h4><p>This tutorial guides you through the process of solving the linear stationary heat equation (i.e. Poisson's equation) on a unit square with inhomogeneous Dirichlet and Neumann boundary conditions using the interior penalty discontinuous Galerkin method. This tutorial follows the <a href="heat_equation/#tutorial-heat-equation">heat equation tutorial</a>, introducing face and interface iterators, jump and average operators, and cross-element coupling in sparsity patterns. This example was developed as part of the <em>Google Summer of Code</em> funded project <a href="https://summerofcode.withgoogle.com/programs/2023/projects/SLGbRNI5">"Discontinuous Galerkin Infrastructure For the finite element toolbox Ferrite.jl"</a>.</p><p><strong>Keywords</strong>: scalar-valued solution, Dirichlet boundary conditions, Discontinuous Galerkin, Interior penalty</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../changelog/">« Changelog</a><a class="docs-footer-nextpage" href="heat_equation/">Heat equation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Tutorials overview · Ferrite.jl</title><meta name="title" content="Tutorials overview · Ferrite.jl"/><meta property="og:title" content="Tutorials overview · Ferrite.jl"/><meta property="twitter:title" content="Tutorials overview · Ferrite.jl"/><meta name="description" content="Documentation for Ferrite.jl."/><meta property="og:description" content="Documentation for Ferrite.jl."/><meta property="twitter:description" content="Documentation for Ferrite.jl."/><meta property="og:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/tutorials/"/><meta property="twitter:url" content="https://ferrite-fem.github.io/Ferrite.jl/stable/tutorials/"/><link rel="canonical" href="https://ferrite-fem.github.io/Ferrite.jl/stable/tutorials/"/><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.050/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../search_index.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-mocha.css" data-theme-name="catppuccin-mocha"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-macchiato.css" data-theme-name="catppuccin-macchiato"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-frappe.css" data-theme-name="catppuccin-frappe"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/catppuccin-latte.css" data-theme-name="catppuccin-latte"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script><link href="../assets/custom.css" rel="stylesheet" type="text/css"/><link href="../assets/citations.css" rel="stylesheet" type="text/css"/><link href="../assets/favicon.ico" rel="icon" type="image/x-icon"/></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../"><img src="../assets/logo.svg" alt="Ferrite.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../">Ferrite.jl</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../">Home</a></li><li><input class="collapse-toggle" id="menuitem-3" type="checkbox" checked/><label class="tocitem" for="menuitem-3"><span class="docs-label">Tutorials</span><i class="docs-chevron"></i></label><ul class="collapsed"><li class="is-active"><a class="tocitem" href>Tutorials overview</a></li><li><a class="tocitem" href="heat_equation/">Heat equation</a></li><li><a class="tocitem" href="linear_elasticity/">Linear elasticity</a></li><li><a class="tocitem" href="incompressible_elasticity/">Incompressible elasticity</a></li><li><a class="tocitem" href="hyperelasticity/">Hyperelasticity</a></li><li><a class="tocitem" href="plasticity/">Von Mises plasticity</a></li><li><a class="tocitem" href="transient_heat_equation/">Transient heat equation</a></li><li><a class="tocitem" href="computational_homogenization/">Computational homogenization</a></li><li><a class="tocitem" href="stokes-flow/">Stokes flow</a></li><li><a class="tocitem" href="porous_media/">Porous media</a></li><li><a class="tocitem" href="ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl</a></li><li><a class="tocitem" href="reactive_surface/">Reactive surface</a></li><li><a class="tocitem" href="linear_shell/">Linear shell</a></li><li><a class="tocitem" href="dg_heat_equation/">Discontinuous Galerkin heat equation</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-4" type="checkbox"/><label class="tocitem" for="menuitem-4"><span class="docs-label">Topic guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../topics/">Topic guide overview</a></li><li><a class="tocitem" href="../topics/fe_intro/">Introduction to FEM</a></li><li><a class="tocitem" href="../topics/reference_shapes/">Reference shapes</a></li><li><a class="tocitem" href="../topics/FEValues/">FEValues</a></li><li><a class="tocitem" href="../topics/degrees_of_freedom/">Degrees of Freedom</a></li><li><a class="tocitem" href="../topics/sparse_matrix/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../topics/assembly/">Assembly</a></li><li><a class="tocitem" href="../topics/boundary_conditions/">Boundary and initial conditions</a></li><li><a class="tocitem" href="../topics/constraints/">Constraints</a></li><li><a class="tocitem" href="../topics/grid/">Grid</a></li><li><a class="tocitem" href="../topics/export/">Export</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-5" type="checkbox"/><label class="tocitem" for="menuitem-5"><span class="docs-label">API reference</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../reference/">Reference overview</a></li><li><a class="tocitem" href="../reference/quadrature/">Quadrature</a></li><li><a class="tocitem" href="../reference/interpolations/">Interpolation</a></li><li><a class="tocitem" href="../reference/fevalues/">FEValues</a></li><li><a class="tocitem" href="../reference/dofhandler/">Degrees of Freedom</a></li><li><a class="tocitem" href="../reference/sparsity_pattern/">Sparsity pattern and sparse matrices</a></li><li><a class="tocitem" href="../reference/assembly/">Assembly</a></li><li><a class="tocitem" href="../reference/boundary_conditions/">Boundary conditions</a></li><li><a class="tocitem" href="../reference/grid/">Grid & AbstractGrid</a></li><li><a class="tocitem" href="../reference/export/">Postprocessing</a></li><li><a class="tocitem" href="../reference/utils/">Development utility functions</a></li></ul></li><li><input class="collapse-toggle" id="menuitem-6" type="checkbox"/><label class="tocitem" for="menuitem-6"><span class="docs-label">How-to guides</span><i class="docs-chevron"></i></label><ul class="collapsed"><li><a class="tocitem" href="../howto/">How-to guide overview</a></li><li><a class="tocitem" href="../howto/postprocessing/">Post processing and visualization</a></li><li><a class="tocitem" href="../howto/threaded_assembly/">Multi-threaded assembly</a></li></ul></li><br><li><a class="tocitem" href="../gallery/">Code gallery</a></li><li><a class="tocitem" href="../devdocs/">Developer documentation</a></li><li><a class="tocitem" href="../cited-literature/">Cited literature</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Tutorials</a></li><li class="is-active"><a href>Tutorials overview</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Tutorials overview</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/Ferrite-FEM/Ferrite.jl/blob/master/docs/src/tutorials/index.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Tutorials"><a class="docs-heading-anchor" href="#Tutorials">Tutorials</a><a id="Tutorials-1"></a><a class="docs-heading-anchor-permalink" href="#Tutorials" title="Permalink"></a></h1><p>On this page you find an overview of Ferrite tutorials. The tutorials explain and show how Ferrite can be used to solve a wide range of problems. See also the <a href="../gallery/">Code gallery</a> for more examples.</p><p>The tutorials all follow roughly the same structure:</p><ul><li><strong>Introduction</strong> introduces the problem to be solved and discusses the learning outcomes of the tutorial.</li><li><strong>Commented program</strong> is the code for solving the problem with explanations and comments.</li><li><strong>Plain program</strong> is the raw source code of the program.</li></ul><p>When studying the tutorials it is a good idea to obtain a local copy of the code and run it on your own machine as you read along. Some of the tutorials also include suggestions for tweaks to the program that you can try out on your own.</p><h3 id="Tutorial-index"><a class="docs-heading-anchor" href="#Tutorial-index">Tutorial index</a><a id="Tutorial-index-1"></a><a class="docs-heading-anchor-permalink" href="#Tutorial-index" title="Permalink"></a></h3><p>The tutorials are listed in roughly increasing order of complexity. However, since they focus on different aspects, and solve different problems, it is suggested to have a look at the brief descriptions below to get an idea about what you will learn from each tutorial.</p><p>If you are new to Ferrite then Tutorial 1 - Tutorial 6 is the best place to start. These tutorials introduces and teaches most of the basic finite element techniques (e.g. linear and non-linear problems, scalar- and vector-valued problems, Dirichlet and Neumann boundary conditions, mixed finite elements, time integration, direct and iterative linear solvers, etc). In particular the very first tutorial is essential in order to be able to follow any of the other tutorials. The remaining tutorials discuss more advanced topics.</p><hr/><h5 id="[Tutorial-1:-Heat-equation](heat_equation.md)"><a class="docs-heading-anchor" href="#[Tutorial-1:-Heat-equation](heat_equation.md)"><a href="heat_equation/">Tutorial 1: Heat equation</a></a><a id="[Tutorial-1:-Heat-equation](heat_equation.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-1:-Heat-equation](heat_equation.md)" title="Permalink"></a></h5><p>This tutorial guides you through the process of solving the linear stationary heat equation (i.e. Poisson's equation) on a unit square with homogeneous Dirichlet boundary conditions. This tutorial introduces and teaches many important parts of Ferrite: problem setup, degree of freedom management, assembly procedure, boundary conditions, solving the linear system, visualization of the result). <em>Understanding this tutorial is essential to follow more complex tutorials.</em></p><p><strong>Keywords</strong>: scalar-valued solution, Dirichlet boundary conditions.</p><hr/><h5 id="[Tutorial-2:-Linear-elasticity](linear_elasticity.md)"><a class="docs-heading-anchor" href="#[Tutorial-2:-Linear-elasticity](linear_elasticity.md)"><a href="linear_elasticity/">Tutorial 2: Linear elasticity</a></a><a id="[Tutorial-2:-Linear-elasticity](linear_elasticity.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-2:-Linear-elasticity](linear_elasticity.md)" title="Permalink"></a></h5><p>TBW.</p><p><strong>Keywords</strong>: vector-valued solution, Dirichlet and Neumann boundary conditions.</p><hr/><h5 id="[Tutorial-3:-Incompressible-elasticity](incompressible_elasticity.md)"><a class="docs-heading-anchor" href="#[Tutorial-3:-Incompressible-elasticity](incompressible_elasticity.md)"><a href="incompressible_elasticity/">Tutorial 3: Incompressible elasticity</a></a><a id="[Tutorial-3:-Incompressible-elasticity](incompressible_elasticity.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-3:-Incompressible-elasticity](incompressible_elasticity.md)" title="Permalink"></a></h5><p>This tutorial focuses on a mixed formulation of linear elasticity, with (vector) displacement and (scalar) pressure as the two unknowns, suitable for incompressibility. Thus, this tutorial guides you through the process of solving a problem with two unknowns from two coupled weak forms. The problem that is studied is Cook's membrane in the incompressible limit.</p><p><strong>Keywords</strong>: mixed finite elements, Dirichlet and Neumann boundary conditions.</p><hr/><h4 id="[Tutorial-4:-Hyperelasticity](hyperelasticity.md)"><a class="docs-heading-anchor" href="#[Tutorial-4:-Hyperelasticity](hyperelasticity.md)"><a href="hyperelasticity/">Tutorial 4: Hyperelasticity</a></a><a id="[Tutorial-4:-Hyperelasticity](hyperelasticity.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-4:-Hyperelasticity](hyperelasticity.md)" title="Permalink"></a></h4><p>In this tutorial you will learn how to solve a non-linear finite element problem. In particular, a hyperelastic material model, in a finite strain setting, is used to solve the rotation of a cube. Automatic differentiatio (AD) is used for the consitutive relations. Newton's method is used for the non-linear iteration, and a conjugate gradient (CG) solver is used for the linear solution of the increment.</p><p><strong>Keywords</strong>: non-linear finite element, finite strain, automatic differentiation (AD), Newton's method, conjugate gradient (CG).</p><hr/><h4 id="[Tutorial-5:-von-Mises-Plasticity](plasticity.md)"><a class="docs-heading-anchor" href="#[Tutorial-5:-von-Mises-Plasticity](plasticity.md)"><a href="plasticity/">Tutorial 5: von Mises Plasticity</a></a><a id="[Tutorial-5:-von-Mises-Plasticity](plasticity.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-5:-von-Mises-Plasticity](plasticity.md)" title="Permalink"></a></h4><p>This tutorial revisits the cantilever beam problem from <a href="linear_elasticity/">Tutorial 2: Linear elasticity</a>, but instead of linear elasticity a plasticity model is used for the constitutive relation. You will learn how to solve a problem which require the solution of a local material problem, and the storage of material state, in each quadrature point. Newton's method is used both locally in the material routine, and globally on the finite element level.</p><p><strong>Keywords</strong>: non-linear finite element, plasticity, material modeling, state variables, Newton’s method.</p><hr/><h4 id="[Tutorial-6:-Transient-heat-equation](@ref-tutorial-transient-heat-equation)"><a class="docs-heading-anchor" href="#[Tutorial-6:-Transient-heat-equation](@ref-tutorial-transient-heat-equation)"><a href="transient_heat_equation/#tutorial-transient-heat-equation">Tutorial 6: Transient heat equation</a></a><a id="[Tutorial-6:-Transient-heat-equation](@ref-tutorial-transient-heat-equation)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-6:-Transient-heat-equation](@ref-tutorial-transient-heat-equation)" title="Permalink"></a></h4><p>In this tutorial the transient heat equation is solved on the unit square. The problem to be solved is thus similar to the one solved in the first tutorial, <a href="heat_equation/">Heat equation</a>, but with time-varying boundary conditions. In particular you will learn how to solve a time dependent problem with an implicit Euler scheme for the time integration.</p><p><strong>Keywords</strong>: time dependent finite elements, implicit Euler time integration.</p><hr/><h4 id="[Tutorial-7:-Computational-homogenization](computational_homogenization.md)"><a class="docs-heading-anchor" href="#[Tutorial-7:-Computational-homogenization](computational_homogenization.md)"><a href="computational_homogenization/">Tutorial 7: Computational homogenization</a></a><a id="[Tutorial-7:-Computational-homogenization](computational_homogenization.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-7:-Computational-homogenization](computational_homogenization.md)" title="Permalink"></a></h4><p>This tutorial guides you through computational homogenization of an representative volume element (RVE) consisting of a soft matrix material with stiff inclusions. The computational mesh is read from an external mesh file generated with Gmsh. Dirichlet and periodic boundary conditions are used.</p><p><strong>Keywords</strong>: Gmsh mesh reading, Dirichlet and periodic boundary conditions</p><hr/><h4 id="[Tutorial-8:-Stokes-flow](stokes-flow.md)"><a class="docs-heading-anchor" href="#[Tutorial-8:-Stokes-flow](stokes-flow.md)"><a href="stokes-flow/">Tutorial 8: Stokes flow</a></a><a id="[Tutorial-8:-Stokes-flow](stokes-flow.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-8:-Stokes-flow](stokes-flow.md)" title="Permalink"></a></h4><p>In this tutorial Stokes flow with (vector) velocity and (scalar) pressure is solved on on a quarter circle. Rotationally periodic boundary conditions is used for the inlet/outlet coupling. To obtain a unique solution, a mean value constraint is applied on the pressure using an affine constraint. The computational mesh is generated directly using the Gmsh API.</p><p><strong>Keywords</strong>: periodic boundary conditions, mean value constraint, mesh generation with Gmsh.</p><hr/><h4 id="[Tutorial-9:-Porous-media-(SubDofHandler)](porous_media.md)"><a class="docs-heading-anchor" href="#[Tutorial-9:-Porous-media-(SubDofHandler)](porous_media.md)"><a href="porous_media/">Tutorial 9: Porous media (SubDofHandler)</a></a><a id="[Tutorial-9:-Porous-media-(SubDofHandler)](porous_media.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-9:-Porous-media-(SubDofHandler)](porous_media.md)" title="Permalink"></a></h4><p>This tutorial introduces how to solve a complex linear problem, where there are different fields on different subdomains, and different cell types in the grid. This requires using the <code>SubDofHandler</code> interface.</p><p><strong>Keywords</strong>: Mixed grids, multiple fields, porous media, <code>SubDofHandler</code></p><hr/><h4 id="[Tutorial-10:-Incompressible-Navier-Stokes-equations](ns_vs_diffeq.md)"><a class="docs-heading-anchor" href="#[Tutorial-10:-Incompressible-Navier-Stokes-equations](ns_vs_diffeq.md)"><a href="ns_vs_diffeq/">Tutorial 10: Incompressible Navier-Stokes equations</a></a><a id="[Tutorial-10:-Incompressible-Navier-Stokes-equations](ns_vs_diffeq.md)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-10:-Incompressible-Navier-Stokes-equations](ns_vs_diffeq.md)" title="Permalink"></a></h4><p>In this tutorial the incompressible Navier-Stokes equations are solved. The domain is discretized in space with Ferrite as usual, and then forumalated in a way to be compatible with the <a href="https://docs.sciml.ai/OrdinaryDiffEq/">OrdinaryDiffEq.jl</a> package, which is used for the time-integration.</p><p><strong>Keywords</strong>: non-linear time dependent problem</p><hr/><h4 id="[Tutorial-10:-Reactive-surface](@ref-tutorial-reactive-surface)"><a class="docs-heading-anchor" href="#[Tutorial-10:-Reactive-surface](@ref-tutorial-reactive-surface)"><a href="reactive_surface/#tutorial-reactive-surface">Tutorial 10: Reactive surface</a></a><a id="[Tutorial-10:-Reactive-surface](@ref-tutorial-reactive-surface)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-10:-Reactive-surface](@ref-tutorial-reactive-surface)" title="Permalink"></a></h4><p>In this tutorial a reaction diffusion system on a sphere surface embedded in 3D is solved. Ferrite is used to assemble the diffusion operators and the mass matrices. The problem is solved by using the usual first order reaction diffusion operator splitting.</p><p><strong>Keywords</strong>: embedded elements, operator splitting, gmsh</p><hr/><h4 id="[Tutorial-11:-Linear-shell](@ref-tutorial-linear-shell)"><a class="docs-heading-anchor" href="#[Tutorial-11:-Linear-shell](@ref-tutorial-linear-shell)"><a href="linear_shell/#tutorial-linear-shell">Tutorial 11: Linear shell</a></a><a id="[Tutorial-11:-Linear-shell](@ref-tutorial-linear-shell)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-11:-Linear-shell](@ref-tutorial-linear-shell)" title="Permalink"></a></h4><p>In this tutorial a linear shell element formulation is set up as a two-dimensional domain embedded in three-dimensional space. This will teach, and perhaps inspire, you on how Ferrite can be used for non-standard things and how to add "hacks" that build on top of Ferrite.</p><p><strong>Keywords</strong>: shell elements, automatic differentiation</p><hr/><h4 id="[Tutorial-12:-Discontinuous-Galerkin-heat-equation](@ref-tutorial-dg-heat-equation)"><a class="docs-heading-anchor" href="#[Tutorial-12:-Discontinuous-Galerkin-heat-equation](@ref-tutorial-dg-heat-equation)"><a href="dg_heat_equation/#tutorial-dg-heat-equation">Tutorial 12: Discontinuous Galerkin heat equation</a></a><a id="[Tutorial-12:-Discontinuous-Galerkin-heat-equation](@ref-tutorial-dg-heat-equation)-1"></a><a class="docs-heading-anchor-permalink" href="#[Tutorial-12:-Discontinuous-Galerkin-heat-equation](@ref-tutorial-dg-heat-equation)" title="Permalink"></a></h4><p>This tutorial guides you through the process of solving the linear stationary heat equation (i.e. Poisson's equation) on a unit square with inhomogeneous Dirichlet and Neumann boundary conditions using the interior penalty discontinuous Galerkin method. This tutorial follows the <a href="heat_equation/#tutorial-heat-equation">heat equation tutorial</a>, introducing face and interface iterators, jump and average operators, and cross-element coupling in sparsity patterns. This example was developed as part of the <em>Google Summer of Code</em> funded project <a href="https://summerofcode.withgoogle.com/programs/2023/projects/SLGbRNI5">"Discontinuous Galerkin Infrastructure For the finite element toolbox Ferrite.jl"</a>.</p><p><strong>Keywords</strong>: scalar-valued solution, Dirichlet boundary conditions, Discontinuous Galerkin, Interior penalty</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../changelog/">« Changelog</a><a class="docs-footer-nextpage" href="heat_equation/">Heat equation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/linear_elasticity/index.html b/dev/tutorials/linear_elasticity/index.html index d948f8d829..ae691e118a 100644 --- a/dev/tutorials/linear_elasticity/index.html +++ b/dev/tutorials/linear_elasticity/index.html @@ -290,4 +290,4 @@ end write_projection(vtk, proj, stress_field, "stress field") Ferrite.write_cellset(vtk, grid) -end</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../heat_equation/">« Heat equation</a><a class="docs-footer-nextpage" href="../incompressible_elasticity/">Incompressible elasticity »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../heat_equation/">« Heat equation</a><a class="docs-footer-nextpage" href="../incompressible_elasticity/">Incompressible elasticity »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/linear_shell/index.html b/dev/tutorials/linear_shell/index.html index 11c95eebdc..e6026e78c8 100644 --- a/dev/tutorials/linear_shell/index.html +++ b/dev/tutorials/linear_shell/index.html @@ -182,4 +182,4 @@ ke .+= B'*data.C*B * dV end end -end;</code></pre><p>Run everything:</p><pre><code class="language-julia hljs">main()</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">VTKGridFile for the closed file "linear_shell.vtu".</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../reactive_surface/">« Reactive surface</a><a class="docs-footer-nextpage" href="../dg_heat_equation/">Discontinuous Galerkin heat equation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end;</code></pre><p>Run everything:</p><pre><code class="language-julia hljs">main()</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">VTKGridFile for the closed file "linear_shell.vtu".</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../reactive_surface/">« Reactive surface</a><a class="docs-footer-nextpage" href="../dg_heat_equation/">Discontinuous Galerkin heat equation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/ns_vs_diffeq/index.html b/dev/tutorials/ns_vs_diffeq/index.html index db3beca71b..7cb153b347 100644 --- a/dev/tutorials/ns_vs_diffeq/index.html +++ b/dev/tutorials/ns_vs_diffeq/index.html @@ -546,4 +546,4 @@ pvd[t] = vtk end end -vtk_save(pvd);</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../porous_media/">« Porous media</a><a class="docs-footer-nextpage" href="../reactive_surface/">Reactive surface »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +vtk_save(pvd);</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../porous_media/">« Porous media</a><a class="docs-footer-nextpage" href="../reactive_surface/">Reactive surface »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/plasticity.ipynb b/dev/tutorials/plasticity.ipynb index 0b0e87eb7d..b0ffbbf91b 100644 --- a/dev/tutorials/plasticity.ipynb +++ b/dev/tutorials/plasticity.ipynb @@ -720,182 +720,182 @@ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", "<defs>\n", - " <clipPath id=\"clip900\">\n", + " <clipPath id=\"clip510\">\n", " <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip900)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip510)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip901\">\n", + " <clipPath id=\"clip511\">\n", " <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip900)\" d=\"M368.631 1423.18 L2352.76 1423.18 L2352.76 123.472 L368.631 123.472 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip510)\" d=\"M368.631 1423.18 L2352.76 1423.18 L2352.76 123.472 L368.631 123.472 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip902\">\n", + " <clipPath id=\"clip512\">\n", " <rect x=\"368\" y=\"123\" width=\"1985\" height=\"1301\"/>\n", " </clipPath>\n", "</defs>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"424.786,1423.18 424.786,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"792.598,1423.18 792.598,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1160.41,1423.18 1160.41,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1528.22,1423.18 1528.22,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1896.03,1423.18 1896.03,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2263.85,1423.18 2263.85,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,1386.4 2352.76,1386.4 \"/>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,1079.86 2352.76,1079.86 \"/>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,773.326 2352.76,773.326 \"/>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,466.791 2352.76,466.791 \"/>\n", - "<polyline clip-path=\"url(#clip902)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,160.256 2352.76,160.256 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1423.18 2352.76,1423.18 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"424.786,1423.18 424.786,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"792.598,1423.18 792.598,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1160.41,1423.18 1160.41,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1528.22,1423.18 1528.22,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1896.03,1423.18 1896.03,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2263.85,1423.18 2263.85,1404.28 \"/>\n", - "<path clip-path=\"url(#clip900)\" d=\"M387.089 1454.1 Q383.478 1454.1 381.65 1457.66 Q379.844 1461.2 379.844 1468.33 Q379.844 1475.44 381.65 1479.01 Q383.478 1482.55 387.089 1482.55 Q390.724 1482.55 392.529 1479.01 Q394.358 1475.44 394.358 1468.33 Q394.358 1461.2 392.529 1457.66 Q390.724 1454.1 387.089 1454.1 M387.089 1450.39 Q392.899 1450.39 395.955 1455 Q399.034 1459.58 399.034 1468.33 Q399.034 1477.06 395.955 1481.67 Q392.899 1486.25 387.089 1486.25 Q381.279 1486.25 378.2 1481.67 Q375.145 1477.06 375.145 1468.33 Q375.145 1459.58 378.2 1455 Q381.279 1450.39 387.089 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M407.251 1479.7 L412.135 1479.7 L412.135 1485.58 L407.251 1485.58 L407.251 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M432.321 1454.1 Q428.709 1454.1 426.881 1457.66 Q425.075 1461.2 425.075 1468.33 Q425.075 1475.44 426.881 1479.01 Q428.709 1482.55 432.321 1482.55 Q435.955 1482.55 437.76 1479.01 Q439.589 1475.44 439.589 1468.33 Q439.589 1461.2 437.76 1457.66 Q435.955 1454.1 432.321 1454.1 M432.321 1450.39 Q438.131 1450.39 441.186 1455 Q444.265 1459.58 444.265 1468.33 Q444.265 1477.06 441.186 1481.67 Q438.131 1486.25 432.321 1486.25 Q426.51 1486.25 423.432 1481.67 Q420.376 1477.06 420.376 1468.33 Q420.376 1459.58 423.432 1455 Q426.51 1450.39 432.321 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M462.482 1454.1 Q458.871 1454.1 457.043 1457.66 Q455.237 1461.2 455.237 1468.33 Q455.237 1475.44 457.043 1479.01 Q458.871 1482.55 462.482 1482.55 Q466.117 1482.55 467.922 1479.01 Q469.751 1475.44 469.751 1468.33 Q469.751 1461.2 467.922 1457.66 Q466.117 1454.1 462.482 1454.1 M462.482 1450.39 Q468.293 1450.39 471.348 1455 Q474.427 1459.58 474.427 1468.33 Q474.427 1477.06 471.348 1481.67 Q468.293 1486.25 462.482 1486.25 Q456.672 1486.25 453.594 1481.67 Q450.538 1477.06 450.538 1468.33 Q450.538 1459.58 453.594 1455 Q456.672 1450.39 462.482 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M755.399 1454.1 Q751.788 1454.1 749.959 1457.66 Q748.154 1461.2 748.154 1468.33 Q748.154 1475.44 749.959 1479.01 Q751.788 1482.55 755.399 1482.55 Q759.033 1482.55 760.839 1479.01 Q762.668 1475.44 762.668 1468.33 Q762.668 1461.2 760.839 1457.66 Q759.033 1454.1 755.399 1454.1 M755.399 1450.39 Q761.209 1450.39 764.265 1455 Q767.344 1459.58 767.344 1468.33 Q767.344 1477.06 764.265 1481.67 Q761.209 1486.25 755.399 1486.25 Q749.589 1486.25 746.51 1481.67 Q743.455 1477.06 743.455 1468.33 Q743.455 1459.58 746.51 1455 Q749.589 1450.39 755.399 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M775.561 1479.7 L780.445 1479.7 L780.445 1485.58 L775.561 1485.58 L775.561 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M800.63 1454.1 Q797.019 1454.1 795.191 1457.66 Q793.385 1461.2 793.385 1468.33 Q793.385 1475.44 795.191 1479.01 Q797.019 1482.55 800.63 1482.55 Q804.265 1482.55 806.07 1479.01 Q807.899 1475.44 807.899 1468.33 Q807.899 1461.2 806.07 1457.66 Q804.265 1454.1 800.63 1454.1 M800.63 1450.39 Q806.441 1450.39 809.496 1455 Q812.575 1459.58 812.575 1468.33 Q812.575 1477.06 809.496 1481.67 Q806.441 1486.25 800.63 1486.25 Q794.82 1486.25 791.742 1481.67 Q788.686 1477.06 788.686 1468.33 Q788.686 1459.58 791.742 1455 Q794.82 1450.39 800.63 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M820.839 1451.02 L839.195 1451.02 L839.195 1454.96 L825.121 1454.96 L825.121 1463.43 Q826.14 1463.08 827.158 1462.92 Q828.177 1462.73 829.195 1462.73 Q834.982 1462.73 838.362 1465.9 Q841.741 1469.08 841.741 1474.49 Q841.741 1480.07 838.269 1483.17 Q834.797 1486.25 828.477 1486.25 Q826.302 1486.25 824.033 1485.88 Q821.788 1485.51 819.38 1484.77 L819.38 1480.07 Q821.464 1481.2 823.686 1481.76 Q825.908 1482.32 828.385 1482.32 Q832.389 1482.32 834.727 1480.21 Q837.065 1478.1 837.065 1474.49 Q837.065 1470.88 834.727 1468.77 Q832.389 1466.67 828.385 1466.67 Q826.51 1466.67 824.635 1467.08 Q822.783 1467.5 820.839 1468.38 L820.839 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1122.71 1454.1 Q1119.1 1454.1 1117.27 1457.66 Q1115.47 1461.2 1115.47 1468.33 Q1115.47 1475.44 1117.27 1479.01 Q1119.1 1482.55 1122.71 1482.55 Q1126.35 1482.55 1128.15 1479.01 Q1129.98 1475.44 1129.98 1468.33 Q1129.98 1461.2 1128.15 1457.66 Q1126.35 1454.1 1122.71 1454.1 M1122.71 1450.39 Q1128.52 1450.39 1131.58 1455 Q1134.66 1459.58 1134.66 1468.33 Q1134.66 1477.06 1131.58 1481.67 Q1128.52 1486.25 1122.71 1486.25 Q1116.9 1486.25 1113.82 1481.67 Q1110.77 1477.06 1110.77 1468.33 Q1110.77 1459.58 1113.82 1455 Q1116.9 1450.39 1122.71 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1142.88 1479.7 L1147.76 1479.7 L1147.76 1485.58 L1142.88 1485.58 L1142.88 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1158.76 1481.64 L1166.39 1481.64 L1166.39 1455.28 L1158.08 1456.95 L1158.08 1452.69 L1166.35 1451.02 L1171.02 1451.02 L1171.02 1481.64 L1178.66 1481.64 L1178.66 1485.58 L1158.76 1485.58 L1158.76 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1198.11 1454.1 Q1194.5 1454.1 1192.67 1457.66 Q1190.86 1461.2 1190.86 1468.33 Q1190.86 1475.44 1192.67 1479.01 Q1194.5 1482.55 1198.11 1482.55 Q1201.74 1482.55 1203.55 1479.01 Q1205.38 1475.44 1205.38 1468.33 Q1205.38 1461.2 1203.55 1457.66 Q1201.74 1454.1 1198.11 1454.1 M1198.11 1450.39 Q1203.92 1450.39 1206.97 1455 Q1210.05 1459.58 1210.05 1468.33 Q1210.05 1477.06 1206.97 1481.67 Q1203.92 1486.25 1198.11 1486.25 Q1192.3 1486.25 1189.22 1481.67 Q1186.16 1477.06 1186.16 1468.33 Q1186.16 1459.58 1189.22 1455 Q1192.3 1450.39 1198.11 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1491.02 1454.1 Q1487.41 1454.1 1485.58 1457.66 Q1483.78 1461.2 1483.78 1468.33 Q1483.78 1475.44 1485.58 1479.01 Q1487.41 1482.55 1491.02 1482.55 Q1494.66 1482.55 1496.46 1479.01 Q1498.29 1475.44 1498.29 1468.33 Q1498.29 1461.2 1496.46 1457.66 Q1494.66 1454.1 1491.02 1454.1 M1491.02 1450.39 Q1496.83 1450.39 1499.89 1455 Q1502.97 1459.58 1502.97 1468.33 Q1502.97 1477.06 1499.89 1481.67 Q1496.83 1486.25 1491.02 1486.25 Q1485.21 1486.25 1482.13 1481.67 Q1479.08 1477.06 1479.08 1468.33 Q1479.08 1459.58 1482.13 1455 Q1485.21 1450.39 1491.02 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1511.19 1479.7 L1516.07 1479.7 L1516.07 1485.58 L1511.19 1485.58 L1511.19 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1527.06 1481.64 L1534.7 1481.64 L1534.7 1455.28 L1526.39 1456.95 L1526.39 1452.69 L1534.66 1451.02 L1539.33 1451.02 L1539.33 1481.64 L1546.97 1481.64 L1546.97 1485.58 L1527.06 1485.58 L1527.06 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1556.46 1451.02 L1574.82 1451.02 L1574.82 1454.96 L1560.75 1454.96 L1560.75 1463.43 Q1561.76 1463.08 1562.78 1462.92 Q1563.8 1462.73 1564.82 1462.73 Q1570.61 1462.73 1573.99 1465.9 Q1577.37 1469.08 1577.37 1474.49 Q1577.37 1480.07 1573.89 1483.17 Q1570.42 1486.25 1564.1 1486.25 Q1561.93 1486.25 1559.66 1485.88 Q1557.41 1485.51 1555 1484.77 L1555 1480.07 Q1557.09 1481.2 1559.31 1481.76 Q1561.53 1482.32 1564.01 1482.32 Q1568.01 1482.32 1570.35 1480.21 Q1572.69 1478.1 1572.69 1474.49 Q1572.69 1470.88 1570.35 1468.77 Q1568.01 1466.67 1564.01 1466.67 Q1562.13 1466.67 1560.26 1467.08 Q1558.41 1467.5 1556.46 1468.38 L1556.46 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1858.34 1454.1 Q1854.73 1454.1 1852.9 1457.66 Q1851.09 1461.2 1851.09 1468.33 Q1851.09 1475.44 1852.9 1479.01 Q1854.73 1482.55 1858.34 1482.55 Q1861.97 1482.55 1863.78 1479.01 Q1865.61 1475.44 1865.61 1468.33 Q1865.61 1461.2 1863.78 1457.66 Q1861.97 1454.1 1858.34 1454.1 M1858.34 1450.39 Q1864.15 1450.39 1867.2 1455 Q1870.28 1459.58 1870.28 1468.33 Q1870.28 1477.06 1867.2 1481.67 Q1864.15 1486.25 1858.34 1486.25 Q1852.53 1486.25 1849.45 1481.67 Q1846.39 1477.06 1846.39 1468.33 Q1846.39 1459.58 1849.45 1455 Q1852.53 1450.39 1858.34 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1878.5 1479.7 L1883.38 1479.7 L1883.38 1485.58 L1878.5 1485.58 L1878.5 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1897.6 1481.64 L1913.92 1481.64 L1913.92 1485.58 L1891.97 1485.58 L1891.97 1481.64 Q1894.63 1478.89 1899.22 1474.26 Q1903.82 1469.61 1905 1468.27 Q1907.25 1465.74 1908.13 1464.01 Q1909.03 1462.25 1909.03 1460.56 Q1909.03 1457.8 1907.09 1456.07 Q1905.17 1454.33 1902.06 1454.33 Q1899.87 1454.33 1897.41 1455.09 Q1894.98 1455.86 1892.2 1457.41 L1892.2 1452.69 Q1895.03 1451.55 1897.48 1450.97 Q1899.93 1450.39 1901.97 1450.39 Q1907.34 1450.39 1910.54 1453.08 Q1913.73 1455.77 1913.73 1460.26 Q1913.73 1462.39 1912.92 1464.31 Q1912.13 1466.2 1910.03 1468.8 Q1909.45 1469.47 1906.35 1472.69 Q1903.25 1475.88 1897.6 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1933.73 1454.1 Q1930.12 1454.1 1928.29 1457.66 Q1926.49 1461.2 1926.49 1468.33 Q1926.49 1475.44 1928.29 1479.01 Q1930.12 1482.55 1933.73 1482.55 Q1937.37 1482.55 1939.17 1479.01 Q1941 1475.44 1941 1468.33 Q1941 1461.2 1939.17 1457.66 Q1937.37 1454.1 1933.73 1454.1 M1933.73 1450.39 Q1939.54 1450.39 1942.6 1455 Q1945.68 1459.58 1945.68 1468.33 Q1945.68 1477.06 1942.6 1481.67 Q1939.54 1486.25 1933.73 1486.25 Q1927.92 1486.25 1924.84 1481.67 Q1921.79 1477.06 1921.79 1468.33 Q1921.79 1459.58 1924.84 1455 Q1927.92 1450.39 1933.73 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M2226.65 1454.1 Q2223.04 1454.1 2221.21 1457.66 Q2219.4 1461.2 2219.4 1468.33 Q2219.4 1475.44 2221.21 1479.01 Q2223.04 1482.55 2226.65 1482.55 Q2230.28 1482.55 2232.09 1479.01 Q2233.92 1475.44 2233.92 1468.33 Q2233.92 1461.2 2232.09 1457.66 Q2230.28 1454.1 2226.65 1454.1 M2226.65 1450.39 Q2232.46 1450.39 2235.51 1455 Q2238.59 1459.58 2238.59 1468.33 Q2238.59 1477.06 2235.51 1481.67 Q2232.46 1486.25 2226.65 1486.25 Q2220.84 1486.25 2217.76 1481.67 Q2214.7 1477.06 2214.7 1468.33 Q2214.7 1459.58 2217.76 1455 Q2220.84 1450.39 2226.65 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M2246.81 1479.7 L2251.69 1479.7 L2251.69 1485.58 L2246.81 1485.58 L2246.81 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M2265.91 1481.64 L2282.23 1481.64 L2282.23 1485.58 L2260.28 1485.58 L2260.28 1481.64 Q2262.94 1478.89 2267.53 1474.26 Q2272.13 1469.61 2273.31 1468.27 Q2275.56 1465.74 2276.44 1464.01 Q2277.34 1462.25 2277.34 1460.56 Q2277.34 1457.8 2275.4 1456.07 Q2273.48 1454.33 2270.37 1454.33 Q2268.18 1454.33 2265.72 1455.09 Q2263.29 1455.86 2260.51 1457.41 L2260.51 1452.69 Q2263.34 1451.55 2265.79 1450.97 Q2268.24 1450.39 2270.28 1450.39 Q2275.65 1450.39 2278.85 1453.08 Q2282.04 1455.77 2282.04 1460.26 Q2282.04 1462.39 2281.23 1464.31 Q2280.44 1466.2 2278.34 1468.8 Q2277.76 1469.47 2274.66 1472.69 Q2271.55 1475.88 2265.91 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M2292.09 1451.02 L2310.44 1451.02 L2310.44 1454.96 L2296.37 1454.96 L2296.37 1463.43 Q2297.39 1463.08 2298.41 1462.92 Q2299.43 1462.73 2300.44 1462.73 Q2306.23 1462.73 2309.61 1465.9 Q2312.99 1469.08 2312.99 1474.49 Q2312.99 1480.07 2309.52 1483.17 Q2306.05 1486.25 2299.73 1486.25 Q2297.55 1486.25 2295.28 1485.88 Q2293.04 1485.51 2290.63 1484.77 L2290.63 1480.07 Q2292.71 1481.2 2294.93 1481.76 Q2297.16 1482.32 2299.63 1482.32 Q2303.64 1482.32 2305.98 1480.21 Q2308.31 1478.1 2308.31 1474.49 Q2308.31 1470.88 2305.98 1468.77 Q2303.64 1466.67 2299.63 1466.67 Q2297.76 1466.67 2295.88 1467.08 Q2294.03 1467.5 2292.09 1468.38 L2292.09 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M966.529 1520.52 L976.109 1520.52 L988.236 1552.86 L1000.43 1520.52 L1010.01 1520.52 L1010.01 1568.04 L1003.74 1568.04 L1003.74 1526.32 L991.483 1558.91 L985.021 1558.91 L972.767 1526.32 L972.767 1568.04 L966.529 1568.04 L966.529 1520.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1038.72 1550.12 Q1031.62 1550.12 1028.88 1551.75 Q1026.14 1553.37 1026.14 1557.29 Q1026.14 1560.4 1028.18 1562.25 Q1030.25 1564.07 1033.78 1564.07 Q1038.65 1564.07 1041.58 1560.63 Q1044.54 1557.16 1044.54 1551.43 L1044.54 1550.12 L1038.72 1550.12 M1050.4 1547.71 L1050.4 1568.04 L1044.54 1568.04 L1044.54 1562.63 Q1042.54 1565.88 1039.54 1567.44 Q1036.55 1568.97 1032.22 1568.97 Q1026.75 1568.97 1023.5 1565.91 Q1020.29 1562.82 1020.29 1557.67 Q1020.29 1551.65 1024.3 1548.6 Q1028.34 1545.54 1036.33 1545.54 L1044.54 1545.54 L1044.54 1544.97 Q1044.54 1540.93 1041.87 1538.73 Q1039.23 1536.5 1034.42 1536.5 Q1031.36 1536.5 1028.47 1537.23 Q1025.57 1537.97 1022.9 1539.43 L1022.9 1534.02 Q1026.11 1532.78 1029.14 1532.17 Q1032.16 1531.54 1035.02 1531.54 Q1042.76 1531.54 1046.58 1535.55 Q1050.4 1539.56 1050.4 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1092.09 1532.4 L1079.2 1549.74 L1092.76 1568.04 L1085.85 1568.04 L1075.48 1554.04 L1065.1 1568.04 L1058.2 1568.04 L1072.04 1549.39 L1059.37 1532.4 L1066.28 1532.4 L1075.73 1545.1 L1085.19 1532.4 L1092.09 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1101.04 1532.4 L1106.89 1532.4 L1106.89 1568.04 L1101.04 1568.04 L1101.04 1532.4 M1101.04 1518.52 L1106.89 1518.52 L1106.89 1525.93 L1101.04 1525.93 L1101.04 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1146.9 1539.24 Q1149.1 1535.29 1152.15 1533.41 Q1155.21 1531.54 1159.35 1531.54 Q1164.92 1531.54 1167.94 1535.45 Q1170.96 1539.33 1170.96 1546.53 L1170.96 1568.04 L1165.08 1568.04 L1165.08 1546.72 Q1165.08 1541.59 1163.26 1539.11 Q1161.45 1536.63 1157.72 1536.63 Q1153.17 1536.63 1150.53 1539.65 Q1147.89 1542.68 1147.89 1547.9 L1147.89 1568.04 L1142 1568.04 L1142 1546.72 Q1142 1541.56 1140.19 1539.11 Q1138.37 1536.63 1134.58 1536.63 Q1130.1 1536.63 1127.45 1539.68 Q1124.81 1542.71 1124.81 1547.9 L1124.81 1568.04 L1118.92 1568.04 L1118.92 1532.4 L1124.81 1532.4 L1124.81 1537.93 Q1126.82 1534.66 1129.62 1533.1 Q1132.42 1531.54 1136.27 1531.54 Q1140.15 1531.54 1142.86 1533.51 Q1145.6 1535.48 1146.9 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1182.04 1553.98 L1182.04 1532.4 L1187.9 1532.4 L1187.9 1553.75 Q1187.9 1558.81 1189.87 1561.36 Q1191.84 1563.87 1195.79 1563.87 Q1200.53 1563.87 1203.27 1560.85 Q1206.04 1557.83 1206.04 1552.61 L1206.04 1532.4 L1211.9 1532.4 L1211.9 1568.04 L1206.04 1568.04 L1206.04 1562.57 Q1203.91 1565.82 1201.07 1567.41 Q1198.27 1568.97 1194.55 1568.97 Q1188.41 1568.97 1185.22 1565.15 Q1182.04 1561.33 1182.04 1553.98 M1196.78 1531.54 L1196.78 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1251.71 1539.24 Q1253.91 1535.29 1256.96 1533.41 Q1260.02 1531.54 1264.16 1531.54 Q1269.73 1531.54 1272.75 1535.45 Q1275.78 1539.33 1275.78 1546.53 L1275.78 1568.04 L1269.89 1568.04 L1269.89 1546.72 Q1269.89 1541.59 1268.07 1539.11 Q1266.26 1536.63 1262.53 1536.63 Q1257.98 1536.63 1255.34 1539.65 Q1252.7 1542.68 1252.7 1547.9 L1252.7 1568.04 L1246.81 1568.04 L1246.81 1546.72 Q1246.81 1541.56 1245 1539.11 Q1243.18 1536.63 1239.4 1536.63 Q1234.91 1536.63 1232.27 1539.68 Q1229.62 1542.71 1229.62 1547.9 L1229.62 1568.04 L1223.74 1568.04 L1223.74 1532.4 L1229.62 1532.4 L1229.62 1537.93 Q1231.63 1534.66 1234.43 1533.1 Q1237.23 1531.54 1241.08 1531.54 Q1244.97 1531.54 1247.67 1533.51 Q1250.41 1535.48 1251.71 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1331.63 1537.81 L1331.63 1518.52 L1337.49 1518.52 L1337.49 1568.04 L1331.63 1568.04 L1331.63 1562.7 Q1329.79 1565.88 1326.96 1567.44 Q1324.15 1568.97 1320.21 1568.97 Q1313.75 1568.97 1309.67 1563.81 Q1305.63 1558.65 1305.63 1550.25 Q1305.63 1541.85 1309.67 1536.69 Q1313.75 1531.54 1320.21 1531.54 Q1324.15 1531.54 1326.96 1533.1 Q1329.79 1534.62 1331.63 1537.81 M1311.68 1550.25 Q1311.68 1556.71 1314.32 1560.4 Q1316.99 1564.07 1321.64 1564.07 Q1326.29 1564.07 1328.96 1560.4 Q1331.63 1556.71 1331.63 1550.25 Q1331.63 1543.79 1328.96 1540.13 Q1326.29 1536.44 1321.64 1536.44 Q1316.99 1536.44 1314.32 1540.13 Q1311.68 1543.79 1311.68 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1380.05 1548.76 L1380.05 1551.62 L1353.12 1551.62 Q1353.5 1557.67 1356.75 1560.85 Q1360.03 1564 1365.85 1564 Q1369.22 1564 1372.37 1563.17 Q1375.56 1562.35 1378.68 1560.69 L1378.68 1566.23 Q1375.53 1567.57 1372.22 1568.27 Q1368.91 1568.97 1365.5 1568.97 Q1356.97 1568.97 1351.97 1564 Q1347.01 1559.04 1347.01 1550.57 Q1347.01 1541.82 1351.72 1536.69 Q1356.46 1531.54 1364.48 1531.54 Q1371.67 1531.54 1375.84 1536.18 Q1380.05 1540.8 1380.05 1548.76 M1374.19 1547.04 Q1374.13 1542.23 1371.48 1539.37 Q1368.87 1536.5 1364.54 1536.5 Q1359.64 1536.5 1356.68 1539.27 Q1353.76 1542.04 1353.31 1547.07 L1374.19 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1407.7 1518.52 L1407.7 1523.39 L1402.1 1523.39 Q1398.95 1523.39 1397.71 1524.66 Q1396.5 1525.93 1396.5 1529.24 L1396.5 1532.4 L1406.14 1532.4 L1406.14 1536.95 L1396.5 1536.95 L1396.5 1568.04 L1390.61 1568.04 L1390.61 1536.95 L1385.01 1536.95 L1385.01 1532.4 L1390.61 1532.4 L1390.61 1529.91 Q1390.61 1523.96 1393.38 1521.26 Q1396.15 1518.52 1402.17 1518.52 L1407.7 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1412.61 1518.52 L1418.46 1518.52 L1418.46 1568.04 L1412.61 1568.04 L1412.61 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1461.21 1548.76 L1461.21 1551.62 L1434.28 1551.62 Q1434.66 1557.67 1437.91 1560.85 Q1441.19 1564 1447.01 1564 Q1450.39 1564 1453.54 1563.17 Q1456.72 1562.35 1459.84 1560.69 L1459.84 1566.23 Q1456.69 1567.57 1453.38 1568.27 Q1450.07 1568.97 1446.66 1568.97 Q1438.13 1568.97 1433.14 1564 Q1428.17 1559.04 1428.17 1550.57 Q1428.17 1541.82 1432.88 1536.69 Q1437.62 1531.54 1445.64 1531.54 Q1452.84 1531.54 1457.01 1536.18 Q1461.21 1540.8 1461.21 1548.76 M1455.35 1547.04 Q1455.29 1542.23 1452.65 1539.37 Q1450.04 1536.5 1445.71 1536.5 Q1440.81 1536.5 1437.85 1539.27 Q1434.92 1542.04 1434.47 1547.07 L1455.35 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1496.47 1533.76 L1496.47 1539.24 Q1493.99 1537.87 1491.48 1537.2 Q1488.99 1536.5 1486.45 1536.5 Q1480.75 1536.5 1477.6 1540.13 Q1474.45 1543.73 1474.45 1550.25 Q1474.45 1556.78 1477.6 1560.4 Q1480.75 1564 1486.45 1564 Q1488.99 1564 1491.48 1563.33 Q1493.99 1562.63 1496.47 1561.26 L1496.47 1566.68 Q1494.02 1567.82 1491.38 1568.39 Q1488.77 1568.97 1485.81 1568.97 Q1477.76 1568.97 1473.02 1563.91 Q1468.27 1558.85 1468.27 1550.25 Q1468.27 1541.53 1473.05 1536.53 Q1477.85 1531.54 1486.19 1531.54 Q1488.9 1531.54 1491.48 1532.11 Q1494.06 1532.65 1496.47 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1512.45 1522.27 L1512.45 1532.4 L1524.52 1532.4 L1524.52 1536.95 L1512.45 1536.95 L1512.45 1556.3 Q1512.45 1560.66 1513.63 1561.9 Q1514.84 1563.14 1518.5 1563.14 L1524.52 1563.14 L1524.52 1568.04 L1518.5 1568.04 Q1511.72 1568.04 1509.14 1565.53 Q1506.56 1562.98 1506.56 1556.3 L1506.56 1536.95 L1502.27 1536.95 L1502.27 1532.4 L1506.56 1532.4 L1506.56 1522.27 L1512.45 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1532.22 1532.4 L1538.07 1532.4 L1538.07 1568.04 L1532.22 1568.04 L1532.22 1532.4 M1532.22 1518.52 L1538.07 1518.52 L1538.07 1525.93 L1532.22 1525.93 L1532.22 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1564.14 1536.5 Q1559.43 1536.5 1556.69 1540.19 Q1553.96 1543.85 1553.96 1550.25 Q1553.96 1556.65 1556.66 1560.34 Q1559.4 1564 1564.14 1564 Q1568.82 1564 1571.56 1560.31 Q1574.29 1556.62 1574.29 1550.25 Q1574.29 1543.92 1571.56 1540.23 Q1568.82 1536.5 1564.14 1536.5 M1564.14 1531.54 Q1571.78 1531.54 1576.14 1536.5 Q1580.5 1541.47 1580.5 1550.25 Q1580.5 1559 1576.14 1564 Q1571.78 1568.97 1564.14 1568.97 Q1556.47 1568.97 1552.11 1564 Q1547.78 1559 1547.78 1550.25 Q1547.78 1541.47 1552.11 1536.5 Q1556.47 1531.54 1564.14 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1619.84 1546.53 L1619.84 1568.04 L1613.99 1568.04 L1613.99 1546.72 Q1613.99 1541.66 1612.01 1539.14 Q1610.04 1536.63 1606.09 1536.63 Q1601.35 1536.63 1598.61 1539.65 Q1595.87 1542.68 1595.87 1547.9 L1595.87 1568.04 L1589.99 1568.04 L1589.99 1532.4 L1595.87 1532.4 L1595.87 1537.93 Q1597.98 1534.72 1600.81 1533.13 Q1603.67 1531.54 1607.4 1531.54 Q1613.54 1531.54 1616.69 1535.36 Q1619.84 1539.14 1619.84 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1651.7 1518.52 L1665.2 1518.52 L1665.2 1523.07 L1657.56 1523.07 L1657.56 1572.09 L1665.2 1572.09 L1665.2 1576.64 L1651.7 1576.64 L1651.7 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1705.43 1539.24 Q1707.62 1535.29 1710.68 1533.41 Q1713.74 1531.54 1717.87 1531.54 Q1723.44 1531.54 1726.47 1535.45 Q1729.49 1539.33 1729.49 1546.53 L1729.49 1568.04 L1723.6 1568.04 L1723.6 1546.72 Q1723.6 1541.59 1721.79 1539.11 Q1719.97 1536.63 1716.25 1536.63 Q1711.7 1536.63 1709.06 1539.65 Q1706.42 1542.68 1706.42 1547.9 L1706.42 1568.04 L1700.53 1568.04 L1700.53 1546.72 Q1700.53 1541.56 1698.71 1539.11 Q1696.9 1536.63 1693.11 1536.63 Q1688.62 1536.63 1685.98 1539.68 Q1683.34 1542.71 1683.34 1547.9 L1683.34 1568.04 L1677.45 1568.04 L1677.45 1532.4 L1683.34 1532.4 L1683.34 1537.93 Q1685.34 1534.66 1688.15 1533.1 Q1690.95 1531.54 1694.8 1531.54 Q1698.68 1531.54 1701.39 1533.51 Q1704.12 1535.48 1705.43 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1754.86 1518.52 L1754.86 1576.64 L1741.36 1576.64 L1741.36 1572.09 L1748.97 1572.09 L1748.97 1523.07 L1741.36 1523.07 L1741.36 1518.52 L1754.86 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1423.18 368.631,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1386.4 387.529,1386.4 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1079.86 387.529,1079.86 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,773.326 387.529,773.326 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,466.791 387.529,466.791 \"/>\n", - "<polyline clip-path=\"url(#clip900)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,160.256 387.529,160.256 \"/>\n", - "<path clip-path=\"url(#clip900)\" d=\"M320.687 1372.19 Q317.076 1372.19 315.247 1375.76 Q313.442 1379.3 313.442 1386.43 Q313.442 1393.54 315.247 1397.1 Q317.076 1400.64 320.687 1400.64 Q324.321 1400.64 326.127 1397.1 Q327.955 1393.54 327.955 1386.43 Q327.955 1379.3 326.127 1375.76 Q324.321 1372.19 320.687 1372.19 M320.687 1368.49 Q326.497 1368.49 329.553 1373.1 Q332.631 1377.68 332.631 1386.43 Q332.631 1395.16 329.553 1399.76 Q326.497 1404.35 320.687 1404.35 Q314.877 1404.35 311.798 1399.76 Q308.743 1395.16 308.743 1386.43 Q308.743 1377.68 311.798 1373.1 Q314.877 1368.49 320.687 1368.49 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M119.885 1099.65 L136.204 1099.65 L136.204 1103.59 L114.26 1103.59 L114.26 1099.65 Q116.922 1096.9 121.505 1092.27 Q126.112 1087.62 127.292 1086.27 Q129.538 1083.75 130.417 1082.01 Q131.32 1080.26 131.32 1078.57 Q131.32 1075.81 129.376 1074.07 Q127.455 1072.34 124.353 1072.34 Q122.154 1072.34 119.7 1073.1 Q117.269 1073.87 114.492 1075.42 L114.492 1070.7 Q117.316 1069.56 119.769 1068.98 Q122.223 1068.4 124.26 1068.4 Q129.63 1068.4 132.825 1071.09 Q136.019 1073.77 136.019 1078.26 Q136.019 1080.39 135.209 1082.32 Q134.422 1084.21 132.316 1086.81 Q131.737 1087.48 128.635 1090.69 Q125.533 1093.89 119.885 1099.65 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M146.019 1097.71 L150.903 1097.71 L150.903 1103.59 L146.019 1103.59 L146.019 1097.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M161.135 1069.03 L179.491 1069.03 L179.491 1072.96 L165.417 1072.96 L165.417 1081.44 Q166.436 1081.09 167.454 1080.93 Q168.473 1080.74 169.491 1080.74 Q175.278 1080.74 178.658 1083.91 Q182.038 1087.08 182.038 1092.5 Q182.038 1098.08 178.565 1101.18 Q175.093 1104.26 168.774 1104.26 Q166.598 1104.26 164.329 1103.89 Q162.084 1103.52 159.677 1102.78 L159.677 1098.08 Q161.76 1099.21 163.982 1099.77 Q166.204 1100.32 168.681 1100.32 Q172.686 1100.32 175.024 1098.22 Q177.362 1096.11 177.362 1092.5 Q177.362 1088.89 175.024 1086.78 Q172.686 1084.68 168.681 1084.68 Q166.806 1084.68 164.931 1085.09 Q163.079 1085.51 161.135 1086.39 L161.135 1069.03 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M201.25 1072.11 Q197.639 1072.11 195.811 1075.67 Q194.005 1079.21 194.005 1086.34 Q194.005 1093.45 195.811 1097.01 Q197.639 1100.56 201.25 1100.56 Q204.885 1100.56 206.69 1097.01 Q208.519 1093.45 208.519 1086.34 Q208.519 1079.21 206.69 1075.67 Q204.885 1072.11 201.25 1072.11 M201.25 1068.4 Q207.061 1068.4 210.116 1073.01 Q213.195 1077.59 213.195 1086.34 Q213.195 1095.07 210.116 1099.68 Q207.061 1104.26 201.25 1104.26 Q195.44 1104.26 192.362 1099.68 Q189.306 1095.07 189.306 1086.34 Q189.306 1077.59 192.362 1073.01 Q195.44 1068.4 201.25 1068.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M249.584 1078.13 L239.005 1088.75 L249.584 1099.33 L246.829 1102.13 L236.204 1091.51 L225.579 1102.13 L222.848 1099.33 L233.403 1088.75 L222.848 1078.13 L225.579 1075.32 L236.204 1085.95 L246.829 1075.32 L249.584 1078.13 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M261.945 1099.65 L269.583 1099.65 L269.583 1073.29 L261.273 1074.95 L261.273 1070.7 L269.537 1069.03 L274.213 1069.03 L274.213 1099.65 L281.852 1099.65 L281.852 1103.59 L261.945 1103.59 L261.945 1099.65 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M301.296 1072.11 Q297.685 1072.11 295.856 1075.67 Q294.051 1079.21 294.051 1086.34 Q294.051 1093.45 295.856 1097.01 Q297.685 1100.56 301.296 1100.56 Q304.93 1100.56 306.736 1097.01 Q308.565 1093.45 308.565 1086.34 Q308.565 1079.21 306.736 1075.67 Q304.93 1072.11 301.296 1072.11 M301.296 1068.4 Q307.106 1068.4 310.162 1073.01 Q313.241 1077.59 313.241 1086.34 Q313.241 1095.07 310.162 1099.68 Q307.106 1104.26 301.296 1104.26 Q295.486 1104.26 292.407 1099.68 Q289.352 1095.07 289.352 1086.34 Q289.352 1077.59 292.407 1073.01 Q295.486 1068.4 301.296 1068.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M323.265 1060.62 Q320.707 1060.62 319.203 1062.37 Q317.717 1064.12 317.717 1067.17 Q317.717 1070.2 319.203 1071.97 Q320.707 1073.71 323.265 1073.71 Q325.823 1073.71 327.309 1071.97 Q328.813 1070.2 328.813 1067.17 Q328.813 1064.12 327.309 1062.37 Q325.823 1060.62 323.265 1060.62 M330.807 1048.72 L330.807 1052.18 Q329.378 1051.5 327.911 1051.14 Q326.462 1050.79 325.033 1050.79 Q321.271 1050.79 319.278 1053.33 Q317.303 1055.87 317.021 1061 Q318.131 1059.36 319.804 1058.5 Q321.478 1057.61 323.491 1057.61 Q327.723 1057.61 330.168 1060.19 Q332.631 1062.75 332.631 1067.17 Q332.631 1071.49 330.074 1074.11 Q327.516 1076.72 323.265 1076.72 Q318.394 1076.72 315.817 1073 Q313.241 1069.26 313.241 1062.17 Q313.241 1055.51 316.4 1051.56 Q319.56 1047.59 324.883 1047.59 Q326.312 1047.59 327.76 1047.87 Q329.227 1048.15 330.807 1048.72 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M115.904 762.494 L134.26 762.494 L134.26 766.429 L120.186 766.429 L120.186 774.901 Q121.205 774.554 122.223 774.392 Q123.242 774.206 124.26 774.206 Q130.047 774.206 133.427 777.378 Q136.806 780.549 136.806 785.966 Q136.806 791.544 133.334 794.646 Q129.862 797.725 123.543 797.725 Q121.367 797.725 119.098 797.355 Q116.853 796.984 114.445 796.243 L114.445 791.544 Q116.529 792.679 118.751 793.234 Q120.973 793.79 123.45 793.79 Q127.455 793.79 129.792 791.683 Q132.13 789.577 132.13 785.966 Q132.13 782.355 129.792 780.248 Q127.455 778.142 123.45 778.142 Q121.575 778.142 119.7 778.558 Q117.848 778.975 115.904 779.855 L115.904 762.494 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M146.019 791.174 L150.903 791.174 L150.903 797.054 L146.019 797.054 L146.019 791.174 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M171.089 765.572 Q167.477 765.572 165.649 769.137 Q163.843 772.679 163.843 779.808 Q163.843 786.915 165.649 790.48 Q167.477 794.021 171.089 794.021 Q174.723 794.021 176.528 790.48 Q178.357 786.915 178.357 779.808 Q178.357 772.679 176.528 769.137 Q174.723 765.572 171.089 765.572 M171.089 761.869 Q176.899 761.869 179.954 766.475 Q183.033 771.058 183.033 779.808 Q183.033 788.535 179.954 793.142 Q176.899 797.725 171.089 797.725 Q165.278 797.725 162.2 793.142 Q159.144 788.535 159.144 779.808 Q159.144 771.058 162.2 766.475 Q165.278 761.869 171.089 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M201.25 765.572 Q197.639 765.572 195.811 769.137 Q194.005 772.679 194.005 779.808 Q194.005 786.915 195.811 790.48 Q197.639 794.021 201.25 794.021 Q204.885 794.021 206.69 790.48 Q208.519 786.915 208.519 779.808 Q208.519 772.679 206.69 769.137 Q204.885 765.572 201.25 765.572 M201.25 761.869 Q207.061 761.869 210.116 766.475 Q213.195 771.058 213.195 779.808 Q213.195 788.535 210.116 793.142 Q207.061 797.725 201.25 797.725 Q195.44 797.725 192.362 793.142 Q189.306 788.535 189.306 779.808 Q189.306 771.058 192.362 766.475 Q195.44 761.869 201.25 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M249.584 771.591 L239.005 782.216 L249.584 792.794 L246.829 795.595 L236.204 784.97 L225.579 795.595 L222.848 792.794 L233.403 782.216 L222.848 771.591 L225.579 768.79 L236.204 779.415 L246.829 768.79 L249.584 771.591 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M261.945 793.118 L269.583 793.118 L269.583 766.753 L261.273 768.419 L261.273 764.16 L269.537 762.494 L274.213 762.494 L274.213 793.118 L281.852 793.118 L281.852 797.054 L261.945 797.054 L261.945 793.118 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M301.296 765.572 Q297.685 765.572 295.856 769.137 Q294.051 772.679 294.051 779.808 Q294.051 786.915 295.856 790.48 Q297.685 794.021 301.296 794.021 Q304.93 794.021 306.736 790.48 Q308.565 786.915 308.565 779.808 Q308.565 772.679 306.736 769.137 Q304.93 765.572 301.296 765.572 M301.296 761.869 Q307.106 761.869 310.162 766.475 Q313.241 771.058 313.241 779.808 Q313.241 788.535 310.162 793.142 Q307.106 797.725 301.296 797.725 Q295.486 797.725 292.407 793.142 Q289.352 788.535 289.352 779.808 Q289.352 771.058 292.407 766.475 Q295.486 761.869 301.296 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M323.265 754.089 Q320.707 754.089 319.203 755.838 Q317.717 757.587 317.717 760.634 Q317.717 763.662 319.203 765.43 Q320.707 767.179 323.265 767.179 Q325.823 767.179 327.309 765.43 Q328.813 763.662 328.813 760.634 Q328.813 757.587 327.309 755.838 Q325.823 754.089 323.265 754.089 M330.807 742.184 L330.807 745.644 Q329.378 744.967 327.911 744.61 Q326.462 744.253 325.033 744.253 Q321.271 744.253 319.278 746.792 Q317.303 749.331 317.021 754.465 Q318.131 752.829 319.804 751.964 Q321.478 751.08 323.491 751.08 Q327.723 751.08 330.168 753.657 Q332.631 756.214 332.631 760.634 Q332.631 764.96 330.074 767.574 Q327.516 770.189 323.265 770.189 Q318.394 770.189 315.817 766.465 Q313.241 762.722 313.241 755.631 Q313.241 748.973 316.4 745.024 Q319.56 741.055 324.883 741.055 Q326.312 741.055 327.76 741.337 Q329.227 741.62 330.807 742.184 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M114.677 455.959 L136.899 455.959 L136.899 457.949 L124.353 490.519 L119.468 490.519 L131.274 459.894 L114.677 459.894 L114.677 455.959 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M146.019 484.639 L150.903 484.639 L150.903 490.519 L146.019 490.519 L146.019 484.639 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M161.135 455.959 L179.491 455.959 L179.491 459.894 L165.417 459.894 L165.417 468.366 Q166.436 468.019 167.454 467.857 Q168.473 467.672 169.491 467.672 Q175.278 467.672 178.658 470.843 Q182.038 474.014 182.038 479.431 Q182.038 485.01 178.565 488.111 Q175.093 491.19 168.774 491.19 Q166.598 491.19 164.329 490.82 Q162.084 490.449 159.677 489.709 L159.677 485.01 Q161.76 486.144 163.982 486.699 Q166.204 487.255 168.681 487.255 Q172.686 487.255 175.024 485.148 Q177.362 483.042 177.362 479.431 Q177.362 475.82 175.024 473.713 Q172.686 471.607 168.681 471.607 Q166.806 471.607 164.931 472.023 Q163.079 472.44 161.135 473.32 L161.135 455.959 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M201.25 459.037 Q197.639 459.037 195.811 462.602 Q194.005 466.144 194.005 473.273 Q194.005 480.38 195.811 483.945 Q197.639 487.486 201.25 487.486 Q204.885 487.486 206.69 483.945 Q208.519 480.38 208.519 473.273 Q208.519 466.144 206.69 462.602 Q204.885 459.037 201.25 459.037 M201.25 455.334 Q207.061 455.334 210.116 459.94 Q213.195 464.524 213.195 473.273 Q213.195 482 210.116 486.607 Q207.061 491.19 201.25 491.19 Q195.44 491.19 192.362 486.607 Q189.306 482 189.306 473.273 Q189.306 464.524 192.362 459.94 Q195.44 455.334 201.25 455.334 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M249.584 465.056 L239.005 475.681 L249.584 486.26 L246.829 489.06 L236.204 478.435 L225.579 489.06 L222.848 486.26 L233.403 475.681 L222.848 465.056 L225.579 462.255 L236.204 472.88 L246.829 462.255 L249.584 465.056 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M261.945 486.584 L269.583 486.584 L269.583 460.218 L261.273 461.885 L261.273 457.625 L269.537 455.959 L274.213 455.959 L274.213 486.584 L281.852 486.584 L281.852 490.519 L261.945 490.519 L261.945 486.584 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M301.296 459.037 Q297.685 459.037 295.856 462.602 Q294.051 466.144 294.051 473.273 Q294.051 480.38 295.856 483.945 Q297.685 487.486 301.296 487.486 Q304.93 487.486 306.736 483.945 Q308.565 480.38 308.565 473.273 Q308.565 466.144 306.736 462.602 Q304.93 459.037 301.296 459.037 M301.296 455.334 Q307.106 455.334 310.162 459.94 Q313.241 464.524 313.241 473.273 Q313.241 482 310.162 486.607 Q307.106 491.19 301.296 491.19 Q295.486 491.19 292.407 486.607 Q289.352 482 289.352 473.273 Q289.352 464.524 292.407 459.94 Q295.486 455.334 301.296 455.334 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M323.265 447.554 Q320.707 447.554 319.203 449.303 Q317.717 451.053 317.717 454.099 Q317.717 457.127 319.203 458.895 Q320.707 460.645 323.265 460.645 Q325.823 460.645 327.309 458.895 Q328.813 457.127 328.813 454.099 Q328.813 451.053 327.309 449.303 Q325.823 447.554 323.265 447.554 M330.807 435.649 L330.807 439.11 Q329.378 438.433 327.911 438.075 Q326.462 437.718 325.033 437.718 Q321.271 437.718 319.278 440.257 Q317.303 442.796 317.021 447.93 Q318.131 446.294 319.804 445.429 Q321.478 444.545 323.491 444.545 Q327.723 444.545 330.168 447.122 Q332.631 449.68 332.631 454.099 Q332.631 458.425 330.074 461.039 Q327.516 463.654 323.265 463.654 Q318.394 463.654 315.817 459.93 Q313.241 456.187 313.241 449.097 Q313.241 442.439 316.4 438.489 Q319.56 434.521 324.883 434.521 Q326.312 434.521 327.76 434.803 Q329.227 435.085 330.807 435.649 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M118.003 180.049 L125.642 180.049 L125.642 153.683 L117.332 155.35 L117.332 151.091 L125.595 149.424 L130.271 149.424 L130.271 180.049 L137.91 180.049 L137.91 183.984 L118.003 183.984 L118.003 180.049 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M147.355 178.104 L152.239 178.104 L152.239 183.984 L147.355 183.984 L147.355 178.104 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M172.424 152.503 Q168.813 152.503 166.984 156.067 Q165.179 159.609 165.179 166.739 Q165.179 173.845 166.984 177.41 Q168.813 180.952 172.424 180.952 Q176.058 180.952 177.864 177.41 Q179.692 173.845 179.692 166.739 Q179.692 159.609 177.864 156.067 Q176.058 152.503 172.424 152.503 M172.424 148.799 Q178.234 148.799 181.29 153.405 Q184.368 157.989 184.368 166.739 Q184.368 175.465 181.29 180.072 Q178.234 184.655 172.424 184.655 Q166.614 184.655 163.535 180.072 Q160.48 175.465 160.48 166.739 Q160.48 157.989 163.535 153.405 Q166.614 148.799 172.424 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M202.586 152.503 Q198.975 152.503 197.146 156.067 Q195.34 159.609 195.34 166.739 Q195.34 173.845 197.146 177.41 Q198.975 180.952 202.586 180.952 Q206.22 180.952 208.026 177.41 Q209.854 173.845 209.854 166.739 Q209.854 159.609 208.026 156.067 Q206.22 152.503 202.586 152.503 M202.586 148.799 Q208.396 148.799 211.451 153.405 Q214.53 157.989 214.53 166.739 Q214.53 175.465 211.451 180.072 Q208.396 184.655 202.586 184.655 Q196.776 184.655 193.697 180.072 Q190.641 175.465 190.641 166.739 Q190.641 157.989 193.697 153.405 Q196.776 148.799 202.586 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M250.919 158.521 L240.34 169.146 L250.919 179.725 L248.164 182.526 L237.539 171.901 L226.914 182.526 L224.183 179.725 L234.738 169.146 L224.183 158.521 L226.914 155.72 L237.539 166.345 L248.164 155.72 L250.919 158.521 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M263.28 180.049 L270.919 180.049 L270.919 153.683 L262.609 155.35 L262.609 151.091 L270.872 149.424 L275.548 149.424 L275.548 180.049 L283.187 180.049 L283.187 183.984 L263.28 183.984 L263.28 180.049 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M302.632 152.503 Q299.02 152.503 297.192 156.067 Q295.386 159.609 295.386 166.739 Q295.386 173.845 297.192 177.41 Q299.02 180.952 302.632 180.952 Q306.266 180.952 308.071 177.41 Q309.9 173.845 309.9 166.739 Q309.9 159.609 308.071 156.067 Q306.266 152.503 302.632 152.503 M302.632 148.799 Q308.442 148.799 311.497 153.405 Q314.576 157.989 314.576 166.739 Q314.576 175.465 311.497 180.072 Q308.442 184.655 302.632 184.655 Q296.821 184.655 293.743 180.072 Q290.687 175.465 290.687 166.739 Q290.687 157.989 293.743 153.405 Q296.821 148.799 302.632 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M314.576 128.494 L332.631 128.494 L332.631 130.111 L322.438 156.574 L318.469 156.574 L328.061 131.691 L314.576 131.691 L314.576 128.494 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M16.4842 973.416 L16.4842 933.217 L21.895 933.217 L21.895 950.086 L64.0042 950.086 L64.0042 956.547 L21.895 956.547 L21.895 973.416 L16.4842 973.416 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M33.8307 916.188 Q33.2578 917.175 33.0032 918.353 Q32.7167 919.499 32.7167 920.899 Q32.7167 925.864 35.9632 928.538 Q39.1779 931.18 45.2253 931.18 L64.0042 931.18 L64.0042 937.068 L28.3562 937.068 L28.3562 931.18 L33.8944 931.18 Q30.6479 929.334 29.0883 926.373 Q27.4968 923.413 27.4968 919.18 Q27.4968 918.575 27.5923 917.843 Q27.656 917.111 27.8151 916.22 L33.8307 916.188 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M46.0847 893.845 Q46.0847 900.942 47.7079 903.68 Q49.3312 906.417 53.2461 906.417 Q56.3653 906.417 58.2114 904.38 Q60.0256 902.311 60.0256 898.778 Q60.0256 893.908 56.5881 890.98 Q53.1188 888.02 47.3897 888.02 L46.0847 888.02 L46.0847 893.845 M43.6657 882.164 L64.0042 882.164 L64.0042 888.02 L58.5933 888.02 Q61.8398 890.025 63.3994 893.017 Q64.9272 896.009 64.9272 900.338 Q64.9272 905.812 61.8716 909.059 Q58.7843 912.273 53.6281 912.273 Q47.6125 912.273 44.5569 908.263 Q41.5014 904.221 41.5014 896.232 L41.5014 888.02 L40.9285 888.02 Q36.8862 888.02 34.6901 890.694 Q32.4621 893.335 32.4621 898.142 Q32.4621 901.197 33.1941 904.094 Q33.9262 906.99 35.3903 909.664 L29.9795 909.664 Q28.7381 906.449 28.1334 903.425 Q27.4968 900.401 27.4968 897.537 Q27.4968 889.803 31.5072 885.983 Q35.5176 882.164 43.6657 882.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M29.7248 844.447 L35.1993 844.447 Q33.8307 846.929 33.1623 849.444 Q32.4621 851.927 32.4621 854.473 Q32.4621 860.17 36.0905 863.321 Q39.6872 866.472 46.212 866.472 Q52.7369 866.472 56.3653 863.321 Q59.9619 860.17 59.9619 854.473 Q59.9619 851.927 59.2935 849.444 Q58.5933 846.929 57.2247 844.447 L62.6355 844.447 Q63.7814 846.898 64.3543 849.539 Q64.9272 852.149 64.9272 855.109 Q64.9272 863.162 59.8664 867.904 Q54.8057 872.647 46.212 872.647 Q37.491 872.647 32.4939 867.873 Q27.4968 863.067 27.4968 854.727 Q27.4968 852.022 28.0697 849.444 Q28.6108 846.866 29.7248 844.447 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M18.2347 828.469 L28.3562 828.469 L28.3562 816.406 L32.9077 816.406 L32.9077 828.469 L52.2594 828.469 Q56.6199 828.469 57.8613 827.291 Q59.1026 826.082 59.1026 822.421 L59.1026 816.406 L64.0042 816.406 L64.0042 822.421 Q64.0042 829.201 61.4897 831.779 Q58.9434 834.357 52.2594 834.357 L32.9077 834.357 L32.9077 838.654 L28.3562 838.654 L28.3562 834.357 L18.2347 834.357 L18.2347 828.469 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M28.3562 808.703 L28.3562 802.847 L64.0042 802.847 L64.0042 808.703 L28.3562 808.703 M14.479 808.703 L14.479 802.847 L21.895 802.847 L21.895 808.703 L14.479 808.703 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M32.4621 776.779 Q32.4621 781.49 36.1542 784.227 Q39.8145 786.965 46.212 786.965 Q52.6095 786.965 56.3017 784.259 Q59.9619 781.522 59.9619 776.779 Q59.9619 772.101 56.2698 769.363 Q52.5777 766.626 46.212 766.626 Q39.8781 766.626 36.186 769.363 Q32.4621 772.101 32.4621 776.779 M27.4968 776.779 Q27.4968 769.141 32.4621 764.78 Q37.4273 760.42 46.212 760.42 Q54.9649 760.42 59.9619 764.78 Q64.9272 769.141 64.9272 776.779 Q64.9272 784.45 59.9619 788.811 Q54.9649 793.139 46.212 793.139 Q37.4273 793.139 32.4621 788.811 Q27.4968 784.45 27.4968 776.779 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M42.4881 721.079 L64.0042 721.079 L64.0042 726.936 L42.679 726.936 Q37.6183 726.936 35.1038 728.909 Q32.5894 730.883 32.5894 734.829 Q32.5894 739.572 35.6131 742.309 Q38.6368 745.046 43.8567 745.046 L64.0042 745.046 L64.0042 750.935 L28.3562 750.935 L28.3562 745.046 L33.8944 745.046 Q30.6797 742.946 29.0883 740.113 Q27.4968 737.248 27.4968 733.524 Q27.4968 727.381 31.3163 724.23 Q35.1038 721.079 42.4881 721.079 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M14.479 689.219 L14.479 675.724 L19.0304 675.724 L19.0304 683.363 L68.0464 683.363 L68.0464 675.724 L72.5979 675.724 L72.5979 689.219 L14.479 689.219 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M21.7677 656.563 L39.6235 656.563 L39.6235 648.479 Q39.6235 643.991 37.3 641.54 Q34.9765 639.089 30.6797 639.089 Q26.4147 639.089 24.0912 641.54 Q21.7677 643.991 21.7677 648.479 L21.7677 656.563 M16.4842 662.992 L16.4842 648.479 Q16.4842 640.49 20.1126 636.416 Q23.7092 632.31 30.6797 632.31 Q37.7138 632.31 41.3104 636.416 Q44.907 640.49 44.907 648.479 L44.907 656.563 L64.0042 656.563 L64.0042 662.992 L16.4842 662.992 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M46.0847 610.666 Q46.0847 617.764 47.7079 620.501 Q49.3312 623.239 53.2461 623.239 Q56.3653 623.239 58.2114 621.202 Q60.0256 619.133 60.0256 615.6 Q60.0256 610.73 56.5881 607.802 Q53.1188 604.842 47.3897 604.842 L46.0847 604.842 L46.0847 610.666 M43.6657 598.985 L64.0042 598.985 L64.0042 604.842 L58.5933 604.842 Q61.8398 606.847 63.3994 609.839 Q64.9272 612.831 64.9272 617.159 Q64.9272 622.634 61.8716 625.88 Q58.7843 629.095 53.6281 629.095 Q47.6125 629.095 44.5569 625.085 Q41.5014 621.042 41.5014 613.053 L41.5014 604.842 L40.9285 604.842 Q36.8862 604.842 34.6901 607.515 Q32.4621 610.157 32.4621 614.963 Q32.4621 618.019 33.1941 620.915 Q33.9262 623.811 35.3903 626.485 L29.9795 626.485 Q28.7381 623.27 28.1334 620.247 Q27.4968 617.223 27.4968 614.358 Q27.4968 606.624 31.5072 602.805 Q35.5176 598.985 43.6657 598.985 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M14.479 573.236 L72.5979 573.236 L72.5979 586.731 L68.0464 586.731 L68.0464 579.124 L19.0304 579.124 L19.0304 586.731 L14.479 586.731 L14.479 573.236 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M903.063 12.096 L954.226 12.096 L954.226 18.9825 L932.756 18.9825 L932.756 72.576 L924.533 72.576 L924.533 18.9825 L903.063 18.9825 L903.063 12.096 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M975.898 34.1734 Q974.642 33.4443 973.144 33.1202 Q971.685 32.7556 969.903 32.7556 Q963.584 32.7556 960.181 36.8875 Q956.818 40.9789 956.818 48.6757 L956.818 72.576 L949.324 72.576 L949.324 27.2059 L956.818 27.2059 L956.818 34.2544 Q959.168 30.1225 962.935 28.1376 Q966.703 26.1121 972.09 26.1121 Q972.86 26.1121 973.792 26.2337 Q974.723 26.3147 975.858 26.5172 L975.898 34.1734 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1004.34 49.7694 Q995.302 49.7694 991.818 51.8354 Q988.335 53.9013 988.335 58.8839 Q988.335 62.8538 990.927 65.2034 Q993.56 67.5124 998.057 67.5124 Q1004.25 67.5124 1007.98 63.1374 Q1011.75 58.7219 1011.75 51.4303 L1011.75 49.7694 L1004.34 49.7694 M1019.2 46.6907 L1019.2 72.576 L1011.75 72.576 L1011.75 65.6895 Q1009.2 69.8214 1005.39 71.8063 Q1001.58 73.7508 996.072 73.7508 Q989.104 73.7508 984.972 69.8619 Q980.881 65.9325 980.881 59.3701 Q980.881 51.7138 985.985 47.825 Q991.13 43.9361 1001.3 43.9361 L1011.75 43.9361 L1011.75 43.2069 Q1011.75 38.0623 1008.35 35.2672 Q1004.98 32.4315 998.867 32.4315 Q994.978 32.4315 991.292 33.3632 Q987.605 34.295 984.203 36.1584 L984.203 29.2718 Q988.294 27.692 992.142 26.9223 Q995.991 26.1121 999.637 26.1121 Q1009.48 26.1121 1014.34 31.2163 Q1019.2 36.3204 1019.2 46.6907 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1067.21 28.9478 L1067.21 35.9153 Q1064.05 34.1734 1060.85 33.3227 Q1057.69 32.4315 1054.45 32.4315 Q1047.19 32.4315 1043.18 37.0496 Q1039.17 41.6271 1039.17 49.9314 Q1039.17 58.2358 1043.18 62.8538 Q1047.19 67.4314 1054.45 67.4314 Q1057.69 67.4314 1060.85 66.5807 Q1064.05 65.6895 1067.21 63.9476 L1067.21 70.8341 Q1064.09 72.2924 1060.72 73.0216 Q1057.4 73.7508 1053.64 73.7508 Q1043.39 73.7508 1037.35 67.3098 Q1031.31 60.8689 1031.31 49.9314 Q1031.31 38.832 1037.39 32.472 Q1043.51 26.1121 1054.12 26.1121 Q1057.56 26.1121 1060.85 26.8413 Q1064.13 27.5299 1067.21 28.9478 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1087.54 14.324 L1087.54 27.2059 L1102.89 27.2059 L1102.89 32.9987 L1087.54 32.9987 L1087.54 57.6282 Q1087.54 63.1779 1089.04 64.7578 Q1090.58 66.3376 1095.24 66.3376 L1102.89 66.3376 L1102.89 72.576 L1095.24 72.576 Q1086.61 72.576 1083.33 69.3758 Q1080.05 66.1351 1080.05 57.6282 L1080.05 32.9987 L1074.58 32.9987 L1074.58 27.2059 L1080.05 27.2059 L1080.05 14.324 L1087.54 14.324 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1112.7 27.2059 L1120.15 27.2059 L1120.15 72.576 L1112.7 72.576 L1112.7 27.2059 M1112.7 9.54393 L1120.15 9.54393 L1120.15 18.9825 L1112.7 18.9825 L1112.7 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1153.33 32.4315 Q1147.33 32.4315 1143.85 37.1306 Q1140.36 41.7891 1140.36 49.9314 Q1140.36 58.0738 1143.81 62.7728 Q1147.29 67.4314 1153.33 67.4314 Q1159.28 67.4314 1162.77 62.7323 Q1166.25 58.0333 1166.25 49.9314 Q1166.25 41.8701 1162.77 37.1711 Q1159.28 32.4315 1153.33 32.4315 M1153.33 26.1121 Q1163.05 26.1121 1168.6 32.4315 Q1174.15 38.7509 1174.15 49.9314 Q1174.15 61.0714 1168.6 67.4314 Q1163.05 73.7508 1153.33 73.7508 Q1143.57 73.7508 1138.02 67.4314 Q1132.51 61.0714 1132.51 49.9314 Q1132.51 38.7509 1138.02 32.4315 Q1143.57 26.1121 1153.33 26.1121 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1224.22 45.1919 L1224.22 72.576 L1216.77 72.576 L1216.77 45.4349 Q1216.77 38.994 1214.25 35.7938 Q1211.74 32.5936 1206.72 32.5936 Q1200.68 32.5936 1197.2 36.4419 Q1193.72 40.2903 1193.72 46.9338 L1193.72 72.576 L1186.22 72.576 L1186.22 27.2059 L1193.72 27.2059 L1193.72 34.2544 Q1196.39 30.163 1199.99 28.1376 Q1203.64 26.1121 1208.38 26.1121 Q1216.2 26.1121 1220.21 30.9732 Q1224.22 35.7938 1224.22 45.1919 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1235.32 46.5287 L1257.15 46.5287 L1257.15 53.1722 L1235.32 53.1722 L1235.32 46.5287 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1298.88 34.0924 L1298.88 9.54393 L1306.33 9.54393 L1306.33 72.576 L1298.88 72.576 L1298.88 65.7705 Q1296.53 69.8214 1292.92 71.8063 Q1289.36 73.7508 1284.33 73.7508 Q1276.11 73.7508 1270.93 67.1883 Q1265.78 60.6258 1265.78 49.9314 Q1265.78 39.2371 1270.93 32.6746 Q1276.11 26.1121 1284.33 26.1121 Q1289.36 26.1121 1292.92 28.0971 Q1296.53 30.0415 1298.88 34.0924 M1273.48 49.9314 Q1273.48 58.1548 1276.84 62.8538 Q1280.24 67.5124 1286.16 67.5124 Q1292.07 67.5124 1295.47 62.8538 Q1298.88 58.1548 1298.88 49.9314 Q1298.88 41.7081 1295.47 37.0496 Q1292.07 32.3505 1286.16 32.3505 Q1280.24 32.3505 1276.84 37.0496 Q1273.48 41.7081 1273.48 49.9314 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1321.68 27.2059 L1329.14 27.2059 L1329.14 72.576 L1321.68 72.576 L1321.68 27.2059 M1321.68 9.54393 L1329.14 9.54393 L1329.14 18.9825 L1321.68 18.9825 L1321.68 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1373.66 28.5427 L1373.66 35.5912 Q1370.5 33.9709 1367.09 33.1607 Q1363.69 32.3505 1360.05 32.3505 Q1354.5 32.3505 1351.7 34.0519 Q1348.95 35.7533 1348.95 39.156 Q1348.95 41.7486 1350.93 43.2475 Q1352.92 44.7058 1358.91 46.0426 L1361.46 46.6097 Q1369.4 48.3111 1372.72 51.4303 Q1376.09 54.509 1376.09 60.0587 Q1376.09 66.3781 1371.06 70.0644 Q1366.08 73.7508 1357.33 73.7508 Q1353.69 73.7508 1349.72 73.0216 Q1345.79 72.3329 1341.41 70.9151 L1341.41 63.2184 Q1345.54 65.3654 1349.55 66.4591 Q1353.56 67.5124 1357.49 67.5124 Q1362.76 67.5124 1365.6 65.73 Q1368.43 63.9071 1368.43 60.6258 Q1368.43 57.5877 1366.36 55.9673 Q1364.34 54.3469 1357.41 52.8481 L1354.82 52.2405 Q1347.89 50.7821 1344.81 47.7845 Q1341.74 44.7463 1341.74 39.4801 Q1341.74 33.0797 1346.27 29.5959 Q1350.81 26.1121 1359.15 26.1121 Q1363.29 26.1121 1366.93 26.7198 Q1370.58 27.3274 1373.66 28.5427 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1395.17 65.7705 L1395.17 89.8329 L1387.67 89.8329 L1387.67 27.2059 L1395.17 27.2059 L1395.17 34.0924 Q1397.52 30.0415 1401.08 28.0971 Q1404.69 26.1121 1409.67 26.1121 Q1417.93 26.1121 1423.08 32.6746 Q1428.26 39.2371 1428.26 49.9314 Q1428.26 60.6258 1423.08 67.1883 Q1417.93 73.7508 1409.67 73.7508 Q1404.69 73.7508 1401.08 71.8063 Q1397.52 69.8214 1395.17 65.7705 M1420.53 49.9314 Q1420.53 41.7081 1417.12 37.0496 Q1413.76 32.3505 1407.85 32.3505 Q1401.93 32.3505 1398.53 37.0496 Q1395.17 41.7081 1395.17 49.9314 Q1395.17 58.1548 1398.53 62.8538 Q1401.93 67.5124 1407.85 67.5124 Q1413.76 67.5124 1417.12 62.8538 Q1420.53 58.1548 1420.53 49.9314 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1440.62 9.54393 L1448.07 9.54393 L1448.07 72.576 L1440.62 72.576 L1440.62 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1484.29 49.7694 Q1475.25 49.7694 1471.77 51.8354 Q1468.29 53.9013 1468.29 58.8839 Q1468.29 62.8538 1470.88 65.2034 Q1473.51 67.5124 1478.01 67.5124 Q1484.21 67.5124 1487.93 63.1374 Q1491.7 58.7219 1491.7 51.4303 L1491.7 49.7694 L1484.29 49.7694 M1499.15 46.6907 L1499.15 72.576 L1491.7 72.576 L1491.7 65.6895 Q1489.15 69.8214 1485.34 71.8063 Q1481.53 73.7508 1476.02 73.7508 Q1469.06 73.7508 1464.92 69.8619 Q1460.83 65.9325 1460.83 59.3701 Q1460.83 51.7138 1465.94 47.825 Q1471.08 43.9361 1481.25 43.9361 L1491.7 43.9361 L1491.7 43.2069 Q1491.7 38.0623 1488.3 35.2672 Q1484.93 32.4315 1478.82 32.4315 Q1474.93 32.4315 1471.24 33.3632 Q1467.56 34.295 1464.15 36.1584 L1464.15 29.2718 Q1468.25 27.692 1472.09 26.9223 Q1475.94 26.1121 1479.59 26.1121 Q1489.43 26.1121 1494.29 31.2163 Q1499.15 36.3204 1499.15 46.6907 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1547.16 28.9478 L1547.16 35.9153 Q1544 34.1734 1540.8 33.3227 Q1537.64 32.4315 1534.4 32.4315 Q1527.15 32.4315 1523.13 37.0496 Q1519.12 41.6271 1519.12 49.9314 Q1519.12 58.2358 1523.13 62.8538 Q1527.15 67.4314 1534.4 67.4314 Q1537.64 67.4314 1540.8 66.5807 Q1544 65.6895 1547.16 63.9476 L1547.16 70.8341 Q1544.04 72.2924 1540.68 73.0216 Q1537.35 73.7508 1533.59 73.7508 Q1523.34 73.7508 1517.3 67.3098 Q1511.27 60.8689 1511.27 49.9314 Q1511.27 38.832 1517.34 32.472 Q1523.46 26.1121 1534.07 26.1121 Q1537.52 26.1121 1540.8 26.8413 Q1544.08 27.5299 1547.16 28.9478 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1598.93 48.0275 L1598.93 51.6733 L1564.66 51.6733 Q1565.14 59.3701 1569.27 63.421 Q1573.45 67.4314 1580.86 67.4314 Q1585.15 67.4314 1589.16 66.3781 Q1593.22 65.3249 1597.19 63.2184 L1597.19 70.267 Q1593.18 71.9684 1588.96 72.8596 Q1584.75 73.7508 1580.41 73.7508 Q1569.56 73.7508 1563.2 67.4314 Q1556.88 61.1119 1556.88 50.3365 Q1556.88 39.1965 1562.87 32.6746 Q1568.91 26.1121 1579.12 26.1121 Q1588.27 26.1121 1593.58 32.0264 Q1598.93 37.9003 1598.93 48.0275 M1591.47 45.84 Q1591.39 39.7232 1588.03 36.0774 Q1584.71 32.4315 1579.2 32.4315 Q1572.96 32.4315 1569.19 35.9558 Q1565.47 39.4801 1564.9 45.8805 L1591.47 45.84 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1646.48 35.9153 Q1649.28 30.8922 1653.17 28.5022 Q1657.06 26.1121 1662.32 26.1121 Q1669.41 26.1121 1673.26 31.0947 Q1677.11 36.0368 1677.11 45.1919 L1677.11 72.576 L1669.62 72.576 L1669.62 45.4349 Q1669.62 38.913 1667.31 35.7533 Q1665 32.5936 1660.26 32.5936 Q1654.47 32.5936 1651.1 36.4419 Q1647.74 40.2903 1647.74 46.9338 L1647.74 72.576 L1640.25 72.576 L1640.25 45.4349 Q1640.25 38.8725 1637.94 35.7533 Q1635.63 32.5936 1630.81 32.5936 Q1625.1 32.5936 1621.73 36.4824 Q1618.37 40.3308 1618.37 46.9338 L1618.37 72.576 L1610.88 72.576 L1610.88 27.2059 L1618.37 27.2059 L1618.37 34.2544 Q1620.92 30.082 1624.49 28.0971 Q1628.05 26.1121 1632.95 26.1121 Q1637.9 26.1121 1641.34 28.6237 Q1644.82 31.1352 1646.48 35.9153 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1730.78 48.0275 L1730.78 51.6733 L1696.51 51.6733 Q1697 59.3701 1701.13 63.421 Q1705.3 67.4314 1712.72 67.4314 Q1717.01 67.4314 1721.02 66.3781 Q1725.07 65.3249 1729.04 63.2184 L1729.04 70.267 Q1725.03 71.9684 1720.82 72.8596 Q1716.61 73.7508 1712.27 73.7508 Q1701.42 73.7508 1695.06 67.4314 Q1688.74 61.1119 1688.74 50.3365 Q1688.74 39.1965 1694.73 32.6746 Q1700.77 26.1121 1710.98 26.1121 Q1720.13 26.1121 1725.44 32.0264 Q1730.78 37.9003 1730.78 48.0275 M1723.33 45.84 Q1723.25 39.7232 1719.89 36.0774 Q1716.57 32.4315 1711.06 32.4315 Q1704.82 32.4315 1701.05 35.9558 Q1697.32 39.4801 1696.76 45.8805 L1723.33 45.84 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1780.73 45.1919 L1780.73 72.576 L1773.28 72.576 L1773.28 45.4349 Q1773.28 38.994 1770.77 35.7938 Q1768.26 32.5936 1763.23 32.5936 Q1757.2 32.5936 1753.71 36.4419 Q1750.23 40.2903 1750.23 46.9338 L1750.23 72.576 L1742.73 72.576 L1742.73 27.2059 L1750.23 27.2059 L1750.23 34.2544 Q1752.9 30.163 1756.51 28.1376 Q1760.15 26.1121 1764.89 26.1121 Q1772.71 26.1121 1776.72 30.9732 Q1780.73 35.7938 1780.73 45.1919 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip900)\" d=\"M1802.97 14.324 L1802.97 27.2059 L1818.32 27.2059 L1818.32 32.9987 L1802.97 32.9987 L1802.97 57.6282 Q1802.97 63.1779 1804.47 64.7578 Q1806.01 66.3376 1810.67 66.3376 L1818.32 66.3376 L1818.32 72.576 L1810.67 72.576 Q1802.04 72.576 1798.76 69.3758 Q1795.48 66.1351 1795.48 57.6282 L1795.48 32.9987 L1790.01 32.9987 L1790.01 27.2059 L1795.48 27.2059 L1795.48 14.324 L1802.97 14.324 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip902)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none\" points=\"424.786,1386.4 926.263,773.326 985.537,705.207 1056.5,637.088 1137.34,568.969 1232.41,500.851 1357.01,432.732 1532.78,364.613 1754.25,296.494 2009.96,228.375 2296.6,160.256 \"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"424.786\" y1=\"1386.4\" x2=\"424.786\" y2=\"1370.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"424.786\" y1=\"1386.4\" x2=\"408.786\" y2=\"1386.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"424.786\" y1=\"1386.4\" x2=\"424.786\" y2=\"1402.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"424.786\" y1=\"1386.4\" x2=\"440.786\" y2=\"1386.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"926.263\" y1=\"773.326\" x2=\"926.263\" y2=\"757.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"926.263\" y1=\"773.326\" x2=\"910.263\" y2=\"773.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"926.263\" y1=\"773.326\" x2=\"926.263\" y2=\"789.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"926.263\" y1=\"773.326\" x2=\"942.263\" y2=\"773.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"985.537\" y1=\"705.207\" x2=\"985.537\" y2=\"689.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"985.537\" y1=\"705.207\" x2=\"969.537\" y2=\"705.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"985.537\" y1=\"705.207\" x2=\"985.537\" y2=\"721.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"985.537\" y1=\"705.207\" x2=\"1001.54\" y2=\"705.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1056.5\" y2=\"621.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1040.5\" y2=\"637.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1056.5\" y2=\"653.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1072.5\" y2=\"637.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1137.34\" y2=\"552.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1121.34\" y2=\"568.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1137.34\" y2=\"584.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1153.34\" y2=\"568.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1232.41\" y2=\"484.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1216.41\" y2=\"500.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1232.41\" y2=\"516.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1248.41\" y2=\"500.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1357.01\" y2=\"416.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1341.01\" y2=\"432.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1357.01\" y2=\"448.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1373.01\" y2=\"432.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1532.78\" y2=\"348.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1516.78\" y2=\"364.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1532.78\" y2=\"380.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1548.78\" y2=\"364.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1754.25\" y2=\"280.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1738.25\" y2=\"296.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1754.25\" y2=\"312.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1770.25\" y2=\"296.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2009.96\" y2=\"212.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"2009.96\" y1=\"228.375\" x2=\"1993.96\" y2=\"228.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2009.96\" y2=\"244.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2025.96\" y2=\"228.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2296.6\" y2=\"144.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2280.6\" y2=\"160.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2296.6\" y2=\"176.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip902)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2312.6\" y2=\"160.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"424.786,1423.18 424.786,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"792.598,1423.18 792.598,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1160.41,1423.18 1160.41,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1528.22,1423.18 1528.22,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1896.03,1423.18 1896.03,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2263.85,1423.18 2263.85,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,1386.4 2352.76,1386.4 \"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,1079.86 2352.76,1079.86 \"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,773.326 2352.76,773.326 \"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,466.791 2352.76,466.791 \"/>\n", + "<polyline clip-path=\"url(#clip512)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,160.256 2352.76,160.256 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1423.18 2352.76,1423.18 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"424.786,1423.18 424.786,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"792.598,1423.18 792.598,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1160.41,1423.18 1160.41,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1528.22,1423.18 1528.22,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1896.03,1423.18 1896.03,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2263.85,1423.18 2263.85,1404.28 \"/>\n", + "<path clip-path=\"url(#clip510)\" d=\"M387.089 1454.1 Q383.478 1454.1 381.65 1457.66 Q379.844 1461.2 379.844 1468.33 Q379.844 1475.44 381.65 1479.01 Q383.478 1482.55 387.089 1482.55 Q390.724 1482.55 392.529 1479.01 Q394.358 1475.44 394.358 1468.33 Q394.358 1461.2 392.529 1457.66 Q390.724 1454.1 387.089 1454.1 M387.089 1450.39 Q392.899 1450.39 395.955 1455 Q399.034 1459.58 399.034 1468.33 Q399.034 1477.06 395.955 1481.67 Q392.899 1486.25 387.089 1486.25 Q381.279 1486.25 378.2 1481.67 Q375.145 1477.06 375.145 1468.33 Q375.145 1459.58 378.2 1455 Q381.279 1450.39 387.089 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M407.251 1479.7 L412.135 1479.7 L412.135 1485.58 L407.251 1485.58 L407.251 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M432.321 1454.1 Q428.709 1454.1 426.881 1457.66 Q425.075 1461.2 425.075 1468.33 Q425.075 1475.44 426.881 1479.01 Q428.709 1482.55 432.321 1482.55 Q435.955 1482.55 437.76 1479.01 Q439.589 1475.44 439.589 1468.33 Q439.589 1461.2 437.76 1457.66 Q435.955 1454.1 432.321 1454.1 M432.321 1450.39 Q438.131 1450.39 441.186 1455 Q444.265 1459.58 444.265 1468.33 Q444.265 1477.06 441.186 1481.67 Q438.131 1486.25 432.321 1486.25 Q426.51 1486.25 423.432 1481.67 Q420.376 1477.06 420.376 1468.33 Q420.376 1459.58 423.432 1455 Q426.51 1450.39 432.321 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M462.482 1454.1 Q458.871 1454.1 457.043 1457.66 Q455.237 1461.2 455.237 1468.33 Q455.237 1475.44 457.043 1479.01 Q458.871 1482.55 462.482 1482.55 Q466.117 1482.55 467.922 1479.01 Q469.751 1475.44 469.751 1468.33 Q469.751 1461.2 467.922 1457.66 Q466.117 1454.1 462.482 1454.1 M462.482 1450.39 Q468.293 1450.39 471.348 1455 Q474.427 1459.58 474.427 1468.33 Q474.427 1477.06 471.348 1481.67 Q468.293 1486.25 462.482 1486.25 Q456.672 1486.25 453.594 1481.67 Q450.538 1477.06 450.538 1468.33 Q450.538 1459.58 453.594 1455 Q456.672 1450.39 462.482 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M755.399 1454.1 Q751.788 1454.1 749.959 1457.66 Q748.154 1461.2 748.154 1468.33 Q748.154 1475.44 749.959 1479.01 Q751.788 1482.55 755.399 1482.55 Q759.033 1482.55 760.839 1479.01 Q762.668 1475.44 762.668 1468.33 Q762.668 1461.2 760.839 1457.66 Q759.033 1454.1 755.399 1454.1 M755.399 1450.39 Q761.209 1450.39 764.265 1455 Q767.344 1459.58 767.344 1468.33 Q767.344 1477.06 764.265 1481.67 Q761.209 1486.25 755.399 1486.25 Q749.589 1486.25 746.51 1481.67 Q743.455 1477.06 743.455 1468.33 Q743.455 1459.58 746.51 1455 Q749.589 1450.39 755.399 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M775.561 1479.7 L780.445 1479.7 L780.445 1485.58 L775.561 1485.58 L775.561 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M800.63 1454.1 Q797.019 1454.1 795.191 1457.66 Q793.385 1461.2 793.385 1468.33 Q793.385 1475.44 795.191 1479.01 Q797.019 1482.55 800.63 1482.55 Q804.265 1482.55 806.07 1479.01 Q807.899 1475.44 807.899 1468.33 Q807.899 1461.2 806.07 1457.66 Q804.265 1454.1 800.63 1454.1 M800.63 1450.39 Q806.441 1450.39 809.496 1455 Q812.575 1459.58 812.575 1468.33 Q812.575 1477.06 809.496 1481.67 Q806.441 1486.25 800.63 1486.25 Q794.82 1486.25 791.742 1481.67 Q788.686 1477.06 788.686 1468.33 Q788.686 1459.58 791.742 1455 Q794.82 1450.39 800.63 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M820.839 1451.02 L839.195 1451.02 L839.195 1454.96 L825.121 1454.96 L825.121 1463.43 Q826.14 1463.08 827.158 1462.92 Q828.177 1462.73 829.195 1462.73 Q834.982 1462.73 838.362 1465.9 Q841.741 1469.08 841.741 1474.49 Q841.741 1480.07 838.269 1483.17 Q834.797 1486.25 828.477 1486.25 Q826.302 1486.25 824.033 1485.88 Q821.788 1485.51 819.38 1484.77 L819.38 1480.07 Q821.464 1481.2 823.686 1481.76 Q825.908 1482.32 828.385 1482.32 Q832.389 1482.32 834.727 1480.21 Q837.065 1478.1 837.065 1474.49 Q837.065 1470.88 834.727 1468.77 Q832.389 1466.67 828.385 1466.67 Q826.51 1466.67 824.635 1467.08 Q822.783 1467.5 820.839 1468.38 L820.839 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1122.71 1454.1 Q1119.1 1454.1 1117.27 1457.66 Q1115.47 1461.2 1115.47 1468.33 Q1115.47 1475.44 1117.27 1479.01 Q1119.1 1482.55 1122.71 1482.55 Q1126.35 1482.55 1128.15 1479.01 Q1129.98 1475.44 1129.98 1468.33 Q1129.98 1461.2 1128.15 1457.66 Q1126.35 1454.1 1122.71 1454.1 M1122.71 1450.39 Q1128.52 1450.39 1131.58 1455 Q1134.66 1459.58 1134.66 1468.33 Q1134.66 1477.06 1131.58 1481.67 Q1128.52 1486.25 1122.71 1486.25 Q1116.9 1486.25 1113.82 1481.67 Q1110.77 1477.06 1110.77 1468.33 Q1110.77 1459.58 1113.82 1455 Q1116.9 1450.39 1122.71 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1142.88 1479.7 L1147.76 1479.7 L1147.76 1485.58 L1142.88 1485.58 L1142.88 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1158.76 1481.64 L1166.39 1481.64 L1166.39 1455.28 L1158.08 1456.95 L1158.08 1452.69 L1166.35 1451.02 L1171.02 1451.02 L1171.02 1481.64 L1178.66 1481.64 L1178.66 1485.58 L1158.76 1485.58 L1158.76 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1198.11 1454.1 Q1194.5 1454.1 1192.67 1457.66 Q1190.86 1461.2 1190.86 1468.33 Q1190.86 1475.44 1192.67 1479.01 Q1194.5 1482.55 1198.11 1482.55 Q1201.74 1482.55 1203.55 1479.01 Q1205.38 1475.44 1205.38 1468.33 Q1205.38 1461.2 1203.55 1457.66 Q1201.74 1454.1 1198.11 1454.1 M1198.11 1450.39 Q1203.92 1450.39 1206.97 1455 Q1210.05 1459.58 1210.05 1468.33 Q1210.05 1477.06 1206.97 1481.67 Q1203.92 1486.25 1198.11 1486.25 Q1192.3 1486.25 1189.22 1481.67 Q1186.16 1477.06 1186.16 1468.33 Q1186.16 1459.58 1189.22 1455 Q1192.3 1450.39 1198.11 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1491.02 1454.1 Q1487.41 1454.1 1485.58 1457.66 Q1483.78 1461.2 1483.78 1468.33 Q1483.78 1475.44 1485.58 1479.01 Q1487.41 1482.55 1491.02 1482.55 Q1494.66 1482.55 1496.46 1479.01 Q1498.29 1475.44 1498.29 1468.33 Q1498.29 1461.2 1496.46 1457.66 Q1494.66 1454.1 1491.02 1454.1 M1491.02 1450.39 Q1496.83 1450.39 1499.89 1455 Q1502.97 1459.58 1502.97 1468.33 Q1502.97 1477.06 1499.89 1481.67 Q1496.83 1486.25 1491.02 1486.25 Q1485.21 1486.25 1482.13 1481.67 Q1479.08 1477.06 1479.08 1468.33 Q1479.08 1459.58 1482.13 1455 Q1485.21 1450.39 1491.02 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1511.19 1479.7 L1516.07 1479.7 L1516.07 1485.58 L1511.19 1485.58 L1511.19 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1527.06 1481.64 L1534.7 1481.64 L1534.7 1455.28 L1526.39 1456.95 L1526.39 1452.69 L1534.66 1451.02 L1539.33 1451.02 L1539.33 1481.64 L1546.97 1481.64 L1546.97 1485.58 L1527.06 1485.58 L1527.06 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1556.46 1451.02 L1574.82 1451.02 L1574.82 1454.96 L1560.75 1454.96 L1560.75 1463.43 Q1561.76 1463.08 1562.78 1462.92 Q1563.8 1462.73 1564.82 1462.73 Q1570.61 1462.73 1573.99 1465.9 Q1577.37 1469.08 1577.37 1474.49 Q1577.37 1480.07 1573.89 1483.17 Q1570.42 1486.25 1564.1 1486.25 Q1561.93 1486.25 1559.66 1485.88 Q1557.41 1485.51 1555 1484.77 L1555 1480.07 Q1557.09 1481.2 1559.31 1481.76 Q1561.53 1482.32 1564.01 1482.32 Q1568.01 1482.32 1570.35 1480.21 Q1572.69 1478.1 1572.69 1474.49 Q1572.69 1470.88 1570.35 1468.77 Q1568.01 1466.67 1564.01 1466.67 Q1562.13 1466.67 1560.26 1467.08 Q1558.41 1467.5 1556.46 1468.38 L1556.46 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1858.34 1454.1 Q1854.73 1454.1 1852.9 1457.66 Q1851.09 1461.2 1851.09 1468.33 Q1851.09 1475.44 1852.9 1479.01 Q1854.73 1482.55 1858.34 1482.55 Q1861.97 1482.55 1863.78 1479.01 Q1865.61 1475.44 1865.61 1468.33 Q1865.61 1461.2 1863.78 1457.66 Q1861.97 1454.1 1858.34 1454.1 M1858.34 1450.39 Q1864.15 1450.39 1867.2 1455 Q1870.28 1459.58 1870.28 1468.33 Q1870.28 1477.06 1867.2 1481.67 Q1864.15 1486.25 1858.34 1486.25 Q1852.53 1486.25 1849.45 1481.67 Q1846.39 1477.06 1846.39 1468.33 Q1846.39 1459.58 1849.45 1455 Q1852.53 1450.39 1858.34 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1878.5 1479.7 L1883.38 1479.7 L1883.38 1485.58 L1878.5 1485.58 L1878.5 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1897.6 1481.64 L1913.92 1481.64 L1913.92 1485.58 L1891.97 1485.58 L1891.97 1481.64 Q1894.63 1478.89 1899.22 1474.26 Q1903.82 1469.61 1905 1468.27 Q1907.25 1465.74 1908.13 1464.01 Q1909.03 1462.25 1909.03 1460.56 Q1909.03 1457.8 1907.09 1456.07 Q1905.17 1454.33 1902.06 1454.33 Q1899.87 1454.33 1897.41 1455.09 Q1894.98 1455.86 1892.2 1457.41 L1892.2 1452.69 Q1895.03 1451.55 1897.48 1450.97 Q1899.93 1450.39 1901.97 1450.39 Q1907.34 1450.39 1910.54 1453.08 Q1913.73 1455.77 1913.73 1460.26 Q1913.73 1462.39 1912.92 1464.31 Q1912.13 1466.2 1910.03 1468.8 Q1909.45 1469.47 1906.35 1472.69 Q1903.25 1475.88 1897.6 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1933.73 1454.1 Q1930.12 1454.1 1928.29 1457.66 Q1926.49 1461.2 1926.49 1468.33 Q1926.49 1475.44 1928.29 1479.01 Q1930.12 1482.55 1933.73 1482.55 Q1937.37 1482.55 1939.17 1479.01 Q1941 1475.44 1941 1468.33 Q1941 1461.2 1939.17 1457.66 Q1937.37 1454.1 1933.73 1454.1 M1933.73 1450.39 Q1939.54 1450.39 1942.6 1455 Q1945.68 1459.58 1945.68 1468.33 Q1945.68 1477.06 1942.6 1481.67 Q1939.54 1486.25 1933.73 1486.25 Q1927.92 1486.25 1924.84 1481.67 Q1921.79 1477.06 1921.79 1468.33 Q1921.79 1459.58 1924.84 1455 Q1927.92 1450.39 1933.73 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M2226.65 1454.1 Q2223.04 1454.1 2221.21 1457.66 Q2219.4 1461.2 2219.4 1468.33 Q2219.4 1475.44 2221.21 1479.01 Q2223.04 1482.55 2226.65 1482.55 Q2230.28 1482.55 2232.09 1479.01 Q2233.92 1475.44 2233.92 1468.33 Q2233.92 1461.2 2232.09 1457.66 Q2230.28 1454.1 2226.65 1454.1 M2226.65 1450.39 Q2232.46 1450.39 2235.51 1455 Q2238.59 1459.58 2238.59 1468.33 Q2238.59 1477.06 2235.51 1481.67 Q2232.46 1486.25 2226.65 1486.25 Q2220.84 1486.25 2217.76 1481.67 Q2214.7 1477.06 2214.7 1468.33 Q2214.7 1459.58 2217.76 1455 Q2220.84 1450.39 2226.65 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M2246.81 1479.7 L2251.69 1479.7 L2251.69 1485.58 L2246.81 1485.58 L2246.81 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M2265.91 1481.64 L2282.23 1481.64 L2282.23 1485.58 L2260.28 1485.58 L2260.28 1481.64 Q2262.94 1478.89 2267.53 1474.26 Q2272.13 1469.61 2273.31 1468.27 Q2275.56 1465.74 2276.44 1464.01 Q2277.34 1462.25 2277.34 1460.56 Q2277.34 1457.8 2275.4 1456.07 Q2273.48 1454.33 2270.37 1454.33 Q2268.18 1454.33 2265.72 1455.09 Q2263.29 1455.86 2260.51 1457.41 L2260.51 1452.69 Q2263.34 1451.55 2265.79 1450.97 Q2268.24 1450.39 2270.28 1450.39 Q2275.65 1450.39 2278.85 1453.08 Q2282.04 1455.77 2282.04 1460.26 Q2282.04 1462.39 2281.23 1464.31 Q2280.44 1466.2 2278.34 1468.8 Q2277.76 1469.47 2274.66 1472.69 Q2271.55 1475.88 2265.91 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M2292.09 1451.02 L2310.44 1451.02 L2310.44 1454.96 L2296.37 1454.96 L2296.37 1463.43 Q2297.39 1463.08 2298.41 1462.92 Q2299.43 1462.73 2300.44 1462.73 Q2306.23 1462.73 2309.61 1465.9 Q2312.99 1469.08 2312.99 1474.49 Q2312.99 1480.07 2309.52 1483.17 Q2306.05 1486.25 2299.73 1486.25 Q2297.55 1486.25 2295.28 1485.88 Q2293.04 1485.51 2290.63 1484.77 L2290.63 1480.07 Q2292.71 1481.2 2294.93 1481.76 Q2297.16 1482.32 2299.63 1482.32 Q2303.64 1482.32 2305.98 1480.21 Q2308.31 1478.1 2308.31 1474.49 Q2308.31 1470.88 2305.98 1468.77 Q2303.64 1466.67 2299.63 1466.67 Q2297.76 1466.67 2295.88 1467.08 Q2294.03 1467.5 2292.09 1468.38 L2292.09 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M966.529 1520.52 L976.109 1520.52 L988.236 1552.86 L1000.43 1520.52 L1010.01 1520.52 L1010.01 1568.04 L1003.74 1568.04 L1003.74 1526.32 L991.483 1558.91 L985.021 1558.91 L972.767 1526.32 L972.767 1568.04 L966.529 1568.04 L966.529 1520.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1038.72 1550.12 Q1031.62 1550.12 1028.88 1551.75 Q1026.14 1553.37 1026.14 1557.29 Q1026.14 1560.4 1028.18 1562.25 Q1030.25 1564.07 1033.78 1564.07 Q1038.65 1564.07 1041.58 1560.63 Q1044.54 1557.16 1044.54 1551.43 L1044.54 1550.12 L1038.72 1550.12 M1050.4 1547.71 L1050.4 1568.04 L1044.54 1568.04 L1044.54 1562.63 Q1042.54 1565.88 1039.54 1567.44 Q1036.55 1568.97 1032.22 1568.97 Q1026.75 1568.97 1023.5 1565.91 Q1020.29 1562.82 1020.29 1557.67 Q1020.29 1551.65 1024.3 1548.6 Q1028.34 1545.54 1036.33 1545.54 L1044.54 1545.54 L1044.54 1544.97 Q1044.54 1540.93 1041.87 1538.73 Q1039.23 1536.5 1034.42 1536.5 Q1031.36 1536.5 1028.47 1537.23 Q1025.57 1537.97 1022.9 1539.43 L1022.9 1534.02 Q1026.11 1532.78 1029.14 1532.17 Q1032.16 1531.54 1035.02 1531.54 Q1042.76 1531.54 1046.58 1535.55 Q1050.4 1539.56 1050.4 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1092.09 1532.4 L1079.2 1549.74 L1092.76 1568.04 L1085.85 1568.04 L1075.48 1554.04 L1065.1 1568.04 L1058.2 1568.04 L1072.04 1549.39 L1059.37 1532.4 L1066.28 1532.4 L1075.73 1545.1 L1085.19 1532.4 L1092.09 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1101.04 1532.4 L1106.89 1532.4 L1106.89 1568.04 L1101.04 1568.04 L1101.04 1532.4 M1101.04 1518.52 L1106.89 1518.52 L1106.89 1525.93 L1101.04 1525.93 L1101.04 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1146.9 1539.24 Q1149.1 1535.29 1152.15 1533.41 Q1155.21 1531.54 1159.35 1531.54 Q1164.92 1531.54 1167.94 1535.45 Q1170.96 1539.33 1170.96 1546.53 L1170.96 1568.04 L1165.08 1568.04 L1165.08 1546.72 Q1165.08 1541.59 1163.26 1539.11 Q1161.45 1536.63 1157.72 1536.63 Q1153.17 1536.63 1150.53 1539.65 Q1147.89 1542.68 1147.89 1547.9 L1147.89 1568.04 L1142 1568.04 L1142 1546.72 Q1142 1541.56 1140.19 1539.11 Q1138.37 1536.63 1134.58 1536.63 Q1130.1 1536.63 1127.45 1539.68 Q1124.81 1542.71 1124.81 1547.9 L1124.81 1568.04 L1118.92 1568.04 L1118.92 1532.4 L1124.81 1532.4 L1124.81 1537.93 Q1126.82 1534.66 1129.62 1533.1 Q1132.42 1531.54 1136.27 1531.54 Q1140.15 1531.54 1142.86 1533.51 Q1145.6 1535.48 1146.9 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1182.04 1553.98 L1182.04 1532.4 L1187.9 1532.4 L1187.9 1553.75 Q1187.9 1558.81 1189.87 1561.36 Q1191.84 1563.87 1195.79 1563.87 Q1200.53 1563.87 1203.27 1560.85 Q1206.04 1557.83 1206.04 1552.61 L1206.04 1532.4 L1211.9 1532.4 L1211.9 1568.04 L1206.04 1568.04 L1206.04 1562.57 Q1203.91 1565.82 1201.07 1567.41 Q1198.27 1568.97 1194.55 1568.97 Q1188.41 1568.97 1185.22 1565.15 Q1182.04 1561.33 1182.04 1553.98 M1196.78 1531.54 L1196.78 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1251.71 1539.24 Q1253.91 1535.29 1256.96 1533.41 Q1260.02 1531.54 1264.16 1531.54 Q1269.73 1531.54 1272.75 1535.45 Q1275.78 1539.33 1275.78 1546.53 L1275.78 1568.04 L1269.89 1568.04 L1269.89 1546.72 Q1269.89 1541.59 1268.07 1539.11 Q1266.26 1536.63 1262.53 1536.63 Q1257.98 1536.63 1255.34 1539.65 Q1252.7 1542.68 1252.7 1547.9 L1252.7 1568.04 L1246.81 1568.04 L1246.81 1546.72 Q1246.81 1541.56 1245 1539.11 Q1243.18 1536.63 1239.4 1536.63 Q1234.91 1536.63 1232.27 1539.68 Q1229.62 1542.71 1229.62 1547.9 L1229.62 1568.04 L1223.74 1568.04 L1223.74 1532.4 L1229.62 1532.4 L1229.62 1537.93 Q1231.63 1534.66 1234.43 1533.1 Q1237.23 1531.54 1241.08 1531.54 Q1244.97 1531.54 1247.67 1533.51 Q1250.41 1535.48 1251.71 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1331.63 1537.81 L1331.63 1518.52 L1337.49 1518.52 L1337.49 1568.04 L1331.63 1568.04 L1331.63 1562.7 Q1329.79 1565.88 1326.96 1567.44 Q1324.15 1568.97 1320.21 1568.97 Q1313.75 1568.97 1309.67 1563.81 Q1305.63 1558.65 1305.63 1550.25 Q1305.63 1541.85 1309.67 1536.69 Q1313.75 1531.54 1320.21 1531.54 Q1324.15 1531.54 1326.96 1533.1 Q1329.79 1534.62 1331.63 1537.81 M1311.68 1550.25 Q1311.68 1556.71 1314.32 1560.4 Q1316.99 1564.07 1321.64 1564.07 Q1326.29 1564.07 1328.96 1560.4 Q1331.63 1556.71 1331.63 1550.25 Q1331.63 1543.79 1328.96 1540.13 Q1326.29 1536.44 1321.64 1536.44 Q1316.99 1536.44 1314.32 1540.13 Q1311.68 1543.79 1311.68 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1380.05 1548.76 L1380.05 1551.62 L1353.12 1551.62 Q1353.5 1557.67 1356.75 1560.85 Q1360.03 1564 1365.85 1564 Q1369.22 1564 1372.37 1563.17 Q1375.56 1562.35 1378.68 1560.69 L1378.68 1566.23 Q1375.53 1567.57 1372.22 1568.27 Q1368.91 1568.97 1365.5 1568.97 Q1356.97 1568.97 1351.97 1564 Q1347.01 1559.04 1347.01 1550.57 Q1347.01 1541.82 1351.72 1536.69 Q1356.46 1531.54 1364.48 1531.54 Q1371.67 1531.54 1375.84 1536.18 Q1380.05 1540.8 1380.05 1548.76 M1374.19 1547.04 Q1374.13 1542.23 1371.48 1539.37 Q1368.87 1536.5 1364.54 1536.5 Q1359.64 1536.5 1356.68 1539.27 Q1353.76 1542.04 1353.31 1547.07 L1374.19 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1407.7 1518.52 L1407.7 1523.39 L1402.1 1523.39 Q1398.95 1523.39 1397.71 1524.66 Q1396.5 1525.93 1396.5 1529.24 L1396.5 1532.4 L1406.14 1532.4 L1406.14 1536.95 L1396.5 1536.95 L1396.5 1568.04 L1390.61 1568.04 L1390.61 1536.95 L1385.01 1536.95 L1385.01 1532.4 L1390.61 1532.4 L1390.61 1529.91 Q1390.61 1523.96 1393.38 1521.26 Q1396.15 1518.52 1402.17 1518.52 L1407.7 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1412.61 1518.52 L1418.46 1518.52 L1418.46 1568.04 L1412.61 1568.04 L1412.61 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1461.21 1548.76 L1461.21 1551.62 L1434.28 1551.62 Q1434.66 1557.67 1437.91 1560.85 Q1441.19 1564 1447.01 1564 Q1450.39 1564 1453.54 1563.17 Q1456.72 1562.35 1459.84 1560.69 L1459.84 1566.23 Q1456.69 1567.57 1453.38 1568.27 Q1450.07 1568.97 1446.66 1568.97 Q1438.13 1568.97 1433.14 1564 Q1428.17 1559.04 1428.17 1550.57 Q1428.17 1541.82 1432.88 1536.69 Q1437.62 1531.54 1445.64 1531.54 Q1452.84 1531.54 1457.01 1536.18 Q1461.21 1540.8 1461.21 1548.76 M1455.35 1547.04 Q1455.29 1542.23 1452.65 1539.37 Q1450.04 1536.5 1445.71 1536.5 Q1440.81 1536.5 1437.85 1539.27 Q1434.92 1542.04 1434.47 1547.07 L1455.35 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1496.47 1533.76 L1496.47 1539.24 Q1493.99 1537.87 1491.48 1537.2 Q1488.99 1536.5 1486.45 1536.5 Q1480.75 1536.5 1477.6 1540.13 Q1474.45 1543.73 1474.45 1550.25 Q1474.45 1556.78 1477.6 1560.4 Q1480.75 1564 1486.45 1564 Q1488.99 1564 1491.48 1563.33 Q1493.99 1562.63 1496.47 1561.26 L1496.47 1566.68 Q1494.02 1567.82 1491.38 1568.39 Q1488.77 1568.97 1485.81 1568.97 Q1477.76 1568.97 1473.02 1563.91 Q1468.27 1558.85 1468.27 1550.25 Q1468.27 1541.53 1473.05 1536.53 Q1477.85 1531.54 1486.19 1531.54 Q1488.9 1531.54 1491.48 1532.11 Q1494.06 1532.65 1496.47 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1512.45 1522.27 L1512.45 1532.4 L1524.52 1532.4 L1524.52 1536.95 L1512.45 1536.95 L1512.45 1556.3 Q1512.45 1560.66 1513.63 1561.9 Q1514.84 1563.14 1518.5 1563.14 L1524.52 1563.14 L1524.52 1568.04 L1518.5 1568.04 Q1511.72 1568.04 1509.14 1565.53 Q1506.56 1562.98 1506.56 1556.3 L1506.56 1536.95 L1502.27 1536.95 L1502.27 1532.4 L1506.56 1532.4 L1506.56 1522.27 L1512.45 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1532.22 1532.4 L1538.07 1532.4 L1538.07 1568.04 L1532.22 1568.04 L1532.22 1532.4 M1532.22 1518.52 L1538.07 1518.52 L1538.07 1525.93 L1532.22 1525.93 L1532.22 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1564.14 1536.5 Q1559.43 1536.5 1556.69 1540.19 Q1553.96 1543.85 1553.96 1550.25 Q1553.96 1556.65 1556.66 1560.34 Q1559.4 1564 1564.14 1564 Q1568.82 1564 1571.56 1560.31 Q1574.29 1556.62 1574.29 1550.25 Q1574.29 1543.92 1571.56 1540.23 Q1568.82 1536.5 1564.14 1536.5 M1564.14 1531.54 Q1571.78 1531.54 1576.14 1536.5 Q1580.5 1541.47 1580.5 1550.25 Q1580.5 1559 1576.14 1564 Q1571.78 1568.97 1564.14 1568.97 Q1556.47 1568.97 1552.11 1564 Q1547.78 1559 1547.78 1550.25 Q1547.78 1541.47 1552.11 1536.5 Q1556.47 1531.54 1564.14 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1619.84 1546.53 L1619.84 1568.04 L1613.99 1568.04 L1613.99 1546.72 Q1613.99 1541.66 1612.01 1539.14 Q1610.04 1536.63 1606.09 1536.63 Q1601.35 1536.63 1598.61 1539.65 Q1595.87 1542.68 1595.87 1547.9 L1595.87 1568.04 L1589.99 1568.04 L1589.99 1532.4 L1595.87 1532.4 L1595.87 1537.93 Q1597.98 1534.72 1600.81 1533.13 Q1603.67 1531.54 1607.4 1531.54 Q1613.54 1531.54 1616.69 1535.36 Q1619.84 1539.14 1619.84 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1651.7 1518.52 L1665.2 1518.52 L1665.2 1523.07 L1657.56 1523.07 L1657.56 1572.09 L1665.2 1572.09 L1665.2 1576.64 L1651.7 1576.64 L1651.7 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1705.43 1539.24 Q1707.62 1535.29 1710.68 1533.41 Q1713.74 1531.54 1717.87 1531.54 Q1723.44 1531.54 1726.47 1535.45 Q1729.49 1539.33 1729.49 1546.53 L1729.49 1568.04 L1723.6 1568.04 L1723.6 1546.72 Q1723.6 1541.59 1721.79 1539.11 Q1719.97 1536.63 1716.25 1536.63 Q1711.7 1536.63 1709.06 1539.65 Q1706.42 1542.68 1706.42 1547.9 L1706.42 1568.04 L1700.53 1568.04 L1700.53 1546.72 Q1700.53 1541.56 1698.71 1539.11 Q1696.9 1536.63 1693.11 1536.63 Q1688.62 1536.63 1685.98 1539.68 Q1683.34 1542.71 1683.34 1547.9 L1683.34 1568.04 L1677.45 1568.04 L1677.45 1532.4 L1683.34 1532.4 L1683.34 1537.93 Q1685.34 1534.66 1688.15 1533.1 Q1690.95 1531.54 1694.8 1531.54 Q1698.68 1531.54 1701.39 1533.51 Q1704.12 1535.48 1705.43 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1754.86 1518.52 L1754.86 1576.64 L1741.36 1576.64 L1741.36 1572.09 L1748.97 1572.09 L1748.97 1523.07 L1741.36 1523.07 L1741.36 1518.52 L1754.86 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1423.18 368.631,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1386.4 387.529,1386.4 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1079.86 387.529,1079.86 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,773.326 387.529,773.326 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,466.791 387.529,466.791 \"/>\n", + "<polyline clip-path=\"url(#clip510)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,160.256 387.529,160.256 \"/>\n", + "<path clip-path=\"url(#clip510)\" d=\"M320.687 1372.19 Q317.076 1372.19 315.247 1375.76 Q313.442 1379.3 313.442 1386.43 Q313.442 1393.54 315.247 1397.1 Q317.076 1400.64 320.687 1400.64 Q324.321 1400.64 326.127 1397.1 Q327.955 1393.54 327.955 1386.43 Q327.955 1379.3 326.127 1375.76 Q324.321 1372.19 320.687 1372.19 M320.687 1368.49 Q326.497 1368.49 329.553 1373.1 Q332.631 1377.68 332.631 1386.43 Q332.631 1395.16 329.553 1399.76 Q326.497 1404.35 320.687 1404.35 Q314.877 1404.35 311.798 1399.76 Q308.743 1395.16 308.743 1386.43 Q308.743 1377.68 311.798 1373.1 Q314.877 1368.49 320.687 1368.49 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M119.885 1099.65 L136.204 1099.65 L136.204 1103.59 L114.26 1103.59 L114.26 1099.65 Q116.922 1096.9 121.505 1092.27 Q126.112 1087.62 127.292 1086.27 Q129.538 1083.75 130.417 1082.01 Q131.32 1080.26 131.32 1078.57 Q131.32 1075.81 129.376 1074.07 Q127.455 1072.34 124.353 1072.34 Q122.154 1072.34 119.7 1073.1 Q117.269 1073.87 114.492 1075.42 L114.492 1070.7 Q117.316 1069.56 119.769 1068.98 Q122.223 1068.4 124.26 1068.4 Q129.63 1068.4 132.825 1071.09 Q136.019 1073.77 136.019 1078.26 Q136.019 1080.39 135.209 1082.32 Q134.422 1084.21 132.316 1086.81 Q131.737 1087.48 128.635 1090.69 Q125.533 1093.89 119.885 1099.65 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M146.019 1097.71 L150.903 1097.71 L150.903 1103.59 L146.019 1103.59 L146.019 1097.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M161.135 1069.03 L179.491 1069.03 L179.491 1072.96 L165.417 1072.96 L165.417 1081.44 Q166.436 1081.09 167.454 1080.93 Q168.473 1080.74 169.491 1080.74 Q175.278 1080.74 178.658 1083.91 Q182.038 1087.08 182.038 1092.5 Q182.038 1098.08 178.565 1101.18 Q175.093 1104.26 168.774 1104.26 Q166.598 1104.26 164.329 1103.89 Q162.084 1103.52 159.677 1102.78 L159.677 1098.08 Q161.76 1099.21 163.982 1099.77 Q166.204 1100.32 168.681 1100.32 Q172.686 1100.32 175.024 1098.22 Q177.362 1096.11 177.362 1092.5 Q177.362 1088.89 175.024 1086.78 Q172.686 1084.68 168.681 1084.68 Q166.806 1084.68 164.931 1085.09 Q163.079 1085.51 161.135 1086.39 L161.135 1069.03 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M201.25 1072.11 Q197.639 1072.11 195.811 1075.67 Q194.005 1079.21 194.005 1086.34 Q194.005 1093.45 195.811 1097.01 Q197.639 1100.56 201.25 1100.56 Q204.885 1100.56 206.69 1097.01 Q208.519 1093.45 208.519 1086.34 Q208.519 1079.21 206.69 1075.67 Q204.885 1072.11 201.25 1072.11 M201.25 1068.4 Q207.061 1068.4 210.116 1073.01 Q213.195 1077.59 213.195 1086.34 Q213.195 1095.07 210.116 1099.68 Q207.061 1104.26 201.25 1104.26 Q195.44 1104.26 192.362 1099.68 Q189.306 1095.07 189.306 1086.34 Q189.306 1077.59 192.362 1073.01 Q195.44 1068.4 201.25 1068.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M249.584 1078.13 L239.005 1088.75 L249.584 1099.33 L246.829 1102.13 L236.204 1091.51 L225.579 1102.13 L222.848 1099.33 L233.403 1088.75 L222.848 1078.13 L225.579 1075.32 L236.204 1085.95 L246.829 1075.32 L249.584 1078.13 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M261.945 1099.65 L269.583 1099.65 L269.583 1073.29 L261.273 1074.95 L261.273 1070.7 L269.537 1069.03 L274.213 1069.03 L274.213 1099.65 L281.852 1099.65 L281.852 1103.59 L261.945 1103.59 L261.945 1099.65 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M301.296 1072.11 Q297.685 1072.11 295.856 1075.67 Q294.051 1079.21 294.051 1086.34 Q294.051 1093.45 295.856 1097.01 Q297.685 1100.56 301.296 1100.56 Q304.93 1100.56 306.736 1097.01 Q308.565 1093.45 308.565 1086.34 Q308.565 1079.21 306.736 1075.67 Q304.93 1072.11 301.296 1072.11 M301.296 1068.4 Q307.106 1068.4 310.162 1073.01 Q313.241 1077.59 313.241 1086.34 Q313.241 1095.07 310.162 1099.68 Q307.106 1104.26 301.296 1104.26 Q295.486 1104.26 292.407 1099.68 Q289.352 1095.07 289.352 1086.34 Q289.352 1077.59 292.407 1073.01 Q295.486 1068.4 301.296 1068.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M323.265 1060.62 Q320.707 1060.62 319.203 1062.37 Q317.717 1064.12 317.717 1067.17 Q317.717 1070.2 319.203 1071.97 Q320.707 1073.71 323.265 1073.71 Q325.823 1073.71 327.309 1071.97 Q328.813 1070.2 328.813 1067.17 Q328.813 1064.12 327.309 1062.37 Q325.823 1060.62 323.265 1060.62 M330.807 1048.72 L330.807 1052.18 Q329.378 1051.5 327.911 1051.14 Q326.462 1050.79 325.033 1050.79 Q321.271 1050.79 319.278 1053.33 Q317.303 1055.87 317.021 1061 Q318.131 1059.36 319.804 1058.5 Q321.478 1057.61 323.491 1057.61 Q327.723 1057.61 330.168 1060.19 Q332.631 1062.75 332.631 1067.17 Q332.631 1071.49 330.074 1074.11 Q327.516 1076.72 323.265 1076.72 Q318.394 1076.72 315.817 1073 Q313.241 1069.26 313.241 1062.17 Q313.241 1055.51 316.4 1051.56 Q319.56 1047.59 324.883 1047.59 Q326.312 1047.59 327.76 1047.87 Q329.227 1048.15 330.807 1048.72 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M115.904 762.494 L134.26 762.494 L134.26 766.429 L120.186 766.429 L120.186 774.901 Q121.205 774.554 122.223 774.392 Q123.242 774.206 124.26 774.206 Q130.047 774.206 133.427 777.378 Q136.806 780.549 136.806 785.966 Q136.806 791.544 133.334 794.646 Q129.862 797.725 123.543 797.725 Q121.367 797.725 119.098 797.355 Q116.853 796.984 114.445 796.243 L114.445 791.544 Q116.529 792.679 118.751 793.234 Q120.973 793.79 123.45 793.79 Q127.455 793.79 129.792 791.683 Q132.13 789.577 132.13 785.966 Q132.13 782.355 129.792 780.248 Q127.455 778.142 123.45 778.142 Q121.575 778.142 119.7 778.558 Q117.848 778.975 115.904 779.855 L115.904 762.494 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M146.019 791.174 L150.903 791.174 L150.903 797.054 L146.019 797.054 L146.019 791.174 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M171.089 765.572 Q167.477 765.572 165.649 769.137 Q163.843 772.679 163.843 779.808 Q163.843 786.915 165.649 790.48 Q167.477 794.021 171.089 794.021 Q174.723 794.021 176.528 790.48 Q178.357 786.915 178.357 779.808 Q178.357 772.679 176.528 769.137 Q174.723 765.572 171.089 765.572 M171.089 761.869 Q176.899 761.869 179.954 766.475 Q183.033 771.058 183.033 779.808 Q183.033 788.535 179.954 793.142 Q176.899 797.725 171.089 797.725 Q165.278 797.725 162.2 793.142 Q159.144 788.535 159.144 779.808 Q159.144 771.058 162.2 766.475 Q165.278 761.869 171.089 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M201.25 765.572 Q197.639 765.572 195.811 769.137 Q194.005 772.679 194.005 779.808 Q194.005 786.915 195.811 790.48 Q197.639 794.021 201.25 794.021 Q204.885 794.021 206.69 790.48 Q208.519 786.915 208.519 779.808 Q208.519 772.679 206.69 769.137 Q204.885 765.572 201.25 765.572 M201.25 761.869 Q207.061 761.869 210.116 766.475 Q213.195 771.058 213.195 779.808 Q213.195 788.535 210.116 793.142 Q207.061 797.725 201.25 797.725 Q195.44 797.725 192.362 793.142 Q189.306 788.535 189.306 779.808 Q189.306 771.058 192.362 766.475 Q195.44 761.869 201.25 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M249.584 771.591 L239.005 782.216 L249.584 792.794 L246.829 795.595 L236.204 784.97 L225.579 795.595 L222.848 792.794 L233.403 782.216 L222.848 771.591 L225.579 768.79 L236.204 779.415 L246.829 768.79 L249.584 771.591 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M261.945 793.118 L269.583 793.118 L269.583 766.753 L261.273 768.419 L261.273 764.16 L269.537 762.494 L274.213 762.494 L274.213 793.118 L281.852 793.118 L281.852 797.054 L261.945 797.054 L261.945 793.118 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M301.296 765.572 Q297.685 765.572 295.856 769.137 Q294.051 772.679 294.051 779.808 Q294.051 786.915 295.856 790.48 Q297.685 794.021 301.296 794.021 Q304.93 794.021 306.736 790.48 Q308.565 786.915 308.565 779.808 Q308.565 772.679 306.736 769.137 Q304.93 765.572 301.296 765.572 M301.296 761.869 Q307.106 761.869 310.162 766.475 Q313.241 771.058 313.241 779.808 Q313.241 788.535 310.162 793.142 Q307.106 797.725 301.296 797.725 Q295.486 797.725 292.407 793.142 Q289.352 788.535 289.352 779.808 Q289.352 771.058 292.407 766.475 Q295.486 761.869 301.296 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M323.265 754.089 Q320.707 754.089 319.203 755.838 Q317.717 757.587 317.717 760.634 Q317.717 763.662 319.203 765.43 Q320.707 767.179 323.265 767.179 Q325.823 767.179 327.309 765.43 Q328.813 763.662 328.813 760.634 Q328.813 757.587 327.309 755.838 Q325.823 754.089 323.265 754.089 M330.807 742.184 L330.807 745.644 Q329.378 744.967 327.911 744.61 Q326.462 744.253 325.033 744.253 Q321.271 744.253 319.278 746.792 Q317.303 749.331 317.021 754.465 Q318.131 752.829 319.804 751.964 Q321.478 751.08 323.491 751.08 Q327.723 751.08 330.168 753.657 Q332.631 756.214 332.631 760.634 Q332.631 764.96 330.074 767.574 Q327.516 770.189 323.265 770.189 Q318.394 770.189 315.817 766.465 Q313.241 762.722 313.241 755.631 Q313.241 748.973 316.4 745.024 Q319.56 741.055 324.883 741.055 Q326.312 741.055 327.76 741.337 Q329.227 741.62 330.807 742.184 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M114.677 455.959 L136.899 455.959 L136.899 457.949 L124.353 490.519 L119.468 490.519 L131.274 459.894 L114.677 459.894 L114.677 455.959 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M146.019 484.639 L150.903 484.639 L150.903 490.519 L146.019 490.519 L146.019 484.639 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M161.135 455.959 L179.491 455.959 L179.491 459.894 L165.417 459.894 L165.417 468.366 Q166.436 468.019 167.454 467.857 Q168.473 467.672 169.491 467.672 Q175.278 467.672 178.658 470.843 Q182.038 474.014 182.038 479.431 Q182.038 485.01 178.565 488.111 Q175.093 491.19 168.774 491.19 Q166.598 491.19 164.329 490.82 Q162.084 490.449 159.677 489.709 L159.677 485.01 Q161.76 486.144 163.982 486.699 Q166.204 487.255 168.681 487.255 Q172.686 487.255 175.024 485.148 Q177.362 483.042 177.362 479.431 Q177.362 475.82 175.024 473.713 Q172.686 471.607 168.681 471.607 Q166.806 471.607 164.931 472.023 Q163.079 472.44 161.135 473.32 L161.135 455.959 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M201.25 459.037 Q197.639 459.037 195.811 462.602 Q194.005 466.144 194.005 473.273 Q194.005 480.38 195.811 483.945 Q197.639 487.486 201.25 487.486 Q204.885 487.486 206.69 483.945 Q208.519 480.38 208.519 473.273 Q208.519 466.144 206.69 462.602 Q204.885 459.037 201.25 459.037 M201.25 455.334 Q207.061 455.334 210.116 459.94 Q213.195 464.524 213.195 473.273 Q213.195 482 210.116 486.607 Q207.061 491.19 201.25 491.19 Q195.44 491.19 192.362 486.607 Q189.306 482 189.306 473.273 Q189.306 464.524 192.362 459.94 Q195.44 455.334 201.25 455.334 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M249.584 465.056 L239.005 475.681 L249.584 486.26 L246.829 489.06 L236.204 478.435 L225.579 489.06 L222.848 486.26 L233.403 475.681 L222.848 465.056 L225.579 462.255 L236.204 472.88 L246.829 462.255 L249.584 465.056 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M261.945 486.584 L269.583 486.584 L269.583 460.218 L261.273 461.885 L261.273 457.625 L269.537 455.959 L274.213 455.959 L274.213 486.584 L281.852 486.584 L281.852 490.519 L261.945 490.519 L261.945 486.584 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M301.296 459.037 Q297.685 459.037 295.856 462.602 Q294.051 466.144 294.051 473.273 Q294.051 480.38 295.856 483.945 Q297.685 487.486 301.296 487.486 Q304.93 487.486 306.736 483.945 Q308.565 480.38 308.565 473.273 Q308.565 466.144 306.736 462.602 Q304.93 459.037 301.296 459.037 M301.296 455.334 Q307.106 455.334 310.162 459.94 Q313.241 464.524 313.241 473.273 Q313.241 482 310.162 486.607 Q307.106 491.19 301.296 491.19 Q295.486 491.19 292.407 486.607 Q289.352 482 289.352 473.273 Q289.352 464.524 292.407 459.94 Q295.486 455.334 301.296 455.334 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M323.265 447.554 Q320.707 447.554 319.203 449.303 Q317.717 451.053 317.717 454.099 Q317.717 457.127 319.203 458.895 Q320.707 460.645 323.265 460.645 Q325.823 460.645 327.309 458.895 Q328.813 457.127 328.813 454.099 Q328.813 451.053 327.309 449.303 Q325.823 447.554 323.265 447.554 M330.807 435.649 L330.807 439.11 Q329.378 438.433 327.911 438.075 Q326.462 437.718 325.033 437.718 Q321.271 437.718 319.278 440.257 Q317.303 442.796 317.021 447.93 Q318.131 446.294 319.804 445.429 Q321.478 444.545 323.491 444.545 Q327.723 444.545 330.168 447.122 Q332.631 449.68 332.631 454.099 Q332.631 458.425 330.074 461.039 Q327.516 463.654 323.265 463.654 Q318.394 463.654 315.817 459.93 Q313.241 456.187 313.241 449.097 Q313.241 442.439 316.4 438.489 Q319.56 434.521 324.883 434.521 Q326.312 434.521 327.76 434.803 Q329.227 435.085 330.807 435.649 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M118.003 180.049 L125.642 180.049 L125.642 153.683 L117.332 155.35 L117.332 151.091 L125.595 149.424 L130.271 149.424 L130.271 180.049 L137.91 180.049 L137.91 183.984 L118.003 183.984 L118.003 180.049 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M147.355 178.104 L152.239 178.104 L152.239 183.984 L147.355 183.984 L147.355 178.104 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M172.424 152.503 Q168.813 152.503 166.984 156.067 Q165.179 159.609 165.179 166.739 Q165.179 173.845 166.984 177.41 Q168.813 180.952 172.424 180.952 Q176.058 180.952 177.864 177.41 Q179.692 173.845 179.692 166.739 Q179.692 159.609 177.864 156.067 Q176.058 152.503 172.424 152.503 M172.424 148.799 Q178.234 148.799 181.29 153.405 Q184.368 157.989 184.368 166.739 Q184.368 175.465 181.29 180.072 Q178.234 184.655 172.424 184.655 Q166.614 184.655 163.535 180.072 Q160.48 175.465 160.48 166.739 Q160.48 157.989 163.535 153.405 Q166.614 148.799 172.424 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M202.586 152.503 Q198.975 152.503 197.146 156.067 Q195.34 159.609 195.34 166.739 Q195.34 173.845 197.146 177.41 Q198.975 180.952 202.586 180.952 Q206.22 180.952 208.026 177.41 Q209.854 173.845 209.854 166.739 Q209.854 159.609 208.026 156.067 Q206.22 152.503 202.586 152.503 M202.586 148.799 Q208.396 148.799 211.451 153.405 Q214.53 157.989 214.53 166.739 Q214.53 175.465 211.451 180.072 Q208.396 184.655 202.586 184.655 Q196.776 184.655 193.697 180.072 Q190.641 175.465 190.641 166.739 Q190.641 157.989 193.697 153.405 Q196.776 148.799 202.586 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M250.919 158.521 L240.34 169.146 L250.919 179.725 L248.164 182.526 L237.539 171.901 L226.914 182.526 L224.183 179.725 L234.738 169.146 L224.183 158.521 L226.914 155.72 L237.539 166.345 L248.164 155.72 L250.919 158.521 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M263.28 180.049 L270.919 180.049 L270.919 153.683 L262.609 155.35 L262.609 151.091 L270.872 149.424 L275.548 149.424 L275.548 180.049 L283.187 180.049 L283.187 183.984 L263.28 183.984 L263.28 180.049 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M302.632 152.503 Q299.02 152.503 297.192 156.067 Q295.386 159.609 295.386 166.739 Q295.386 173.845 297.192 177.41 Q299.02 180.952 302.632 180.952 Q306.266 180.952 308.071 177.41 Q309.9 173.845 309.9 166.739 Q309.9 159.609 308.071 156.067 Q306.266 152.503 302.632 152.503 M302.632 148.799 Q308.442 148.799 311.497 153.405 Q314.576 157.989 314.576 166.739 Q314.576 175.465 311.497 180.072 Q308.442 184.655 302.632 184.655 Q296.821 184.655 293.743 180.072 Q290.687 175.465 290.687 166.739 Q290.687 157.989 293.743 153.405 Q296.821 148.799 302.632 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M314.576 128.494 L332.631 128.494 L332.631 130.111 L322.438 156.574 L318.469 156.574 L328.061 131.691 L314.576 131.691 L314.576 128.494 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M16.4842 973.416 L16.4842 933.217 L21.895 933.217 L21.895 950.086 L64.0042 950.086 L64.0042 956.547 L21.895 956.547 L21.895 973.416 L16.4842 973.416 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M33.8307 916.188 Q33.2578 917.175 33.0032 918.353 Q32.7167 919.499 32.7167 920.899 Q32.7167 925.864 35.9632 928.538 Q39.1779 931.18 45.2253 931.18 L64.0042 931.18 L64.0042 937.068 L28.3562 937.068 L28.3562 931.18 L33.8944 931.18 Q30.6479 929.334 29.0883 926.373 Q27.4968 923.413 27.4968 919.18 Q27.4968 918.575 27.5923 917.843 Q27.656 917.111 27.8151 916.22 L33.8307 916.188 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M46.0847 893.845 Q46.0847 900.942 47.7079 903.68 Q49.3312 906.417 53.2461 906.417 Q56.3653 906.417 58.2114 904.38 Q60.0256 902.311 60.0256 898.778 Q60.0256 893.908 56.5881 890.98 Q53.1188 888.02 47.3897 888.02 L46.0847 888.02 L46.0847 893.845 M43.6657 882.164 L64.0042 882.164 L64.0042 888.02 L58.5933 888.02 Q61.8398 890.025 63.3994 893.017 Q64.9272 896.009 64.9272 900.338 Q64.9272 905.812 61.8716 909.059 Q58.7843 912.273 53.6281 912.273 Q47.6125 912.273 44.5569 908.263 Q41.5014 904.221 41.5014 896.232 L41.5014 888.02 L40.9285 888.02 Q36.8862 888.02 34.6901 890.694 Q32.4621 893.335 32.4621 898.142 Q32.4621 901.197 33.1941 904.094 Q33.9262 906.99 35.3903 909.664 L29.9795 909.664 Q28.7381 906.449 28.1334 903.425 Q27.4968 900.401 27.4968 897.537 Q27.4968 889.803 31.5072 885.983 Q35.5176 882.164 43.6657 882.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M29.7248 844.447 L35.1993 844.447 Q33.8307 846.929 33.1623 849.444 Q32.4621 851.927 32.4621 854.473 Q32.4621 860.17 36.0905 863.321 Q39.6872 866.472 46.212 866.472 Q52.7369 866.472 56.3653 863.321 Q59.9619 860.17 59.9619 854.473 Q59.9619 851.927 59.2935 849.444 Q58.5933 846.929 57.2247 844.447 L62.6355 844.447 Q63.7814 846.898 64.3543 849.539 Q64.9272 852.149 64.9272 855.109 Q64.9272 863.162 59.8664 867.904 Q54.8057 872.647 46.212 872.647 Q37.491 872.647 32.4939 867.873 Q27.4968 863.067 27.4968 854.727 Q27.4968 852.022 28.0697 849.444 Q28.6108 846.866 29.7248 844.447 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M18.2347 828.469 L28.3562 828.469 L28.3562 816.406 L32.9077 816.406 L32.9077 828.469 L52.2594 828.469 Q56.6199 828.469 57.8613 827.291 Q59.1026 826.082 59.1026 822.421 L59.1026 816.406 L64.0042 816.406 L64.0042 822.421 Q64.0042 829.201 61.4897 831.779 Q58.9434 834.357 52.2594 834.357 L32.9077 834.357 L32.9077 838.654 L28.3562 838.654 L28.3562 834.357 L18.2347 834.357 L18.2347 828.469 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M28.3562 808.703 L28.3562 802.847 L64.0042 802.847 L64.0042 808.703 L28.3562 808.703 M14.479 808.703 L14.479 802.847 L21.895 802.847 L21.895 808.703 L14.479 808.703 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M32.4621 776.779 Q32.4621 781.49 36.1542 784.227 Q39.8145 786.965 46.212 786.965 Q52.6095 786.965 56.3017 784.259 Q59.9619 781.522 59.9619 776.779 Q59.9619 772.101 56.2698 769.363 Q52.5777 766.626 46.212 766.626 Q39.8781 766.626 36.186 769.363 Q32.4621 772.101 32.4621 776.779 M27.4968 776.779 Q27.4968 769.141 32.4621 764.78 Q37.4273 760.42 46.212 760.42 Q54.9649 760.42 59.9619 764.78 Q64.9272 769.141 64.9272 776.779 Q64.9272 784.45 59.9619 788.811 Q54.9649 793.139 46.212 793.139 Q37.4273 793.139 32.4621 788.811 Q27.4968 784.45 27.4968 776.779 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M42.4881 721.079 L64.0042 721.079 L64.0042 726.936 L42.679 726.936 Q37.6183 726.936 35.1038 728.909 Q32.5894 730.883 32.5894 734.829 Q32.5894 739.572 35.6131 742.309 Q38.6368 745.046 43.8567 745.046 L64.0042 745.046 L64.0042 750.935 L28.3562 750.935 L28.3562 745.046 L33.8944 745.046 Q30.6797 742.946 29.0883 740.113 Q27.4968 737.248 27.4968 733.524 Q27.4968 727.381 31.3163 724.23 Q35.1038 721.079 42.4881 721.079 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M14.479 689.219 L14.479 675.724 L19.0304 675.724 L19.0304 683.363 L68.0464 683.363 L68.0464 675.724 L72.5979 675.724 L72.5979 689.219 L14.479 689.219 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M21.7677 656.563 L39.6235 656.563 L39.6235 648.479 Q39.6235 643.991 37.3 641.54 Q34.9765 639.089 30.6797 639.089 Q26.4147 639.089 24.0912 641.54 Q21.7677 643.991 21.7677 648.479 L21.7677 656.563 M16.4842 662.992 L16.4842 648.479 Q16.4842 640.49 20.1126 636.416 Q23.7092 632.31 30.6797 632.31 Q37.7138 632.31 41.3104 636.416 Q44.907 640.49 44.907 648.479 L44.907 656.563 L64.0042 656.563 L64.0042 662.992 L16.4842 662.992 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M46.0847 610.666 Q46.0847 617.764 47.7079 620.501 Q49.3312 623.239 53.2461 623.239 Q56.3653 623.239 58.2114 621.202 Q60.0256 619.133 60.0256 615.6 Q60.0256 610.73 56.5881 607.802 Q53.1188 604.842 47.3897 604.842 L46.0847 604.842 L46.0847 610.666 M43.6657 598.985 L64.0042 598.985 L64.0042 604.842 L58.5933 604.842 Q61.8398 606.847 63.3994 609.839 Q64.9272 612.831 64.9272 617.159 Q64.9272 622.634 61.8716 625.88 Q58.7843 629.095 53.6281 629.095 Q47.6125 629.095 44.5569 625.085 Q41.5014 621.042 41.5014 613.053 L41.5014 604.842 L40.9285 604.842 Q36.8862 604.842 34.6901 607.515 Q32.4621 610.157 32.4621 614.963 Q32.4621 618.019 33.1941 620.915 Q33.9262 623.811 35.3903 626.485 L29.9795 626.485 Q28.7381 623.27 28.1334 620.247 Q27.4968 617.223 27.4968 614.358 Q27.4968 606.624 31.5072 602.805 Q35.5176 598.985 43.6657 598.985 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M14.479 573.236 L72.5979 573.236 L72.5979 586.731 L68.0464 586.731 L68.0464 579.124 L19.0304 579.124 L19.0304 586.731 L14.479 586.731 L14.479 573.236 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M903.063 12.096 L954.226 12.096 L954.226 18.9825 L932.756 18.9825 L932.756 72.576 L924.533 72.576 L924.533 18.9825 L903.063 18.9825 L903.063 12.096 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M975.898 34.1734 Q974.642 33.4443 973.144 33.1202 Q971.685 32.7556 969.903 32.7556 Q963.584 32.7556 960.181 36.8875 Q956.818 40.9789 956.818 48.6757 L956.818 72.576 L949.324 72.576 L949.324 27.2059 L956.818 27.2059 L956.818 34.2544 Q959.168 30.1225 962.935 28.1376 Q966.703 26.1121 972.09 26.1121 Q972.86 26.1121 973.792 26.2337 Q974.723 26.3147 975.858 26.5172 L975.898 34.1734 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1004.34 49.7694 Q995.302 49.7694 991.818 51.8354 Q988.335 53.9013 988.335 58.8839 Q988.335 62.8538 990.927 65.2034 Q993.56 67.5124 998.057 67.5124 Q1004.25 67.5124 1007.98 63.1374 Q1011.75 58.7219 1011.75 51.4303 L1011.75 49.7694 L1004.34 49.7694 M1019.2 46.6907 L1019.2 72.576 L1011.75 72.576 L1011.75 65.6895 Q1009.2 69.8214 1005.39 71.8063 Q1001.58 73.7508 996.072 73.7508 Q989.104 73.7508 984.972 69.8619 Q980.881 65.9325 980.881 59.3701 Q980.881 51.7138 985.985 47.825 Q991.13 43.9361 1001.3 43.9361 L1011.75 43.9361 L1011.75 43.2069 Q1011.75 38.0623 1008.35 35.2672 Q1004.98 32.4315 998.867 32.4315 Q994.978 32.4315 991.292 33.3632 Q987.605 34.295 984.203 36.1584 L984.203 29.2718 Q988.294 27.692 992.142 26.9223 Q995.991 26.1121 999.637 26.1121 Q1009.48 26.1121 1014.34 31.2163 Q1019.2 36.3204 1019.2 46.6907 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1067.21 28.9478 L1067.21 35.9153 Q1064.05 34.1734 1060.85 33.3227 Q1057.69 32.4315 1054.45 32.4315 Q1047.19 32.4315 1043.18 37.0496 Q1039.17 41.6271 1039.17 49.9314 Q1039.17 58.2358 1043.18 62.8538 Q1047.19 67.4314 1054.45 67.4314 Q1057.69 67.4314 1060.85 66.5807 Q1064.05 65.6895 1067.21 63.9476 L1067.21 70.8341 Q1064.09 72.2924 1060.72 73.0216 Q1057.4 73.7508 1053.64 73.7508 Q1043.39 73.7508 1037.35 67.3098 Q1031.31 60.8689 1031.31 49.9314 Q1031.31 38.832 1037.39 32.472 Q1043.51 26.1121 1054.12 26.1121 Q1057.56 26.1121 1060.85 26.8413 Q1064.13 27.5299 1067.21 28.9478 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1087.54 14.324 L1087.54 27.2059 L1102.89 27.2059 L1102.89 32.9987 L1087.54 32.9987 L1087.54 57.6282 Q1087.54 63.1779 1089.04 64.7578 Q1090.58 66.3376 1095.24 66.3376 L1102.89 66.3376 L1102.89 72.576 L1095.24 72.576 Q1086.61 72.576 1083.33 69.3758 Q1080.05 66.1351 1080.05 57.6282 L1080.05 32.9987 L1074.58 32.9987 L1074.58 27.2059 L1080.05 27.2059 L1080.05 14.324 L1087.54 14.324 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1112.7 27.2059 L1120.15 27.2059 L1120.15 72.576 L1112.7 72.576 L1112.7 27.2059 M1112.7 9.54393 L1120.15 9.54393 L1120.15 18.9825 L1112.7 18.9825 L1112.7 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1153.33 32.4315 Q1147.33 32.4315 1143.85 37.1306 Q1140.36 41.7891 1140.36 49.9314 Q1140.36 58.0738 1143.81 62.7728 Q1147.29 67.4314 1153.33 67.4314 Q1159.28 67.4314 1162.77 62.7323 Q1166.25 58.0333 1166.25 49.9314 Q1166.25 41.8701 1162.77 37.1711 Q1159.28 32.4315 1153.33 32.4315 M1153.33 26.1121 Q1163.05 26.1121 1168.6 32.4315 Q1174.15 38.7509 1174.15 49.9314 Q1174.15 61.0714 1168.6 67.4314 Q1163.05 73.7508 1153.33 73.7508 Q1143.57 73.7508 1138.02 67.4314 Q1132.51 61.0714 1132.51 49.9314 Q1132.51 38.7509 1138.02 32.4315 Q1143.57 26.1121 1153.33 26.1121 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1224.22 45.1919 L1224.22 72.576 L1216.77 72.576 L1216.77 45.4349 Q1216.77 38.994 1214.25 35.7938 Q1211.74 32.5936 1206.72 32.5936 Q1200.68 32.5936 1197.2 36.4419 Q1193.72 40.2903 1193.72 46.9338 L1193.72 72.576 L1186.22 72.576 L1186.22 27.2059 L1193.72 27.2059 L1193.72 34.2544 Q1196.39 30.163 1199.99 28.1376 Q1203.64 26.1121 1208.38 26.1121 Q1216.2 26.1121 1220.21 30.9732 Q1224.22 35.7938 1224.22 45.1919 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1235.32 46.5287 L1257.15 46.5287 L1257.15 53.1722 L1235.32 53.1722 L1235.32 46.5287 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1298.88 34.0924 L1298.88 9.54393 L1306.33 9.54393 L1306.33 72.576 L1298.88 72.576 L1298.88 65.7705 Q1296.53 69.8214 1292.92 71.8063 Q1289.36 73.7508 1284.33 73.7508 Q1276.11 73.7508 1270.93 67.1883 Q1265.78 60.6258 1265.78 49.9314 Q1265.78 39.2371 1270.93 32.6746 Q1276.11 26.1121 1284.33 26.1121 Q1289.36 26.1121 1292.92 28.0971 Q1296.53 30.0415 1298.88 34.0924 M1273.48 49.9314 Q1273.48 58.1548 1276.84 62.8538 Q1280.24 67.5124 1286.16 67.5124 Q1292.07 67.5124 1295.47 62.8538 Q1298.88 58.1548 1298.88 49.9314 Q1298.88 41.7081 1295.47 37.0496 Q1292.07 32.3505 1286.16 32.3505 Q1280.24 32.3505 1276.84 37.0496 Q1273.48 41.7081 1273.48 49.9314 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1321.68 27.2059 L1329.14 27.2059 L1329.14 72.576 L1321.68 72.576 L1321.68 27.2059 M1321.68 9.54393 L1329.14 9.54393 L1329.14 18.9825 L1321.68 18.9825 L1321.68 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1373.66 28.5427 L1373.66 35.5912 Q1370.5 33.9709 1367.09 33.1607 Q1363.69 32.3505 1360.05 32.3505 Q1354.5 32.3505 1351.7 34.0519 Q1348.95 35.7533 1348.95 39.156 Q1348.95 41.7486 1350.93 43.2475 Q1352.92 44.7058 1358.91 46.0426 L1361.46 46.6097 Q1369.4 48.3111 1372.72 51.4303 Q1376.09 54.509 1376.09 60.0587 Q1376.09 66.3781 1371.06 70.0644 Q1366.08 73.7508 1357.33 73.7508 Q1353.69 73.7508 1349.72 73.0216 Q1345.79 72.3329 1341.41 70.9151 L1341.41 63.2184 Q1345.54 65.3654 1349.55 66.4591 Q1353.56 67.5124 1357.49 67.5124 Q1362.76 67.5124 1365.6 65.73 Q1368.43 63.9071 1368.43 60.6258 Q1368.43 57.5877 1366.36 55.9673 Q1364.34 54.3469 1357.41 52.8481 L1354.82 52.2405 Q1347.89 50.7821 1344.81 47.7845 Q1341.74 44.7463 1341.74 39.4801 Q1341.74 33.0797 1346.27 29.5959 Q1350.81 26.1121 1359.15 26.1121 Q1363.29 26.1121 1366.93 26.7198 Q1370.58 27.3274 1373.66 28.5427 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1395.17 65.7705 L1395.17 89.8329 L1387.67 89.8329 L1387.67 27.2059 L1395.17 27.2059 L1395.17 34.0924 Q1397.52 30.0415 1401.08 28.0971 Q1404.69 26.1121 1409.67 26.1121 Q1417.93 26.1121 1423.08 32.6746 Q1428.26 39.2371 1428.26 49.9314 Q1428.26 60.6258 1423.08 67.1883 Q1417.93 73.7508 1409.67 73.7508 Q1404.69 73.7508 1401.08 71.8063 Q1397.52 69.8214 1395.17 65.7705 M1420.53 49.9314 Q1420.53 41.7081 1417.12 37.0496 Q1413.76 32.3505 1407.85 32.3505 Q1401.93 32.3505 1398.53 37.0496 Q1395.17 41.7081 1395.17 49.9314 Q1395.17 58.1548 1398.53 62.8538 Q1401.93 67.5124 1407.85 67.5124 Q1413.76 67.5124 1417.12 62.8538 Q1420.53 58.1548 1420.53 49.9314 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1440.62 9.54393 L1448.07 9.54393 L1448.07 72.576 L1440.62 72.576 L1440.62 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1484.29 49.7694 Q1475.25 49.7694 1471.77 51.8354 Q1468.29 53.9013 1468.29 58.8839 Q1468.29 62.8538 1470.88 65.2034 Q1473.51 67.5124 1478.01 67.5124 Q1484.21 67.5124 1487.93 63.1374 Q1491.7 58.7219 1491.7 51.4303 L1491.7 49.7694 L1484.29 49.7694 M1499.15 46.6907 L1499.15 72.576 L1491.7 72.576 L1491.7 65.6895 Q1489.15 69.8214 1485.34 71.8063 Q1481.53 73.7508 1476.02 73.7508 Q1469.06 73.7508 1464.92 69.8619 Q1460.83 65.9325 1460.83 59.3701 Q1460.83 51.7138 1465.94 47.825 Q1471.08 43.9361 1481.25 43.9361 L1491.7 43.9361 L1491.7 43.2069 Q1491.7 38.0623 1488.3 35.2672 Q1484.93 32.4315 1478.82 32.4315 Q1474.93 32.4315 1471.24 33.3632 Q1467.56 34.295 1464.15 36.1584 L1464.15 29.2718 Q1468.25 27.692 1472.09 26.9223 Q1475.94 26.1121 1479.59 26.1121 Q1489.43 26.1121 1494.29 31.2163 Q1499.15 36.3204 1499.15 46.6907 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1547.16 28.9478 L1547.16 35.9153 Q1544 34.1734 1540.8 33.3227 Q1537.64 32.4315 1534.4 32.4315 Q1527.15 32.4315 1523.13 37.0496 Q1519.12 41.6271 1519.12 49.9314 Q1519.12 58.2358 1523.13 62.8538 Q1527.15 67.4314 1534.4 67.4314 Q1537.64 67.4314 1540.8 66.5807 Q1544 65.6895 1547.16 63.9476 L1547.16 70.8341 Q1544.04 72.2924 1540.68 73.0216 Q1537.35 73.7508 1533.59 73.7508 Q1523.34 73.7508 1517.3 67.3098 Q1511.27 60.8689 1511.27 49.9314 Q1511.27 38.832 1517.34 32.472 Q1523.46 26.1121 1534.07 26.1121 Q1537.52 26.1121 1540.8 26.8413 Q1544.08 27.5299 1547.16 28.9478 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1598.93 48.0275 L1598.93 51.6733 L1564.66 51.6733 Q1565.14 59.3701 1569.27 63.421 Q1573.45 67.4314 1580.86 67.4314 Q1585.15 67.4314 1589.16 66.3781 Q1593.22 65.3249 1597.19 63.2184 L1597.19 70.267 Q1593.18 71.9684 1588.96 72.8596 Q1584.75 73.7508 1580.41 73.7508 Q1569.56 73.7508 1563.2 67.4314 Q1556.88 61.1119 1556.88 50.3365 Q1556.88 39.1965 1562.87 32.6746 Q1568.91 26.1121 1579.12 26.1121 Q1588.27 26.1121 1593.58 32.0264 Q1598.93 37.9003 1598.93 48.0275 M1591.47 45.84 Q1591.39 39.7232 1588.03 36.0774 Q1584.71 32.4315 1579.2 32.4315 Q1572.96 32.4315 1569.19 35.9558 Q1565.47 39.4801 1564.9 45.8805 L1591.47 45.84 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1646.48 35.9153 Q1649.28 30.8922 1653.17 28.5022 Q1657.06 26.1121 1662.32 26.1121 Q1669.41 26.1121 1673.26 31.0947 Q1677.11 36.0368 1677.11 45.1919 L1677.11 72.576 L1669.62 72.576 L1669.62 45.4349 Q1669.62 38.913 1667.31 35.7533 Q1665 32.5936 1660.26 32.5936 Q1654.47 32.5936 1651.1 36.4419 Q1647.74 40.2903 1647.74 46.9338 L1647.74 72.576 L1640.25 72.576 L1640.25 45.4349 Q1640.25 38.8725 1637.94 35.7533 Q1635.63 32.5936 1630.81 32.5936 Q1625.1 32.5936 1621.73 36.4824 Q1618.37 40.3308 1618.37 46.9338 L1618.37 72.576 L1610.88 72.576 L1610.88 27.2059 L1618.37 27.2059 L1618.37 34.2544 Q1620.92 30.082 1624.49 28.0971 Q1628.05 26.1121 1632.95 26.1121 Q1637.9 26.1121 1641.34 28.6237 Q1644.82 31.1352 1646.48 35.9153 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1730.78 48.0275 L1730.78 51.6733 L1696.51 51.6733 Q1697 59.3701 1701.13 63.421 Q1705.3 67.4314 1712.72 67.4314 Q1717.01 67.4314 1721.02 66.3781 Q1725.07 65.3249 1729.04 63.2184 L1729.04 70.267 Q1725.03 71.9684 1720.82 72.8596 Q1716.61 73.7508 1712.27 73.7508 Q1701.42 73.7508 1695.06 67.4314 Q1688.74 61.1119 1688.74 50.3365 Q1688.74 39.1965 1694.73 32.6746 Q1700.77 26.1121 1710.98 26.1121 Q1720.13 26.1121 1725.44 32.0264 Q1730.78 37.9003 1730.78 48.0275 M1723.33 45.84 Q1723.25 39.7232 1719.89 36.0774 Q1716.57 32.4315 1711.06 32.4315 Q1704.82 32.4315 1701.05 35.9558 Q1697.32 39.4801 1696.76 45.8805 L1723.33 45.84 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1780.73 45.1919 L1780.73 72.576 L1773.28 72.576 L1773.28 45.4349 Q1773.28 38.994 1770.77 35.7938 Q1768.26 32.5936 1763.23 32.5936 Q1757.2 32.5936 1753.71 36.4419 Q1750.23 40.2903 1750.23 46.9338 L1750.23 72.576 L1742.73 72.576 L1742.73 27.2059 L1750.23 27.2059 L1750.23 34.2544 Q1752.9 30.163 1756.51 28.1376 Q1760.15 26.1121 1764.89 26.1121 Q1772.71 26.1121 1776.72 30.9732 Q1780.73 35.7938 1780.73 45.1919 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip510)\" d=\"M1802.97 14.324 L1802.97 27.2059 L1818.32 27.2059 L1818.32 32.9987 L1802.97 32.9987 L1802.97 57.6282 Q1802.97 63.1779 1804.47 64.7578 Q1806.01 66.3376 1810.67 66.3376 L1818.32 66.3376 L1818.32 72.576 L1810.67 72.576 Q1802.04 72.576 1798.76 69.3758 Q1795.48 66.1351 1795.48 57.6282 L1795.48 32.9987 L1790.01 32.9987 L1790.01 27.2059 L1795.48 27.2059 L1795.48 14.324 L1802.97 14.324 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip512)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none\" points=\"424.786,1386.4 926.263,773.326 985.537,705.207 1056.5,637.088 1137.34,568.969 1232.41,500.851 1357.01,432.732 1532.78,364.613 1754.25,296.494 2009.96,228.375 2296.6,160.256 \"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"424.786\" y1=\"1386.4\" x2=\"424.786\" y2=\"1370.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"424.786\" y1=\"1386.4\" x2=\"408.786\" y2=\"1386.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"424.786\" y1=\"1386.4\" x2=\"424.786\" y2=\"1402.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"424.786\" y1=\"1386.4\" x2=\"440.786\" y2=\"1386.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"926.263\" y1=\"773.326\" x2=\"926.263\" y2=\"757.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"926.263\" y1=\"773.326\" x2=\"910.263\" y2=\"773.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"926.263\" y1=\"773.326\" x2=\"926.263\" y2=\"789.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"926.263\" y1=\"773.326\" x2=\"942.263\" y2=\"773.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"985.537\" y1=\"705.207\" x2=\"985.537\" y2=\"689.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"985.537\" y1=\"705.207\" x2=\"969.537\" y2=\"705.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"985.537\" y1=\"705.207\" x2=\"985.537\" y2=\"721.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"985.537\" y1=\"705.207\" x2=\"1001.54\" y2=\"705.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1056.5\" y2=\"621.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1040.5\" y2=\"637.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1056.5\" y2=\"653.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1072.5\" y2=\"637.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1137.34\" y2=\"552.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1121.34\" y2=\"568.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1137.34\" y2=\"584.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1153.34\" y2=\"568.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1232.41\" y2=\"484.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1216.41\" y2=\"500.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1232.41\" y2=\"516.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1248.41\" y2=\"500.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1357.01\" y2=\"416.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1341.01\" y2=\"432.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1357.01\" y2=\"448.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1373.01\" y2=\"432.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1532.78\" y2=\"348.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1516.78\" y2=\"364.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1532.78\" y2=\"380.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1548.78\" y2=\"364.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1754.25\" y2=\"280.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1738.25\" y2=\"296.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1754.25\" y2=\"312.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1770.25\" y2=\"296.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2009.96\" y2=\"212.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"2009.96\" y1=\"228.375\" x2=\"1993.96\" y2=\"228.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2009.96\" y2=\"244.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2025.96\" y2=\"228.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2296.6\" y2=\"144.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2280.6\" y2=\"160.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2296.6\" y2=\"176.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip512)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2312.6\" y2=\"160.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", "</svg>\n" ], "image/svg+xml": [ "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", "<defs>\n", - " <clipPath id=\"clip870\">\n", + " <clipPath id=\"clip480\">\n", " <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip870)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip480)\" d=\"M0 1600 L2400 1600 L2400 0 L0 0 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip871\">\n", + " <clipPath id=\"clip481\">\n", " <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", " </clipPath>\n", "</defs>\n", - "<path clip-path=\"url(#clip870)\" d=\"M368.631 1423.18 L2352.76 1423.18 L2352.76 123.472 L368.631 123.472 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<path clip-path=\"url(#clip480)\" d=\"M368.631 1423.18 L2352.76 1423.18 L2352.76 123.472 L368.631 123.472 Z\" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", "<defs>\n", - " <clipPath id=\"clip872\">\n", + " <clipPath id=\"clip482\">\n", " <rect x=\"368\" y=\"123\" width=\"1985\" height=\"1301\"/>\n", " </clipPath>\n", "</defs>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"424.786,1423.18 424.786,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"792.598,1423.18 792.598,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1160.41,1423.18 1160.41,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1528.22,1423.18 1528.22,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1896.03,1423.18 1896.03,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2263.85,1423.18 2263.85,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,1386.4 2352.76,1386.4 \"/>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,1079.86 2352.76,1079.86 \"/>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,773.326 2352.76,773.326 \"/>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,466.791 2352.76,466.791 \"/>\n", - "<polyline clip-path=\"url(#clip872)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,160.256 2352.76,160.256 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1423.18 2352.76,1423.18 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"424.786,1423.18 424.786,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"792.598,1423.18 792.598,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1160.41,1423.18 1160.41,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1528.22,1423.18 1528.22,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1896.03,1423.18 1896.03,1404.28 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2263.85,1423.18 2263.85,1404.28 \"/>\n", - "<path clip-path=\"url(#clip870)\" d=\"M387.089 1454.1 Q383.478 1454.1 381.65 1457.66 Q379.844 1461.2 379.844 1468.33 Q379.844 1475.44 381.65 1479.01 Q383.478 1482.55 387.089 1482.55 Q390.724 1482.55 392.529 1479.01 Q394.358 1475.44 394.358 1468.33 Q394.358 1461.2 392.529 1457.66 Q390.724 1454.1 387.089 1454.1 M387.089 1450.39 Q392.899 1450.39 395.955 1455 Q399.034 1459.58 399.034 1468.33 Q399.034 1477.06 395.955 1481.67 Q392.899 1486.25 387.089 1486.25 Q381.279 1486.25 378.2 1481.67 Q375.145 1477.06 375.145 1468.33 Q375.145 1459.58 378.2 1455 Q381.279 1450.39 387.089 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M407.251 1479.7 L412.135 1479.7 L412.135 1485.58 L407.251 1485.58 L407.251 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M432.321 1454.1 Q428.709 1454.1 426.881 1457.66 Q425.075 1461.2 425.075 1468.33 Q425.075 1475.44 426.881 1479.01 Q428.709 1482.55 432.321 1482.55 Q435.955 1482.55 437.76 1479.01 Q439.589 1475.44 439.589 1468.33 Q439.589 1461.2 437.76 1457.66 Q435.955 1454.1 432.321 1454.1 M432.321 1450.39 Q438.131 1450.39 441.186 1455 Q444.265 1459.58 444.265 1468.33 Q444.265 1477.06 441.186 1481.67 Q438.131 1486.25 432.321 1486.25 Q426.51 1486.25 423.432 1481.67 Q420.376 1477.06 420.376 1468.33 Q420.376 1459.58 423.432 1455 Q426.51 1450.39 432.321 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M462.482 1454.1 Q458.871 1454.1 457.043 1457.66 Q455.237 1461.2 455.237 1468.33 Q455.237 1475.44 457.043 1479.01 Q458.871 1482.55 462.482 1482.55 Q466.117 1482.55 467.922 1479.01 Q469.751 1475.44 469.751 1468.33 Q469.751 1461.2 467.922 1457.66 Q466.117 1454.1 462.482 1454.1 M462.482 1450.39 Q468.293 1450.39 471.348 1455 Q474.427 1459.58 474.427 1468.33 Q474.427 1477.06 471.348 1481.67 Q468.293 1486.25 462.482 1486.25 Q456.672 1486.25 453.594 1481.67 Q450.538 1477.06 450.538 1468.33 Q450.538 1459.58 453.594 1455 Q456.672 1450.39 462.482 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M755.399 1454.1 Q751.788 1454.1 749.959 1457.66 Q748.154 1461.2 748.154 1468.33 Q748.154 1475.44 749.959 1479.01 Q751.788 1482.55 755.399 1482.55 Q759.033 1482.55 760.839 1479.01 Q762.668 1475.44 762.668 1468.33 Q762.668 1461.2 760.839 1457.66 Q759.033 1454.1 755.399 1454.1 M755.399 1450.39 Q761.209 1450.39 764.265 1455 Q767.344 1459.58 767.344 1468.33 Q767.344 1477.06 764.265 1481.67 Q761.209 1486.25 755.399 1486.25 Q749.589 1486.25 746.51 1481.67 Q743.455 1477.06 743.455 1468.33 Q743.455 1459.58 746.51 1455 Q749.589 1450.39 755.399 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M775.561 1479.7 L780.445 1479.7 L780.445 1485.58 L775.561 1485.58 L775.561 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M800.63 1454.1 Q797.019 1454.1 795.191 1457.66 Q793.385 1461.2 793.385 1468.33 Q793.385 1475.44 795.191 1479.01 Q797.019 1482.55 800.63 1482.55 Q804.265 1482.55 806.07 1479.01 Q807.899 1475.44 807.899 1468.33 Q807.899 1461.2 806.07 1457.66 Q804.265 1454.1 800.63 1454.1 M800.63 1450.39 Q806.441 1450.39 809.496 1455 Q812.575 1459.58 812.575 1468.33 Q812.575 1477.06 809.496 1481.67 Q806.441 1486.25 800.63 1486.25 Q794.82 1486.25 791.742 1481.67 Q788.686 1477.06 788.686 1468.33 Q788.686 1459.58 791.742 1455 Q794.82 1450.39 800.63 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M820.839 1451.02 L839.195 1451.02 L839.195 1454.96 L825.121 1454.96 L825.121 1463.43 Q826.14 1463.08 827.158 1462.92 Q828.177 1462.73 829.195 1462.73 Q834.982 1462.73 838.362 1465.9 Q841.741 1469.08 841.741 1474.49 Q841.741 1480.07 838.269 1483.17 Q834.797 1486.25 828.477 1486.25 Q826.302 1486.25 824.033 1485.88 Q821.788 1485.51 819.38 1484.77 L819.38 1480.07 Q821.464 1481.2 823.686 1481.76 Q825.908 1482.32 828.385 1482.32 Q832.389 1482.32 834.727 1480.21 Q837.065 1478.1 837.065 1474.49 Q837.065 1470.88 834.727 1468.77 Q832.389 1466.67 828.385 1466.67 Q826.51 1466.67 824.635 1467.08 Q822.783 1467.5 820.839 1468.38 L820.839 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1122.71 1454.1 Q1119.1 1454.1 1117.27 1457.66 Q1115.47 1461.2 1115.47 1468.33 Q1115.47 1475.44 1117.27 1479.01 Q1119.1 1482.55 1122.71 1482.55 Q1126.35 1482.55 1128.15 1479.01 Q1129.98 1475.44 1129.98 1468.33 Q1129.98 1461.2 1128.15 1457.66 Q1126.35 1454.1 1122.71 1454.1 M1122.71 1450.39 Q1128.52 1450.39 1131.58 1455 Q1134.66 1459.58 1134.66 1468.33 Q1134.66 1477.06 1131.58 1481.67 Q1128.52 1486.25 1122.71 1486.25 Q1116.9 1486.25 1113.82 1481.67 Q1110.77 1477.06 1110.77 1468.33 Q1110.77 1459.58 1113.82 1455 Q1116.9 1450.39 1122.71 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1142.88 1479.7 L1147.76 1479.7 L1147.76 1485.58 L1142.88 1485.58 L1142.88 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1158.76 1481.64 L1166.39 1481.64 L1166.39 1455.28 L1158.08 1456.95 L1158.08 1452.69 L1166.35 1451.02 L1171.02 1451.02 L1171.02 1481.64 L1178.66 1481.64 L1178.66 1485.58 L1158.76 1485.58 L1158.76 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1198.11 1454.1 Q1194.5 1454.1 1192.67 1457.66 Q1190.86 1461.2 1190.86 1468.33 Q1190.86 1475.44 1192.67 1479.01 Q1194.5 1482.55 1198.11 1482.55 Q1201.74 1482.55 1203.55 1479.01 Q1205.38 1475.44 1205.38 1468.33 Q1205.38 1461.2 1203.55 1457.66 Q1201.74 1454.1 1198.11 1454.1 M1198.11 1450.39 Q1203.92 1450.39 1206.97 1455 Q1210.05 1459.58 1210.05 1468.33 Q1210.05 1477.06 1206.97 1481.67 Q1203.92 1486.25 1198.11 1486.25 Q1192.3 1486.25 1189.22 1481.67 Q1186.16 1477.06 1186.16 1468.33 Q1186.16 1459.58 1189.22 1455 Q1192.3 1450.39 1198.11 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1491.02 1454.1 Q1487.41 1454.1 1485.58 1457.66 Q1483.78 1461.2 1483.78 1468.33 Q1483.78 1475.44 1485.58 1479.01 Q1487.41 1482.55 1491.02 1482.55 Q1494.66 1482.55 1496.46 1479.01 Q1498.29 1475.44 1498.29 1468.33 Q1498.29 1461.2 1496.46 1457.66 Q1494.66 1454.1 1491.02 1454.1 M1491.02 1450.39 Q1496.83 1450.39 1499.89 1455 Q1502.97 1459.58 1502.97 1468.33 Q1502.97 1477.06 1499.89 1481.67 Q1496.83 1486.25 1491.02 1486.25 Q1485.21 1486.25 1482.13 1481.67 Q1479.08 1477.06 1479.08 1468.33 Q1479.08 1459.58 1482.13 1455 Q1485.21 1450.39 1491.02 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1511.19 1479.7 L1516.07 1479.7 L1516.07 1485.58 L1511.19 1485.58 L1511.19 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1527.06 1481.64 L1534.7 1481.64 L1534.7 1455.28 L1526.39 1456.95 L1526.39 1452.69 L1534.66 1451.02 L1539.33 1451.02 L1539.33 1481.64 L1546.97 1481.64 L1546.97 1485.58 L1527.06 1485.58 L1527.06 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1556.46 1451.02 L1574.82 1451.02 L1574.82 1454.96 L1560.75 1454.96 L1560.75 1463.43 Q1561.76 1463.08 1562.78 1462.92 Q1563.8 1462.73 1564.82 1462.73 Q1570.61 1462.73 1573.99 1465.9 Q1577.37 1469.08 1577.37 1474.49 Q1577.37 1480.07 1573.89 1483.17 Q1570.42 1486.25 1564.1 1486.25 Q1561.93 1486.25 1559.66 1485.88 Q1557.41 1485.51 1555 1484.77 L1555 1480.07 Q1557.09 1481.2 1559.31 1481.76 Q1561.53 1482.32 1564.01 1482.32 Q1568.01 1482.32 1570.35 1480.21 Q1572.69 1478.1 1572.69 1474.49 Q1572.69 1470.88 1570.35 1468.77 Q1568.01 1466.67 1564.01 1466.67 Q1562.13 1466.67 1560.26 1467.08 Q1558.41 1467.5 1556.46 1468.38 L1556.46 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1858.34 1454.1 Q1854.73 1454.1 1852.9 1457.66 Q1851.09 1461.2 1851.09 1468.33 Q1851.09 1475.44 1852.9 1479.01 Q1854.73 1482.55 1858.34 1482.55 Q1861.97 1482.55 1863.78 1479.01 Q1865.61 1475.44 1865.61 1468.33 Q1865.61 1461.2 1863.78 1457.66 Q1861.97 1454.1 1858.34 1454.1 M1858.34 1450.39 Q1864.15 1450.39 1867.2 1455 Q1870.28 1459.58 1870.28 1468.33 Q1870.28 1477.06 1867.2 1481.67 Q1864.15 1486.25 1858.34 1486.25 Q1852.53 1486.25 1849.45 1481.67 Q1846.39 1477.06 1846.39 1468.33 Q1846.39 1459.58 1849.45 1455 Q1852.53 1450.39 1858.34 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1878.5 1479.7 L1883.38 1479.7 L1883.38 1485.58 L1878.5 1485.58 L1878.5 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1897.6 1481.64 L1913.92 1481.64 L1913.92 1485.58 L1891.97 1485.58 L1891.97 1481.64 Q1894.63 1478.89 1899.22 1474.26 Q1903.82 1469.61 1905 1468.27 Q1907.25 1465.74 1908.13 1464.01 Q1909.03 1462.25 1909.03 1460.56 Q1909.03 1457.8 1907.09 1456.07 Q1905.17 1454.33 1902.06 1454.33 Q1899.87 1454.33 1897.41 1455.09 Q1894.98 1455.86 1892.2 1457.41 L1892.2 1452.69 Q1895.03 1451.55 1897.48 1450.97 Q1899.93 1450.39 1901.97 1450.39 Q1907.34 1450.39 1910.54 1453.08 Q1913.73 1455.77 1913.73 1460.26 Q1913.73 1462.39 1912.92 1464.31 Q1912.13 1466.2 1910.03 1468.8 Q1909.45 1469.47 1906.35 1472.69 Q1903.25 1475.88 1897.6 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1933.73 1454.1 Q1930.12 1454.1 1928.29 1457.66 Q1926.49 1461.2 1926.49 1468.33 Q1926.49 1475.44 1928.29 1479.01 Q1930.12 1482.55 1933.73 1482.55 Q1937.37 1482.55 1939.17 1479.01 Q1941 1475.44 1941 1468.33 Q1941 1461.2 1939.17 1457.66 Q1937.37 1454.1 1933.73 1454.1 M1933.73 1450.39 Q1939.54 1450.39 1942.6 1455 Q1945.68 1459.58 1945.68 1468.33 Q1945.68 1477.06 1942.6 1481.67 Q1939.54 1486.25 1933.73 1486.25 Q1927.92 1486.25 1924.84 1481.67 Q1921.79 1477.06 1921.79 1468.33 Q1921.79 1459.58 1924.84 1455 Q1927.92 1450.39 1933.73 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M2226.65 1454.1 Q2223.04 1454.1 2221.21 1457.66 Q2219.4 1461.2 2219.4 1468.33 Q2219.4 1475.44 2221.21 1479.01 Q2223.04 1482.55 2226.65 1482.55 Q2230.28 1482.55 2232.09 1479.01 Q2233.92 1475.44 2233.92 1468.33 Q2233.92 1461.2 2232.09 1457.66 Q2230.28 1454.1 2226.65 1454.1 M2226.65 1450.39 Q2232.46 1450.39 2235.51 1455 Q2238.59 1459.58 2238.59 1468.33 Q2238.59 1477.06 2235.51 1481.67 Q2232.46 1486.25 2226.65 1486.25 Q2220.84 1486.25 2217.76 1481.67 Q2214.7 1477.06 2214.7 1468.33 Q2214.7 1459.58 2217.76 1455 Q2220.84 1450.39 2226.65 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M2246.81 1479.7 L2251.69 1479.7 L2251.69 1485.58 L2246.81 1485.58 L2246.81 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M2265.91 1481.64 L2282.23 1481.64 L2282.23 1485.58 L2260.28 1485.58 L2260.28 1481.64 Q2262.94 1478.89 2267.53 1474.26 Q2272.13 1469.61 2273.31 1468.27 Q2275.56 1465.74 2276.44 1464.01 Q2277.34 1462.25 2277.34 1460.56 Q2277.34 1457.8 2275.4 1456.07 Q2273.48 1454.33 2270.37 1454.33 Q2268.18 1454.33 2265.72 1455.09 Q2263.29 1455.86 2260.51 1457.41 L2260.51 1452.69 Q2263.34 1451.55 2265.79 1450.97 Q2268.24 1450.39 2270.28 1450.39 Q2275.65 1450.39 2278.85 1453.08 Q2282.04 1455.77 2282.04 1460.26 Q2282.04 1462.39 2281.23 1464.31 Q2280.44 1466.2 2278.34 1468.8 Q2277.76 1469.47 2274.66 1472.69 Q2271.55 1475.88 2265.91 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M2292.09 1451.02 L2310.44 1451.02 L2310.44 1454.96 L2296.37 1454.96 L2296.37 1463.43 Q2297.39 1463.08 2298.41 1462.92 Q2299.43 1462.73 2300.44 1462.73 Q2306.23 1462.73 2309.61 1465.9 Q2312.99 1469.08 2312.99 1474.49 Q2312.99 1480.07 2309.52 1483.17 Q2306.05 1486.25 2299.73 1486.25 Q2297.55 1486.25 2295.28 1485.88 Q2293.04 1485.51 2290.63 1484.77 L2290.63 1480.07 Q2292.71 1481.2 2294.93 1481.76 Q2297.16 1482.32 2299.63 1482.32 Q2303.64 1482.32 2305.98 1480.21 Q2308.31 1478.1 2308.31 1474.49 Q2308.31 1470.88 2305.98 1468.77 Q2303.64 1466.67 2299.63 1466.67 Q2297.76 1466.67 2295.88 1467.08 Q2294.03 1467.5 2292.09 1468.38 L2292.09 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M966.529 1520.52 L976.109 1520.52 L988.236 1552.86 L1000.43 1520.52 L1010.01 1520.52 L1010.01 1568.04 L1003.74 1568.04 L1003.74 1526.32 L991.483 1558.91 L985.021 1558.91 L972.767 1526.32 L972.767 1568.04 L966.529 1568.04 L966.529 1520.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1038.72 1550.12 Q1031.62 1550.12 1028.88 1551.75 Q1026.14 1553.37 1026.14 1557.29 Q1026.14 1560.4 1028.18 1562.25 Q1030.25 1564.07 1033.78 1564.07 Q1038.65 1564.07 1041.58 1560.63 Q1044.54 1557.16 1044.54 1551.43 L1044.54 1550.12 L1038.72 1550.12 M1050.4 1547.71 L1050.4 1568.04 L1044.54 1568.04 L1044.54 1562.63 Q1042.54 1565.88 1039.54 1567.44 Q1036.55 1568.97 1032.22 1568.97 Q1026.75 1568.97 1023.5 1565.91 Q1020.29 1562.82 1020.29 1557.67 Q1020.29 1551.65 1024.3 1548.6 Q1028.34 1545.54 1036.33 1545.54 L1044.54 1545.54 L1044.54 1544.97 Q1044.54 1540.93 1041.87 1538.73 Q1039.23 1536.5 1034.42 1536.5 Q1031.36 1536.5 1028.47 1537.23 Q1025.57 1537.97 1022.9 1539.43 L1022.9 1534.02 Q1026.11 1532.78 1029.14 1532.17 Q1032.16 1531.54 1035.02 1531.54 Q1042.76 1531.54 1046.58 1535.55 Q1050.4 1539.56 1050.4 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1092.09 1532.4 L1079.2 1549.74 L1092.76 1568.04 L1085.85 1568.04 L1075.48 1554.04 L1065.1 1568.04 L1058.2 1568.04 L1072.04 1549.39 L1059.37 1532.4 L1066.28 1532.4 L1075.73 1545.1 L1085.19 1532.4 L1092.09 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1101.04 1532.4 L1106.89 1532.4 L1106.89 1568.04 L1101.04 1568.04 L1101.04 1532.4 M1101.04 1518.52 L1106.89 1518.52 L1106.89 1525.93 L1101.04 1525.93 L1101.04 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1146.9 1539.24 Q1149.1 1535.29 1152.15 1533.41 Q1155.21 1531.54 1159.35 1531.54 Q1164.92 1531.54 1167.94 1535.45 Q1170.96 1539.33 1170.96 1546.53 L1170.96 1568.04 L1165.08 1568.04 L1165.08 1546.72 Q1165.08 1541.59 1163.26 1539.11 Q1161.45 1536.63 1157.72 1536.63 Q1153.17 1536.63 1150.53 1539.65 Q1147.89 1542.68 1147.89 1547.9 L1147.89 1568.04 L1142 1568.04 L1142 1546.72 Q1142 1541.56 1140.19 1539.11 Q1138.37 1536.63 1134.58 1536.63 Q1130.1 1536.63 1127.45 1539.68 Q1124.81 1542.71 1124.81 1547.9 L1124.81 1568.04 L1118.92 1568.04 L1118.92 1532.4 L1124.81 1532.4 L1124.81 1537.93 Q1126.82 1534.66 1129.62 1533.1 Q1132.42 1531.54 1136.27 1531.54 Q1140.15 1531.54 1142.86 1533.51 Q1145.6 1535.48 1146.9 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1182.04 1553.98 L1182.04 1532.4 L1187.9 1532.4 L1187.9 1553.75 Q1187.9 1558.81 1189.87 1561.36 Q1191.84 1563.87 1195.79 1563.87 Q1200.53 1563.87 1203.27 1560.85 Q1206.04 1557.83 1206.04 1552.61 L1206.04 1532.4 L1211.9 1532.4 L1211.9 1568.04 L1206.04 1568.04 L1206.04 1562.57 Q1203.91 1565.82 1201.07 1567.41 Q1198.27 1568.97 1194.55 1568.97 Q1188.41 1568.97 1185.22 1565.15 Q1182.04 1561.33 1182.04 1553.98 M1196.78 1531.54 L1196.78 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1251.71 1539.24 Q1253.91 1535.29 1256.96 1533.41 Q1260.02 1531.54 1264.16 1531.54 Q1269.73 1531.54 1272.75 1535.45 Q1275.78 1539.33 1275.78 1546.53 L1275.78 1568.04 L1269.89 1568.04 L1269.89 1546.72 Q1269.89 1541.59 1268.07 1539.11 Q1266.26 1536.63 1262.53 1536.63 Q1257.98 1536.63 1255.34 1539.65 Q1252.7 1542.68 1252.7 1547.9 L1252.7 1568.04 L1246.81 1568.04 L1246.81 1546.72 Q1246.81 1541.56 1245 1539.11 Q1243.18 1536.63 1239.4 1536.63 Q1234.91 1536.63 1232.27 1539.68 Q1229.62 1542.71 1229.62 1547.9 L1229.62 1568.04 L1223.74 1568.04 L1223.74 1532.4 L1229.62 1532.4 L1229.62 1537.93 Q1231.63 1534.66 1234.43 1533.1 Q1237.23 1531.54 1241.08 1531.54 Q1244.97 1531.54 1247.67 1533.51 Q1250.41 1535.48 1251.71 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1331.63 1537.81 L1331.63 1518.52 L1337.49 1518.52 L1337.49 1568.04 L1331.63 1568.04 L1331.63 1562.7 Q1329.79 1565.88 1326.96 1567.44 Q1324.15 1568.97 1320.21 1568.97 Q1313.75 1568.97 1309.67 1563.81 Q1305.63 1558.65 1305.63 1550.25 Q1305.63 1541.85 1309.67 1536.69 Q1313.75 1531.54 1320.21 1531.54 Q1324.15 1531.54 1326.96 1533.1 Q1329.79 1534.62 1331.63 1537.81 M1311.68 1550.25 Q1311.68 1556.71 1314.32 1560.4 Q1316.99 1564.07 1321.64 1564.07 Q1326.29 1564.07 1328.96 1560.4 Q1331.63 1556.71 1331.63 1550.25 Q1331.63 1543.79 1328.96 1540.13 Q1326.29 1536.44 1321.64 1536.44 Q1316.99 1536.44 1314.32 1540.13 Q1311.68 1543.79 1311.68 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1380.05 1548.76 L1380.05 1551.62 L1353.12 1551.62 Q1353.5 1557.67 1356.75 1560.85 Q1360.03 1564 1365.85 1564 Q1369.22 1564 1372.37 1563.17 Q1375.56 1562.35 1378.68 1560.69 L1378.68 1566.23 Q1375.53 1567.57 1372.22 1568.27 Q1368.91 1568.97 1365.5 1568.97 Q1356.97 1568.97 1351.97 1564 Q1347.01 1559.04 1347.01 1550.57 Q1347.01 1541.82 1351.72 1536.69 Q1356.46 1531.54 1364.48 1531.54 Q1371.67 1531.54 1375.84 1536.18 Q1380.05 1540.8 1380.05 1548.76 M1374.19 1547.04 Q1374.13 1542.23 1371.48 1539.37 Q1368.87 1536.5 1364.54 1536.5 Q1359.64 1536.5 1356.68 1539.27 Q1353.76 1542.04 1353.31 1547.07 L1374.19 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1407.7 1518.52 L1407.7 1523.39 L1402.1 1523.39 Q1398.95 1523.39 1397.71 1524.66 Q1396.5 1525.93 1396.5 1529.24 L1396.5 1532.4 L1406.14 1532.4 L1406.14 1536.95 L1396.5 1536.95 L1396.5 1568.04 L1390.61 1568.04 L1390.61 1536.95 L1385.01 1536.95 L1385.01 1532.4 L1390.61 1532.4 L1390.61 1529.91 Q1390.61 1523.96 1393.38 1521.26 Q1396.15 1518.52 1402.17 1518.52 L1407.7 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1412.61 1518.52 L1418.46 1518.52 L1418.46 1568.04 L1412.61 1568.04 L1412.61 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1461.21 1548.76 L1461.21 1551.62 L1434.28 1551.62 Q1434.66 1557.67 1437.91 1560.85 Q1441.19 1564 1447.01 1564 Q1450.39 1564 1453.54 1563.17 Q1456.72 1562.35 1459.84 1560.69 L1459.84 1566.23 Q1456.69 1567.57 1453.38 1568.27 Q1450.07 1568.97 1446.66 1568.97 Q1438.13 1568.97 1433.14 1564 Q1428.17 1559.04 1428.17 1550.57 Q1428.17 1541.82 1432.88 1536.69 Q1437.62 1531.54 1445.64 1531.54 Q1452.84 1531.54 1457.01 1536.18 Q1461.21 1540.8 1461.21 1548.76 M1455.35 1547.04 Q1455.29 1542.23 1452.65 1539.37 Q1450.04 1536.5 1445.71 1536.5 Q1440.81 1536.5 1437.85 1539.27 Q1434.92 1542.04 1434.47 1547.07 L1455.35 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1496.47 1533.76 L1496.47 1539.24 Q1493.99 1537.87 1491.48 1537.2 Q1488.99 1536.5 1486.45 1536.5 Q1480.75 1536.5 1477.6 1540.13 Q1474.45 1543.73 1474.45 1550.25 Q1474.45 1556.78 1477.6 1560.4 Q1480.75 1564 1486.45 1564 Q1488.99 1564 1491.48 1563.33 Q1493.99 1562.63 1496.47 1561.26 L1496.47 1566.68 Q1494.02 1567.82 1491.38 1568.39 Q1488.77 1568.97 1485.81 1568.97 Q1477.76 1568.97 1473.02 1563.91 Q1468.27 1558.85 1468.27 1550.25 Q1468.27 1541.53 1473.05 1536.53 Q1477.85 1531.54 1486.19 1531.54 Q1488.9 1531.54 1491.48 1532.11 Q1494.06 1532.65 1496.47 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1512.45 1522.27 L1512.45 1532.4 L1524.52 1532.4 L1524.52 1536.95 L1512.45 1536.95 L1512.45 1556.3 Q1512.45 1560.66 1513.63 1561.9 Q1514.84 1563.14 1518.5 1563.14 L1524.52 1563.14 L1524.52 1568.04 L1518.5 1568.04 Q1511.72 1568.04 1509.14 1565.53 Q1506.56 1562.98 1506.56 1556.3 L1506.56 1536.95 L1502.27 1536.95 L1502.27 1532.4 L1506.56 1532.4 L1506.56 1522.27 L1512.45 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1532.22 1532.4 L1538.07 1532.4 L1538.07 1568.04 L1532.22 1568.04 L1532.22 1532.4 M1532.22 1518.52 L1538.07 1518.52 L1538.07 1525.93 L1532.22 1525.93 L1532.22 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1564.14 1536.5 Q1559.43 1536.5 1556.69 1540.19 Q1553.96 1543.85 1553.96 1550.25 Q1553.96 1556.65 1556.66 1560.34 Q1559.4 1564 1564.14 1564 Q1568.82 1564 1571.56 1560.31 Q1574.29 1556.62 1574.29 1550.25 Q1574.29 1543.92 1571.56 1540.23 Q1568.82 1536.5 1564.14 1536.5 M1564.14 1531.54 Q1571.78 1531.54 1576.14 1536.5 Q1580.5 1541.47 1580.5 1550.25 Q1580.5 1559 1576.14 1564 Q1571.78 1568.97 1564.14 1568.97 Q1556.47 1568.97 1552.11 1564 Q1547.78 1559 1547.78 1550.25 Q1547.78 1541.47 1552.11 1536.5 Q1556.47 1531.54 1564.14 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1619.84 1546.53 L1619.84 1568.04 L1613.99 1568.04 L1613.99 1546.72 Q1613.99 1541.66 1612.01 1539.14 Q1610.04 1536.63 1606.09 1536.63 Q1601.35 1536.63 1598.61 1539.65 Q1595.87 1542.68 1595.87 1547.9 L1595.87 1568.04 L1589.99 1568.04 L1589.99 1532.4 L1595.87 1532.4 L1595.87 1537.93 Q1597.98 1534.72 1600.81 1533.13 Q1603.67 1531.54 1607.4 1531.54 Q1613.54 1531.54 1616.69 1535.36 Q1619.84 1539.14 1619.84 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1651.7 1518.52 L1665.2 1518.52 L1665.2 1523.07 L1657.56 1523.07 L1657.56 1572.09 L1665.2 1572.09 L1665.2 1576.64 L1651.7 1576.64 L1651.7 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1705.43 1539.24 Q1707.62 1535.29 1710.68 1533.41 Q1713.74 1531.54 1717.87 1531.54 Q1723.44 1531.54 1726.47 1535.45 Q1729.49 1539.33 1729.49 1546.53 L1729.49 1568.04 L1723.6 1568.04 L1723.6 1546.72 Q1723.6 1541.59 1721.79 1539.11 Q1719.97 1536.63 1716.25 1536.63 Q1711.7 1536.63 1709.06 1539.65 Q1706.42 1542.68 1706.42 1547.9 L1706.42 1568.04 L1700.53 1568.04 L1700.53 1546.72 Q1700.53 1541.56 1698.71 1539.11 Q1696.9 1536.63 1693.11 1536.63 Q1688.62 1536.63 1685.98 1539.68 Q1683.34 1542.71 1683.34 1547.9 L1683.34 1568.04 L1677.45 1568.04 L1677.45 1532.4 L1683.34 1532.4 L1683.34 1537.93 Q1685.34 1534.66 1688.15 1533.1 Q1690.95 1531.54 1694.8 1531.54 Q1698.68 1531.54 1701.39 1533.51 Q1704.12 1535.48 1705.43 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1754.86 1518.52 L1754.86 1576.64 L1741.36 1576.64 L1741.36 1572.09 L1748.97 1572.09 L1748.97 1523.07 L1741.36 1523.07 L1741.36 1518.52 L1754.86 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1423.18 368.631,123.472 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1386.4 387.529,1386.4 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1079.86 387.529,1079.86 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,773.326 387.529,773.326 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,466.791 387.529,466.791 \"/>\n", - "<polyline clip-path=\"url(#clip870)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,160.256 387.529,160.256 \"/>\n", - "<path clip-path=\"url(#clip870)\" d=\"M320.687 1372.19 Q317.076 1372.19 315.247 1375.76 Q313.442 1379.3 313.442 1386.43 Q313.442 1393.54 315.247 1397.1 Q317.076 1400.64 320.687 1400.64 Q324.321 1400.64 326.127 1397.1 Q327.955 1393.54 327.955 1386.43 Q327.955 1379.3 326.127 1375.76 Q324.321 1372.19 320.687 1372.19 M320.687 1368.49 Q326.497 1368.49 329.553 1373.1 Q332.631 1377.68 332.631 1386.43 Q332.631 1395.16 329.553 1399.76 Q326.497 1404.35 320.687 1404.35 Q314.877 1404.35 311.798 1399.76 Q308.743 1395.16 308.743 1386.43 Q308.743 1377.68 311.798 1373.1 Q314.877 1368.49 320.687 1368.49 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M119.885 1099.65 L136.204 1099.65 L136.204 1103.59 L114.26 1103.59 L114.26 1099.65 Q116.922 1096.9 121.505 1092.27 Q126.112 1087.62 127.292 1086.27 Q129.538 1083.75 130.417 1082.01 Q131.32 1080.26 131.32 1078.57 Q131.32 1075.81 129.376 1074.07 Q127.455 1072.34 124.353 1072.34 Q122.154 1072.34 119.7 1073.1 Q117.269 1073.87 114.492 1075.42 L114.492 1070.7 Q117.316 1069.56 119.769 1068.98 Q122.223 1068.4 124.26 1068.4 Q129.63 1068.4 132.825 1071.09 Q136.019 1073.77 136.019 1078.26 Q136.019 1080.39 135.209 1082.32 Q134.422 1084.21 132.316 1086.81 Q131.737 1087.48 128.635 1090.69 Q125.533 1093.89 119.885 1099.65 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M146.019 1097.71 L150.903 1097.71 L150.903 1103.59 L146.019 1103.59 L146.019 1097.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M161.135 1069.03 L179.491 1069.03 L179.491 1072.96 L165.417 1072.96 L165.417 1081.44 Q166.436 1081.09 167.454 1080.93 Q168.473 1080.74 169.491 1080.74 Q175.278 1080.74 178.658 1083.91 Q182.038 1087.08 182.038 1092.5 Q182.038 1098.08 178.565 1101.18 Q175.093 1104.26 168.774 1104.26 Q166.598 1104.26 164.329 1103.89 Q162.084 1103.52 159.677 1102.78 L159.677 1098.08 Q161.76 1099.21 163.982 1099.77 Q166.204 1100.32 168.681 1100.32 Q172.686 1100.32 175.024 1098.22 Q177.362 1096.11 177.362 1092.5 Q177.362 1088.89 175.024 1086.78 Q172.686 1084.68 168.681 1084.68 Q166.806 1084.68 164.931 1085.09 Q163.079 1085.51 161.135 1086.39 L161.135 1069.03 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M201.25 1072.11 Q197.639 1072.11 195.811 1075.67 Q194.005 1079.21 194.005 1086.34 Q194.005 1093.45 195.811 1097.01 Q197.639 1100.56 201.25 1100.56 Q204.885 1100.56 206.69 1097.01 Q208.519 1093.45 208.519 1086.34 Q208.519 1079.21 206.69 1075.67 Q204.885 1072.11 201.25 1072.11 M201.25 1068.4 Q207.061 1068.4 210.116 1073.01 Q213.195 1077.59 213.195 1086.34 Q213.195 1095.07 210.116 1099.68 Q207.061 1104.26 201.25 1104.26 Q195.44 1104.26 192.362 1099.68 Q189.306 1095.07 189.306 1086.34 Q189.306 1077.59 192.362 1073.01 Q195.44 1068.4 201.25 1068.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M249.584 1078.13 L239.005 1088.75 L249.584 1099.33 L246.829 1102.13 L236.204 1091.51 L225.579 1102.13 L222.848 1099.33 L233.403 1088.75 L222.848 1078.13 L225.579 1075.32 L236.204 1085.95 L246.829 1075.32 L249.584 1078.13 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M261.945 1099.65 L269.583 1099.65 L269.583 1073.29 L261.273 1074.95 L261.273 1070.7 L269.537 1069.03 L274.213 1069.03 L274.213 1099.65 L281.852 1099.65 L281.852 1103.59 L261.945 1103.59 L261.945 1099.65 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M301.296 1072.11 Q297.685 1072.11 295.856 1075.67 Q294.051 1079.21 294.051 1086.34 Q294.051 1093.45 295.856 1097.01 Q297.685 1100.56 301.296 1100.56 Q304.93 1100.56 306.736 1097.01 Q308.565 1093.45 308.565 1086.34 Q308.565 1079.21 306.736 1075.67 Q304.93 1072.11 301.296 1072.11 M301.296 1068.4 Q307.106 1068.4 310.162 1073.01 Q313.241 1077.59 313.241 1086.34 Q313.241 1095.07 310.162 1099.68 Q307.106 1104.26 301.296 1104.26 Q295.486 1104.26 292.407 1099.68 Q289.352 1095.07 289.352 1086.34 Q289.352 1077.59 292.407 1073.01 Q295.486 1068.4 301.296 1068.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M323.265 1060.62 Q320.707 1060.62 319.203 1062.37 Q317.717 1064.12 317.717 1067.17 Q317.717 1070.2 319.203 1071.97 Q320.707 1073.71 323.265 1073.71 Q325.823 1073.71 327.309 1071.97 Q328.813 1070.2 328.813 1067.17 Q328.813 1064.12 327.309 1062.37 Q325.823 1060.62 323.265 1060.62 M330.807 1048.72 L330.807 1052.18 Q329.378 1051.5 327.911 1051.14 Q326.462 1050.79 325.033 1050.79 Q321.271 1050.79 319.278 1053.33 Q317.303 1055.87 317.021 1061 Q318.131 1059.36 319.804 1058.5 Q321.478 1057.61 323.491 1057.61 Q327.723 1057.61 330.168 1060.19 Q332.631 1062.75 332.631 1067.17 Q332.631 1071.49 330.074 1074.11 Q327.516 1076.72 323.265 1076.72 Q318.394 1076.72 315.817 1073 Q313.241 1069.26 313.241 1062.17 Q313.241 1055.51 316.4 1051.56 Q319.56 1047.59 324.883 1047.59 Q326.312 1047.59 327.76 1047.87 Q329.227 1048.15 330.807 1048.72 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M115.904 762.494 L134.26 762.494 L134.26 766.429 L120.186 766.429 L120.186 774.901 Q121.205 774.554 122.223 774.392 Q123.242 774.206 124.26 774.206 Q130.047 774.206 133.427 777.378 Q136.806 780.549 136.806 785.966 Q136.806 791.544 133.334 794.646 Q129.862 797.725 123.543 797.725 Q121.367 797.725 119.098 797.355 Q116.853 796.984 114.445 796.243 L114.445 791.544 Q116.529 792.679 118.751 793.234 Q120.973 793.79 123.45 793.79 Q127.455 793.79 129.792 791.683 Q132.13 789.577 132.13 785.966 Q132.13 782.355 129.792 780.248 Q127.455 778.142 123.45 778.142 Q121.575 778.142 119.7 778.558 Q117.848 778.975 115.904 779.855 L115.904 762.494 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M146.019 791.174 L150.903 791.174 L150.903 797.054 L146.019 797.054 L146.019 791.174 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M171.089 765.572 Q167.477 765.572 165.649 769.137 Q163.843 772.679 163.843 779.808 Q163.843 786.915 165.649 790.48 Q167.477 794.021 171.089 794.021 Q174.723 794.021 176.528 790.48 Q178.357 786.915 178.357 779.808 Q178.357 772.679 176.528 769.137 Q174.723 765.572 171.089 765.572 M171.089 761.869 Q176.899 761.869 179.954 766.475 Q183.033 771.058 183.033 779.808 Q183.033 788.535 179.954 793.142 Q176.899 797.725 171.089 797.725 Q165.278 797.725 162.2 793.142 Q159.144 788.535 159.144 779.808 Q159.144 771.058 162.2 766.475 Q165.278 761.869 171.089 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M201.25 765.572 Q197.639 765.572 195.811 769.137 Q194.005 772.679 194.005 779.808 Q194.005 786.915 195.811 790.48 Q197.639 794.021 201.25 794.021 Q204.885 794.021 206.69 790.48 Q208.519 786.915 208.519 779.808 Q208.519 772.679 206.69 769.137 Q204.885 765.572 201.25 765.572 M201.25 761.869 Q207.061 761.869 210.116 766.475 Q213.195 771.058 213.195 779.808 Q213.195 788.535 210.116 793.142 Q207.061 797.725 201.25 797.725 Q195.44 797.725 192.362 793.142 Q189.306 788.535 189.306 779.808 Q189.306 771.058 192.362 766.475 Q195.44 761.869 201.25 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M249.584 771.591 L239.005 782.216 L249.584 792.794 L246.829 795.595 L236.204 784.97 L225.579 795.595 L222.848 792.794 L233.403 782.216 L222.848 771.591 L225.579 768.79 L236.204 779.415 L246.829 768.79 L249.584 771.591 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M261.945 793.118 L269.583 793.118 L269.583 766.753 L261.273 768.419 L261.273 764.16 L269.537 762.494 L274.213 762.494 L274.213 793.118 L281.852 793.118 L281.852 797.054 L261.945 797.054 L261.945 793.118 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M301.296 765.572 Q297.685 765.572 295.856 769.137 Q294.051 772.679 294.051 779.808 Q294.051 786.915 295.856 790.48 Q297.685 794.021 301.296 794.021 Q304.93 794.021 306.736 790.48 Q308.565 786.915 308.565 779.808 Q308.565 772.679 306.736 769.137 Q304.93 765.572 301.296 765.572 M301.296 761.869 Q307.106 761.869 310.162 766.475 Q313.241 771.058 313.241 779.808 Q313.241 788.535 310.162 793.142 Q307.106 797.725 301.296 797.725 Q295.486 797.725 292.407 793.142 Q289.352 788.535 289.352 779.808 Q289.352 771.058 292.407 766.475 Q295.486 761.869 301.296 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M323.265 754.089 Q320.707 754.089 319.203 755.838 Q317.717 757.587 317.717 760.634 Q317.717 763.662 319.203 765.43 Q320.707 767.179 323.265 767.179 Q325.823 767.179 327.309 765.43 Q328.813 763.662 328.813 760.634 Q328.813 757.587 327.309 755.838 Q325.823 754.089 323.265 754.089 M330.807 742.184 L330.807 745.644 Q329.378 744.967 327.911 744.61 Q326.462 744.253 325.033 744.253 Q321.271 744.253 319.278 746.792 Q317.303 749.331 317.021 754.465 Q318.131 752.829 319.804 751.964 Q321.478 751.08 323.491 751.08 Q327.723 751.08 330.168 753.657 Q332.631 756.214 332.631 760.634 Q332.631 764.96 330.074 767.574 Q327.516 770.189 323.265 770.189 Q318.394 770.189 315.817 766.465 Q313.241 762.722 313.241 755.631 Q313.241 748.973 316.4 745.024 Q319.56 741.055 324.883 741.055 Q326.312 741.055 327.76 741.337 Q329.227 741.62 330.807 742.184 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M114.677 455.959 L136.899 455.959 L136.899 457.949 L124.353 490.519 L119.468 490.519 L131.274 459.894 L114.677 459.894 L114.677 455.959 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M146.019 484.639 L150.903 484.639 L150.903 490.519 L146.019 490.519 L146.019 484.639 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M161.135 455.959 L179.491 455.959 L179.491 459.894 L165.417 459.894 L165.417 468.366 Q166.436 468.019 167.454 467.857 Q168.473 467.672 169.491 467.672 Q175.278 467.672 178.658 470.843 Q182.038 474.014 182.038 479.431 Q182.038 485.01 178.565 488.111 Q175.093 491.19 168.774 491.19 Q166.598 491.19 164.329 490.82 Q162.084 490.449 159.677 489.709 L159.677 485.01 Q161.76 486.144 163.982 486.699 Q166.204 487.255 168.681 487.255 Q172.686 487.255 175.024 485.148 Q177.362 483.042 177.362 479.431 Q177.362 475.82 175.024 473.713 Q172.686 471.607 168.681 471.607 Q166.806 471.607 164.931 472.023 Q163.079 472.44 161.135 473.32 L161.135 455.959 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M201.25 459.037 Q197.639 459.037 195.811 462.602 Q194.005 466.144 194.005 473.273 Q194.005 480.38 195.811 483.945 Q197.639 487.486 201.25 487.486 Q204.885 487.486 206.69 483.945 Q208.519 480.38 208.519 473.273 Q208.519 466.144 206.69 462.602 Q204.885 459.037 201.25 459.037 M201.25 455.334 Q207.061 455.334 210.116 459.94 Q213.195 464.524 213.195 473.273 Q213.195 482 210.116 486.607 Q207.061 491.19 201.25 491.19 Q195.44 491.19 192.362 486.607 Q189.306 482 189.306 473.273 Q189.306 464.524 192.362 459.94 Q195.44 455.334 201.25 455.334 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M249.584 465.056 L239.005 475.681 L249.584 486.26 L246.829 489.06 L236.204 478.435 L225.579 489.06 L222.848 486.26 L233.403 475.681 L222.848 465.056 L225.579 462.255 L236.204 472.88 L246.829 462.255 L249.584 465.056 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M261.945 486.584 L269.583 486.584 L269.583 460.218 L261.273 461.885 L261.273 457.625 L269.537 455.959 L274.213 455.959 L274.213 486.584 L281.852 486.584 L281.852 490.519 L261.945 490.519 L261.945 486.584 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M301.296 459.037 Q297.685 459.037 295.856 462.602 Q294.051 466.144 294.051 473.273 Q294.051 480.38 295.856 483.945 Q297.685 487.486 301.296 487.486 Q304.93 487.486 306.736 483.945 Q308.565 480.38 308.565 473.273 Q308.565 466.144 306.736 462.602 Q304.93 459.037 301.296 459.037 M301.296 455.334 Q307.106 455.334 310.162 459.94 Q313.241 464.524 313.241 473.273 Q313.241 482 310.162 486.607 Q307.106 491.19 301.296 491.19 Q295.486 491.19 292.407 486.607 Q289.352 482 289.352 473.273 Q289.352 464.524 292.407 459.94 Q295.486 455.334 301.296 455.334 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M323.265 447.554 Q320.707 447.554 319.203 449.303 Q317.717 451.053 317.717 454.099 Q317.717 457.127 319.203 458.895 Q320.707 460.645 323.265 460.645 Q325.823 460.645 327.309 458.895 Q328.813 457.127 328.813 454.099 Q328.813 451.053 327.309 449.303 Q325.823 447.554 323.265 447.554 M330.807 435.649 L330.807 439.11 Q329.378 438.433 327.911 438.075 Q326.462 437.718 325.033 437.718 Q321.271 437.718 319.278 440.257 Q317.303 442.796 317.021 447.93 Q318.131 446.294 319.804 445.429 Q321.478 444.545 323.491 444.545 Q327.723 444.545 330.168 447.122 Q332.631 449.68 332.631 454.099 Q332.631 458.425 330.074 461.039 Q327.516 463.654 323.265 463.654 Q318.394 463.654 315.817 459.93 Q313.241 456.187 313.241 449.097 Q313.241 442.439 316.4 438.489 Q319.56 434.521 324.883 434.521 Q326.312 434.521 327.76 434.803 Q329.227 435.085 330.807 435.649 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M118.003 180.049 L125.642 180.049 L125.642 153.683 L117.332 155.35 L117.332 151.091 L125.595 149.424 L130.271 149.424 L130.271 180.049 L137.91 180.049 L137.91 183.984 L118.003 183.984 L118.003 180.049 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M147.355 178.104 L152.239 178.104 L152.239 183.984 L147.355 183.984 L147.355 178.104 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M172.424 152.503 Q168.813 152.503 166.984 156.067 Q165.179 159.609 165.179 166.739 Q165.179 173.845 166.984 177.41 Q168.813 180.952 172.424 180.952 Q176.058 180.952 177.864 177.41 Q179.692 173.845 179.692 166.739 Q179.692 159.609 177.864 156.067 Q176.058 152.503 172.424 152.503 M172.424 148.799 Q178.234 148.799 181.29 153.405 Q184.368 157.989 184.368 166.739 Q184.368 175.465 181.29 180.072 Q178.234 184.655 172.424 184.655 Q166.614 184.655 163.535 180.072 Q160.48 175.465 160.48 166.739 Q160.48 157.989 163.535 153.405 Q166.614 148.799 172.424 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M202.586 152.503 Q198.975 152.503 197.146 156.067 Q195.34 159.609 195.34 166.739 Q195.34 173.845 197.146 177.41 Q198.975 180.952 202.586 180.952 Q206.22 180.952 208.026 177.41 Q209.854 173.845 209.854 166.739 Q209.854 159.609 208.026 156.067 Q206.22 152.503 202.586 152.503 M202.586 148.799 Q208.396 148.799 211.451 153.405 Q214.53 157.989 214.53 166.739 Q214.53 175.465 211.451 180.072 Q208.396 184.655 202.586 184.655 Q196.776 184.655 193.697 180.072 Q190.641 175.465 190.641 166.739 Q190.641 157.989 193.697 153.405 Q196.776 148.799 202.586 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M250.919 158.521 L240.34 169.146 L250.919 179.725 L248.164 182.526 L237.539 171.901 L226.914 182.526 L224.183 179.725 L234.738 169.146 L224.183 158.521 L226.914 155.72 L237.539 166.345 L248.164 155.72 L250.919 158.521 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M263.28 180.049 L270.919 180.049 L270.919 153.683 L262.609 155.35 L262.609 151.091 L270.872 149.424 L275.548 149.424 L275.548 180.049 L283.187 180.049 L283.187 183.984 L263.28 183.984 L263.28 180.049 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M302.632 152.503 Q299.02 152.503 297.192 156.067 Q295.386 159.609 295.386 166.739 Q295.386 173.845 297.192 177.41 Q299.02 180.952 302.632 180.952 Q306.266 180.952 308.071 177.41 Q309.9 173.845 309.9 166.739 Q309.9 159.609 308.071 156.067 Q306.266 152.503 302.632 152.503 M302.632 148.799 Q308.442 148.799 311.497 153.405 Q314.576 157.989 314.576 166.739 Q314.576 175.465 311.497 180.072 Q308.442 184.655 302.632 184.655 Q296.821 184.655 293.743 180.072 Q290.687 175.465 290.687 166.739 Q290.687 157.989 293.743 153.405 Q296.821 148.799 302.632 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M314.576 128.494 L332.631 128.494 L332.631 130.111 L322.438 156.574 L318.469 156.574 L328.061 131.691 L314.576 131.691 L314.576 128.494 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M16.4842 973.416 L16.4842 933.217 L21.895 933.217 L21.895 950.086 L64.0042 950.086 L64.0042 956.547 L21.895 956.547 L21.895 973.416 L16.4842 973.416 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M33.8307 916.188 Q33.2578 917.175 33.0032 918.353 Q32.7167 919.499 32.7167 920.899 Q32.7167 925.864 35.9632 928.538 Q39.1779 931.18 45.2253 931.18 L64.0042 931.18 L64.0042 937.068 L28.3562 937.068 L28.3562 931.18 L33.8944 931.18 Q30.6479 929.334 29.0883 926.373 Q27.4968 923.413 27.4968 919.18 Q27.4968 918.575 27.5923 917.843 Q27.656 917.111 27.8151 916.22 L33.8307 916.188 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M46.0847 893.845 Q46.0847 900.942 47.7079 903.68 Q49.3312 906.417 53.2461 906.417 Q56.3653 906.417 58.2114 904.38 Q60.0256 902.311 60.0256 898.778 Q60.0256 893.908 56.5881 890.98 Q53.1188 888.02 47.3897 888.02 L46.0847 888.02 L46.0847 893.845 M43.6657 882.164 L64.0042 882.164 L64.0042 888.02 L58.5933 888.02 Q61.8398 890.025 63.3994 893.017 Q64.9272 896.009 64.9272 900.338 Q64.9272 905.812 61.8716 909.059 Q58.7843 912.273 53.6281 912.273 Q47.6125 912.273 44.5569 908.263 Q41.5014 904.221 41.5014 896.232 L41.5014 888.02 L40.9285 888.02 Q36.8862 888.02 34.6901 890.694 Q32.4621 893.335 32.4621 898.142 Q32.4621 901.197 33.1941 904.094 Q33.9262 906.99 35.3903 909.664 L29.9795 909.664 Q28.7381 906.449 28.1334 903.425 Q27.4968 900.401 27.4968 897.537 Q27.4968 889.803 31.5072 885.983 Q35.5176 882.164 43.6657 882.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M29.7248 844.447 L35.1993 844.447 Q33.8307 846.929 33.1623 849.444 Q32.4621 851.927 32.4621 854.473 Q32.4621 860.17 36.0905 863.321 Q39.6872 866.472 46.212 866.472 Q52.7369 866.472 56.3653 863.321 Q59.9619 860.17 59.9619 854.473 Q59.9619 851.927 59.2935 849.444 Q58.5933 846.929 57.2247 844.447 L62.6355 844.447 Q63.7814 846.898 64.3543 849.539 Q64.9272 852.149 64.9272 855.109 Q64.9272 863.162 59.8664 867.904 Q54.8057 872.647 46.212 872.647 Q37.491 872.647 32.4939 867.873 Q27.4968 863.067 27.4968 854.727 Q27.4968 852.022 28.0697 849.444 Q28.6108 846.866 29.7248 844.447 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M18.2347 828.469 L28.3562 828.469 L28.3562 816.406 L32.9077 816.406 L32.9077 828.469 L52.2594 828.469 Q56.6199 828.469 57.8613 827.291 Q59.1026 826.082 59.1026 822.421 L59.1026 816.406 L64.0042 816.406 L64.0042 822.421 Q64.0042 829.201 61.4897 831.779 Q58.9434 834.357 52.2594 834.357 L32.9077 834.357 L32.9077 838.654 L28.3562 838.654 L28.3562 834.357 L18.2347 834.357 L18.2347 828.469 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M28.3562 808.703 L28.3562 802.847 L64.0042 802.847 L64.0042 808.703 L28.3562 808.703 M14.479 808.703 L14.479 802.847 L21.895 802.847 L21.895 808.703 L14.479 808.703 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M32.4621 776.779 Q32.4621 781.49 36.1542 784.227 Q39.8145 786.965 46.212 786.965 Q52.6095 786.965 56.3017 784.259 Q59.9619 781.522 59.9619 776.779 Q59.9619 772.101 56.2698 769.363 Q52.5777 766.626 46.212 766.626 Q39.8781 766.626 36.186 769.363 Q32.4621 772.101 32.4621 776.779 M27.4968 776.779 Q27.4968 769.141 32.4621 764.78 Q37.4273 760.42 46.212 760.42 Q54.9649 760.42 59.9619 764.78 Q64.9272 769.141 64.9272 776.779 Q64.9272 784.45 59.9619 788.811 Q54.9649 793.139 46.212 793.139 Q37.4273 793.139 32.4621 788.811 Q27.4968 784.45 27.4968 776.779 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M42.4881 721.079 L64.0042 721.079 L64.0042 726.936 L42.679 726.936 Q37.6183 726.936 35.1038 728.909 Q32.5894 730.883 32.5894 734.829 Q32.5894 739.572 35.6131 742.309 Q38.6368 745.046 43.8567 745.046 L64.0042 745.046 L64.0042 750.935 L28.3562 750.935 L28.3562 745.046 L33.8944 745.046 Q30.6797 742.946 29.0883 740.113 Q27.4968 737.248 27.4968 733.524 Q27.4968 727.381 31.3163 724.23 Q35.1038 721.079 42.4881 721.079 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M14.479 689.219 L14.479 675.724 L19.0304 675.724 L19.0304 683.363 L68.0464 683.363 L68.0464 675.724 L72.5979 675.724 L72.5979 689.219 L14.479 689.219 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M21.7677 656.563 L39.6235 656.563 L39.6235 648.479 Q39.6235 643.991 37.3 641.54 Q34.9765 639.089 30.6797 639.089 Q26.4147 639.089 24.0912 641.54 Q21.7677 643.991 21.7677 648.479 L21.7677 656.563 M16.4842 662.992 L16.4842 648.479 Q16.4842 640.49 20.1126 636.416 Q23.7092 632.31 30.6797 632.31 Q37.7138 632.31 41.3104 636.416 Q44.907 640.49 44.907 648.479 L44.907 656.563 L64.0042 656.563 L64.0042 662.992 L16.4842 662.992 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M46.0847 610.666 Q46.0847 617.764 47.7079 620.501 Q49.3312 623.239 53.2461 623.239 Q56.3653 623.239 58.2114 621.202 Q60.0256 619.133 60.0256 615.6 Q60.0256 610.73 56.5881 607.802 Q53.1188 604.842 47.3897 604.842 L46.0847 604.842 L46.0847 610.666 M43.6657 598.985 L64.0042 598.985 L64.0042 604.842 L58.5933 604.842 Q61.8398 606.847 63.3994 609.839 Q64.9272 612.831 64.9272 617.159 Q64.9272 622.634 61.8716 625.88 Q58.7843 629.095 53.6281 629.095 Q47.6125 629.095 44.5569 625.085 Q41.5014 621.042 41.5014 613.053 L41.5014 604.842 L40.9285 604.842 Q36.8862 604.842 34.6901 607.515 Q32.4621 610.157 32.4621 614.963 Q32.4621 618.019 33.1941 620.915 Q33.9262 623.811 35.3903 626.485 L29.9795 626.485 Q28.7381 623.27 28.1334 620.247 Q27.4968 617.223 27.4968 614.358 Q27.4968 606.624 31.5072 602.805 Q35.5176 598.985 43.6657 598.985 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M14.479 573.236 L72.5979 573.236 L72.5979 586.731 L68.0464 586.731 L68.0464 579.124 L19.0304 579.124 L19.0304 586.731 L14.479 586.731 L14.479 573.236 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M903.063 12.096 L954.226 12.096 L954.226 18.9825 L932.756 18.9825 L932.756 72.576 L924.533 72.576 L924.533 18.9825 L903.063 18.9825 L903.063 12.096 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M975.898 34.1734 Q974.642 33.4443 973.144 33.1202 Q971.685 32.7556 969.903 32.7556 Q963.584 32.7556 960.181 36.8875 Q956.818 40.9789 956.818 48.6757 L956.818 72.576 L949.324 72.576 L949.324 27.2059 L956.818 27.2059 L956.818 34.2544 Q959.168 30.1225 962.935 28.1376 Q966.703 26.1121 972.09 26.1121 Q972.86 26.1121 973.792 26.2337 Q974.723 26.3147 975.858 26.5172 L975.898 34.1734 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1004.34 49.7694 Q995.302 49.7694 991.818 51.8354 Q988.335 53.9013 988.335 58.8839 Q988.335 62.8538 990.927 65.2034 Q993.56 67.5124 998.057 67.5124 Q1004.25 67.5124 1007.98 63.1374 Q1011.75 58.7219 1011.75 51.4303 L1011.75 49.7694 L1004.34 49.7694 M1019.2 46.6907 L1019.2 72.576 L1011.75 72.576 L1011.75 65.6895 Q1009.2 69.8214 1005.39 71.8063 Q1001.58 73.7508 996.072 73.7508 Q989.104 73.7508 984.972 69.8619 Q980.881 65.9325 980.881 59.3701 Q980.881 51.7138 985.985 47.825 Q991.13 43.9361 1001.3 43.9361 L1011.75 43.9361 L1011.75 43.2069 Q1011.75 38.0623 1008.35 35.2672 Q1004.98 32.4315 998.867 32.4315 Q994.978 32.4315 991.292 33.3632 Q987.605 34.295 984.203 36.1584 L984.203 29.2718 Q988.294 27.692 992.142 26.9223 Q995.991 26.1121 999.637 26.1121 Q1009.48 26.1121 1014.34 31.2163 Q1019.2 36.3204 1019.2 46.6907 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1067.21 28.9478 L1067.21 35.9153 Q1064.05 34.1734 1060.85 33.3227 Q1057.69 32.4315 1054.45 32.4315 Q1047.19 32.4315 1043.18 37.0496 Q1039.17 41.6271 1039.17 49.9314 Q1039.17 58.2358 1043.18 62.8538 Q1047.19 67.4314 1054.45 67.4314 Q1057.69 67.4314 1060.85 66.5807 Q1064.05 65.6895 1067.21 63.9476 L1067.21 70.8341 Q1064.09 72.2924 1060.72 73.0216 Q1057.4 73.7508 1053.64 73.7508 Q1043.39 73.7508 1037.35 67.3098 Q1031.31 60.8689 1031.31 49.9314 Q1031.31 38.832 1037.39 32.472 Q1043.51 26.1121 1054.12 26.1121 Q1057.56 26.1121 1060.85 26.8413 Q1064.13 27.5299 1067.21 28.9478 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1087.54 14.324 L1087.54 27.2059 L1102.89 27.2059 L1102.89 32.9987 L1087.54 32.9987 L1087.54 57.6282 Q1087.54 63.1779 1089.04 64.7578 Q1090.58 66.3376 1095.24 66.3376 L1102.89 66.3376 L1102.89 72.576 L1095.24 72.576 Q1086.61 72.576 1083.33 69.3758 Q1080.05 66.1351 1080.05 57.6282 L1080.05 32.9987 L1074.58 32.9987 L1074.58 27.2059 L1080.05 27.2059 L1080.05 14.324 L1087.54 14.324 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1112.7 27.2059 L1120.15 27.2059 L1120.15 72.576 L1112.7 72.576 L1112.7 27.2059 M1112.7 9.54393 L1120.15 9.54393 L1120.15 18.9825 L1112.7 18.9825 L1112.7 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1153.33 32.4315 Q1147.33 32.4315 1143.85 37.1306 Q1140.36 41.7891 1140.36 49.9314 Q1140.36 58.0738 1143.81 62.7728 Q1147.29 67.4314 1153.33 67.4314 Q1159.28 67.4314 1162.77 62.7323 Q1166.25 58.0333 1166.25 49.9314 Q1166.25 41.8701 1162.77 37.1711 Q1159.28 32.4315 1153.33 32.4315 M1153.33 26.1121 Q1163.05 26.1121 1168.6 32.4315 Q1174.15 38.7509 1174.15 49.9314 Q1174.15 61.0714 1168.6 67.4314 Q1163.05 73.7508 1153.33 73.7508 Q1143.57 73.7508 1138.02 67.4314 Q1132.51 61.0714 1132.51 49.9314 Q1132.51 38.7509 1138.02 32.4315 Q1143.57 26.1121 1153.33 26.1121 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1224.22 45.1919 L1224.22 72.576 L1216.77 72.576 L1216.77 45.4349 Q1216.77 38.994 1214.25 35.7938 Q1211.74 32.5936 1206.72 32.5936 Q1200.68 32.5936 1197.2 36.4419 Q1193.72 40.2903 1193.72 46.9338 L1193.72 72.576 L1186.22 72.576 L1186.22 27.2059 L1193.72 27.2059 L1193.72 34.2544 Q1196.39 30.163 1199.99 28.1376 Q1203.64 26.1121 1208.38 26.1121 Q1216.2 26.1121 1220.21 30.9732 Q1224.22 35.7938 1224.22 45.1919 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1235.32 46.5287 L1257.15 46.5287 L1257.15 53.1722 L1235.32 53.1722 L1235.32 46.5287 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1298.88 34.0924 L1298.88 9.54393 L1306.33 9.54393 L1306.33 72.576 L1298.88 72.576 L1298.88 65.7705 Q1296.53 69.8214 1292.92 71.8063 Q1289.36 73.7508 1284.33 73.7508 Q1276.11 73.7508 1270.93 67.1883 Q1265.78 60.6258 1265.78 49.9314 Q1265.78 39.2371 1270.93 32.6746 Q1276.11 26.1121 1284.33 26.1121 Q1289.36 26.1121 1292.92 28.0971 Q1296.53 30.0415 1298.88 34.0924 M1273.48 49.9314 Q1273.48 58.1548 1276.84 62.8538 Q1280.24 67.5124 1286.16 67.5124 Q1292.07 67.5124 1295.47 62.8538 Q1298.88 58.1548 1298.88 49.9314 Q1298.88 41.7081 1295.47 37.0496 Q1292.07 32.3505 1286.16 32.3505 Q1280.24 32.3505 1276.84 37.0496 Q1273.48 41.7081 1273.48 49.9314 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1321.68 27.2059 L1329.14 27.2059 L1329.14 72.576 L1321.68 72.576 L1321.68 27.2059 M1321.68 9.54393 L1329.14 9.54393 L1329.14 18.9825 L1321.68 18.9825 L1321.68 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1373.66 28.5427 L1373.66 35.5912 Q1370.5 33.9709 1367.09 33.1607 Q1363.69 32.3505 1360.05 32.3505 Q1354.5 32.3505 1351.7 34.0519 Q1348.95 35.7533 1348.95 39.156 Q1348.95 41.7486 1350.93 43.2475 Q1352.92 44.7058 1358.91 46.0426 L1361.46 46.6097 Q1369.4 48.3111 1372.72 51.4303 Q1376.09 54.509 1376.09 60.0587 Q1376.09 66.3781 1371.06 70.0644 Q1366.08 73.7508 1357.33 73.7508 Q1353.69 73.7508 1349.72 73.0216 Q1345.79 72.3329 1341.41 70.9151 L1341.41 63.2184 Q1345.54 65.3654 1349.55 66.4591 Q1353.56 67.5124 1357.49 67.5124 Q1362.76 67.5124 1365.6 65.73 Q1368.43 63.9071 1368.43 60.6258 Q1368.43 57.5877 1366.36 55.9673 Q1364.34 54.3469 1357.41 52.8481 L1354.82 52.2405 Q1347.89 50.7821 1344.81 47.7845 Q1341.74 44.7463 1341.74 39.4801 Q1341.74 33.0797 1346.27 29.5959 Q1350.81 26.1121 1359.15 26.1121 Q1363.29 26.1121 1366.93 26.7198 Q1370.58 27.3274 1373.66 28.5427 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1395.17 65.7705 L1395.17 89.8329 L1387.67 89.8329 L1387.67 27.2059 L1395.17 27.2059 L1395.17 34.0924 Q1397.52 30.0415 1401.08 28.0971 Q1404.69 26.1121 1409.67 26.1121 Q1417.93 26.1121 1423.08 32.6746 Q1428.26 39.2371 1428.26 49.9314 Q1428.26 60.6258 1423.08 67.1883 Q1417.93 73.7508 1409.67 73.7508 Q1404.69 73.7508 1401.08 71.8063 Q1397.52 69.8214 1395.17 65.7705 M1420.53 49.9314 Q1420.53 41.7081 1417.12 37.0496 Q1413.76 32.3505 1407.85 32.3505 Q1401.93 32.3505 1398.53 37.0496 Q1395.17 41.7081 1395.17 49.9314 Q1395.17 58.1548 1398.53 62.8538 Q1401.93 67.5124 1407.85 67.5124 Q1413.76 67.5124 1417.12 62.8538 Q1420.53 58.1548 1420.53 49.9314 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1440.62 9.54393 L1448.07 9.54393 L1448.07 72.576 L1440.62 72.576 L1440.62 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1484.29 49.7694 Q1475.25 49.7694 1471.77 51.8354 Q1468.29 53.9013 1468.29 58.8839 Q1468.29 62.8538 1470.88 65.2034 Q1473.51 67.5124 1478.01 67.5124 Q1484.21 67.5124 1487.93 63.1374 Q1491.7 58.7219 1491.7 51.4303 L1491.7 49.7694 L1484.29 49.7694 M1499.15 46.6907 L1499.15 72.576 L1491.7 72.576 L1491.7 65.6895 Q1489.15 69.8214 1485.34 71.8063 Q1481.53 73.7508 1476.02 73.7508 Q1469.06 73.7508 1464.92 69.8619 Q1460.83 65.9325 1460.83 59.3701 Q1460.83 51.7138 1465.94 47.825 Q1471.08 43.9361 1481.25 43.9361 L1491.7 43.9361 L1491.7 43.2069 Q1491.7 38.0623 1488.3 35.2672 Q1484.93 32.4315 1478.82 32.4315 Q1474.93 32.4315 1471.24 33.3632 Q1467.56 34.295 1464.15 36.1584 L1464.15 29.2718 Q1468.25 27.692 1472.09 26.9223 Q1475.94 26.1121 1479.59 26.1121 Q1489.43 26.1121 1494.29 31.2163 Q1499.15 36.3204 1499.15 46.6907 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1547.16 28.9478 L1547.16 35.9153 Q1544 34.1734 1540.8 33.3227 Q1537.64 32.4315 1534.4 32.4315 Q1527.15 32.4315 1523.13 37.0496 Q1519.12 41.6271 1519.12 49.9314 Q1519.12 58.2358 1523.13 62.8538 Q1527.15 67.4314 1534.4 67.4314 Q1537.64 67.4314 1540.8 66.5807 Q1544 65.6895 1547.16 63.9476 L1547.16 70.8341 Q1544.04 72.2924 1540.68 73.0216 Q1537.35 73.7508 1533.59 73.7508 Q1523.34 73.7508 1517.3 67.3098 Q1511.27 60.8689 1511.27 49.9314 Q1511.27 38.832 1517.34 32.472 Q1523.46 26.1121 1534.07 26.1121 Q1537.52 26.1121 1540.8 26.8413 Q1544.08 27.5299 1547.16 28.9478 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1598.93 48.0275 L1598.93 51.6733 L1564.66 51.6733 Q1565.14 59.3701 1569.27 63.421 Q1573.45 67.4314 1580.86 67.4314 Q1585.15 67.4314 1589.16 66.3781 Q1593.22 65.3249 1597.19 63.2184 L1597.19 70.267 Q1593.18 71.9684 1588.96 72.8596 Q1584.75 73.7508 1580.41 73.7508 Q1569.56 73.7508 1563.2 67.4314 Q1556.88 61.1119 1556.88 50.3365 Q1556.88 39.1965 1562.87 32.6746 Q1568.91 26.1121 1579.12 26.1121 Q1588.27 26.1121 1593.58 32.0264 Q1598.93 37.9003 1598.93 48.0275 M1591.47 45.84 Q1591.39 39.7232 1588.03 36.0774 Q1584.71 32.4315 1579.2 32.4315 Q1572.96 32.4315 1569.19 35.9558 Q1565.47 39.4801 1564.9 45.8805 L1591.47 45.84 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1646.48 35.9153 Q1649.28 30.8922 1653.17 28.5022 Q1657.06 26.1121 1662.32 26.1121 Q1669.41 26.1121 1673.26 31.0947 Q1677.11 36.0368 1677.11 45.1919 L1677.11 72.576 L1669.62 72.576 L1669.62 45.4349 Q1669.62 38.913 1667.31 35.7533 Q1665 32.5936 1660.26 32.5936 Q1654.47 32.5936 1651.1 36.4419 Q1647.74 40.2903 1647.74 46.9338 L1647.74 72.576 L1640.25 72.576 L1640.25 45.4349 Q1640.25 38.8725 1637.94 35.7533 Q1635.63 32.5936 1630.81 32.5936 Q1625.1 32.5936 1621.73 36.4824 Q1618.37 40.3308 1618.37 46.9338 L1618.37 72.576 L1610.88 72.576 L1610.88 27.2059 L1618.37 27.2059 L1618.37 34.2544 Q1620.92 30.082 1624.49 28.0971 Q1628.05 26.1121 1632.95 26.1121 Q1637.9 26.1121 1641.34 28.6237 Q1644.82 31.1352 1646.48 35.9153 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1730.78 48.0275 L1730.78 51.6733 L1696.51 51.6733 Q1697 59.3701 1701.13 63.421 Q1705.3 67.4314 1712.72 67.4314 Q1717.01 67.4314 1721.02 66.3781 Q1725.07 65.3249 1729.04 63.2184 L1729.04 70.267 Q1725.03 71.9684 1720.82 72.8596 Q1716.61 73.7508 1712.27 73.7508 Q1701.42 73.7508 1695.06 67.4314 Q1688.74 61.1119 1688.74 50.3365 Q1688.74 39.1965 1694.73 32.6746 Q1700.77 26.1121 1710.98 26.1121 Q1720.13 26.1121 1725.44 32.0264 Q1730.78 37.9003 1730.78 48.0275 M1723.33 45.84 Q1723.25 39.7232 1719.89 36.0774 Q1716.57 32.4315 1711.06 32.4315 Q1704.82 32.4315 1701.05 35.9558 Q1697.32 39.4801 1696.76 45.8805 L1723.33 45.84 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1780.73 45.1919 L1780.73 72.576 L1773.28 72.576 L1773.28 45.4349 Q1773.28 38.994 1770.77 35.7938 Q1768.26 32.5936 1763.23 32.5936 Q1757.2 32.5936 1753.71 36.4419 Q1750.23 40.2903 1750.23 46.9338 L1750.23 72.576 L1742.73 72.576 L1742.73 27.2059 L1750.23 27.2059 L1750.23 34.2544 Q1752.9 30.163 1756.51 28.1376 Q1760.15 26.1121 1764.89 26.1121 Q1772.71 26.1121 1776.72 30.9732 Q1780.73 35.7938 1780.73 45.1919 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip870)\" d=\"M1802.97 14.324 L1802.97 27.2059 L1818.32 27.2059 L1818.32 32.9987 L1802.97 32.9987 L1802.97 57.6282 Q1802.97 63.1779 1804.47 64.7578 Q1806.01 66.3376 1810.67 66.3376 L1818.32 66.3376 L1818.32 72.576 L1810.67 72.576 Q1802.04 72.576 1798.76 69.3758 Q1795.48 66.1351 1795.48 57.6282 L1795.48 32.9987 L1790.01 32.9987 L1790.01 27.2059 L1795.48 27.2059 L1795.48 14.324 L1802.97 14.324 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip872)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none\" points=\"424.786,1386.4 926.263,773.326 985.537,705.207 1056.5,637.088 1137.34,568.969 1232.41,500.851 1357.01,432.732 1532.78,364.613 1754.25,296.494 2009.96,228.375 2296.6,160.256 \"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"424.786\" y1=\"1386.4\" x2=\"424.786\" y2=\"1370.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"424.786\" y1=\"1386.4\" x2=\"408.786\" y2=\"1386.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"424.786\" y1=\"1386.4\" x2=\"424.786\" y2=\"1402.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"424.786\" y1=\"1386.4\" x2=\"440.786\" y2=\"1386.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"926.263\" y1=\"773.326\" x2=\"926.263\" y2=\"757.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"926.263\" y1=\"773.326\" x2=\"910.263\" y2=\"773.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"926.263\" y1=\"773.326\" x2=\"926.263\" y2=\"789.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"926.263\" y1=\"773.326\" x2=\"942.263\" y2=\"773.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"985.537\" y1=\"705.207\" x2=\"985.537\" y2=\"689.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"985.537\" y1=\"705.207\" x2=\"969.537\" y2=\"705.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"985.537\" y1=\"705.207\" x2=\"985.537\" y2=\"721.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"985.537\" y1=\"705.207\" x2=\"1001.54\" y2=\"705.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1056.5\" y2=\"621.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1040.5\" y2=\"637.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1056.5\" y2=\"653.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1072.5\" y2=\"637.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1137.34\" y2=\"552.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1121.34\" y2=\"568.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1137.34\" y2=\"584.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1153.34\" y2=\"568.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1232.41\" y2=\"484.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1216.41\" y2=\"500.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1232.41\" y2=\"516.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1248.41\" y2=\"500.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1357.01\" y2=\"416.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1341.01\" y2=\"432.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1357.01\" y2=\"448.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1373.01\" y2=\"432.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1532.78\" y2=\"348.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1516.78\" y2=\"364.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1532.78\" y2=\"380.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1548.78\" y2=\"364.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1754.25\" y2=\"280.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1738.25\" y2=\"296.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1754.25\" y2=\"312.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1770.25\" y2=\"296.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2009.96\" y2=\"212.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"2009.96\" y1=\"228.375\" x2=\"1993.96\" y2=\"228.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2009.96\" y2=\"244.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2025.96\" y2=\"228.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2296.6\" y2=\"144.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2280.6\" y2=\"160.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2296.6\" y2=\"176.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", - "<line clip-path=\"url(#clip872)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2312.6\" y2=\"160.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"424.786,1423.18 424.786,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"792.598,1423.18 792.598,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1160.41,1423.18 1160.41,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1528.22,1423.18 1528.22,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"1896.03,1423.18 1896.03,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"2263.85,1423.18 2263.85,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,1386.4 2352.76,1386.4 \"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,1079.86 2352.76,1079.86 \"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,773.326 2352.76,773.326 \"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,466.791 2352.76,466.791 \"/>\n", + "<polyline clip-path=\"url(#clip482)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"368.631,160.256 2352.76,160.256 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1423.18 2352.76,1423.18 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"424.786,1423.18 424.786,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"792.598,1423.18 792.598,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1160.41,1423.18 1160.41,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1528.22,1423.18 1528.22,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"1896.03,1423.18 1896.03,1404.28 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"2263.85,1423.18 2263.85,1404.28 \"/>\n", + "<path clip-path=\"url(#clip480)\" d=\"M387.089 1454.1 Q383.478 1454.1 381.65 1457.66 Q379.844 1461.2 379.844 1468.33 Q379.844 1475.44 381.65 1479.01 Q383.478 1482.55 387.089 1482.55 Q390.724 1482.55 392.529 1479.01 Q394.358 1475.44 394.358 1468.33 Q394.358 1461.2 392.529 1457.66 Q390.724 1454.1 387.089 1454.1 M387.089 1450.39 Q392.899 1450.39 395.955 1455 Q399.034 1459.58 399.034 1468.33 Q399.034 1477.06 395.955 1481.67 Q392.899 1486.25 387.089 1486.25 Q381.279 1486.25 378.2 1481.67 Q375.145 1477.06 375.145 1468.33 Q375.145 1459.58 378.2 1455 Q381.279 1450.39 387.089 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M407.251 1479.7 L412.135 1479.7 L412.135 1485.58 L407.251 1485.58 L407.251 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M432.321 1454.1 Q428.709 1454.1 426.881 1457.66 Q425.075 1461.2 425.075 1468.33 Q425.075 1475.44 426.881 1479.01 Q428.709 1482.55 432.321 1482.55 Q435.955 1482.55 437.76 1479.01 Q439.589 1475.44 439.589 1468.33 Q439.589 1461.2 437.76 1457.66 Q435.955 1454.1 432.321 1454.1 M432.321 1450.39 Q438.131 1450.39 441.186 1455 Q444.265 1459.58 444.265 1468.33 Q444.265 1477.06 441.186 1481.67 Q438.131 1486.25 432.321 1486.25 Q426.51 1486.25 423.432 1481.67 Q420.376 1477.06 420.376 1468.33 Q420.376 1459.58 423.432 1455 Q426.51 1450.39 432.321 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M462.482 1454.1 Q458.871 1454.1 457.043 1457.66 Q455.237 1461.2 455.237 1468.33 Q455.237 1475.44 457.043 1479.01 Q458.871 1482.55 462.482 1482.55 Q466.117 1482.55 467.922 1479.01 Q469.751 1475.44 469.751 1468.33 Q469.751 1461.2 467.922 1457.66 Q466.117 1454.1 462.482 1454.1 M462.482 1450.39 Q468.293 1450.39 471.348 1455 Q474.427 1459.58 474.427 1468.33 Q474.427 1477.06 471.348 1481.67 Q468.293 1486.25 462.482 1486.25 Q456.672 1486.25 453.594 1481.67 Q450.538 1477.06 450.538 1468.33 Q450.538 1459.58 453.594 1455 Q456.672 1450.39 462.482 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M755.399 1454.1 Q751.788 1454.1 749.959 1457.66 Q748.154 1461.2 748.154 1468.33 Q748.154 1475.44 749.959 1479.01 Q751.788 1482.55 755.399 1482.55 Q759.033 1482.55 760.839 1479.01 Q762.668 1475.44 762.668 1468.33 Q762.668 1461.2 760.839 1457.66 Q759.033 1454.1 755.399 1454.1 M755.399 1450.39 Q761.209 1450.39 764.265 1455 Q767.344 1459.58 767.344 1468.33 Q767.344 1477.06 764.265 1481.67 Q761.209 1486.25 755.399 1486.25 Q749.589 1486.25 746.51 1481.67 Q743.455 1477.06 743.455 1468.33 Q743.455 1459.58 746.51 1455 Q749.589 1450.39 755.399 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M775.561 1479.7 L780.445 1479.7 L780.445 1485.58 L775.561 1485.58 L775.561 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M800.63 1454.1 Q797.019 1454.1 795.191 1457.66 Q793.385 1461.2 793.385 1468.33 Q793.385 1475.44 795.191 1479.01 Q797.019 1482.55 800.63 1482.55 Q804.265 1482.55 806.07 1479.01 Q807.899 1475.44 807.899 1468.33 Q807.899 1461.2 806.07 1457.66 Q804.265 1454.1 800.63 1454.1 M800.63 1450.39 Q806.441 1450.39 809.496 1455 Q812.575 1459.58 812.575 1468.33 Q812.575 1477.06 809.496 1481.67 Q806.441 1486.25 800.63 1486.25 Q794.82 1486.25 791.742 1481.67 Q788.686 1477.06 788.686 1468.33 Q788.686 1459.58 791.742 1455 Q794.82 1450.39 800.63 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M820.839 1451.02 L839.195 1451.02 L839.195 1454.96 L825.121 1454.96 L825.121 1463.43 Q826.14 1463.08 827.158 1462.92 Q828.177 1462.73 829.195 1462.73 Q834.982 1462.73 838.362 1465.9 Q841.741 1469.08 841.741 1474.49 Q841.741 1480.07 838.269 1483.17 Q834.797 1486.25 828.477 1486.25 Q826.302 1486.25 824.033 1485.88 Q821.788 1485.51 819.38 1484.77 L819.38 1480.07 Q821.464 1481.2 823.686 1481.76 Q825.908 1482.32 828.385 1482.32 Q832.389 1482.32 834.727 1480.21 Q837.065 1478.1 837.065 1474.49 Q837.065 1470.88 834.727 1468.77 Q832.389 1466.67 828.385 1466.67 Q826.51 1466.67 824.635 1467.08 Q822.783 1467.5 820.839 1468.38 L820.839 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1122.71 1454.1 Q1119.1 1454.1 1117.27 1457.66 Q1115.47 1461.2 1115.47 1468.33 Q1115.47 1475.44 1117.27 1479.01 Q1119.1 1482.55 1122.71 1482.55 Q1126.35 1482.55 1128.15 1479.01 Q1129.98 1475.44 1129.98 1468.33 Q1129.98 1461.2 1128.15 1457.66 Q1126.35 1454.1 1122.71 1454.1 M1122.71 1450.39 Q1128.52 1450.39 1131.58 1455 Q1134.66 1459.58 1134.66 1468.33 Q1134.66 1477.06 1131.58 1481.67 Q1128.52 1486.25 1122.71 1486.25 Q1116.9 1486.25 1113.82 1481.67 Q1110.77 1477.06 1110.77 1468.33 Q1110.77 1459.58 1113.82 1455 Q1116.9 1450.39 1122.71 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1142.88 1479.7 L1147.76 1479.7 L1147.76 1485.58 L1142.88 1485.58 L1142.88 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1158.76 1481.64 L1166.39 1481.64 L1166.39 1455.28 L1158.08 1456.95 L1158.08 1452.69 L1166.35 1451.02 L1171.02 1451.02 L1171.02 1481.64 L1178.66 1481.64 L1178.66 1485.58 L1158.76 1485.58 L1158.76 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1198.11 1454.1 Q1194.5 1454.1 1192.67 1457.66 Q1190.86 1461.2 1190.86 1468.33 Q1190.86 1475.44 1192.67 1479.01 Q1194.5 1482.55 1198.11 1482.55 Q1201.74 1482.55 1203.55 1479.01 Q1205.38 1475.44 1205.38 1468.33 Q1205.38 1461.2 1203.55 1457.66 Q1201.74 1454.1 1198.11 1454.1 M1198.11 1450.39 Q1203.92 1450.39 1206.97 1455 Q1210.05 1459.58 1210.05 1468.33 Q1210.05 1477.06 1206.97 1481.67 Q1203.92 1486.25 1198.11 1486.25 Q1192.3 1486.25 1189.22 1481.67 Q1186.16 1477.06 1186.16 1468.33 Q1186.16 1459.58 1189.22 1455 Q1192.3 1450.39 1198.11 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1491.02 1454.1 Q1487.41 1454.1 1485.58 1457.66 Q1483.78 1461.2 1483.78 1468.33 Q1483.78 1475.44 1485.58 1479.01 Q1487.41 1482.55 1491.02 1482.55 Q1494.66 1482.55 1496.46 1479.01 Q1498.29 1475.44 1498.29 1468.33 Q1498.29 1461.2 1496.46 1457.66 Q1494.66 1454.1 1491.02 1454.1 M1491.02 1450.39 Q1496.83 1450.39 1499.89 1455 Q1502.97 1459.58 1502.97 1468.33 Q1502.97 1477.06 1499.89 1481.67 Q1496.83 1486.25 1491.02 1486.25 Q1485.21 1486.25 1482.13 1481.67 Q1479.08 1477.06 1479.08 1468.33 Q1479.08 1459.58 1482.13 1455 Q1485.21 1450.39 1491.02 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1511.19 1479.7 L1516.07 1479.7 L1516.07 1485.58 L1511.19 1485.58 L1511.19 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1527.06 1481.64 L1534.7 1481.64 L1534.7 1455.28 L1526.39 1456.95 L1526.39 1452.69 L1534.66 1451.02 L1539.33 1451.02 L1539.33 1481.64 L1546.97 1481.64 L1546.97 1485.58 L1527.06 1485.58 L1527.06 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1556.46 1451.02 L1574.82 1451.02 L1574.82 1454.96 L1560.75 1454.96 L1560.75 1463.43 Q1561.76 1463.08 1562.78 1462.92 Q1563.8 1462.73 1564.82 1462.73 Q1570.61 1462.73 1573.99 1465.9 Q1577.37 1469.08 1577.37 1474.49 Q1577.37 1480.07 1573.89 1483.17 Q1570.42 1486.25 1564.1 1486.25 Q1561.93 1486.25 1559.66 1485.88 Q1557.41 1485.51 1555 1484.77 L1555 1480.07 Q1557.09 1481.2 1559.31 1481.76 Q1561.53 1482.32 1564.01 1482.32 Q1568.01 1482.32 1570.35 1480.21 Q1572.69 1478.1 1572.69 1474.49 Q1572.69 1470.88 1570.35 1468.77 Q1568.01 1466.67 1564.01 1466.67 Q1562.13 1466.67 1560.26 1467.08 Q1558.41 1467.5 1556.46 1468.38 L1556.46 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1858.34 1454.1 Q1854.73 1454.1 1852.9 1457.66 Q1851.09 1461.2 1851.09 1468.33 Q1851.09 1475.44 1852.9 1479.01 Q1854.73 1482.55 1858.34 1482.55 Q1861.97 1482.55 1863.78 1479.01 Q1865.61 1475.44 1865.61 1468.33 Q1865.61 1461.2 1863.78 1457.66 Q1861.97 1454.1 1858.34 1454.1 M1858.34 1450.39 Q1864.15 1450.39 1867.2 1455 Q1870.28 1459.58 1870.28 1468.33 Q1870.28 1477.06 1867.2 1481.67 Q1864.15 1486.25 1858.34 1486.25 Q1852.53 1486.25 1849.45 1481.67 Q1846.39 1477.06 1846.39 1468.33 Q1846.39 1459.58 1849.45 1455 Q1852.53 1450.39 1858.34 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1878.5 1479.7 L1883.38 1479.7 L1883.38 1485.58 L1878.5 1485.58 L1878.5 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1897.6 1481.64 L1913.92 1481.64 L1913.92 1485.58 L1891.97 1485.58 L1891.97 1481.64 Q1894.63 1478.89 1899.22 1474.26 Q1903.82 1469.61 1905 1468.27 Q1907.25 1465.74 1908.13 1464.01 Q1909.03 1462.25 1909.03 1460.56 Q1909.03 1457.8 1907.09 1456.07 Q1905.17 1454.33 1902.06 1454.33 Q1899.87 1454.33 1897.41 1455.09 Q1894.98 1455.86 1892.2 1457.41 L1892.2 1452.69 Q1895.03 1451.55 1897.48 1450.97 Q1899.93 1450.39 1901.97 1450.39 Q1907.34 1450.39 1910.54 1453.08 Q1913.73 1455.77 1913.73 1460.26 Q1913.73 1462.39 1912.92 1464.31 Q1912.13 1466.2 1910.03 1468.8 Q1909.45 1469.47 1906.35 1472.69 Q1903.25 1475.88 1897.6 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1933.73 1454.1 Q1930.12 1454.1 1928.29 1457.66 Q1926.49 1461.2 1926.49 1468.33 Q1926.49 1475.44 1928.29 1479.01 Q1930.12 1482.55 1933.73 1482.55 Q1937.37 1482.55 1939.17 1479.01 Q1941 1475.44 1941 1468.33 Q1941 1461.2 1939.17 1457.66 Q1937.37 1454.1 1933.73 1454.1 M1933.73 1450.39 Q1939.54 1450.39 1942.6 1455 Q1945.68 1459.58 1945.68 1468.33 Q1945.68 1477.06 1942.6 1481.67 Q1939.54 1486.25 1933.73 1486.25 Q1927.92 1486.25 1924.84 1481.67 Q1921.79 1477.06 1921.79 1468.33 Q1921.79 1459.58 1924.84 1455 Q1927.92 1450.39 1933.73 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M2226.65 1454.1 Q2223.04 1454.1 2221.21 1457.66 Q2219.4 1461.2 2219.4 1468.33 Q2219.4 1475.44 2221.21 1479.01 Q2223.04 1482.55 2226.65 1482.55 Q2230.28 1482.55 2232.09 1479.01 Q2233.92 1475.44 2233.92 1468.33 Q2233.92 1461.2 2232.09 1457.66 Q2230.28 1454.1 2226.65 1454.1 M2226.65 1450.39 Q2232.46 1450.39 2235.51 1455 Q2238.59 1459.58 2238.59 1468.33 Q2238.59 1477.06 2235.51 1481.67 Q2232.46 1486.25 2226.65 1486.25 Q2220.84 1486.25 2217.76 1481.67 Q2214.7 1477.06 2214.7 1468.33 Q2214.7 1459.58 2217.76 1455 Q2220.84 1450.39 2226.65 1450.39 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M2246.81 1479.7 L2251.69 1479.7 L2251.69 1485.58 L2246.81 1485.58 L2246.81 1479.7 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M2265.91 1481.64 L2282.23 1481.64 L2282.23 1485.58 L2260.28 1485.58 L2260.28 1481.64 Q2262.94 1478.89 2267.53 1474.26 Q2272.13 1469.61 2273.31 1468.27 Q2275.56 1465.74 2276.44 1464.01 Q2277.34 1462.25 2277.34 1460.56 Q2277.34 1457.8 2275.4 1456.07 Q2273.48 1454.33 2270.37 1454.33 Q2268.18 1454.33 2265.72 1455.09 Q2263.29 1455.86 2260.51 1457.41 L2260.51 1452.69 Q2263.34 1451.55 2265.79 1450.97 Q2268.24 1450.39 2270.28 1450.39 Q2275.65 1450.39 2278.85 1453.08 Q2282.04 1455.77 2282.04 1460.26 Q2282.04 1462.39 2281.23 1464.31 Q2280.44 1466.2 2278.34 1468.8 Q2277.76 1469.47 2274.66 1472.69 Q2271.55 1475.88 2265.91 1481.64 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M2292.09 1451.02 L2310.44 1451.02 L2310.44 1454.96 L2296.37 1454.96 L2296.37 1463.43 Q2297.39 1463.08 2298.41 1462.92 Q2299.43 1462.73 2300.44 1462.73 Q2306.23 1462.73 2309.61 1465.9 Q2312.99 1469.08 2312.99 1474.49 Q2312.99 1480.07 2309.52 1483.17 Q2306.05 1486.25 2299.73 1486.25 Q2297.55 1486.25 2295.28 1485.88 Q2293.04 1485.51 2290.63 1484.77 L2290.63 1480.07 Q2292.71 1481.2 2294.93 1481.76 Q2297.16 1482.32 2299.63 1482.32 Q2303.64 1482.32 2305.98 1480.21 Q2308.31 1478.1 2308.31 1474.49 Q2308.31 1470.88 2305.98 1468.77 Q2303.64 1466.67 2299.63 1466.67 Q2297.76 1466.67 2295.88 1467.08 Q2294.03 1467.5 2292.09 1468.38 L2292.09 1451.02 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M966.529 1520.52 L976.109 1520.52 L988.236 1552.86 L1000.43 1520.52 L1010.01 1520.52 L1010.01 1568.04 L1003.74 1568.04 L1003.74 1526.32 L991.483 1558.91 L985.021 1558.91 L972.767 1526.32 L972.767 1568.04 L966.529 1568.04 L966.529 1520.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1038.72 1550.12 Q1031.62 1550.12 1028.88 1551.75 Q1026.14 1553.37 1026.14 1557.29 Q1026.14 1560.4 1028.18 1562.25 Q1030.25 1564.07 1033.78 1564.07 Q1038.65 1564.07 1041.58 1560.63 Q1044.54 1557.16 1044.54 1551.43 L1044.54 1550.12 L1038.72 1550.12 M1050.4 1547.71 L1050.4 1568.04 L1044.54 1568.04 L1044.54 1562.63 Q1042.54 1565.88 1039.54 1567.44 Q1036.55 1568.97 1032.22 1568.97 Q1026.75 1568.97 1023.5 1565.91 Q1020.29 1562.82 1020.29 1557.67 Q1020.29 1551.65 1024.3 1548.6 Q1028.34 1545.54 1036.33 1545.54 L1044.54 1545.54 L1044.54 1544.97 Q1044.54 1540.93 1041.87 1538.73 Q1039.23 1536.5 1034.42 1536.5 Q1031.36 1536.5 1028.47 1537.23 Q1025.57 1537.97 1022.9 1539.43 L1022.9 1534.02 Q1026.11 1532.78 1029.14 1532.17 Q1032.16 1531.54 1035.02 1531.54 Q1042.76 1531.54 1046.58 1535.55 Q1050.4 1539.56 1050.4 1547.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1092.09 1532.4 L1079.2 1549.74 L1092.76 1568.04 L1085.85 1568.04 L1075.48 1554.04 L1065.1 1568.04 L1058.2 1568.04 L1072.04 1549.39 L1059.37 1532.4 L1066.28 1532.4 L1075.73 1545.1 L1085.19 1532.4 L1092.09 1532.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1101.04 1532.4 L1106.89 1532.4 L1106.89 1568.04 L1101.04 1568.04 L1101.04 1532.4 M1101.04 1518.52 L1106.89 1518.52 L1106.89 1525.93 L1101.04 1525.93 L1101.04 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1146.9 1539.24 Q1149.1 1535.29 1152.15 1533.41 Q1155.21 1531.54 1159.35 1531.54 Q1164.92 1531.54 1167.94 1535.45 Q1170.96 1539.33 1170.96 1546.53 L1170.96 1568.04 L1165.08 1568.04 L1165.08 1546.72 Q1165.08 1541.59 1163.26 1539.11 Q1161.45 1536.63 1157.72 1536.63 Q1153.17 1536.63 1150.53 1539.65 Q1147.89 1542.68 1147.89 1547.9 L1147.89 1568.04 L1142 1568.04 L1142 1546.72 Q1142 1541.56 1140.19 1539.11 Q1138.37 1536.63 1134.58 1536.63 Q1130.1 1536.63 1127.45 1539.68 Q1124.81 1542.71 1124.81 1547.9 L1124.81 1568.04 L1118.92 1568.04 L1118.92 1532.4 L1124.81 1532.4 L1124.81 1537.93 Q1126.82 1534.66 1129.62 1533.1 Q1132.42 1531.54 1136.27 1531.54 Q1140.15 1531.54 1142.86 1533.51 Q1145.6 1535.48 1146.9 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1182.04 1553.98 L1182.04 1532.4 L1187.9 1532.4 L1187.9 1553.75 Q1187.9 1558.81 1189.87 1561.36 Q1191.84 1563.87 1195.79 1563.87 Q1200.53 1563.87 1203.27 1560.85 Q1206.04 1557.83 1206.04 1552.61 L1206.04 1532.4 L1211.9 1532.4 L1211.9 1568.04 L1206.04 1568.04 L1206.04 1562.57 Q1203.91 1565.82 1201.07 1567.41 Q1198.27 1568.97 1194.55 1568.97 Q1188.41 1568.97 1185.22 1565.15 Q1182.04 1561.33 1182.04 1553.98 M1196.78 1531.54 L1196.78 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1251.71 1539.24 Q1253.91 1535.29 1256.96 1533.41 Q1260.02 1531.54 1264.16 1531.54 Q1269.73 1531.54 1272.75 1535.45 Q1275.78 1539.33 1275.78 1546.53 L1275.78 1568.04 L1269.89 1568.04 L1269.89 1546.72 Q1269.89 1541.59 1268.07 1539.11 Q1266.26 1536.63 1262.53 1536.63 Q1257.98 1536.63 1255.34 1539.65 Q1252.7 1542.68 1252.7 1547.9 L1252.7 1568.04 L1246.81 1568.04 L1246.81 1546.72 Q1246.81 1541.56 1245 1539.11 Q1243.18 1536.63 1239.4 1536.63 Q1234.91 1536.63 1232.27 1539.68 Q1229.62 1542.71 1229.62 1547.9 L1229.62 1568.04 L1223.74 1568.04 L1223.74 1532.4 L1229.62 1532.4 L1229.62 1537.93 Q1231.63 1534.66 1234.43 1533.1 Q1237.23 1531.54 1241.08 1531.54 Q1244.97 1531.54 1247.67 1533.51 Q1250.41 1535.48 1251.71 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1331.63 1537.81 L1331.63 1518.52 L1337.49 1518.52 L1337.49 1568.04 L1331.63 1568.04 L1331.63 1562.7 Q1329.79 1565.88 1326.96 1567.44 Q1324.15 1568.97 1320.21 1568.97 Q1313.75 1568.97 1309.67 1563.81 Q1305.63 1558.65 1305.63 1550.25 Q1305.63 1541.85 1309.67 1536.69 Q1313.75 1531.54 1320.21 1531.54 Q1324.15 1531.54 1326.96 1533.1 Q1329.79 1534.62 1331.63 1537.81 M1311.68 1550.25 Q1311.68 1556.71 1314.32 1560.4 Q1316.99 1564.07 1321.64 1564.07 Q1326.29 1564.07 1328.96 1560.4 Q1331.63 1556.71 1331.63 1550.25 Q1331.63 1543.79 1328.96 1540.13 Q1326.29 1536.44 1321.64 1536.44 Q1316.99 1536.44 1314.32 1540.13 Q1311.68 1543.79 1311.68 1550.25 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1380.05 1548.76 L1380.05 1551.62 L1353.12 1551.62 Q1353.5 1557.67 1356.75 1560.85 Q1360.03 1564 1365.85 1564 Q1369.22 1564 1372.37 1563.17 Q1375.56 1562.35 1378.68 1560.69 L1378.68 1566.23 Q1375.53 1567.57 1372.22 1568.27 Q1368.91 1568.97 1365.5 1568.97 Q1356.97 1568.97 1351.97 1564 Q1347.01 1559.04 1347.01 1550.57 Q1347.01 1541.82 1351.72 1536.69 Q1356.46 1531.54 1364.48 1531.54 Q1371.67 1531.54 1375.84 1536.18 Q1380.05 1540.8 1380.05 1548.76 M1374.19 1547.04 Q1374.13 1542.23 1371.48 1539.37 Q1368.87 1536.5 1364.54 1536.5 Q1359.64 1536.5 1356.68 1539.27 Q1353.76 1542.04 1353.31 1547.07 L1374.19 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1407.7 1518.52 L1407.7 1523.39 L1402.1 1523.39 Q1398.95 1523.39 1397.71 1524.66 Q1396.5 1525.93 1396.5 1529.24 L1396.5 1532.4 L1406.14 1532.4 L1406.14 1536.95 L1396.5 1536.95 L1396.5 1568.04 L1390.61 1568.04 L1390.61 1536.95 L1385.01 1536.95 L1385.01 1532.4 L1390.61 1532.4 L1390.61 1529.91 Q1390.61 1523.96 1393.38 1521.26 Q1396.15 1518.52 1402.17 1518.52 L1407.7 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1412.61 1518.52 L1418.46 1518.52 L1418.46 1568.04 L1412.61 1568.04 L1412.61 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1461.21 1548.76 L1461.21 1551.62 L1434.28 1551.62 Q1434.66 1557.67 1437.91 1560.85 Q1441.19 1564 1447.01 1564 Q1450.39 1564 1453.54 1563.17 Q1456.72 1562.35 1459.84 1560.69 L1459.84 1566.23 Q1456.69 1567.57 1453.38 1568.27 Q1450.07 1568.97 1446.66 1568.97 Q1438.13 1568.97 1433.14 1564 Q1428.17 1559.04 1428.17 1550.57 Q1428.17 1541.82 1432.88 1536.69 Q1437.62 1531.54 1445.64 1531.54 Q1452.84 1531.54 1457.01 1536.18 Q1461.21 1540.8 1461.21 1548.76 M1455.35 1547.04 Q1455.29 1542.23 1452.65 1539.37 Q1450.04 1536.5 1445.71 1536.5 Q1440.81 1536.5 1437.85 1539.27 Q1434.92 1542.04 1434.47 1547.07 L1455.35 1547.04 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1496.47 1533.76 L1496.47 1539.24 Q1493.99 1537.87 1491.48 1537.2 Q1488.99 1536.5 1486.45 1536.5 Q1480.75 1536.5 1477.6 1540.13 Q1474.45 1543.73 1474.45 1550.25 Q1474.45 1556.78 1477.6 1560.4 Q1480.75 1564 1486.45 1564 Q1488.99 1564 1491.48 1563.33 Q1493.99 1562.63 1496.47 1561.26 L1496.47 1566.68 Q1494.02 1567.82 1491.38 1568.39 Q1488.77 1568.97 1485.81 1568.97 Q1477.76 1568.97 1473.02 1563.91 Q1468.27 1558.85 1468.27 1550.25 Q1468.27 1541.53 1473.05 1536.53 Q1477.85 1531.54 1486.19 1531.54 Q1488.9 1531.54 1491.48 1532.11 Q1494.06 1532.65 1496.47 1533.76 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1512.45 1522.27 L1512.45 1532.4 L1524.52 1532.4 L1524.52 1536.95 L1512.45 1536.95 L1512.45 1556.3 Q1512.45 1560.66 1513.63 1561.9 Q1514.84 1563.14 1518.5 1563.14 L1524.52 1563.14 L1524.52 1568.04 L1518.5 1568.04 Q1511.72 1568.04 1509.14 1565.53 Q1506.56 1562.98 1506.56 1556.3 L1506.56 1536.95 L1502.27 1536.95 L1502.27 1532.4 L1506.56 1532.4 L1506.56 1522.27 L1512.45 1522.27 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1532.22 1532.4 L1538.07 1532.4 L1538.07 1568.04 L1532.22 1568.04 L1532.22 1532.4 M1532.22 1518.52 L1538.07 1518.52 L1538.07 1525.93 L1532.22 1525.93 L1532.22 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1564.14 1536.5 Q1559.43 1536.5 1556.69 1540.19 Q1553.96 1543.85 1553.96 1550.25 Q1553.96 1556.65 1556.66 1560.34 Q1559.4 1564 1564.14 1564 Q1568.82 1564 1571.56 1560.31 Q1574.29 1556.62 1574.29 1550.25 Q1574.29 1543.92 1571.56 1540.23 Q1568.82 1536.5 1564.14 1536.5 M1564.14 1531.54 Q1571.78 1531.54 1576.14 1536.5 Q1580.5 1541.47 1580.5 1550.25 Q1580.5 1559 1576.14 1564 Q1571.78 1568.97 1564.14 1568.97 Q1556.47 1568.97 1552.11 1564 Q1547.78 1559 1547.78 1550.25 Q1547.78 1541.47 1552.11 1536.5 Q1556.47 1531.54 1564.14 1531.54 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1619.84 1546.53 L1619.84 1568.04 L1613.99 1568.04 L1613.99 1546.72 Q1613.99 1541.66 1612.01 1539.14 Q1610.04 1536.63 1606.09 1536.63 Q1601.35 1536.63 1598.61 1539.65 Q1595.87 1542.68 1595.87 1547.9 L1595.87 1568.04 L1589.99 1568.04 L1589.99 1532.4 L1595.87 1532.4 L1595.87 1537.93 Q1597.98 1534.72 1600.81 1533.13 Q1603.67 1531.54 1607.4 1531.54 Q1613.54 1531.54 1616.69 1535.36 Q1619.84 1539.14 1619.84 1546.53 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1651.7 1518.52 L1665.2 1518.52 L1665.2 1523.07 L1657.56 1523.07 L1657.56 1572.09 L1665.2 1572.09 L1665.2 1576.64 L1651.7 1576.64 L1651.7 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1705.43 1539.24 Q1707.62 1535.29 1710.68 1533.41 Q1713.74 1531.54 1717.87 1531.54 Q1723.44 1531.54 1726.47 1535.45 Q1729.49 1539.33 1729.49 1546.53 L1729.49 1568.04 L1723.6 1568.04 L1723.6 1546.72 Q1723.6 1541.59 1721.79 1539.11 Q1719.97 1536.63 1716.25 1536.63 Q1711.7 1536.63 1709.06 1539.65 Q1706.42 1542.68 1706.42 1547.9 L1706.42 1568.04 L1700.53 1568.04 L1700.53 1546.72 Q1700.53 1541.56 1698.71 1539.11 Q1696.9 1536.63 1693.11 1536.63 Q1688.62 1536.63 1685.98 1539.68 Q1683.34 1542.71 1683.34 1547.9 L1683.34 1568.04 L1677.45 1568.04 L1677.45 1532.4 L1683.34 1532.4 L1683.34 1537.93 Q1685.34 1534.66 1688.15 1533.1 Q1690.95 1531.54 1694.8 1531.54 Q1698.68 1531.54 1701.39 1533.51 Q1704.12 1535.48 1705.43 1539.24 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1754.86 1518.52 L1754.86 1576.64 L1741.36 1576.64 L1741.36 1572.09 L1748.97 1572.09 L1748.97 1523.07 L1741.36 1523.07 L1741.36 1518.52 L1754.86 1518.52 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1423.18 368.631,123.472 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1386.4 387.529,1386.4 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,1079.86 387.529,1079.86 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,773.326 387.529,773.326 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,466.791 387.529,466.791 \"/>\n", + "<polyline clip-path=\"url(#clip480)\" style=\"stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"368.631,160.256 387.529,160.256 \"/>\n", + "<path clip-path=\"url(#clip480)\" d=\"M320.687 1372.19 Q317.076 1372.19 315.247 1375.76 Q313.442 1379.3 313.442 1386.43 Q313.442 1393.54 315.247 1397.1 Q317.076 1400.64 320.687 1400.64 Q324.321 1400.64 326.127 1397.1 Q327.955 1393.54 327.955 1386.43 Q327.955 1379.3 326.127 1375.76 Q324.321 1372.19 320.687 1372.19 M320.687 1368.49 Q326.497 1368.49 329.553 1373.1 Q332.631 1377.68 332.631 1386.43 Q332.631 1395.16 329.553 1399.76 Q326.497 1404.35 320.687 1404.35 Q314.877 1404.35 311.798 1399.76 Q308.743 1395.16 308.743 1386.43 Q308.743 1377.68 311.798 1373.1 Q314.877 1368.49 320.687 1368.49 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M119.885 1099.65 L136.204 1099.65 L136.204 1103.59 L114.26 1103.59 L114.26 1099.65 Q116.922 1096.9 121.505 1092.27 Q126.112 1087.62 127.292 1086.27 Q129.538 1083.75 130.417 1082.01 Q131.32 1080.26 131.32 1078.57 Q131.32 1075.81 129.376 1074.07 Q127.455 1072.34 124.353 1072.34 Q122.154 1072.34 119.7 1073.1 Q117.269 1073.87 114.492 1075.42 L114.492 1070.7 Q117.316 1069.56 119.769 1068.98 Q122.223 1068.4 124.26 1068.4 Q129.63 1068.4 132.825 1071.09 Q136.019 1073.77 136.019 1078.26 Q136.019 1080.39 135.209 1082.32 Q134.422 1084.21 132.316 1086.81 Q131.737 1087.48 128.635 1090.69 Q125.533 1093.89 119.885 1099.65 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M146.019 1097.71 L150.903 1097.71 L150.903 1103.59 L146.019 1103.59 L146.019 1097.71 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M161.135 1069.03 L179.491 1069.03 L179.491 1072.96 L165.417 1072.96 L165.417 1081.44 Q166.436 1081.09 167.454 1080.93 Q168.473 1080.74 169.491 1080.74 Q175.278 1080.74 178.658 1083.91 Q182.038 1087.08 182.038 1092.5 Q182.038 1098.08 178.565 1101.18 Q175.093 1104.26 168.774 1104.26 Q166.598 1104.26 164.329 1103.89 Q162.084 1103.52 159.677 1102.78 L159.677 1098.08 Q161.76 1099.21 163.982 1099.77 Q166.204 1100.32 168.681 1100.32 Q172.686 1100.32 175.024 1098.22 Q177.362 1096.11 177.362 1092.5 Q177.362 1088.89 175.024 1086.78 Q172.686 1084.68 168.681 1084.68 Q166.806 1084.68 164.931 1085.09 Q163.079 1085.51 161.135 1086.39 L161.135 1069.03 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M201.25 1072.11 Q197.639 1072.11 195.811 1075.67 Q194.005 1079.21 194.005 1086.34 Q194.005 1093.45 195.811 1097.01 Q197.639 1100.56 201.25 1100.56 Q204.885 1100.56 206.69 1097.01 Q208.519 1093.45 208.519 1086.34 Q208.519 1079.21 206.69 1075.67 Q204.885 1072.11 201.25 1072.11 M201.25 1068.4 Q207.061 1068.4 210.116 1073.01 Q213.195 1077.59 213.195 1086.34 Q213.195 1095.07 210.116 1099.68 Q207.061 1104.26 201.25 1104.26 Q195.44 1104.26 192.362 1099.68 Q189.306 1095.07 189.306 1086.34 Q189.306 1077.59 192.362 1073.01 Q195.44 1068.4 201.25 1068.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M249.584 1078.13 L239.005 1088.75 L249.584 1099.33 L246.829 1102.13 L236.204 1091.51 L225.579 1102.13 L222.848 1099.33 L233.403 1088.75 L222.848 1078.13 L225.579 1075.32 L236.204 1085.95 L246.829 1075.32 L249.584 1078.13 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M261.945 1099.65 L269.583 1099.65 L269.583 1073.29 L261.273 1074.95 L261.273 1070.7 L269.537 1069.03 L274.213 1069.03 L274.213 1099.65 L281.852 1099.65 L281.852 1103.59 L261.945 1103.59 L261.945 1099.65 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M301.296 1072.11 Q297.685 1072.11 295.856 1075.67 Q294.051 1079.21 294.051 1086.34 Q294.051 1093.45 295.856 1097.01 Q297.685 1100.56 301.296 1100.56 Q304.93 1100.56 306.736 1097.01 Q308.565 1093.45 308.565 1086.34 Q308.565 1079.21 306.736 1075.67 Q304.93 1072.11 301.296 1072.11 M301.296 1068.4 Q307.106 1068.4 310.162 1073.01 Q313.241 1077.59 313.241 1086.34 Q313.241 1095.07 310.162 1099.68 Q307.106 1104.26 301.296 1104.26 Q295.486 1104.26 292.407 1099.68 Q289.352 1095.07 289.352 1086.34 Q289.352 1077.59 292.407 1073.01 Q295.486 1068.4 301.296 1068.4 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M323.265 1060.62 Q320.707 1060.62 319.203 1062.37 Q317.717 1064.12 317.717 1067.17 Q317.717 1070.2 319.203 1071.97 Q320.707 1073.71 323.265 1073.71 Q325.823 1073.71 327.309 1071.97 Q328.813 1070.2 328.813 1067.17 Q328.813 1064.12 327.309 1062.37 Q325.823 1060.62 323.265 1060.62 M330.807 1048.72 L330.807 1052.18 Q329.378 1051.5 327.911 1051.14 Q326.462 1050.79 325.033 1050.79 Q321.271 1050.79 319.278 1053.33 Q317.303 1055.87 317.021 1061 Q318.131 1059.36 319.804 1058.5 Q321.478 1057.61 323.491 1057.61 Q327.723 1057.61 330.168 1060.19 Q332.631 1062.75 332.631 1067.17 Q332.631 1071.49 330.074 1074.11 Q327.516 1076.72 323.265 1076.72 Q318.394 1076.72 315.817 1073 Q313.241 1069.26 313.241 1062.17 Q313.241 1055.51 316.4 1051.56 Q319.56 1047.59 324.883 1047.59 Q326.312 1047.59 327.76 1047.87 Q329.227 1048.15 330.807 1048.72 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M115.904 762.494 L134.26 762.494 L134.26 766.429 L120.186 766.429 L120.186 774.901 Q121.205 774.554 122.223 774.392 Q123.242 774.206 124.26 774.206 Q130.047 774.206 133.427 777.378 Q136.806 780.549 136.806 785.966 Q136.806 791.544 133.334 794.646 Q129.862 797.725 123.543 797.725 Q121.367 797.725 119.098 797.355 Q116.853 796.984 114.445 796.243 L114.445 791.544 Q116.529 792.679 118.751 793.234 Q120.973 793.79 123.45 793.79 Q127.455 793.79 129.792 791.683 Q132.13 789.577 132.13 785.966 Q132.13 782.355 129.792 780.248 Q127.455 778.142 123.45 778.142 Q121.575 778.142 119.7 778.558 Q117.848 778.975 115.904 779.855 L115.904 762.494 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M146.019 791.174 L150.903 791.174 L150.903 797.054 L146.019 797.054 L146.019 791.174 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M171.089 765.572 Q167.477 765.572 165.649 769.137 Q163.843 772.679 163.843 779.808 Q163.843 786.915 165.649 790.48 Q167.477 794.021 171.089 794.021 Q174.723 794.021 176.528 790.48 Q178.357 786.915 178.357 779.808 Q178.357 772.679 176.528 769.137 Q174.723 765.572 171.089 765.572 M171.089 761.869 Q176.899 761.869 179.954 766.475 Q183.033 771.058 183.033 779.808 Q183.033 788.535 179.954 793.142 Q176.899 797.725 171.089 797.725 Q165.278 797.725 162.2 793.142 Q159.144 788.535 159.144 779.808 Q159.144 771.058 162.2 766.475 Q165.278 761.869 171.089 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M201.25 765.572 Q197.639 765.572 195.811 769.137 Q194.005 772.679 194.005 779.808 Q194.005 786.915 195.811 790.48 Q197.639 794.021 201.25 794.021 Q204.885 794.021 206.69 790.48 Q208.519 786.915 208.519 779.808 Q208.519 772.679 206.69 769.137 Q204.885 765.572 201.25 765.572 M201.25 761.869 Q207.061 761.869 210.116 766.475 Q213.195 771.058 213.195 779.808 Q213.195 788.535 210.116 793.142 Q207.061 797.725 201.25 797.725 Q195.44 797.725 192.362 793.142 Q189.306 788.535 189.306 779.808 Q189.306 771.058 192.362 766.475 Q195.44 761.869 201.25 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M249.584 771.591 L239.005 782.216 L249.584 792.794 L246.829 795.595 L236.204 784.97 L225.579 795.595 L222.848 792.794 L233.403 782.216 L222.848 771.591 L225.579 768.79 L236.204 779.415 L246.829 768.79 L249.584 771.591 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M261.945 793.118 L269.583 793.118 L269.583 766.753 L261.273 768.419 L261.273 764.16 L269.537 762.494 L274.213 762.494 L274.213 793.118 L281.852 793.118 L281.852 797.054 L261.945 797.054 L261.945 793.118 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M301.296 765.572 Q297.685 765.572 295.856 769.137 Q294.051 772.679 294.051 779.808 Q294.051 786.915 295.856 790.48 Q297.685 794.021 301.296 794.021 Q304.93 794.021 306.736 790.48 Q308.565 786.915 308.565 779.808 Q308.565 772.679 306.736 769.137 Q304.93 765.572 301.296 765.572 M301.296 761.869 Q307.106 761.869 310.162 766.475 Q313.241 771.058 313.241 779.808 Q313.241 788.535 310.162 793.142 Q307.106 797.725 301.296 797.725 Q295.486 797.725 292.407 793.142 Q289.352 788.535 289.352 779.808 Q289.352 771.058 292.407 766.475 Q295.486 761.869 301.296 761.869 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M323.265 754.089 Q320.707 754.089 319.203 755.838 Q317.717 757.587 317.717 760.634 Q317.717 763.662 319.203 765.43 Q320.707 767.179 323.265 767.179 Q325.823 767.179 327.309 765.43 Q328.813 763.662 328.813 760.634 Q328.813 757.587 327.309 755.838 Q325.823 754.089 323.265 754.089 M330.807 742.184 L330.807 745.644 Q329.378 744.967 327.911 744.61 Q326.462 744.253 325.033 744.253 Q321.271 744.253 319.278 746.792 Q317.303 749.331 317.021 754.465 Q318.131 752.829 319.804 751.964 Q321.478 751.08 323.491 751.08 Q327.723 751.08 330.168 753.657 Q332.631 756.214 332.631 760.634 Q332.631 764.96 330.074 767.574 Q327.516 770.189 323.265 770.189 Q318.394 770.189 315.817 766.465 Q313.241 762.722 313.241 755.631 Q313.241 748.973 316.4 745.024 Q319.56 741.055 324.883 741.055 Q326.312 741.055 327.76 741.337 Q329.227 741.62 330.807 742.184 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M114.677 455.959 L136.899 455.959 L136.899 457.949 L124.353 490.519 L119.468 490.519 L131.274 459.894 L114.677 459.894 L114.677 455.959 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M146.019 484.639 L150.903 484.639 L150.903 490.519 L146.019 490.519 L146.019 484.639 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M161.135 455.959 L179.491 455.959 L179.491 459.894 L165.417 459.894 L165.417 468.366 Q166.436 468.019 167.454 467.857 Q168.473 467.672 169.491 467.672 Q175.278 467.672 178.658 470.843 Q182.038 474.014 182.038 479.431 Q182.038 485.01 178.565 488.111 Q175.093 491.19 168.774 491.19 Q166.598 491.19 164.329 490.82 Q162.084 490.449 159.677 489.709 L159.677 485.01 Q161.76 486.144 163.982 486.699 Q166.204 487.255 168.681 487.255 Q172.686 487.255 175.024 485.148 Q177.362 483.042 177.362 479.431 Q177.362 475.82 175.024 473.713 Q172.686 471.607 168.681 471.607 Q166.806 471.607 164.931 472.023 Q163.079 472.44 161.135 473.32 L161.135 455.959 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M201.25 459.037 Q197.639 459.037 195.811 462.602 Q194.005 466.144 194.005 473.273 Q194.005 480.38 195.811 483.945 Q197.639 487.486 201.25 487.486 Q204.885 487.486 206.69 483.945 Q208.519 480.38 208.519 473.273 Q208.519 466.144 206.69 462.602 Q204.885 459.037 201.25 459.037 M201.25 455.334 Q207.061 455.334 210.116 459.94 Q213.195 464.524 213.195 473.273 Q213.195 482 210.116 486.607 Q207.061 491.19 201.25 491.19 Q195.44 491.19 192.362 486.607 Q189.306 482 189.306 473.273 Q189.306 464.524 192.362 459.94 Q195.44 455.334 201.25 455.334 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M249.584 465.056 L239.005 475.681 L249.584 486.26 L246.829 489.06 L236.204 478.435 L225.579 489.06 L222.848 486.26 L233.403 475.681 L222.848 465.056 L225.579 462.255 L236.204 472.88 L246.829 462.255 L249.584 465.056 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M261.945 486.584 L269.583 486.584 L269.583 460.218 L261.273 461.885 L261.273 457.625 L269.537 455.959 L274.213 455.959 L274.213 486.584 L281.852 486.584 L281.852 490.519 L261.945 490.519 L261.945 486.584 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M301.296 459.037 Q297.685 459.037 295.856 462.602 Q294.051 466.144 294.051 473.273 Q294.051 480.38 295.856 483.945 Q297.685 487.486 301.296 487.486 Q304.93 487.486 306.736 483.945 Q308.565 480.38 308.565 473.273 Q308.565 466.144 306.736 462.602 Q304.93 459.037 301.296 459.037 M301.296 455.334 Q307.106 455.334 310.162 459.94 Q313.241 464.524 313.241 473.273 Q313.241 482 310.162 486.607 Q307.106 491.19 301.296 491.19 Q295.486 491.19 292.407 486.607 Q289.352 482 289.352 473.273 Q289.352 464.524 292.407 459.94 Q295.486 455.334 301.296 455.334 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M323.265 447.554 Q320.707 447.554 319.203 449.303 Q317.717 451.053 317.717 454.099 Q317.717 457.127 319.203 458.895 Q320.707 460.645 323.265 460.645 Q325.823 460.645 327.309 458.895 Q328.813 457.127 328.813 454.099 Q328.813 451.053 327.309 449.303 Q325.823 447.554 323.265 447.554 M330.807 435.649 L330.807 439.11 Q329.378 438.433 327.911 438.075 Q326.462 437.718 325.033 437.718 Q321.271 437.718 319.278 440.257 Q317.303 442.796 317.021 447.93 Q318.131 446.294 319.804 445.429 Q321.478 444.545 323.491 444.545 Q327.723 444.545 330.168 447.122 Q332.631 449.68 332.631 454.099 Q332.631 458.425 330.074 461.039 Q327.516 463.654 323.265 463.654 Q318.394 463.654 315.817 459.93 Q313.241 456.187 313.241 449.097 Q313.241 442.439 316.4 438.489 Q319.56 434.521 324.883 434.521 Q326.312 434.521 327.76 434.803 Q329.227 435.085 330.807 435.649 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M118.003 180.049 L125.642 180.049 L125.642 153.683 L117.332 155.35 L117.332 151.091 L125.595 149.424 L130.271 149.424 L130.271 180.049 L137.91 180.049 L137.91 183.984 L118.003 183.984 L118.003 180.049 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M147.355 178.104 L152.239 178.104 L152.239 183.984 L147.355 183.984 L147.355 178.104 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M172.424 152.503 Q168.813 152.503 166.984 156.067 Q165.179 159.609 165.179 166.739 Q165.179 173.845 166.984 177.41 Q168.813 180.952 172.424 180.952 Q176.058 180.952 177.864 177.41 Q179.692 173.845 179.692 166.739 Q179.692 159.609 177.864 156.067 Q176.058 152.503 172.424 152.503 M172.424 148.799 Q178.234 148.799 181.29 153.405 Q184.368 157.989 184.368 166.739 Q184.368 175.465 181.29 180.072 Q178.234 184.655 172.424 184.655 Q166.614 184.655 163.535 180.072 Q160.48 175.465 160.48 166.739 Q160.48 157.989 163.535 153.405 Q166.614 148.799 172.424 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M202.586 152.503 Q198.975 152.503 197.146 156.067 Q195.34 159.609 195.34 166.739 Q195.34 173.845 197.146 177.41 Q198.975 180.952 202.586 180.952 Q206.22 180.952 208.026 177.41 Q209.854 173.845 209.854 166.739 Q209.854 159.609 208.026 156.067 Q206.22 152.503 202.586 152.503 M202.586 148.799 Q208.396 148.799 211.451 153.405 Q214.53 157.989 214.53 166.739 Q214.53 175.465 211.451 180.072 Q208.396 184.655 202.586 184.655 Q196.776 184.655 193.697 180.072 Q190.641 175.465 190.641 166.739 Q190.641 157.989 193.697 153.405 Q196.776 148.799 202.586 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M250.919 158.521 L240.34 169.146 L250.919 179.725 L248.164 182.526 L237.539 171.901 L226.914 182.526 L224.183 179.725 L234.738 169.146 L224.183 158.521 L226.914 155.72 L237.539 166.345 L248.164 155.72 L250.919 158.521 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M263.28 180.049 L270.919 180.049 L270.919 153.683 L262.609 155.35 L262.609 151.091 L270.872 149.424 L275.548 149.424 L275.548 180.049 L283.187 180.049 L283.187 183.984 L263.28 183.984 L263.28 180.049 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M302.632 152.503 Q299.02 152.503 297.192 156.067 Q295.386 159.609 295.386 166.739 Q295.386 173.845 297.192 177.41 Q299.02 180.952 302.632 180.952 Q306.266 180.952 308.071 177.41 Q309.9 173.845 309.9 166.739 Q309.9 159.609 308.071 156.067 Q306.266 152.503 302.632 152.503 M302.632 148.799 Q308.442 148.799 311.497 153.405 Q314.576 157.989 314.576 166.739 Q314.576 175.465 311.497 180.072 Q308.442 184.655 302.632 184.655 Q296.821 184.655 293.743 180.072 Q290.687 175.465 290.687 166.739 Q290.687 157.989 293.743 153.405 Q296.821 148.799 302.632 148.799 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M314.576 128.494 L332.631 128.494 L332.631 130.111 L322.438 156.574 L318.469 156.574 L328.061 131.691 L314.576 131.691 L314.576 128.494 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M16.4842 973.416 L16.4842 933.217 L21.895 933.217 L21.895 950.086 L64.0042 950.086 L64.0042 956.547 L21.895 956.547 L21.895 973.416 L16.4842 973.416 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M33.8307 916.188 Q33.2578 917.175 33.0032 918.353 Q32.7167 919.499 32.7167 920.899 Q32.7167 925.864 35.9632 928.538 Q39.1779 931.18 45.2253 931.18 L64.0042 931.18 L64.0042 937.068 L28.3562 937.068 L28.3562 931.18 L33.8944 931.18 Q30.6479 929.334 29.0883 926.373 Q27.4968 923.413 27.4968 919.18 Q27.4968 918.575 27.5923 917.843 Q27.656 917.111 27.8151 916.22 L33.8307 916.188 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M46.0847 893.845 Q46.0847 900.942 47.7079 903.68 Q49.3312 906.417 53.2461 906.417 Q56.3653 906.417 58.2114 904.38 Q60.0256 902.311 60.0256 898.778 Q60.0256 893.908 56.5881 890.98 Q53.1188 888.02 47.3897 888.02 L46.0847 888.02 L46.0847 893.845 M43.6657 882.164 L64.0042 882.164 L64.0042 888.02 L58.5933 888.02 Q61.8398 890.025 63.3994 893.017 Q64.9272 896.009 64.9272 900.338 Q64.9272 905.812 61.8716 909.059 Q58.7843 912.273 53.6281 912.273 Q47.6125 912.273 44.5569 908.263 Q41.5014 904.221 41.5014 896.232 L41.5014 888.02 L40.9285 888.02 Q36.8862 888.02 34.6901 890.694 Q32.4621 893.335 32.4621 898.142 Q32.4621 901.197 33.1941 904.094 Q33.9262 906.99 35.3903 909.664 L29.9795 909.664 Q28.7381 906.449 28.1334 903.425 Q27.4968 900.401 27.4968 897.537 Q27.4968 889.803 31.5072 885.983 Q35.5176 882.164 43.6657 882.164 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M29.7248 844.447 L35.1993 844.447 Q33.8307 846.929 33.1623 849.444 Q32.4621 851.927 32.4621 854.473 Q32.4621 860.17 36.0905 863.321 Q39.6872 866.472 46.212 866.472 Q52.7369 866.472 56.3653 863.321 Q59.9619 860.17 59.9619 854.473 Q59.9619 851.927 59.2935 849.444 Q58.5933 846.929 57.2247 844.447 L62.6355 844.447 Q63.7814 846.898 64.3543 849.539 Q64.9272 852.149 64.9272 855.109 Q64.9272 863.162 59.8664 867.904 Q54.8057 872.647 46.212 872.647 Q37.491 872.647 32.4939 867.873 Q27.4968 863.067 27.4968 854.727 Q27.4968 852.022 28.0697 849.444 Q28.6108 846.866 29.7248 844.447 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M18.2347 828.469 L28.3562 828.469 L28.3562 816.406 L32.9077 816.406 L32.9077 828.469 L52.2594 828.469 Q56.6199 828.469 57.8613 827.291 Q59.1026 826.082 59.1026 822.421 L59.1026 816.406 L64.0042 816.406 L64.0042 822.421 Q64.0042 829.201 61.4897 831.779 Q58.9434 834.357 52.2594 834.357 L32.9077 834.357 L32.9077 838.654 L28.3562 838.654 L28.3562 834.357 L18.2347 834.357 L18.2347 828.469 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M28.3562 808.703 L28.3562 802.847 L64.0042 802.847 L64.0042 808.703 L28.3562 808.703 M14.479 808.703 L14.479 802.847 L21.895 802.847 L21.895 808.703 L14.479 808.703 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M32.4621 776.779 Q32.4621 781.49 36.1542 784.227 Q39.8145 786.965 46.212 786.965 Q52.6095 786.965 56.3017 784.259 Q59.9619 781.522 59.9619 776.779 Q59.9619 772.101 56.2698 769.363 Q52.5777 766.626 46.212 766.626 Q39.8781 766.626 36.186 769.363 Q32.4621 772.101 32.4621 776.779 M27.4968 776.779 Q27.4968 769.141 32.4621 764.78 Q37.4273 760.42 46.212 760.42 Q54.9649 760.42 59.9619 764.78 Q64.9272 769.141 64.9272 776.779 Q64.9272 784.45 59.9619 788.811 Q54.9649 793.139 46.212 793.139 Q37.4273 793.139 32.4621 788.811 Q27.4968 784.45 27.4968 776.779 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M42.4881 721.079 L64.0042 721.079 L64.0042 726.936 L42.679 726.936 Q37.6183 726.936 35.1038 728.909 Q32.5894 730.883 32.5894 734.829 Q32.5894 739.572 35.6131 742.309 Q38.6368 745.046 43.8567 745.046 L64.0042 745.046 L64.0042 750.935 L28.3562 750.935 L28.3562 745.046 L33.8944 745.046 Q30.6797 742.946 29.0883 740.113 Q27.4968 737.248 27.4968 733.524 Q27.4968 727.381 31.3163 724.23 Q35.1038 721.079 42.4881 721.079 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M14.479 689.219 L14.479 675.724 L19.0304 675.724 L19.0304 683.363 L68.0464 683.363 L68.0464 675.724 L72.5979 675.724 L72.5979 689.219 L14.479 689.219 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M21.7677 656.563 L39.6235 656.563 L39.6235 648.479 Q39.6235 643.991 37.3 641.54 Q34.9765 639.089 30.6797 639.089 Q26.4147 639.089 24.0912 641.54 Q21.7677 643.991 21.7677 648.479 L21.7677 656.563 M16.4842 662.992 L16.4842 648.479 Q16.4842 640.49 20.1126 636.416 Q23.7092 632.31 30.6797 632.31 Q37.7138 632.31 41.3104 636.416 Q44.907 640.49 44.907 648.479 L44.907 656.563 L64.0042 656.563 L64.0042 662.992 L16.4842 662.992 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M46.0847 610.666 Q46.0847 617.764 47.7079 620.501 Q49.3312 623.239 53.2461 623.239 Q56.3653 623.239 58.2114 621.202 Q60.0256 619.133 60.0256 615.6 Q60.0256 610.73 56.5881 607.802 Q53.1188 604.842 47.3897 604.842 L46.0847 604.842 L46.0847 610.666 M43.6657 598.985 L64.0042 598.985 L64.0042 604.842 L58.5933 604.842 Q61.8398 606.847 63.3994 609.839 Q64.9272 612.831 64.9272 617.159 Q64.9272 622.634 61.8716 625.88 Q58.7843 629.095 53.6281 629.095 Q47.6125 629.095 44.5569 625.085 Q41.5014 621.042 41.5014 613.053 L41.5014 604.842 L40.9285 604.842 Q36.8862 604.842 34.6901 607.515 Q32.4621 610.157 32.4621 614.963 Q32.4621 618.019 33.1941 620.915 Q33.9262 623.811 35.3903 626.485 L29.9795 626.485 Q28.7381 623.27 28.1334 620.247 Q27.4968 617.223 27.4968 614.358 Q27.4968 606.624 31.5072 602.805 Q35.5176 598.985 43.6657 598.985 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M14.479 573.236 L72.5979 573.236 L72.5979 586.731 L68.0464 586.731 L68.0464 579.124 L19.0304 579.124 L19.0304 586.731 L14.479 586.731 L14.479 573.236 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M903.063 12.096 L954.226 12.096 L954.226 18.9825 L932.756 18.9825 L932.756 72.576 L924.533 72.576 L924.533 18.9825 L903.063 18.9825 L903.063 12.096 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M975.898 34.1734 Q974.642 33.4443 973.144 33.1202 Q971.685 32.7556 969.903 32.7556 Q963.584 32.7556 960.181 36.8875 Q956.818 40.9789 956.818 48.6757 L956.818 72.576 L949.324 72.576 L949.324 27.2059 L956.818 27.2059 L956.818 34.2544 Q959.168 30.1225 962.935 28.1376 Q966.703 26.1121 972.09 26.1121 Q972.86 26.1121 973.792 26.2337 Q974.723 26.3147 975.858 26.5172 L975.898 34.1734 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1004.34 49.7694 Q995.302 49.7694 991.818 51.8354 Q988.335 53.9013 988.335 58.8839 Q988.335 62.8538 990.927 65.2034 Q993.56 67.5124 998.057 67.5124 Q1004.25 67.5124 1007.98 63.1374 Q1011.75 58.7219 1011.75 51.4303 L1011.75 49.7694 L1004.34 49.7694 M1019.2 46.6907 L1019.2 72.576 L1011.75 72.576 L1011.75 65.6895 Q1009.2 69.8214 1005.39 71.8063 Q1001.58 73.7508 996.072 73.7508 Q989.104 73.7508 984.972 69.8619 Q980.881 65.9325 980.881 59.3701 Q980.881 51.7138 985.985 47.825 Q991.13 43.9361 1001.3 43.9361 L1011.75 43.9361 L1011.75 43.2069 Q1011.75 38.0623 1008.35 35.2672 Q1004.98 32.4315 998.867 32.4315 Q994.978 32.4315 991.292 33.3632 Q987.605 34.295 984.203 36.1584 L984.203 29.2718 Q988.294 27.692 992.142 26.9223 Q995.991 26.1121 999.637 26.1121 Q1009.48 26.1121 1014.34 31.2163 Q1019.2 36.3204 1019.2 46.6907 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1067.21 28.9478 L1067.21 35.9153 Q1064.05 34.1734 1060.85 33.3227 Q1057.69 32.4315 1054.45 32.4315 Q1047.19 32.4315 1043.18 37.0496 Q1039.17 41.6271 1039.17 49.9314 Q1039.17 58.2358 1043.18 62.8538 Q1047.19 67.4314 1054.45 67.4314 Q1057.69 67.4314 1060.85 66.5807 Q1064.05 65.6895 1067.21 63.9476 L1067.21 70.8341 Q1064.09 72.2924 1060.72 73.0216 Q1057.4 73.7508 1053.64 73.7508 Q1043.39 73.7508 1037.35 67.3098 Q1031.31 60.8689 1031.31 49.9314 Q1031.31 38.832 1037.39 32.472 Q1043.51 26.1121 1054.12 26.1121 Q1057.56 26.1121 1060.85 26.8413 Q1064.13 27.5299 1067.21 28.9478 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1087.54 14.324 L1087.54 27.2059 L1102.89 27.2059 L1102.89 32.9987 L1087.54 32.9987 L1087.54 57.6282 Q1087.54 63.1779 1089.04 64.7578 Q1090.58 66.3376 1095.24 66.3376 L1102.89 66.3376 L1102.89 72.576 L1095.24 72.576 Q1086.61 72.576 1083.33 69.3758 Q1080.05 66.1351 1080.05 57.6282 L1080.05 32.9987 L1074.58 32.9987 L1074.58 27.2059 L1080.05 27.2059 L1080.05 14.324 L1087.54 14.324 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1112.7 27.2059 L1120.15 27.2059 L1120.15 72.576 L1112.7 72.576 L1112.7 27.2059 M1112.7 9.54393 L1120.15 9.54393 L1120.15 18.9825 L1112.7 18.9825 L1112.7 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1153.33 32.4315 Q1147.33 32.4315 1143.85 37.1306 Q1140.36 41.7891 1140.36 49.9314 Q1140.36 58.0738 1143.81 62.7728 Q1147.29 67.4314 1153.33 67.4314 Q1159.28 67.4314 1162.77 62.7323 Q1166.25 58.0333 1166.25 49.9314 Q1166.25 41.8701 1162.77 37.1711 Q1159.28 32.4315 1153.33 32.4315 M1153.33 26.1121 Q1163.05 26.1121 1168.6 32.4315 Q1174.15 38.7509 1174.15 49.9314 Q1174.15 61.0714 1168.6 67.4314 Q1163.05 73.7508 1153.33 73.7508 Q1143.57 73.7508 1138.02 67.4314 Q1132.51 61.0714 1132.51 49.9314 Q1132.51 38.7509 1138.02 32.4315 Q1143.57 26.1121 1153.33 26.1121 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1224.22 45.1919 L1224.22 72.576 L1216.77 72.576 L1216.77 45.4349 Q1216.77 38.994 1214.25 35.7938 Q1211.74 32.5936 1206.72 32.5936 Q1200.68 32.5936 1197.2 36.4419 Q1193.72 40.2903 1193.72 46.9338 L1193.72 72.576 L1186.22 72.576 L1186.22 27.2059 L1193.72 27.2059 L1193.72 34.2544 Q1196.39 30.163 1199.99 28.1376 Q1203.64 26.1121 1208.38 26.1121 Q1216.2 26.1121 1220.21 30.9732 Q1224.22 35.7938 1224.22 45.1919 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1235.32 46.5287 L1257.15 46.5287 L1257.15 53.1722 L1235.32 53.1722 L1235.32 46.5287 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1298.88 34.0924 L1298.88 9.54393 L1306.33 9.54393 L1306.33 72.576 L1298.88 72.576 L1298.88 65.7705 Q1296.53 69.8214 1292.92 71.8063 Q1289.36 73.7508 1284.33 73.7508 Q1276.11 73.7508 1270.93 67.1883 Q1265.78 60.6258 1265.78 49.9314 Q1265.78 39.2371 1270.93 32.6746 Q1276.11 26.1121 1284.33 26.1121 Q1289.36 26.1121 1292.92 28.0971 Q1296.53 30.0415 1298.88 34.0924 M1273.48 49.9314 Q1273.48 58.1548 1276.84 62.8538 Q1280.24 67.5124 1286.16 67.5124 Q1292.07 67.5124 1295.47 62.8538 Q1298.88 58.1548 1298.88 49.9314 Q1298.88 41.7081 1295.47 37.0496 Q1292.07 32.3505 1286.16 32.3505 Q1280.24 32.3505 1276.84 37.0496 Q1273.48 41.7081 1273.48 49.9314 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1321.68 27.2059 L1329.14 27.2059 L1329.14 72.576 L1321.68 72.576 L1321.68 27.2059 M1321.68 9.54393 L1329.14 9.54393 L1329.14 18.9825 L1321.68 18.9825 L1321.68 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1373.66 28.5427 L1373.66 35.5912 Q1370.5 33.9709 1367.09 33.1607 Q1363.69 32.3505 1360.05 32.3505 Q1354.5 32.3505 1351.7 34.0519 Q1348.95 35.7533 1348.95 39.156 Q1348.95 41.7486 1350.93 43.2475 Q1352.92 44.7058 1358.91 46.0426 L1361.46 46.6097 Q1369.4 48.3111 1372.72 51.4303 Q1376.09 54.509 1376.09 60.0587 Q1376.09 66.3781 1371.06 70.0644 Q1366.08 73.7508 1357.33 73.7508 Q1353.69 73.7508 1349.72 73.0216 Q1345.79 72.3329 1341.41 70.9151 L1341.41 63.2184 Q1345.54 65.3654 1349.55 66.4591 Q1353.56 67.5124 1357.49 67.5124 Q1362.76 67.5124 1365.6 65.73 Q1368.43 63.9071 1368.43 60.6258 Q1368.43 57.5877 1366.36 55.9673 Q1364.34 54.3469 1357.41 52.8481 L1354.82 52.2405 Q1347.89 50.7821 1344.81 47.7845 Q1341.74 44.7463 1341.74 39.4801 Q1341.74 33.0797 1346.27 29.5959 Q1350.81 26.1121 1359.15 26.1121 Q1363.29 26.1121 1366.93 26.7198 Q1370.58 27.3274 1373.66 28.5427 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1395.17 65.7705 L1395.17 89.8329 L1387.67 89.8329 L1387.67 27.2059 L1395.17 27.2059 L1395.17 34.0924 Q1397.52 30.0415 1401.08 28.0971 Q1404.69 26.1121 1409.67 26.1121 Q1417.93 26.1121 1423.08 32.6746 Q1428.26 39.2371 1428.26 49.9314 Q1428.26 60.6258 1423.08 67.1883 Q1417.93 73.7508 1409.67 73.7508 Q1404.69 73.7508 1401.08 71.8063 Q1397.52 69.8214 1395.17 65.7705 M1420.53 49.9314 Q1420.53 41.7081 1417.12 37.0496 Q1413.76 32.3505 1407.85 32.3505 Q1401.93 32.3505 1398.53 37.0496 Q1395.17 41.7081 1395.17 49.9314 Q1395.17 58.1548 1398.53 62.8538 Q1401.93 67.5124 1407.85 67.5124 Q1413.76 67.5124 1417.12 62.8538 Q1420.53 58.1548 1420.53 49.9314 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1440.62 9.54393 L1448.07 9.54393 L1448.07 72.576 L1440.62 72.576 L1440.62 9.54393 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1484.29 49.7694 Q1475.25 49.7694 1471.77 51.8354 Q1468.29 53.9013 1468.29 58.8839 Q1468.29 62.8538 1470.88 65.2034 Q1473.51 67.5124 1478.01 67.5124 Q1484.21 67.5124 1487.93 63.1374 Q1491.7 58.7219 1491.7 51.4303 L1491.7 49.7694 L1484.29 49.7694 M1499.15 46.6907 L1499.15 72.576 L1491.7 72.576 L1491.7 65.6895 Q1489.15 69.8214 1485.34 71.8063 Q1481.53 73.7508 1476.02 73.7508 Q1469.06 73.7508 1464.92 69.8619 Q1460.83 65.9325 1460.83 59.3701 Q1460.83 51.7138 1465.94 47.825 Q1471.08 43.9361 1481.25 43.9361 L1491.7 43.9361 L1491.7 43.2069 Q1491.7 38.0623 1488.3 35.2672 Q1484.93 32.4315 1478.82 32.4315 Q1474.93 32.4315 1471.24 33.3632 Q1467.56 34.295 1464.15 36.1584 L1464.15 29.2718 Q1468.25 27.692 1472.09 26.9223 Q1475.94 26.1121 1479.59 26.1121 Q1489.43 26.1121 1494.29 31.2163 Q1499.15 36.3204 1499.15 46.6907 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1547.16 28.9478 L1547.16 35.9153 Q1544 34.1734 1540.8 33.3227 Q1537.64 32.4315 1534.4 32.4315 Q1527.15 32.4315 1523.13 37.0496 Q1519.12 41.6271 1519.12 49.9314 Q1519.12 58.2358 1523.13 62.8538 Q1527.15 67.4314 1534.4 67.4314 Q1537.64 67.4314 1540.8 66.5807 Q1544 65.6895 1547.16 63.9476 L1547.16 70.8341 Q1544.04 72.2924 1540.68 73.0216 Q1537.35 73.7508 1533.59 73.7508 Q1523.34 73.7508 1517.3 67.3098 Q1511.27 60.8689 1511.27 49.9314 Q1511.27 38.832 1517.34 32.472 Q1523.46 26.1121 1534.07 26.1121 Q1537.52 26.1121 1540.8 26.8413 Q1544.08 27.5299 1547.16 28.9478 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1598.93 48.0275 L1598.93 51.6733 L1564.66 51.6733 Q1565.14 59.3701 1569.27 63.421 Q1573.45 67.4314 1580.86 67.4314 Q1585.15 67.4314 1589.16 66.3781 Q1593.22 65.3249 1597.19 63.2184 L1597.19 70.267 Q1593.18 71.9684 1588.96 72.8596 Q1584.75 73.7508 1580.41 73.7508 Q1569.56 73.7508 1563.2 67.4314 Q1556.88 61.1119 1556.88 50.3365 Q1556.88 39.1965 1562.87 32.6746 Q1568.91 26.1121 1579.12 26.1121 Q1588.27 26.1121 1593.58 32.0264 Q1598.93 37.9003 1598.93 48.0275 M1591.47 45.84 Q1591.39 39.7232 1588.03 36.0774 Q1584.71 32.4315 1579.2 32.4315 Q1572.96 32.4315 1569.19 35.9558 Q1565.47 39.4801 1564.9 45.8805 L1591.47 45.84 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1646.48 35.9153 Q1649.28 30.8922 1653.17 28.5022 Q1657.06 26.1121 1662.32 26.1121 Q1669.41 26.1121 1673.26 31.0947 Q1677.11 36.0368 1677.11 45.1919 L1677.11 72.576 L1669.62 72.576 L1669.62 45.4349 Q1669.62 38.913 1667.31 35.7533 Q1665 32.5936 1660.26 32.5936 Q1654.47 32.5936 1651.1 36.4419 Q1647.74 40.2903 1647.74 46.9338 L1647.74 72.576 L1640.25 72.576 L1640.25 45.4349 Q1640.25 38.8725 1637.94 35.7533 Q1635.63 32.5936 1630.81 32.5936 Q1625.1 32.5936 1621.73 36.4824 Q1618.37 40.3308 1618.37 46.9338 L1618.37 72.576 L1610.88 72.576 L1610.88 27.2059 L1618.37 27.2059 L1618.37 34.2544 Q1620.92 30.082 1624.49 28.0971 Q1628.05 26.1121 1632.95 26.1121 Q1637.9 26.1121 1641.34 28.6237 Q1644.82 31.1352 1646.48 35.9153 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1730.78 48.0275 L1730.78 51.6733 L1696.51 51.6733 Q1697 59.3701 1701.13 63.421 Q1705.3 67.4314 1712.72 67.4314 Q1717.01 67.4314 1721.02 66.3781 Q1725.07 65.3249 1729.04 63.2184 L1729.04 70.267 Q1725.03 71.9684 1720.82 72.8596 Q1716.61 73.7508 1712.27 73.7508 Q1701.42 73.7508 1695.06 67.4314 Q1688.74 61.1119 1688.74 50.3365 Q1688.74 39.1965 1694.73 32.6746 Q1700.77 26.1121 1710.98 26.1121 Q1720.13 26.1121 1725.44 32.0264 Q1730.78 37.9003 1730.78 48.0275 M1723.33 45.84 Q1723.25 39.7232 1719.89 36.0774 Q1716.57 32.4315 1711.06 32.4315 Q1704.82 32.4315 1701.05 35.9558 Q1697.32 39.4801 1696.76 45.8805 L1723.33 45.84 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1780.73 45.1919 L1780.73 72.576 L1773.28 72.576 L1773.28 45.4349 Q1773.28 38.994 1770.77 35.7938 Q1768.26 32.5936 1763.23 32.5936 Q1757.2 32.5936 1753.71 36.4419 Q1750.23 40.2903 1750.23 46.9338 L1750.23 72.576 L1742.73 72.576 L1742.73 27.2059 L1750.23 27.2059 L1750.23 34.2544 Q1752.9 30.163 1756.51 28.1376 Q1760.15 26.1121 1764.89 26.1121 Q1772.71 26.1121 1776.72 30.9732 Q1780.73 35.7938 1780.73 45.1919 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><path clip-path=\"url(#clip480)\" d=\"M1802.97 14.324 L1802.97 27.2059 L1818.32 27.2059 L1818.32 32.9987 L1802.97 32.9987 L1802.97 57.6282 Q1802.97 63.1779 1804.47 64.7578 Q1806.01 66.3376 1810.67 66.3376 L1818.32 66.3376 L1818.32 72.576 L1810.67 72.576 Q1802.04 72.576 1798.76 69.3758 Q1795.48 66.1351 1795.48 57.6282 L1795.48 32.9987 L1790.01 32.9987 L1790.01 27.2059 L1795.48 27.2059 L1795.48 14.324 L1802.97 14.324 Z\" fill=\"#000000\" fill-rule=\"nonzero\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip482)\" style=\"stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none\" points=\"424.786,1386.4 926.263,773.326 985.537,705.207 1056.5,637.088 1137.34,568.969 1232.41,500.851 1357.01,432.732 1532.78,364.613 1754.25,296.494 2009.96,228.375 2296.6,160.256 \"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"424.786\" y1=\"1386.4\" x2=\"424.786\" y2=\"1370.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"424.786\" y1=\"1386.4\" x2=\"408.786\" y2=\"1386.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"424.786\" y1=\"1386.4\" x2=\"424.786\" y2=\"1402.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"424.786\" y1=\"1386.4\" x2=\"440.786\" y2=\"1386.4\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"926.263\" y1=\"773.326\" x2=\"926.263\" y2=\"757.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"926.263\" y1=\"773.326\" x2=\"910.263\" y2=\"773.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"926.263\" y1=\"773.326\" x2=\"926.263\" y2=\"789.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"926.263\" y1=\"773.326\" x2=\"942.263\" y2=\"773.326\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"985.537\" y1=\"705.207\" x2=\"985.537\" y2=\"689.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"985.537\" y1=\"705.207\" x2=\"969.537\" y2=\"705.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"985.537\" y1=\"705.207\" x2=\"985.537\" y2=\"721.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"985.537\" y1=\"705.207\" x2=\"1001.54\" y2=\"705.207\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1056.5\" y2=\"621.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1040.5\" y2=\"637.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1056.5\" y2=\"653.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1056.5\" y1=\"637.088\" x2=\"1072.5\" y2=\"637.088\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1137.34\" y2=\"552.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1121.34\" y2=\"568.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1137.34\" y2=\"584.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1137.34\" y1=\"568.969\" x2=\"1153.34\" y2=\"568.969\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1232.41\" y2=\"484.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1216.41\" y2=\"500.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1232.41\" y2=\"516.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1232.41\" y1=\"500.851\" x2=\"1248.41\" y2=\"500.851\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1357.01\" y2=\"416.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1341.01\" y2=\"432.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1357.01\" y2=\"448.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1357.01\" y1=\"432.732\" x2=\"1373.01\" y2=\"432.732\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1532.78\" y2=\"348.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1516.78\" y2=\"364.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1532.78\" y2=\"380.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1532.78\" y1=\"364.613\" x2=\"1548.78\" y2=\"364.613\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1754.25\" y2=\"280.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1738.25\" y2=\"296.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1754.25\" y2=\"312.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"1754.25\" y1=\"296.494\" x2=\"1770.25\" y2=\"296.494\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2009.96\" y2=\"212.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"2009.96\" y1=\"228.375\" x2=\"1993.96\" y2=\"228.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2009.96\" y2=\"244.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"2009.96\" y1=\"228.375\" x2=\"2025.96\" y2=\"228.375\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2296.6\" y2=\"144.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2280.6\" y2=\"160.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2296.6\" y2=\"176.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", + "<line clip-path=\"url(#clip482)\" x1=\"2296.6\" y1=\"160.256\" x2=\"2312.6\" y2=\"160.256\" style=\"stroke:#009af9; stroke-width:8; stroke-opacity:1\"/>\n", "</svg>\n" ] }, diff --git a/dev/tutorials/plasticity/3e25d0a4.svg b/dev/tutorials/plasticity/d0ba011e.svg similarity index 83% rename from dev/tutorials/plasticity/3e25d0a4.svg rename to dev/tutorials/plasticity/d0ba011e.svg index 2e5bf61698..080631b994 100644 --- a/dev/tutorials/plasticity/3e25d0a4.svg +++ b/dev/tutorials/plasticity/d0ba011e.svg @@ -1,89 +1,89 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0 0 2400 1600"> <defs> - <clipPath id="clip200"> + <clipPath id="clip810"> <rect x="0" y="0" width="2400" height="1600"/> </clipPath> </defs> -<path clip-path="url(#clip200)" d="M0 1600 L2400 1600 L2400 0 L0 0 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> +<path clip-path="url(#clip810)" d="M0 1600 L2400 1600 L2400 0 L0 0 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> <defs> - <clipPath id="clip201"> + <clipPath id="clip811"> <rect x="480" y="0" width="1681" height="1600"/> </clipPath> </defs> -<path clip-path="url(#clip200)" d="M368.631 1423.18 L2352.76 1423.18 L2352.76 123.472 L368.631 123.472 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> +<path clip-path="url(#clip810)" d="M368.631 1423.18 L2352.76 1423.18 L2352.76 123.472 L368.631 123.472 Z" fill="#ffffff" fill-rule="evenodd" fill-opacity="1"/> <defs> - <clipPath id="clip202"> + <clipPath id="clip812"> <rect x="368" y="123" width="1985" height="1301"/> </clipPath> </defs> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="424.786,1423.18 424.786,123.472 "/> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="792.598,1423.18 792.598,123.472 "/> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1160.41,1423.18 1160.41,123.472 "/> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1528.22,1423.18 1528.22,123.472 "/> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1896.03,1423.18 1896.03,123.472 "/> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2263.85,1423.18 2263.85,123.472 "/> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="368.631,1386.4 2352.76,1386.4 "/> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="368.631,1079.86 2352.76,1079.86 "/> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="368.631,773.326 2352.76,773.326 "/> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="368.631,466.791 2352.76,466.791 "/> -<polyline clip-path="url(#clip202)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="368.631,160.256 2352.76,160.256 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,1423.18 2352.76,1423.18 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="424.786,1423.18 424.786,1404.28 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="792.598,1423.18 792.598,1404.28 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1160.41,1423.18 1160.41,1404.28 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1528.22,1423.18 1528.22,1404.28 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1896.03,1423.18 1896.03,1404.28 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2263.85,1423.18 2263.85,1404.28 "/> -<path clip-path="url(#clip200)" d="M387.089 1454.1 Q383.478 1454.1 381.65 1457.66 Q379.844 1461.2 379.844 1468.33 Q379.844 1475.44 381.65 1479.01 Q383.478 1482.55 387.089 1482.55 Q390.724 1482.55 392.529 1479.01 Q394.358 1475.44 394.358 1468.33 Q394.358 1461.2 392.529 1457.66 Q390.724 1454.1 387.089 1454.1 M387.089 1450.39 Q392.899 1450.39 395.955 1455 Q399.034 1459.58 399.034 1468.33 Q399.034 1477.06 395.955 1481.67 Q392.899 1486.25 387.089 1486.25 Q381.279 1486.25 378.2 1481.67 Q375.145 1477.06 375.145 1468.33 Q375.145 1459.58 378.2 1455 Q381.279 1450.39 387.089 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M407.251 1479.7 L412.135 1479.7 L412.135 1485.58 L407.251 1485.58 L407.251 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M432.321 1454.1 Q428.709 1454.1 426.881 1457.66 Q425.075 1461.2 425.075 1468.33 Q425.075 1475.44 426.881 1479.01 Q428.709 1482.55 432.321 1482.55 Q435.955 1482.55 437.76 1479.01 Q439.589 1475.44 439.589 1468.33 Q439.589 1461.2 437.76 1457.66 Q435.955 1454.1 432.321 1454.1 M432.321 1450.39 Q438.131 1450.39 441.186 1455 Q444.265 1459.58 444.265 1468.33 Q444.265 1477.06 441.186 1481.67 Q438.131 1486.25 432.321 1486.25 Q426.51 1486.25 423.432 1481.67 Q420.376 1477.06 420.376 1468.33 Q420.376 1459.58 423.432 1455 Q426.51 1450.39 432.321 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M462.482 1454.1 Q458.871 1454.1 457.043 1457.66 Q455.237 1461.2 455.237 1468.33 Q455.237 1475.44 457.043 1479.01 Q458.871 1482.55 462.482 1482.55 Q466.117 1482.55 467.922 1479.01 Q469.751 1475.44 469.751 1468.33 Q469.751 1461.2 467.922 1457.66 Q466.117 1454.1 462.482 1454.1 M462.482 1450.39 Q468.293 1450.39 471.348 1455 Q474.427 1459.58 474.427 1468.33 Q474.427 1477.06 471.348 1481.67 Q468.293 1486.25 462.482 1486.25 Q456.672 1486.25 453.594 1481.67 Q450.538 1477.06 450.538 1468.33 Q450.538 1459.58 453.594 1455 Q456.672 1450.39 462.482 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M755.399 1454.1 Q751.788 1454.1 749.959 1457.66 Q748.154 1461.2 748.154 1468.33 Q748.154 1475.44 749.959 1479.01 Q751.788 1482.55 755.399 1482.55 Q759.033 1482.55 760.839 1479.01 Q762.668 1475.44 762.668 1468.33 Q762.668 1461.2 760.839 1457.66 Q759.033 1454.1 755.399 1454.1 M755.399 1450.39 Q761.209 1450.39 764.265 1455 Q767.344 1459.58 767.344 1468.33 Q767.344 1477.06 764.265 1481.67 Q761.209 1486.25 755.399 1486.25 Q749.589 1486.25 746.51 1481.67 Q743.455 1477.06 743.455 1468.33 Q743.455 1459.58 746.51 1455 Q749.589 1450.39 755.399 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M775.561 1479.7 L780.445 1479.7 L780.445 1485.58 L775.561 1485.58 L775.561 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M800.63 1454.1 Q797.019 1454.1 795.191 1457.66 Q793.385 1461.2 793.385 1468.33 Q793.385 1475.44 795.191 1479.01 Q797.019 1482.55 800.63 1482.55 Q804.265 1482.55 806.07 1479.01 Q807.899 1475.44 807.899 1468.33 Q807.899 1461.2 806.07 1457.66 Q804.265 1454.1 800.63 1454.1 M800.63 1450.39 Q806.441 1450.39 809.496 1455 Q812.575 1459.58 812.575 1468.33 Q812.575 1477.06 809.496 1481.67 Q806.441 1486.25 800.63 1486.25 Q794.82 1486.25 791.742 1481.67 Q788.686 1477.06 788.686 1468.33 Q788.686 1459.58 791.742 1455 Q794.82 1450.39 800.63 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M820.839 1451.02 L839.195 1451.02 L839.195 1454.96 L825.121 1454.96 L825.121 1463.43 Q826.14 1463.08 827.158 1462.92 Q828.177 1462.73 829.195 1462.73 Q834.982 1462.73 838.362 1465.9 Q841.741 1469.08 841.741 1474.49 Q841.741 1480.07 838.269 1483.17 Q834.797 1486.25 828.477 1486.25 Q826.302 1486.25 824.033 1485.88 Q821.788 1485.51 819.38 1484.77 L819.38 1480.07 Q821.464 1481.2 823.686 1481.76 Q825.908 1482.32 828.385 1482.32 Q832.389 1482.32 834.727 1480.21 Q837.065 1478.1 837.065 1474.49 Q837.065 1470.88 834.727 1468.77 Q832.389 1466.67 828.385 1466.67 Q826.51 1466.67 824.635 1467.08 Q822.783 1467.5 820.839 1468.38 L820.839 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1122.71 1454.1 Q1119.1 1454.1 1117.27 1457.66 Q1115.47 1461.2 1115.47 1468.33 Q1115.47 1475.44 1117.27 1479.01 Q1119.1 1482.55 1122.71 1482.55 Q1126.35 1482.55 1128.15 1479.01 Q1129.98 1475.44 1129.98 1468.33 Q1129.98 1461.2 1128.15 1457.66 Q1126.35 1454.1 1122.71 1454.1 M1122.71 1450.39 Q1128.52 1450.39 1131.58 1455 Q1134.66 1459.58 1134.66 1468.33 Q1134.66 1477.06 1131.58 1481.67 Q1128.52 1486.25 1122.71 1486.25 Q1116.9 1486.25 1113.82 1481.67 Q1110.77 1477.06 1110.77 1468.33 Q1110.77 1459.58 1113.82 1455 Q1116.9 1450.39 1122.71 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1142.88 1479.7 L1147.76 1479.7 L1147.76 1485.58 L1142.88 1485.58 L1142.88 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1158.76 1481.64 L1166.39 1481.64 L1166.39 1455.28 L1158.08 1456.95 L1158.08 1452.69 L1166.35 1451.02 L1171.02 1451.02 L1171.02 1481.64 L1178.66 1481.64 L1178.66 1485.58 L1158.76 1485.58 L1158.76 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1198.11 1454.1 Q1194.5 1454.1 1192.67 1457.66 Q1190.86 1461.2 1190.86 1468.33 Q1190.86 1475.44 1192.67 1479.01 Q1194.5 1482.55 1198.11 1482.55 Q1201.74 1482.55 1203.55 1479.01 Q1205.38 1475.44 1205.38 1468.33 Q1205.38 1461.2 1203.55 1457.66 Q1201.74 1454.1 1198.11 1454.1 M1198.11 1450.39 Q1203.92 1450.39 1206.97 1455 Q1210.05 1459.58 1210.05 1468.33 Q1210.05 1477.06 1206.97 1481.67 Q1203.92 1486.25 1198.11 1486.25 Q1192.3 1486.25 1189.22 1481.67 Q1186.16 1477.06 1186.16 1468.33 Q1186.16 1459.58 1189.22 1455 Q1192.3 1450.39 1198.11 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1491.02 1454.1 Q1487.41 1454.1 1485.58 1457.66 Q1483.78 1461.2 1483.78 1468.33 Q1483.78 1475.44 1485.58 1479.01 Q1487.41 1482.55 1491.02 1482.55 Q1494.66 1482.55 1496.46 1479.01 Q1498.29 1475.44 1498.29 1468.33 Q1498.29 1461.2 1496.46 1457.66 Q1494.66 1454.1 1491.02 1454.1 M1491.02 1450.39 Q1496.83 1450.39 1499.89 1455 Q1502.97 1459.58 1502.97 1468.33 Q1502.97 1477.06 1499.89 1481.67 Q1496.83 1486.25 1491.02 1486.25 Q1485.21 1486.25 1482.13 1481.67 Q1479.08 1477.06 1479.08 1468.33 Q1479.08 1459.58 1482.13 1455 Q1485.21 1450.39 1491.02 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1511.19 1479.7 L1516.07 1479.7 L1516.07 1485.58 L1511.19 1485.58 L1511.19 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1527.06 1481.64 L1534.7 1481.64 L1534.7 1455.28 L1526.39 1456.95 L1526.39 1452.69 L1534.66 1451.02 L1539.33 1451.02 L1539.33 1481.64 L1546.97 1481.64 L1546.97 1485.58 L1527.06 1485.58 L1527.06 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1556.46 1451.02 L1574.82 1451.02 L1574.82 1454.96 L1560.75 1454.96 L1560.75 1463.43 Q1561.76 1463.08 1562.78 1462.92 Q1563.8 1462.73 1564.82 1462.73 Q1570.61 1462.73 1573.99 1465.9 Q1577.37 1469.08 1577.37 1474.49 Q1577.37 1480.07 1573.89 1483.17 Q1570.42 1486.25 1564.1 1486.25 Q1561.93 1486.25 1559.66 1485.88 Q1557.41 1485.51 1555 1484.77 L1555 1480.07 Q1557.09 1481.2 1559.31 1481.76 Q1561.53 1482.32 1564.01 1482.32 Q1568.01 1482.32 1570.35 1480.21 Q1572.69 1478.1 1572.69 1474.49 Q1572.69 1470.88 1570.35 1468.77 Q1568.01 1466.67 1564.01 1466.67 Q1562.13 1466.67 1560.26 1467.08 Q1558.41 1467.5 1556.46 1468.38 L1556.46 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1858.34 1454.1 Q1854.73 1454.1 1852.9 1457.66 Q1851.09 1461.2 1851.09 1468.33 Q1851.09 1475.44 1852.9 1479.01 Q1854.73 1482.55 1858.34 1482.55 Q1861.97 1482.55 1863.78 1479.01 Q1865.61 1475.44 1865.61 1468.33 Q1865.61 1461.2 1863.78 1457.66 Q1861.97 1454.1 1858.34 1454.1 M1858.34 1450.39 Q1864.15 1450.39 1867.2 1455 Q1870.28 1459.58 1870.28 1468.33 Q1870.28 1477.06 1867.2 1481.67 Q1864.15 1486.25 1858.34 1486.25 Q1852.53 1486.25 1849.45 1481.67 Q1846.39 1477.06 1846.39 1468.33 Q1846.39 1459.58 1849.45 1455 Q1852.53 1450.39 1858.34 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1878.5 1479.7 L1883.38 1479.7 L1883.38 1485.58 L1878.5 1485.58 L1878.5 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1897.6 1481.64 L1913.92 1481.64 L1913.92 1485.58 L1891.97 1485.58 L1891.97 1481.64 Q1894.63 1478.89 1899.22 1474.26 Q1903.82 1469.61 1905 1468.27 Q1907.25 1465.74 1908.13 1464.01 Q1909.03 1462.25 1909.03 1460.56 Q1909.03 1457.8 1907.09 1456.07 Q1905.17 1454.33 1902.06 1454.33 Q1899.87 1454.33 1897.41 1455.09 Q1894.98 1455.86 1892.2 1457.41 L1892.2 1452.69 Q1895.03 1451.55 1897.48 1450.97 Q1899.93 1450.39 1901.97 1450.39 Q1907.34 1450.39 1910.54 1453.08 Q1913.73 1455.77 1913.73 1460.26 Q1913.73 1462.39 1912.92 1464.31 Q1912.13 1466.2 1910.03 1468.8 Q1909.45 1469.47 1906.35 1472.69 Q1903.25 1475.88 1897.6 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1933.73 1454.1 Q1930.12 1454.1 1928.29 1457.66 Q1926.49 1461.2 1926.49 1468.33 Q1926.49 1475.44 1928.29 1479.01 Q1930.12 1482.55 1933.73 1482.55 Q1937.37 1482.55 1939.17 1479.01 Q1941 1475.44 1941 1468.33 Q1941 1461.2 1939.17 1457.66 Q1937.37 1454.1 1933.73 1454.1 M1933.73 1450.39 Q1939.54 1450.39 1942.6 1455 Q1945.68 1459.58 1945.68 1468.33 Q1945.68 1477.06 1942.6 1481.67 Q1939.54 1486.25 1933.73 1486.25 Q1927.92 1486.25 1924.84 1481.67 Q1921.79 1477.06 1921.79 1468.33 Q1921.79 1459.58 1924.84 1455 Q1927.92 1450.39 1933.73 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M2226.65 1454.1 Q2223.04 1454.1 2221.21 1457.66 Q2219.4 1461.2 2219.4 1468.33 Q2219.4 1475.44 2221.21 1479.01 Q2223.04 1482.55 2226.65 1482.55 Q2230.28 1482.55 2232.09 1479.01 Q2233.92 1475.44 2233.92 1468.33 Q2233.92 1461.2 2232.09 1457.66 Q2230.28 1454.1 2226.65 1454.1 M2226.65 1450.39 Q2232.46 1450.39 2235.51 1455 Q2238.59 1459.58 2238.59 1468.33 Q2238.59 1477.06 2235.51 1481.67 Q2232.46 1486.25 2226.65 1486.25 Q2220.84 1486.25 2217.76 1481.67 Q2214.7 1477.06 2214.7 1468.33 Q2214.7 1459.58 2217.76 1455 Q2220.84 1450.39 2226.65 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M2246.81 1479.7 L2251.69 1479.7 L2251.69 1485.58 L2246.81 1485.58 L2246.81 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M2265.91 1481.64 L2282.23 1481.64 L2282.23 1485.58 L2260.28 1485.58 L2260.28 1481.64 Q2262.94 1478.89 2267.53 1474.26 Q2272.13 1469.61 2273.31 1468.27 Q2275.56 1465.74 2276.44 1464.01 Q2277.34 1462.25 2277.34 1460.56 Q2277.34 1457.8 2275.4 1456.07 Q2273.48 1454.33 2270.37 1454.33 Q2268.18 1454.33 2265.72 1455.09 Q2263.29 1455.86 2260.51 1457.41 L2260.51 1452.69 Q2263.34 1451.55 2265.79 1450.97 Q2268.24 1450.39 2270.28 1450.39 Q2275.65 1450.39 2278.85 1453.08 Q2282.04 1455.77 2282.04 1460.26 Q2282.04 1462.39 2281.23 1464.31 Q2280.44 1466.2 2278.34 1468.8 Q2277.76 1469.47 2274.66 1472.69 Q2271.55 1475.88 2265.91 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M2292.09 1451.02 L2310.44 1451.02 L2310.44 1454.96 L2296.37 1454.96 L2296.37 1463.43 Q2297.39 1463.08 2298.41 1462.92 Q2299.43 1462.73 2300.44 1462.73 Q2306.23 1462.73 2309.61 1465.9 Q2312.99 1469.08 2312.99 1474.49 Q2312.99 1480.07 2309.52 1483.17 Q2306.05 1486.25 2299.73 1486.25 Q2297.55 1486.25 2295.28 1485.88 Q2293.04 1485.51 2290.63 1484.77 L2290.63 1480.07 Q2292.71 1481.2 2294.93 1481.76 Q2297.16 1482.32 2299.63 1482.32 Q2303.64 1482.32 2305.98 1480.21 Q2308.31 1478.1 2308.31 1474.49 Q2308.31 1470.88 2305.98 1468.77 Q2303.64 1466.67 2299.63 1466.67 Q2297.76 1466.67 2295.88 1467.08 Q2294.03 1467.5 2292.09 1468.38 L2292.09 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M966.529 1520.52 L976.109 1520.52 L988.236 1552.86 L1000.43 1520.52 L1010.01 1520.52 L1010.01 1568.04 L1003.74 1568.04 L1003.74 1526.32 L991.483 1558.91 L985.021 1558.91 L972.767 1526.32 L972.767 1568.04 L966.529 1568.04 L966.529 1520.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1038.72 1550.12 Q1031.62 1550.12 1028.88 1551.75 Q1026.14 1553.37 1026.14 1557.29 Q1026.14 1560.4 1028.18 1562.25 Q1030.25 1564.07 1033.78 1564.07 Q1038.65 1564.07 1041.58 1560.63 Q1044.54 1557.16 1044.54 1551.43 L1044.54 1550.12 L1038.72 1550.12 M1050.4 1547.71 L1050.4 1568.04 L1044.54 1568.04 L1044.54 1562.63 Q1042.54 1565.88 1039.54 1567.44 Q1036.55 1568.97 1032.22 1568.97 Q1026.75 1568.97 1023.5 1565.91 Q1020.29 1562.82 1020.29 1557.67 Q1020.29 1551.65 1024.3 1548.6 Q1028.34 1545.54 1036.33 1545.54 L1044.54 1545.54 L1044.54 1544.97 Q1044.54 1540.93 1041.87 1538.73 Q1039.23 1536.5 1034.42 1536.5 Q1031.36 1536.5 1028.47 1537.23 Q1025.57 1537.97 1022.9 1539.43 L1022.9 1534.02 Q1026.11 1532.78 1029.14 1532.17 Q1032.16 1531.54 1035.02 1531.54 Q1042.76 1531.54 1046.58 1535.55 Q1050.4 1539.56 1050.4 1547.71 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1092.09 1532.4 L1079.2 1549.74 L1092.76 1568.04 L1085.85 1568.04 L1075.48 1554.04 L1065.1 1568.04 L1058.2 1568.04 L1072.04 1549.39 L1059.37 1532.4 L1066.28 1532.4 L1075.73 1545.1 L1085.19 1532.4 L1092.09 1532.4 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1101.04 1532.4 L1106.89 1532.4 L1106.89 1568.04 L1101.04 1568.04 L1101.04 1532.4 M1101.04 1518.52 L1106.89 1518.52 L1106.89 1525.93 L1101.04 1525.93 L1101.04 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1146.9 1539.24 Q1149.1 1535.29 1152.15 1533.41 Q1155.21 1531.54 1159.35 1531.54 Q1164.92 1531.54 1167.94 1535.45 Q1170.96 1539.33 1170.96 1546.53 L1170.96 1568.04 L1165.08 1568.04 L1165.08 1546.72 Q1165.08 1541.59 1163.26 1539.11 Q1161.45 1536.63 1157.72 1536.63 Q1153.17 1536.63 1150.53 1539.65 Q1147.89 1542.68 1147.89 1547.9 L1147.89 1568.04 L1142 1568.04 L1142 1546.72 Q1142 1541.56 1140.19 1539.11 Q1138.37 1536.63 1134.58 1536.63 Q1130.1 1536.63 1127.45 1539.68 Q1124.81 1542.71 1124.81 1547.9 L1124.81 1568.04 L1118.92 1568.04 L1118.92 1532.4 L1124.81 1532.4 L1124.81 1537.93 Q1126.82 1534.66 1129.62 1533.1 Q1132.42 1531.54 1136.27 1531.54 Q1140.15 1531.54 1142.86 1533.51 Q1145.6 1535.48 1146.9 1539.24 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1182.04 1553.98 L1182.04 1532.4 L1187.9 1532.4 L1187.9 1553.75 Q1187.9 1558.81 1189.87 1561.36 Q1191.84 1563.87 1195.79 1563.87 Q1200.53 1563.87 1203.27 1560.85 Q1206.04 1557.83 1206.04 1552.61 L1206.04 1532.4 L1211.9 1532.4 L1211.9 1568.04 L1206.04 1568.04 L1206.04 1562.57 Q1203.91 1565.82 1201.07 1567.41 Q1198.27 1568.97 1194.55 1568.97 Q1188.41 1568.97 1185.22 1565.15 Q1182.04 1561.33 1182.04 1553.98 M1196.78 1531.54 L1196.78 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1251.71 1539.24 Q1253.91 1535.29 1256.96 1533.41 Q1260.02 1531.54 1264.16 1531.54 Q1269.73 1531.54 1272.75 1535.45 Q1275.78 1539.33 1275.78 1546.53 L1275.78 1568.04 L1269.89 1568.04 L1269.89 1546.72 Q1269.89 1541.59 1268.07 1539.11 Q1266.26 1536.63 1262.53 1536.63 Q1257.98 1536.63 1255.34 1539.65 Q1252.7 1542.68 1252.7 1547.9 L1252.7 1568.04 L1246.81 1568.04 L1246.81 1546.72 Q1246.81 1541.56 1245 1539.11 Q1243.18 1536.63 1239.4 1536.63 Q1234.91 1536.63 1232.27 1539.68 Q1229.62 1542.71 1229.62 1547.9 L1229.62 1568.04 L1223.74 1568.04 L1223.74 1532.4 L1229.62 1532.4 L1229.62 1537.93 Q1231.63 1534.66 1234.43 1533.1 Q1237.23 1531.54 1241.08 1531.54 Q1244.97 1531.54 1247.67 1533.51 Q1250.41 1535.48 1251.71 1539.24 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1331.63 1537.81 L1331.63 1518.52 L1337.49 1518.52 L1337.49 1568.04 L1331.63 1568.04 L1331.63 1562.7 Q1329.79 1565.88 1326.96 1567.44 Q1324.15 1568.97 1320.21 1568.97 Q1313.75 1568.97 1309.67 1563.81 Q1305.63 1558.65 1305.63 1550.25 Q1305.63 1541.85 1309.67 1536.69 Q1313.75 1531.54 1320.21 1531.54 Q1324.15 1531.54 1326.96 1533.1 Q1329.79 1534.62 1331.63 1537.81 M1311.68 1550.25 Q1311.68 1556.71 1314.32 1560.4 Q1316.99 1564.07 1321.64 1564.07 Q1326.29 1564.07 1328.96 1560.4 Q1331.63 1556.71 1331.63 1550.25 Q1331.63 1543.79 1328.96 1540.13 Q1326.29 1536.44 1321.64 1536.44 Q1316.99 1536.44 1314.32 1540.13 Q1311.68 1543.79 1311.68 1550.25 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1380.05 1548.76 L1380.05 1551.62 L1353.12 1551.62 Q1353.5 1557.67 1356.75 1560.85 Q1360.03 1564 1365.85 1564 Q1369.22 1564 1372.37 1563.17 Q1375.56 1562.35 1378.68 1560.69 L1378.68 1566.23 Q1375.53 1567.57 1372.22 1568.27 Q1368.91 1568.97 1365.5 1568.97 Q1356.97 1568.97 1351.97 1564 Q1347.01 1559.04 1347.01 1550.57 Q1347.01 1541.82 1351.72 1536.69 Q1356.46 1531.54 1364.48 1531.54 Q1371.67 1531.54 1375.84 1536.18 Q1380.05 1540.8 1380.05 1548.76 M1374.19 1547.04 Q1374.13 1542.23 1371.48 1539.37 Q1368.87 1536.5 1364.54 1536.5 Q1359.64 1536.5 1356.68 1539.27 Q1353.76 1542.04 1353.31 1547.07 L1374.19 1547.04 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1407.7 1518.52 L1407.7 1523.39 L1402.1 1523.39 Q1398.95 1523.39 1397.71 1524.66 Q1396.5 1525.93 1396.5 1529.24 L1396.5 1532.4 L1406.14 1532.4 L1406.14 1536.95 L1396.5 1536.95 L1396.5 1568.04 L1390.61 1568.04 L1390.61 1536.95 L1385.01 1536.95 L1385.01 1532.4 L1390.61 1532.4 L1390.61 1529.91 Q1390.61 1523.96 1393.38 1521.26 Q1396.15 1518.52 1402.17 1518.52 L1407.7 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1412.61 1518.52 L1418.46 1518.52 L1418.46 1568.04 L1412.61 1568.04 L1412.61 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1461.21 1548.76 L1461.21 1551.62 L1434.28 1551.62 Q1434.66 1557.67 1437.91 1560.85 Q1441.19 1564 1447.01 1564 Q1450.39 1564 1453.54 1563.17 Q1456.72 1562.35 1459.84 1560.69 L1459.84 1566.23 Q1456.69 1567.57 1453.38 1568.27 Q1450.07 1568.97 1446.66 1568.97 Q1438.13 1568.97 1433.14 1564 Q1428.17 1559.04 1428.17 1550.57 Q1428.17 1541.82 1432.88 1536.69 Q1437.62 1531.54 1445.64 1531.54 Q1452.84 1531.54 1457.01 1536.18 Q1461.21 1540.8 1461.21 1548.76 M1455.35 1547.04 Q1455.29 1542.23 1452.65 1539.37 Q1450.04 1536.5 1445.71 1536.5 Q1440.81 1536.5 1437.85 1539.27 Q1434.92 1542.04 1434.47 1547.07 L1455.35 1547.04 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1496.47 1533.76 L1496.47 1539.24 Q1493.99 1537.87 1491.48 1537.2 Q1488.99 1536.5 1486.45 1536.5 Q1480.75 1536.5 1477.6 1540.13 Q1474.45 1543.73 1474.45 1550.25 Q1474.45 1556.78 1477.6 1560.4 Q1480.75 1564 1486.45 1564 Q1488.99 1564 1491.48 1563.33 Q1493.99 1562.63 1496.47 1561.26 L1496.47 1566.68 Q1494.02 1567.82 1491.38 1568.39 Q1488.77 1568.97 1485.81 1568.97 Q1477.76 1568.97 1473.02 1563.91 Q1468.27 1558.85 1468.27 1550.25 Q1468.27 1541.53 1473.05 1536.53 Q1477.85 1531.54 1486.19 1531.54 Q1488.9 1531.54 1491.48 1532.11 Q1494.06 1532.65 1496.47 1533.76 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1512.45 1522.27 L1512.45 1532.4 L1524.52 1532.4 L1524.52 1536.95 L1512.45 1536.95 L1512.45 1556.3 Q1512.45 1560.66 1513.63 1561.9 Q1514.84 1563.14 1518.5 1563.14 L1524.52 1563.14 L1524.52 1568.04 L1518.5 1568.04 Q1511.72 1568.04 1509.14 1565.53 Q1506.56 1562.98 1506.56 1556.3 L1506.56 1536.95 L1502.27 1536.95 L1502.27 1532.4 L1506.56 1532.4 L1506.56 1522.27 L1512.45 1522.27 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1532.22 1532.4 L1538.07 1532.4 L1538.07 1568.04 L1532.22 1568.04 L1532.22 1532.4 M1532.22 1518.52 L1538.07 1518.52 L1538.07 1525.93 L1532.22 1525.93 L1532.22 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1564.14 1536.5 Q1559.43 1536.5 1556.69 1540.19 Q1553.96 1543.85 1553.96 1550.25 Q1553.96 1556.65 1556.66 1560.34 Q1559.4 1564 1564.14 1564 Q1568.82 1564 1571.56 1560.31 Q1574.29 1556.62 1574.29 1550.25 Q1574.29 1543.92 1571.56 1540.23 Q1568.82 1536.5 1564.14 1536.5 M1564.14 1531.54 Q1571.78 1531.54 1576.14 1536.5 Q1580.5 1541.47 1580.5 1550.25 Q1580.5 1559 1576.14 1564 Q1571.78 1568.97 1564.14 1568.97 Q1556.47 1568.97 1552.11 1564 Q1547.78 1559 1547.78 1550.25 Q1547.78 1541.47 1552.11 1536.5 Q1556.47 1531.54 1564.14 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1619.84 1546.53 L1619.84 1568.04 L1613.99 1568.04 L1613.99 1546.72 Q1613.99 1541.66 1612.01 1539.14 Q1610.04 1536.63 1606.09 1536.63 Q1601.35 1536.63 1598.61 1539.65 Q1595.87 1542.68 1595.87 1547.9 L1595.87 1568.04 L1589.99 1568.04 L1589.99 1532.4 L1595.87 1532.4 L1595.87 1537.93 Q1597.98 1534.72 1600.81 1533.13 Q1603.67 1531.54 1607.4 1531.54 Q1613.54 1531.54 1616.69 1535.36 Q1619.84 1539.14 1619.84 1546.53 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1651.7 1518.52 L1665.2 1518.52 L1665.2 1523.07 L1657.56 1523.07 L1657.56 1572.09 L1665.2 1572.09 L1665.2 1576.64 L1651.7 1576.64 L1651.7 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1705.43 1539.24 Q1707.62 1535.29 1710.68 1533.41 Q1713.74 1531.54 1717.87 1531.54 Q1723.44 1531.54 1726.47 1535.45 Q1729.49 1539.33 1729.49 1546.53 L1729.49 1568.04 L1723.6 1568.04 L1723.6 1546.72 Q1723.6 1541.59 1721.79 1539.11 Q1719.97 1536.63 1716.25 1536.63 Q1711.7 1536.63 1709.06 1539.65 Q1706.42 1542.68 1706.42 1547.9 L1706.42 1568.04 L1700.53 1568.04 L1700.53 1546.72 Q1700.53 1541.56 1698.71 1539.11 Q1696.9 1536.63 1693.11 1536.63 Q1688.62 1536.63 1685.98 1539.68 Q1683.34 1542.71 1683.34 1547.9 L1683.34 1568.04 L1677.45 1568.04 L1677.45 1532.4 L1683.34 1532.4 L1683.34 1537.93 Q1685.34 1534.66 1688.15 1533.1 Q1690.95 1531.54 1694.8 1531.54 Q1698.68 1531.54 1701.39 1533.51 Q1704.12 1535.48 1705.43 1539.24 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1754.86 1518.52 L1754.86 1576.64 L1741.36 1576.64 L1741.36 1572.09 L1748.97 1572.09 L1748.97 1523.07 L1741.36 1523.07 L1741.36 1518.52 L1754.86 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,1423.18 368.631,123.472 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,1386.4 387.529,1386.4 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,1079.86 387.529,1079.86 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,773.326 387.529,773.326 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,466.791 387.529,466.791 "/> -<polyline clip-path="url(#clip200)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,160.256 387.529,160.256 "/> -<path clip-path="url(#clip200)" d="M320.687 1372.19 Q317.076 1372.19 315.247 1375.76 Q313.442 1379.3 313.442 1386.43 Q313.442 1393.54 315.247 1397.1 Q317.076 1400.64 320.687 1400.64 Q324.321 1400.64 326.127 1397.1 Q327.955 1393.54 327.955 1386.43 Q327.955 1379.3 326.127 1375.76 Q324.321 1372.19 320.687 1372.19 M320.687 1368.49 Q326.497 1368.49 329.553 1373.1 Q332.631 1377.68 332.631 1386.43 Q332.631 1395.16 329.553 1399.76 Q326.497 1404.35 320.687 1404.35 Q314.877 1404.35 311.798 1399.76 Q308.743 1395.16 308.743 1386.43 Q308.743 1377.68 311.798 1373.1 Q314.877 1368.49 320.687 1368.49 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M119.885 1099.65 L136.204 1099.65 L136.204 1103.59 L114.26 1103.59 L114.26 1099.65 Q116.922 1096.9 121.505 1092.27 Q126.112 1087.62 127.292 1086.27 Q129.538 1083.75 130.417 1082.01 Q131.32 1080.26 131.32 1078.57 Q131.32 1075.81 129.376 1074.07 Q127.455 1072.34 124.353 1072.34 Q122.154 1072.34 119.7 1073.1 Q117.269 1073.87 114.492 1075.42 L114.492 1070.7 Q117.316 1069.56 119.769 1068.98 Q122.223 1068.4 124.26 1068.4 Q129.63 1068.4 132.825 1071.09 Q136.019 1073.77 136.019 1078.26 Q136.019 1080.39 135.209 1082.32 Q134.422 1084.21 132.316 1086.81 Q131.737 1087.48 128.635 1090.69 Q125.533 1093.89 119.885 1099.65 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M146.019 1097.71 L150.903 1097.71 L150.903 1103.59 L146.019 1103.59 L146.019 1097.71 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M161.135 1069.03 L179.491 1069.03 L179.491 1072.96 L165.417 1072.96 L165.417 1081.44 Q166.436 1081.09 167.454 1080.93 Q168.473 1080.74 169.491 1080.74 Q175.278 1080.74 178.658 1083.91 Q182.038 1087.08 182.038 1092.5 Q182.038 1098.08 178.565 1101.18 Q175.093 1104.26 168.774 1104.26 Q166.598 1104.26 164.329 1103.89 Q162.084 1103.52 159.677 1102.78 L159.677 1098.08 Q161.76 1099.21 163.982 1099.77 Q166.204 1100.32 168.681 1100.32 Q172.686 1100.32 175.024 1098.22 Q177.362 1096.11 177.362 1092.5 Q177.362 1088.89 175.024 1086.78 Q172.686 1084.68 168.681 1084.68 Q166.806 1084.68 164.931 1085.09 Q163.079 1085.51 161.135 1086.39 L161.135 1069.03 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M201.25 1072.11 Q197.639 1072.11 195.811 1075.67 Q194.005 1079.21 194.005 1086.34 Q194.005 1093.45 195.811 1097.01 Q197.639 1100.56 201.25 1100.56 Q204.885 1100.56 206.69 1097.01 Q208.519 1093.45 208.519 1086.34 Q208.519 1079.21 206.69 1075.67 Q204.885 1072.11 201.25 1072.11 M201.25 1068.4 Q207.061 1068.4 210.116 1073.01 Q213.195 1077.59 213.195 1086.34 Q213.195 1095.07 210.116 1099.68 Q207.061 1104.26 201.25 1104.26 Q195.44 1104.26 192.362 1099.68 Q189.306 1095.07 189.306 1086.34 Q189.306 1077.59 192.362 1073.01 Q195.44 1068.4 201.25 1068.4 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M249.584 1078.13 L239.005 1088.75 L249.584 1099.33 L246.829 1102.13 L236.204 1091.51 L225.579 1102.13 L222.848 1099.33 L233.403 1088.75 L222.848 1078.13 L225.579 1075.32 L236.204 1085.95 L246.829 1075.32 L249.584 1078.13 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M261.945 1099.65 L269.583 1099.65 L269.583 1073.29 L261.273 1074.95 L261.273 1070.7 L269.537 1069.03 L274.213 1069.03 L274.213 1099.65 L281.852 1099.65 L281.852 1103.59 L261.945 1103.59 L261.945 1099.65 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M301.296 1072.11 Q297.685 1072.11 295.856 1075.67 Q294.051 1079.21 294.051 1086.34 Q294.051 1093.45 295.856 1097.01 Q297.685 1100.56 301.296 1100.56 Q304.93 1100.56 306.736 1097.01 Q308.565 1093.45 308.565 1086.34 Q308.565 1079.21 306.736 1075.67 Q304.93 1072.11 301.296 1072.11 M301.296 1068.4 Q307.106 1068.4 310.162 1073.01 Q313.241 1077.59 313.241 1086.34 Q313.241 1095.07 310.162 1099.68 Q307.106 1104.26 301.296 1104.26 Q295.486 1104.26 292.407 1099.68 Q289.352 1095.07 289.352 1086.34 Q289.352 1077.59 292.407 1073.01 Q295.486 1068.4 301.296 1068.4 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M323.265 1060.62 Q320.707 1060.62 319.203 1062.37 Q317.717 1064.12 317.717 1067.17 Q317.717 1070.2 319.203 1071.97 Q320.707 1073.71 323.265 1073.71 Q325.823 1073.71 327.309 1071.97 Q328.813 1070.2 328.813 1067.17 Q328.813 1064.12 327.309 1062.37 Q325.823 1060.62 323.265 1060.62 M330.807 1048.72 L330.807 1052.18 Q329.378 1051.5 327.911 1051.14 Q326.462 1050.79 325.033 1050.79 Q321.271 1050.79 319.278 1053.33 Q317.303 1055.87 317.021 1061 Q318.131 1059.36 319.804 1058.5 Q321.478 1057.61 323.491 1057.61 Q327.723 1057.61 330.168 1060.19 Q332.631 1062.75 332.631 1067.17 Q332.631 1071.49 330.074 1074.11 Q327.516 1076.72 323.265 1076.72 Q318.394 1076.72 315.817 1073 Q313.241 1069.26 313.241 1062.17 Q313.241 1055.51 316.4 1051.56 Q319.56 1047.59 324.883 1047.59 Q326.312 1047.59 327.76 1047.87 Q329.227 1048.15 330.807 1048.72 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M115.904 762.494 L134.26 762.494 L134.26 766.429 L120.186 766.429 L120.186 774.901 Q121.205 774.554 122.223 774.392 Q123.242 774.206 124.26 774.206 Q130.047 774.206 133.427 777.378 Q136.806 780.549 136.806 785.966 Q136.806 791.544 133.334 794.646 Q129.862 797.725 123.543 797.725 Q121.367 797.725 119.098 797.355 Q116.853 796.984 114.445 796.243 L114.445 791.544 Q116.529 792.679 118.751 793.234 Q120.973 793.79 123.45 793.79 Q127.455 793.79 129.792 791.683 Q132.13 789.577 132.13 785.966 Q132.13 782.355 129.792 780.248 Q127.455 778.142 123.45 778.142 Q121.575 778.142 119.7 778.558 Q117.848 778.975 115.904 779.855 L115.904 762.494 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M146.019 791.174 L150.903 791.174 L150.903 797.054 L146.019 797.054 L146.019 791.174 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M171.089 765.572 Q167.477 765.572 165.649 769.137 Q163.843 772.679 163.843 779.808 Q163.843 786.915 165.649 790.48 Q167.477 794.021 171.089 794.021 Q174.723 794.021 176.528 790.48 Q178.357 786.915 178.357 779.808 Q178.357 772.679 176.528 769.137 Q174.723 765.572 171.089 765.572 M171.089 761.869 Q176.899 761.869 179.954 766.475 Q183.033 771.058 183.033 779.808 Q183.033 788.535 179.954 793.142 Q176.899 797.725 171.089 797.725 Q165.278 797.725 162.2 793.142 Q159.144 788.535 159.144 779.808 Q159.144 771.058 162.2 766.475 Q165.278 761.869 171.089 761.869 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M201.25 765.572 Q197.639 765.572 195.811 769.137 Q194.005 772.679 194.005 779.808 Q194.005 786.915 195.811 790.48 Q197.639 794.021 201.25 794.021 Q204.885 794.021 206.69 790.48 Q208.519 786.915 208.519 779.808 Q208.519 772.679 206.69 769.137 Q204.885 765.572 201.25 765.572 M201.25 761.869 Q207.061 761.869 210.116 766.475 Q213.195 771.058 213.195 779.808 Q213.195 788.535 210.116 793.142 Q207.061 797.725 201.25 797.725 Q195.44 797.725 192.362 793.142 Q189.306 788.535 189.306 779.808 Q189.306 771.058 192.362 766.475 Q195.44 761.869 201.25 761.869 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M249.584 771.591 L239.005 782.216 L249.584 792.794 L246.829 795.595 L236.204 784.97 L225.579 795.595 L222.848 792.794 L233.403 782.216 L222.848 771.591 L225.579 768.79 L236.204 779.415 L246.829 768.79 L249.584 771.591 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M261.945 793.118 L269.583 793.118 L269.583 766.753 L261.273 768.419 L261.273 764.16 L269.537 762.494 L274.213 762.494 L274.213 793.118 L281.852 793.118 L281.852 797.054 L261.945 797.054 L261.945 793.118 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M301.296 765.572 Q297.685 765.572 295.856 769.137 Q294.051 772.679 294.051 779.808 Q294.051 786.915 295.856 790.48 Q297.685 794.021 301.296 794.021 Q304.93 794.021 306.736 790.48 Q308.565 786.915 308.565 779.808 Q308.565 772.679 306.736 769.137 Q304.93 765.572 301.296 765.572 M301.296 761.869 Q307.106 761.869 310.162 766.475 Q313.241 771.058 313.241 779.808 Q313.241 788.535 310.162 793.142 Q307.106 797.725 301.296 797.725 Q295.486 797.725 292.407 793.142 Q289.352 788.535 289.352 779.808 Q289.352 771.058 292.407 766.475 Q295.486 761.869 301.296 761.869 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M323.265 754.089 Q320.707 754.089 319.203 755.838 Q317.717 757.587 317.717 760.634 Q317.717 763.662 319.203 765.43 Q320.707 767.179 323.265 767.179 Q325.823 767.179 327.309 765.43 Q328.813 763.662 328.813 760.634 Q328.813 757.587 327.309 755.838 Q325.823 754.089 323.265 754.089 M330.807 742.184 L330.807 745.644 Q329.378 744.967 327.911 744.61 Q326.462 744.253 325.033 744.253 Q321.271 744.253 319.278 746.792 Q317.303 749.331 317.021 754.465 Q318.131 752.829 319.804 751.964 Q321.478 751.08 323.491 751.08 Q327.723 751.08 330.168 753.657 Q332.631 756.214 332.631 760.634 Q332.631 764.96 330.074 767.574 Q327.516 770.189 323.265 770.189 Q318.394 770.189 315.817 766.465 Q313.241 762.722 313.241 755.631 Q313.241 748.973 316.4 745.024 Q319.56 741.055 324.883 741.055 Q326.312 741.055 327.76 741.337 Q329.227 741.62 330.807 742.184 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M114.677 455.959 L136.899 455.959 L136.899 457.949 L124.353 490.519 L119.468 490.519 L131.274 459.894 L114.677 459.894 L114.677 455.959 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M146.019 484.639 L150.903 484.639 L150.903 490.519 L146.019 490.519 L146.019 484.639 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M161.135 455.959 L179.491 455.959 L179.491 459.894 L165.417 459.894 L165.417 468.366 Q166.436 468.019 167.454 467.857 Q168.473 467.672 169.491 467.672 Q175.278 467.672 178.658 470.843 Q182.038 474.014 182.038 479.431 Q182.038 485.01 178.565 488.111 Q175.093 491.19 168.774 491.19 Q166.598 491.19 164.329 490.82 Q162.084 490.449 159.677 489.709 L159.677 485.01 Q161.76 486.144 163.982 486.699 Q166.204 487.255 168.681 487.255 Q172.686 487.255 175.024 485.148 Q177.362 483.042 177.362 479.431 Q177.362 475.82 175.024 473.713 Q172.686 471.607 168.681 471.607 Q166.806 471.607 164.931 472.023 Q163.079 472.44 161.135 473.32 L161.135 455.959 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M201.25 459.037 Q197.639 459.037 195.811 462.602 Q194.005 466.144 194.005 473.273 Q194.005 480.38 195.811 483.945 Q197.639 487.486 201.25 487.486 Q204.885 487.486 206.69 483.945 Q208.519 480.38 208.519 473.273 Q208.519 466.144 206.69 462.602 Q204.885 459.037 201.25 459.037 M201.25 455.334 Q207.061 455.334 210.116 459.94 Q213.195 464.524 213.195 473.273 Q213.195 482 210.116 486.607 Q207.061 491.19 201.25 491.19 Q195.44 491.19 192.362 486.607 Q189.306 482 189.306 473.273 Q189.306 464.524 192.362 459.94 Q195.44 455.334 201.25 455.334 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M249.584 465.056 L239.005 475.681 L249.584 486.26 L246.829 489.06 L236.204 478.435 L225.579 489.06 L222.848 486.26 L233.403 475.681 L222.848 465.056 L225.579 462.255 L236.204 472.88 L246.829 462.255 L249.584 465.056 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M261.945 486.584 L269.583 486.584 L269.583 460.218 L261.273 461.885 L261.273 457.625 L269.537 455.959 L274.213 455.959 L274.213 486.584 L281.852 486.584 L281.852 490.519 L261.945 490.519 L261.945 486.584 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M301.296 459.037 Q297.685 459.037 295.856 462.602 Q294.051 466.144 294.051 473.273 Q294.051 480.38 295.856 483.945 Q297.685 487.486 301.296 487.486 Q304.93 487.486 306.736 483.945 Q308.565 480.38 308.565 473.273 Q308.565 466.144 306.736 462.602 Q304.93 459.037 301.296 459.037 M301.296 455.334 Q307.106 455.334 310.162 459.94 Q313.241 464.524 313.241 473.273 Q313.241 482 310.162 486.607 Q307.106 491.19 301.296 491.19 Q295.486 491.19 292.407 486.607 Q289.352 482 289.352 473.273 Q289.352 464.524 292.407 459.94 Q295.486 455.334 301.296 455.334 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M323.265 447.554 Q320.707 447.554 319.203 449.303 Q317.717 451.053 317.717 454.099 Q317.717 457.127 319.203 458.895 Q320.707 460.645 323.265 460.645 Q325.823 460.645 327.309 458.895 Q328.813 457.127 328.813 454.099 Q328.813 451.053 327.309 449.303 Q325.823 447.554 323.265 447.554 M330.807 435.649 L330.807 439.11 Q329.378 438.433 327.911 438.075 Q326.462 437.718 325.033 437.718 Q321.271 437.718 319.278 440.257 Q317.303 442.796 317.021 447.93 Q318.131 446.294 319.804 445.429 Q321.478 444.545 323.491 444.545 Q327.723 444.545 330.168 447.122 Q332.631 449.68 332.631 454.099 Q332.631 458.425 330.074 461.039 Q327.516 463.654 323.265 463.654 Q318.394 463.654 315.817 459.93 Q313.241 456.187 313.241 449.097 Q313.241 442.439 316.4 438.489 Q319.56 434.521 324.883 434.521 Q326.312 434.521 327.76 434.803 Q329.227 435.085 330.807 435.649 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M118.003 180.049 L125.642 180.049 L125.642 153.683 L117.332 155.35 L117.332 151.091 L125.595 149.424 L130.271 149.424 L130.271 180.049 L137.91 180.049 L137.91 183.984 L118.003 183.984 L118.003 180.049 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M147.355 178.104 L152.239 178.104 L152.239 183.984 L147.355 183.984 L147.355 178.104 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M172.424 152.503 Q168.813 152.503 166.984 156.067 Q165.179 159.609 165.179 166.739 Q165.179 173.845 166.984 177.41 Q168.813 180.952 172.424 180.952 Q176.058 180.952 177.864 177.41 Q179.692 173.845 179.692 166.739 Q179.692 159.609 177.864 156.067 Q176.058 152.503 172.424 152.503 M172.424 148.799 Q178.234 148.799 181.29 153.405 Q184.368 157.989 184.368 166.739 Q184.368 175.465 181.29 180.072 Q178.234 184.655 172.424 184.655 Q166.614 184.655 163.535 180.072 Q160.48 175.465 160.48 166.739 Q160.48 157.989 163.535 153.405 Q166.614 148.799 172.424 148.799 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M202.586 152.503 Q198.975 152.503 197.146 156.067 Q195.34 159.609 195.34 166.739 Q195.34 173.845 197.146 177.41 Q198.975 180.952 202.586 180.952 Q206.22 180.952 208.026 177.41 Q209.854 173.845 209.854 166.739 Q209.854 159.609 208.026 156.067 Q206.22 152.503 202.586 152.503 M202.586 148.799 Q208.396 148.799 211.451 153.405 Q214.53 157.989 214.53 166.739 Q214.53 175.465 211.451 180.072 Q208.396 184.655 202.586 184.655 Q196.776 184.655 193.697 180.072 Q190.641 175.465 190.641 166.739 Q190.641 157.989 193.697 153.405 Q196.776 148.799 202.586 148.799 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M250.919 158.521 L240.34 169.146 L250.919 179.725 L248.164 182.526 L237.539 171.901 L226.914 182.526 L224.183 179.725 L234.738 169.146 L224.183 158.521 L226.914 155.72 L237.539 166.345 L248.164 155.72 L250.919 158.521 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M263.28 180.049 L270.919 180.049 L270.919 153.683 L262.609 155.35 L262.609 151.091 L270.872 149.424 L275.548 149.424 L275.548 180.049 L283.187 180.049 L283.187 183.984 L263.28 183.984 L263.28 180.049 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M302.632 152.503 Q299.02 152.503 297.192 156.067 Q295.386 159.609 295.386 166.739 Q295.386 173.845 297.192 177.41 Q299.02 180.952 302.632 180.952 Q306.266 180.952 308.071 177.41 Q309.9 173.845 309.9 166.739 Q309.9 159.609 308.071 156.067 Q306.266 152.503 302.632 152.503 M302.632 148.799 Q308.442 148.799 311.497 153.405 Q314.576 157.989 314.576 166.739 Q314.576 175.465 311.497 180.072 Q308.442 184.655 302.632 184.655 Q296.821 184.655 293.743 180.072 Q290.687 175.465 290.687 166.739 Q290.687 157.989 293.743 153.405 Q296.821 148.799 302.632 148.799 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M314.576 128.494 L332.631 128.494 L332.631 130.111 L322.438 156.574 L318.469 156.574 L328.061 131.691 L314.576 131.691 L314.576 128.494 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M16.4842 973.416 L16.4842 933.217 L21.895 933.217 L21.895 950.086 L64.0042 950.086 L64.0042 956.547 L21.895 956.547 L21.895 973.416 L16.4842 973.416 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M33.8307 916.188 Q33.2578 917.175 33.0032 918.353 Q32.7167 919.499 32.7167 920.899 Q32.7167 925.864 35.9632 928.538 Q39.1779 931.18 45.2253 931.18 L64.0042 931.18 L64.0042 937.068 L28.3562 937.068 L28.3562 931.18 L33.8944 931.18 Q30.6479 929.334 29.0883 926.373 Q27.4968 923.413 27.4968 919.18 Q27.4968 918.575 27.5923 917.843 Q27.656 917.111 27.8151 916.22 L33.8307 916.188 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M46.0847 893.845 Q46.0847 900.942 47.7079 903.68 Q49.3312 906.417 53.2461 906.417 Q56.3653 906.417 58.2114 904.38 Q60.0256 902.311 60.0256 898.778 Q60.0256 893.908 56.5881 890.98 Q53.1188 888.02 47.3897 888.02 L46.0847 888.02 L46.0847 893.845 M43.6657 882.164 L64.0042 882.164 L64.0042 888.02 L58.5933 888.02 Q61.8398 890.025 63.3994 893.017 Q64.9272 896.009 64.9272 900.338 Q64.9272 905.812 61.8716 909.059 Q58.7843 912.273 53.6281 912.273 Q47.6125 912.273 44.5569 908.263 Q41.5014 904.221 41.5014 896.232 L41.5014 888.02 L40.9285 888.02 Q36.8862 888.02 34.6901 890.694 Q32.4621 893.335 32.4621 898.142 Q32.4621 901.197 33.1941 904.094 Q33.9262 906.99 35.3903 909.664 L29.9795 909.664 Q28.7381 906.449 28.1334 903.425 Q27.4968 900.401 27.4968 897.537 Q27.4968 889.803 31.5072 885.983 Q35.5176 882.164 43.6657 882.164 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M29.7248 844.447 L35.1993 844.447 Q33.8307 846.929 33.1623 849.444 Q32.4621 851.927 32.4621 854.473 Q32.4621 860.17 36.0905 863.321 Q39.6872 866.472 46.212 866.472 Q52.7369 866.472 56.3653 863.321 Q59.9619 860.17 59.9619 854.473 Q59.9619 851.927 59.2935 849.444 Q58.5933 846.929 57.2247 844.447 L62.6355 844.447 Q63.7814 846.898 64.3543 849.539 Q64.9272 852.149 64.9272 855.109 Q64.9272 863.162 59.8664 867.904 Q54.8057 872.647 46.212 872.647 Q37.491 872.647 32.4939 867.873 Q27.4968 863.067 27.4968 854.727 Q27.4968 852.022 28.0697 849.444 Q28.6108 846.866 29.7248 844.447 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M18.2347 828.469 L28.3562 828.469 L28.3562 816.406 L32.9077 816.406 L32.9077 828.469 L52.2594 828.469 Q56.6199 828.469 57.8613 827.291 Q59.1026 826.082 59.1026 822.421 L59.1026 816.406 L64.0042 816.406 L64.0042 822.421 Q64.0042 829.201 61.4897 831.779 Q58.9434 834.357 52.2594 834.357 L32.9077 834.357 L32.9077 838.654 L28.3562 838.654 L28.3562 834.357 L18.2347 834.357 L18.2347 828.469 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M28.3562 808.703 L28.3562 802.847 L64.0042 802.847 L64.0042 808.703 L28.3562 808.703 M14.479 808.703 L14.479 802.847 L21.895 802.847 L21.895 808.703 L14.479 808.703 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M32.4621 776.779 Q32.4621 781.49 36.1542 784.227 Q39.8145 786.965 46.212 786.965 Q52.6095 786.965 56.3017 784.259 Q59.9619 781.522 59.9619 776.779 Q59.9619 772.101 56.2698 769.363 Q52.5777 766.626 46.212 766.626 Q39.8781 766.626 36.186 769.363 Q32.4621 772.101 32.4621 776.779 M27.4968 776.779 Q27.4968 769.141 32.4621 764.78 Q37.4273 760.42 46.212 760.42 Q54.9649 760.42 59.9619 764.78 Q64.9272 769.141 64.9272 776.779 Q64.9272 784.45 59.9619 788.811 Q54.9649 793.139 46.212 793.139 Q37.4273 793.139 32.4621 788.811 Q27.4968 784.45 27.4968 776.779 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M42.4881 721.079 L64.0042 721.079 L64.0042 726.936 L42.679 726.936 Q37.6183 726.936 35.1038 728.909 Q32.5894 730.883 32.5894 734.829 Q32.5894 739.572 35.6131 742.309 Q38.6368 745.046 43.8567 745.046 L64.0042 745.046 L64.0042 750.935 L28.3562 750.935 L28.3562 745.046 L33.8944 745.046 Q30.6797 742.946 29.0883 740.113 Q27.4968 737.248 27.4968 733.524 Q27.4968 727.381 31.3163 724.23 Q35.1038 721.079 42.4881 721.079 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M14.479 689.219 L14.479 675.724 L19.0304 675.724 L19.0304 683.363 L68.0464 683.363 L68.0464 675.724 L72.5979 675.724 L72.5979 689.219 L14.479 689.219 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M21.7677 656.563 L39.6235 656.563 L39.6235 648.479 Q39.6235 643.991 37.3 641.54 Q34.9765 639.089 30.6797 639.089 Q26.4147 639.089 24.0912 641.54 Q21.7677 643.991 21.7677 648.479 L21.7677 656.563 M16.4842 662.992 L16.4842 648.479 Q16.4842 640.49 20.1126 636.416 Q23.7092 632.31 30.6797 632.31 Q37.7138 632.31 41.3104 636.416 Q44.907 640.49 44.907 648.479 L44.907 656.563 L64.0042 656.563 L64.0042 662.992 L16.4842 662.992 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M46.0847 610.666 Q46.0847 617.764 47.7079 620.501 Q49.3312 623.239 53.2461 623.239 Q56.3653 623.239 58.2114 621.202 Q60.0256 619.133 60.0256 615.6 Q60.0256 610.73 56.5881 607.802 Q53.1188 604.842 47.3897 604.842 L46.0847 604.842 L46.0847 610.666 M43.6657 598.985 L64.0042 598.985 L64.0042 604.842 L58.5933 604.842 Q61.8398 606.847 63.3994 609.839 Q64.9272 612.831 64.9272 617.159 Q64.9272 622.634 61.8716 625.88 Q58.7843 629.095 53.6281 629.095 Q47.6125 629.095 44.5569 625.085 Q41.5014 621.042 41.5014 613.053 L41.5014 604.842 L40.9285 604.842 Q36.8862 604.842 34.6901 607.515 Q32.4621 610.157 32.4621 614.963 Q32.4621 618.019 33.1941 620.915 Q33.9262 623.811 35.3903 626.485 L29.9795 626.485 Q28.7381 623.27 28.1334 620.247 Q27.4968 617.223 27.4968 614.358 Q27.4968 606.624 31.5072 602.805 Q35.5176 598.985 43.6657 598.985 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M14.479 573.236 L72.5979 573.236 L72.5979 586.731 L68.0464 586.731 L68.0464 579.124 L19.0304 579.124 L19.0304 586.731 L14.479 586.731 L14.479 573.236 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M903.063 12.096 L954.226 12.096 L954.226 18.9825 L932.756 18.9825 L932.756 72.576 L924.533 72.576 L924.533 18.9825 L903.063 18.9825 L903.063 12.096 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M975.898 34.1734 Q974.642 33.4443 973.144 33.1202 Q971.685 32.7556 969.903 32.7556 Q963.584 32.7556 960.181 36.8875 Q956.818 40.9789 956.818 48.6757 L956.818 72.576 L949.324 72.576 L949.324 27.2059 L956.818 27.2059 L956.818 34.2544 Q959.168 30.1225 962.935 28.1376 Q966.703 26.1121 972.09 26.1121 Q972.86 26.1121 973.792 26.2337 Q974.723 26.3147 975.858 26.5172 L975.898 34.1734 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1004.34 49.7694 Q995.302 49.7694 991.818 51.8354 Q988.335 53.9013 988.335 58.8839 Q988.335 62.8538 990.927 65.2034 Q993.56 67.5124 998.057 67.5124 Q1004.25 67.5124 1007.98 63.1374 Q1011.75 58.7219 1011.75 51.4303 L1011.75 49.7694 L1004.34 49.7694 M1019.2 46.6907 L1019.2 72.576 L1011.75 72.576 L1011.75 65.6895 Q1009.2 69.8214 1005.39 71.8063 Q1001.58 73.7508 996.072 73.7508 Q989.104 73.7508 984.972 69.8619 Q980.881 65.9325 980.881 59.3701 Q980.881 51.7138 985.985 47.825 Q991.13 43.9361 1001.3 43.9361 L1011.75 43.9361 L1011.75 43.2069 Q1011.75 38.0623 1008.35 35.2672 Q1004.98 32.4315 998.867 32.4315 Q994.978 32.4315 991.292 33.3632 Q987.605 34.295 984.203 36.1584 L984.203 29.2718 Q988.294 27.692 992.142 26.9223 Q995.991 26.1121 999.637 26.1121 Q1009.48 26.1121 1014.34 31.2163 Q1019.2 36.3204 1019.2 46.6907 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1067.21 28.9478 L1067.21 35.9153 Q1064.05 34.1734 1060.85 33.3227 Q1057.69 32.4315 1054.45 32.4315 Q1047.19 32.4315 1043.18 37.0496 Q1039.17 41.6271 1039.17 49.9314 Q1039.17 58.2358 1043.18 62.8538 Q1047.19 67.4314 1054.45 67.4314 Q1057.69 67.4314 1060.85 66.5807 Q1064.05 65.6895 1067.21 63.9476 L1067.21 70.8341 Q1064.09 72.2924 1060.72 73.0216 Q1057.4 73.7508 1053.64 73.7508 Q1043.39 73.7508 1037.35 67.3098 Q1031.31 60.8689 1031.31 49.9314 Q1031.31 38.832 1037.39 32.472 Q1043.51 26.1121 1054.12 26.1121 Q1057.56 26.1121 1060.85 26.8413 Q1064.13 27.5299 1067.21 28.9478 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1087.54 14.324 L1087.54 27.2059 L1102.89 27.2059 L1102.89 32.9987 L1087.54 32.9987 L1087.54 57.6282 Q1087.54 63.1779 1089.04 64.7578 Q1090.58 66.3376 1095.24 66.3376 L1102.89 66.3376 L1102.89 72.576 L1095.24 72.576 Q1086.61 72.576 1083.33 69.3758 Q1080.05 66.1351 1080.05 57.6282 L1080.05 32.9987 L1074.58 32.9987 L1074.58 27.2059 L1080.05 27.2059 L1080.05 14.324 L1087.54 14.324 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1112.7 27.2059 L1120.15 27.2059 L1120.15 72.576 L1112.7 72.576 L1112.7 27.2059 M1112.7 9.54393 L1120.15 9.54393 L1120.15 18.9825 L1112.7 18.9825 L1112.7 9.54393 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1153.33 32.4315 Q1147.33 32.4315 1143.85 37.1306 Q1140.36 41.7891 1140.36 49.9314 Q1140.36 58.0738 1143.81 62.7728 Q1147.29 67.4314 1153.33 67.4314 Q1159.28 67.4314 1162.77 62.7323 Q1166.25 58.0333 1166.25 49.9314 Q1166.25 41.8701 1162.77 37.1711 Q1159.28 32.4315 1153.33 32.4315 M1153.33 26.1121 Q1163.05 26.1121 1168.6 32.4315 Q1174.15 38.7509 1174.15 49.9314 Q1174.15 61.0714 1168.6 67.4314 Q1163.05 73.7508 1153.33 73.7508 Q1143.57 73.7508 1138.02 67.4314 Q1132.51 61.0714 1132.51 49.9314 Q1132.51 38.7509 1138.02 32.4315 Q1143.57 26.1121 1153.33 26.1121 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1224.22 45.1919 L1224.22 72.576 L1216.77 72.576 L1216.77 45.4349 Q1216.77 38.994 1214.25 35.7938 Q1211.74 32.5936 1206.72 32.5936 Q1200.68 32.5936 1197.2 36.4419 Q1193.72 40.2903 1193.72 46.9338 L1193.72 72.576 L1186.22 72.576 L1186.22 27.2059 L1193.72 27.2059 L1193.72 34.2544 Q1196.39 30.163 1199.99 28.1376 Q1203.64 26.1121 1208.38 26.1121 Q1216.2 26.1121 1220.21 30.9732 Q1224.22 35.7938 1224.22 45.1919 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1235.32 46.5287 L1257.15 46.5287 L1257.15 53.1722 L1235.32 53.1722 L1235.32 46.5287 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1298.88 34.0924 L1298.88 9.54393 L1306.33 9.54393 L1306.33 72.576 L1298.88 72.576 L1298.88 65.7705 Q1296.53 69.8214 1292.92 71.8063 Q1289.36 73.7508 1284.33 73.7508 Q1276.11 73.7508 1270.93 67.1883 Q1265.78 60.6258 1265.78 49.9314 Q1265.78 39.2371 1270.93 32.6746 Q1276.11 26.1121 1284.33 26.1121 Q1289.36 26.1121 1292.92 28.0971 Q1296.53 30.0415 1298.88 34.0924 M1273.48 49.9314 Q1273.48 58.1548 1276.84 62.8538 Q1280.24 67.5124 1286.16 67.5124 Q1292.07 67.5124 1295.47 62.8538 Q1298.88 58.1548 1298.88 49.9314 Q1298.88 41.7081 1295.47 37.0496 Q1292.07 32.3505 1286.16 32.3505 Q1280.24 32.3505 1276.84 37.0496 Q1273.48 41.7081 1273.48 49.9314 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1321.68 27.2059 L1329.14 27.2059 L1329.14 72.576 L1321.68 72.576 L1321.68 27.2059 M1321.68 9.54393 L1329.14 9.54393 L1329.14 18.9825 L1321.68 18.9825 L1321.68 9.54393 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1373.66 28.5427 L1373.66 35.5912 Q1370.5 33.9709 1367.09 33.1607 Q1363.69 32.3505 1360.05 32.3505 Q1354.5 32.3505 1351.7 34.0519 Q1348.95 35.7533 1348.95 39.156 Q1348.95 41.7486 1350.93 43.2475 Q1352.92 44.7058 1358.91 46.0426 L1361.46 46.6097 Q1369.4 48.3111 1372.72 51.4303 Q1376.09 54.509 1376.09 60.0587 Q1376.09 66.3781 1371.06 70.0644 Q1366.08 73.7508 1357.33 73.7508 Q1353.69 73.7508 1349.72 73.0216 Q1345.79 72.3329 1341.41 70.9151 L1341.41 63.2184 Q1345.54 65.3654 1349.55 66.4591 Q1353.56 67.5124 1357.49 67.5124 Q1362.76 67.5124 1365.6 65.73 Q1368.43 63.9071 1368.43 60.6258 Q1368.43 57.5877 1366.36 55.9673 Q1364.34 54.3469 1357.41 52.8481 L1354.82 52.2405 Q1347.89 50.7821 1344.81 47.7845 Q1341.74 44.7463 1341.74 39.4801 Q1341.74 33.0797 1346.27 29.5959 Q1350.81 26.1121 1359.15 26.1121 Q1363.29 26.1121 1366.93 26.7198 Q1370.58 27.3274 1373.66 28.5427 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1395.17 65.7705 L1395.17 89.8329 L1387.67 89.8329 L1387.67 27.2059 L1395.17 27.2059 L1395.17 34.0924 Q1397.52 30.0415 1401.08 28.0971 Q1404.69 26.1121 1409.67 26.1121 Q1417.93 26.1121 1423.08 32.6746 Q1428.26 39.2371 1428.26 49.9314 Q1428.26 60.6258 1423.08 67.1883 Q1417.93 73.7508 1409.67 73.7508 Q1404.69 73.7508 1401.08 71.8063 Q1397.52 69.8214 1395.17 65.7705 M1420.53 49.9314 Q1420.53 41.7081 1417.12 37.0496 Q1413.76 32.3505 1407.85 32.3505 Q1401.93 32.3505 1398.53 37.0496 Q1395.17 41.7081 1395.17 49.9314 Q1395.17 58.1548 1398.53 62.8538 Q1401.93 67.5124 1407.85 67.5124 Q1413.76 67.5124 1417.12 62.8538 Q1420.53 58.1548 1420.53 49.9314 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1440.62 9.54393 L1448.07 9.54393 L1448.07 72.576 L1440.62 72.576 L1440.62 9.54393 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1484.29 49.7694 Q1475.25 49.7694 1471.77 51.8354 Q1468.29 53.9013 1468.29 58.8839 Q1468.29 62.8538 1470.88 65.2034 Q1473.51 67.5124 1478.01 67.5124 Q1484.21 67.5124 1487.93 63.1374 Q1491.7 58.7219 1491.7 51.4303 L1491.7 49.7694 L1484.29 49.7694 M1499.15 46.6907 L1499.15 72.576 L1491.7 72.576 L1491.7 65.6895 Q1489.15 69.8214 1485.34 71.8063 Q1481.53 73.7508 1476.02 73.7508 Q1469.06 73.7508 1464.92 69.8619 Q1460.83 65.9325 1460.83 59.3701 Q1460.83 51.7138 1465.94 47.825 Q1471.08 43.9361 1481.25 43.9361 L1491.7 43.9361 L1491.7 43.2069 Q1491.7 38.0623 1488.3 35.2672 Q1484.93 32.4315 1478.82 32.4315 Q1474.93 32.4315 1471.24 33.3632 Q1467.56 34.295 1464.15 36.1584 L1464.15 29.2718 Q1468.25 27.692 1472.09 26.9223 Q1475.94 26.1121 1479.59 26.1121 Q1489.43 26.1121 1494.29 31.2163 Q1499.15 36.3204 1499.15 46.6907 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1547.16 28.9478 L1547.16 35.9153 Q1544 34.1734 1540.8 33.3227 Q1537.64 32.4315 1534.4 32.4315 Q1527.15 32.4315 1523.13 37.0496 Q1519.12 41.6271 1519.12 49.9314 Q1519.12 58.2358 1523.13 62.8538 Q1527.15 67.4314 1534.4 67.4314 Q1537.64 67.4314 1540.8 66.5807 Q1544 65.6895 1547.16 63.9476 L1547.16 70.8341 Q1544.04 72.2924 1540.68 73.0216 Q1537.35 73.7508 1533.59 73.7508 Q1523.34 73.7508 1517.3 67.3098 Q1511.27 60.8689 1511.27 49.9314 Q1511.27 38.832 1517.34 32.472 Q1523.46 26.1121 1534.07 26.1121 Q1537.52 26.1121 1540.8 26.8413 Q1544.08 27.5299 1547.16 28.9478 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1598.93 48.0275 L1598.93 51.6733 L1564.66 51.6733 Q1565.14 59.3701 1569.27 63.421 Q1573.45 67.4314 1580.86 67.4314 Q1585.15 67.4314 1589.16 66.3781 Q1593.22 65.3249 1597.19 63.2184 L1597.19 70.267 Q1593.18 71.9684 1588.96 72.8596 Q1584.75 73.7508 1580.41 73.7508 Q1569.56 73.7508 1563.2 67.4314 Q1556.88 61.1119 1556.88 50.3365 Q1556.88 39.1965 1562.87 32.6746 Q1568.91 26.1121 1579.12 26.1121 Q1588.27 26.1121 1593.58 32.0264 Q1598.93 37.9003 1598.93 48.0275 M1591.47 45.84 Q1591.39 39.7232 1588.03 36.0774 Q1584.71 32.4315 1579.2 32.4315 Q1572.96 32.4315 1569.19 35.9558 Q1565.47 39.4801 1564.9 45.8805 L1591.47 45.84 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1646.48 35.9153 Q1649.28 30.8922 1653.17 28.5022 Q1657.06 26.1121 1662.32 26.1121 Q1669.41 26.1121 1673.26 31.0947 Q1677.11 36.0368 1677.11 45.1919 L1677.11 72.576 L1669.62 72.576 L1669.62 45.4349 Q1669.62 38.913 1667.31 35.7533 Q1665 32.5936 1660.26 32.5936 Q1654.47 32.5936 1651.1 36.4419 Q1647.74 40.2903 1647.74 46.9338 L1647.74 72.576 L1640.25 72.576 L1640.25 45.4349 Q1640.25 38.8725 1637.94 35.7533 Q1635.63 32.5936 1630.81 32.5936 Q1625.1 32.5936 1621.73 36.4824 Q1618.37 40.3308 1618.37 46.9338 L1618.37 72.576 L1610.88 72.576 L1610.88 27.2059 L1618.37 27.2059 L1618.37 34.2544 Q1620.92 30.082 1624.49 28.0971 Q1628.05 26.1121 1632.95 26.1121 Q1637.9 26.1121 1641.34 28.6237 Q1644.82 31.1352 1646.48 35.9153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1730.78 48.0275 L1730.78 51.6733 L1696.51 51.6733 Q1697 59.3701 1701.13 63.421 Q1705.3 67.4314 1712.72 67.4314 Q1717.01 67.4314 1721.02 66.3781 Q1725.07 65.3249 1729.04 63.2184 L1729.04 70.267 Q1725.03 71.9684 1720.82 72.8596 Q1716.61 73.7508 1712.27 73.7508 Q1701.42 73.7508 1695.06 67.4314 Q1688.74 61.1119 1688.74 50.3365 Q1688.74 39.1965 1694.73 32.6746 Q1700.77 26.1121 1710.98 26.1121 Q1720.13 26.1121 1725.44 32.0264 Q1730.78 37.9003 1730.78 48.0275 M1723.33 45.84 Q1723.25 39.7232 1719.89 36.0774 Q1716.57 32.4315 1711.06 32.4315 Q1704.82 32.4315 1701.05 35.9558 Q1697.32 39.4801 1696.76 45.8805 L1723.33 45.84 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1780.73 45.1919 L1780.73 72.576 L1773.28 72.576 L1773.28 45.4349 Q1773.28 38.994 1770.77 35.7938 Q1768.26 32.5936 1763.23 32.5936 Q1757.2 32.5936 1753.71 36.4419 Q1750.23 40.2903 1750.23 46.9338 L1750.23 72.576 L1742.73 72.576 L1742.73 27.2059 L1750.23 27.2059 L1750.23 34.2544 Q1752.9 30.163 1756.51 28.1376 Q1760.15 26.1121 1764.89 26.1121 Q1772.71 26.1121 1776.72 30.9732 Q1780.73 35.7938 1780.73 45.1919 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip200)" d="M1802.97 14.324 L1802.97 27.2059 L1818.32 27.2059 L1818.32 32.9987 L1802.97 32.9987 L1802.97 57.6282 Q1802.97 63.1779 1804.47 64.7578 Q1806.01 66.3376 1810.67 66.3376 L1818.32 66.3376 L1818.32 72.576 L1810.67 72.576 Q1802.04 72.576 1798.76 69.3758 Q1795.48 66.1351 1795.48 57.6282 L1795.48 32.9987 L1790.01 32.9987 L1790.01 27.2059 L1795.48 27.2059 L1795.48 14.324 L1802.97 14.324 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip202)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="424.786,1386.4 926.263,773.326 985.537,705.207 1056.5,637.088 1137.34,568.969 1232.41,500.851 1357.01,432.732 1532.78,364.613 1754.25,296.494 2009.96,228.375 2296.6,160.256 "/> -<line clip-path="url(#clip202)" x1="424.786" y1="1386.4" x2="424.786" y2="1370.4" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="424.786" y1="1386.4" x2="408.786" y2="1386.4" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="424.786" y1="1386.4" x2="424.786" y2="1402.4" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="424.786" y1="1386.4" x2="440.786" y2="1386.4" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="926.263" y1="773.326" x2="926.263" y2="757.326" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="926.263" y1="773.326" x2="910.263" y2="773.326" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="926.263" y1="773.326" x2="926.263" y2="789.326" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="926.263" y1="773.326" x2="942.263" y2="773.326" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="985.537" y1="705.207" x2="985.537" y2="689.207" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="985.537" y1="705.207" x2="969.537" y2="705.207" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="985.537" y1="705.207" x2="985.537" y2="721.207" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="985.537" y1="705.207" x2="1001.54" y2="705.207" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1056.5" y1="637.088" x2="1056.5" y2="621.088" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1056.5" y1="637.088" x2="1040.5" y2="637.088" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1056.5" y1="637.088" x2="1056.5" y2="653.088" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1056.5" y1="637.088" x2="1072.5" y2="637.088" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1137.34" y1="568.969" x2="1137.34" y2="552.969" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1137.34" y1="568.969" x2="1121.34" y2="568.969" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1137.34" y1="568.969" x2="1137.34" y2="584.969" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1137.34" y1="568.969" x2="1153.34" y2="568.969" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1232.41" y1="500.851" x2="1232.41" y2="484.851" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1232.41" y1="500.851" x2="1216.41" y2="500.851" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1232.41" y1="500.851" x2="1232.41" y2="516.851" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1232.41" y1="500.851" x2="1248.41" y2="500.851" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1357.01" y1="432.732" x2="1357.01" y2="416.732" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1357.01" y1="432.732" x2="1341.01" y2="432.732" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1357.01" y1="432.732" x2="1357.01" y2="448.732" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1357.01" y1="432.732" x2="1373.01" y2="432.732" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1532.78" y1="364.613" x2="1532.78" y2="348.613" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1532.78" y1="364.613" x2="1516.78" y2="364.613" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1532.78" y1="364.613" x2="1532.78" y2="380.613" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1532.78" y1="364.613" x2="1548.78" y2="364.613" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1754.25" y1="296.494" x2="1754.25" y2="280.494" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1754.25" y1="296.494" x2="1738.25" y2="296.494" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1754.25" y1="296.494" x2="1754.25" y2="312.494" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="1754.25" y1="296.494" x2="1770.25" y2="296.494" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="2009.96" y1="228.375" x2="2009.96" y2="212.375" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="2009.96" y1="228.375" x2="1993.96" y2="228.375" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="2009.96" y1="228.375" x2="2009.96" y2="244.375" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="2009.96" y1="228.375" x2="2025.96" y2="228.375" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="2296.6" y1="160.256" x2="2296.6" y2="144.256" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="2296.6" y1="160.256" x2="2280.6" y2="160.256" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="2296.6" y1="160.256" x2="2296.6" y2="176.256" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> -<line clip-path="url(#clip202)" x1="2296.6" y1="160.256" x2="2312.6" y2="160.256" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="424.786,1423.18 424.786,123.472 "/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="792.598,1423.18 792.598,123.472 "/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1160.41,1423.18 1160.41,123.472 "/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1528.22,1423.18 1528.22,123.472 "/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="1896.03,1423.18 1896.03,123.472 "/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="2263.85,1423.18 2263.85,123.472 "/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="368.631,1386.4 2352.76,1386.4 "/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="368.631,1079.86 2352.76,1079.86 "/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="368.631,773.326 2352.76,773.326 "/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="368.631,466.791 2352.76,466.791 "/> +<polyline clip-path="url(#clip812)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none" points="368.631,160.256 2352.76,160.256 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,1423.18 2352.76,1423.18 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="424.786,1423.18 424.786,1404.28 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="792.598,1423.18 792.598,1404.28 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1160.41,1423.18 1160.41,1404.28 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1528.22,1423.18 1528.22,1404.28 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="1896.03,1423.18 1896.03,1404.28 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="2263.85,1423.18 2263.85,1404.28 "/> +<path clip-path="url(#clip810)" d="M387.089 1454.1 Q383.478 1454.1 381.65 1457.66 Q379.844 1461.2 379.844 1468.33 Q379.844 1475.44 381.65 1479.01 Q383.478 1482.55 387.089 1482.55 Q390.724 1482.55 392.529 1479.01 Q394.358 1475.44 394.358 1468.33 Q394.358 1461.2 392.529 1457.66 Q390.724 1454.1 387.089 1454.1 M387.089 1450.39 Q392.899 1450.39 395.955 1455 Q399.034 1459.58 399.034 1468.33 Q399.034 1477.06 395.955 1481.67 Q392.899 1486.25 387.089 1486.25 Q381.279 1486.25 378.2 1481.67 Q375.145 1477.06 375.145 1468.33 Q375.145 1459.58 378.2 1455 Q381.279 1450.39 387.089 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M407.251 1479.7 L412.135 1479.7 L412.135 1485.58 L407.251 1485.58 L407.251 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M432.321 1454.1 Q428.709 1454.1 426.881 1457.66 Q425.075 1461.2 425.075 1468.33 Q425.075 1475.44 426.881 1479.01 Q428.709 1482.55 432.321 1482.55 Q435.955 1482.55 437.76 1479.01 Q439.589 1475.44 439.589 1468.33 Q439.589 1461.2 437.76 1457.66 Q435.955 1454.1 432.321 1454.1 M432.321 1450.39 Q438.131 1450.39 441.186 1455 Q444.265 1459.58 444.265 1468.33 Q444.265 1477.06 441.186 1481.67 Q438.131 1486.25 432.321 1486.25 Q426.51 1486.25 423.432 1481.67 Q420.376 1477.06 420.376 1468.33 Q420.376 1459.58 423.432 1455 Q426.51 1450.39 432.321 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M462.482 1454.1 Q458.871 1454.1 457.043 1457.66 Q455.237 1461.2 455.237 1468.33 Q455.237 1475.44 457.043 1479.01 Q458.871 1482.55 462.482 1482.55 Q466.117 1482.55 467.922 1479.01 Q469.751 1475.44 469.751 1468.33 Q469.751 1461.2 467.922 1457.66 Q466.117 1454.1 462.482 1454.1 M462.482 1450.39 Q468.293 1450.39 471.348 1455 Q474.427 1459.58 474.427 1468.33 Q474.427 1477.06 471.348 1481.67 Q468.293 1486.25 462.482 1486.25 Q456.672 1486.25 453.594 1481.67 Q450.538 1477.06 450.538 1468.33 Q450.538 1459.58 453.594 1455 Q456.672 1450.39 462.482 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M755.399 1454.1 Q751.788 1454.1 749.959 1457.66 Q748.154 1461.2 748.154 1468.33 Q748.154 1475.44 749.959 1479.01 Q751.788 1482.55 755.399 1482.55 Q759.033 1482.55 760.839 1479.01 Q762.668 1475.44 762.668 1468.33 Q762.668 1461.2 760.839 1457.66 Q759.033 1454.1 755.399 1454.1 M755.399 1450.39 Q761.209 1450.39 764.265 1455 Q767.344 1459.58 767.344 1468.33 Q767.344 1477.06 764.265 1481.67 Q761.209 1486.25 755.399 1486.25 Q749.589 1486.25 746.51 1481.67 Q743.455 1477.06 743.455 1468.33 Q743.455 1459.58 746.51 1455 Q749.589 1450.39 755.399 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M775.561 1479.7 L780.445 1479.7 L780.445 1485.58 L775.561 1485.58 L775.561 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M800.63 1454.1 Q797.019 1454.1 795.191 1457.66 Q793.385 1461.2 793.385 1468.33 Q793.385 1475.44 795.191 1479.01 Q797.019 1482.55 800.63 1482.55 Q804.265 1482.55 806.07 1479.01 Q807.899 1475.44 807.899 1468.33 Q807.899 1461.2 806.07 1457.66 Q804.265 1454.1 800.63 1454.1 M800.63 1450.39 Q806.441 1450.39 809.496 1455 Q812.575 1459.58 812.575 1468.33 Q812.575 1477.06 809.496 1481.67 Q806.441 1486.25 800.63 1486.25 Q794.82 1486.25 791.742 1481.67 Q788.686 1477.06 788.686 1468.33 Q788.686 1459.58 791.742 1455 Q794.82 1450.39 800.63 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M820.839 1451.02 L839.195 1451.02 L839.195 1454.96 L825.121 1454.96 L825.121 1463.43 Q826.14 1463.08 827.158 1462.92 Q828.177 1462.73 829.195 1462.73 Q834.982 1462.73 838.362 1465.9 Q841.741 1469.08 841.741 1474.49 Q841.741 1480.07 838.269 1483.17 Q834.797 1486.25 828.477 1486.25 Q826.302 1486.25 824.033 1485.88 Q821.788 1485.51 819.38 1484.77 L819.38 1480.07 Q821.464 1481.2 823.686 1481.76 Q825.908 1482.32 828.385 1482.32 Q832.389 1482.32 834.727 1480.21 Q837.065 1478.1 837.065 1474.49 Q837.065 1470.88 834.727 1468.77 Q832.389 1466.67 828.385 1466.67 Q826.51 1466.67 824.635 1467.08 Q822.783 1467.5 820.839 1468.38 L820.839 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1122.71 1454.1 Q1119.1 1454.1 1117.27 1457.66 Q1115.47 1461.2 1115.47 1468.33 Q1115.47 1475.44 1117.27 1479.01 Q1119.1 1482.55 1122.71 1482.55 Q1126.35 1482.55 1128.15 1479.01 Q1129.98 1475.44 1129.98 1468.33 Q1129.98 1461.2 1128.15 1457.66 Q1126.35 1454.1 1122.71 1454.1 M1122.71 1450.39 Q1128.52 1450.39 1131.58 1455 Q1134.66 1459.58 1134.66 1468.33 Q1134.66 1477.06 1131.58 1481.67 Q1128.52 1486.25 1122.71 1486.25 Q1116.9 1486.25 1113.82 1481.67 Q1110.77 1477.06 1110.77 1468.33 Q1110.77 1459.58 1113.82 1455 Q1116.9 1450.39 1122.71 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1142.88 1479.7 L1147.76 1479.7 L1147.76 1485.58 L1142.88 1485.58 L1142.88 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1158.76 1481.64 L1166.39 1481.64 L1166.39 1455.28 L1158.08 1456.95 L1158.08 1452.69 L1166.35 1451.02 L1171.02 1451.02 L1171.02 1481.64 L1178.66 1481.64 L1178.66 1485.58 L1158.76 1485.58 L1158.76 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1198.11 1454.1 Q1194.5 1454.1 1192.67 1457.66 Q1190.86 1461.2 1190.86 1468.33 Q1190.86 1475.44 1192.67 1479.01 Q1194.5 1482.55 1198.11 1482.55 Q1201.74 1482.55 1203.55 1479.01 Q1205.38 1475.44 1205.38 1468.33 Q1205.38 1461.2 1203.55 1457.66 Q1201.74 1454.1 1198.11 1454.1 M1198.11 1450.39 Q1203.92 1450.39 1206.97 1455 Q1210.05 1459.58 1210.05 1468.33 Q1210.05 1477.06 1206.97 1481.67 Q1203.92 1486.25 1198.11 1486.25 Q1192.3 1486.25 1189.22 1481.67 Q1186.16 1477.06 1186.16 1468.33 Q1186.16 1459.58 1189.22 1455 Q1192.3 1450.39 1198.11 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1491.02 1454.1 Q1487.41 1454.1 1485.58 1457.66 Q1483.78 1461.2 1483.78 1468.33 Q1483.78 1475.44 1485.58 1479.01 Q1487.41 1482.55 1491.02 1482.55 Q1494.66 1482.55 1496.46 1479.01 Q1498.29 1475.44 1498.29 1468.33 Q1498.29 1461.2 1496.46 1457.66 Q1494.66 1454.1 1491.02 1454.1 M1491.02 1450.39 Q1496.83 1450.39 1499.89 1455 Q1502.97 1459.58 1502.97 1468.33 Q1502.97 1477.06 1499.89 1481.67 Q1496.83 1486.25 1491.02 1486.25 Q1485.21 1486.25 1482.13 1481.67 Q1479.08 1477.06 1479.08 1468.33 Q1479.08 1459.58 1482.13 1455 Q1485.21 1450.39 1491.02 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1511.19 1479.7 L1516.07 1479.7 L1516.07 1485.58 L1511.19 1485.58 L1511.19 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1527.06 1481.64 L1534.7 1481.64 L1534.7 1455.28 L1526.39 1456.95 L1526.39 1452.69 L1534.66 1451.02 L1539.33 1451.02 L1539.33 1481.64 L1546.97 1481.64 L1546.97 1485.58 L1527.06 1485.58 L1527.06 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1556.46 1451.02 L1574.82 1451.02 L1574.82 1454.96 L1560.75 1454.96 L1560.75 1463.43 Q1561.76 1463.08 1562.78 1462.92 Q1563.8 1462.73 1564.82 1462.73 Q1570.61 1462.73 1573.99 1465.9 Q1577.37 1469.08 1577.37 1474.49 Q1577.37 1480.07 1573.89 1483.17 Q1570.42 1486.25 1564.1 1486.25 Q1561.93 1486.25 1559.66 1485.88 Q1557.41 1485.51 1555 1484.77 L1555 1480.07 Q1557.09 1481.2 1559.31 1481.76 Q1561.53 1482.32 1564.01 1482.32 Q1568.01 1482.32 1570.35 1480.21 Q1572.69 1478.1 1572.69 1474.49 Q1572.69 1470.88 1570.35 1468.77 Q1568.01 1466.67 1564.01 1466.67 Q1562.13 1466.67 1560.26 1467.08 Q1558.41 1467.5 1556.46 1468.38 L1556.46 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1858.34 1454.1 Q1854.73 1454.1 1852.9 1457.66 Q1851.09 1461.2 1851.09 1468.33 Q1851.09 1475.44 1852.9 1479.01 Q1854.73 1482.55 1858.34 1482.55 Q1861.97 1482.55 1863.78 1479.01 Q1865.61 1475.44 1865.61 1468.33 Q1865.61 1461.2 1863.78 1457.66 Q1861.97 1454.1 1858.34 1454.1 M1858.34 1450.39 Q1864.15 1450.39 1867.2 1455 Q1870.28 1459.58 1870.28 1468.33 Q1870.28 1477.06 1867.2 1481.67 Q1864.15 1486.25 1858.34 1486.25 Q1852.53 1486.25 1849.45 1481.67 Q1846.39 1477.06 1846.39 1468.33 Q1846.39 1459.58 1849.45 1455 Q1852.53 1450.39 1858.34 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1878.5 1479.7 L1883.38 1479.7 L1883.38 1485.58 L1878.5 1485.58 L1878.5 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1897.6 1481.64 L1913.92 1481.64 L1913.92 1485.58 L1891.97 1485.58 L1891.97 1481.64 Q1894.63 1478.89 1899.22 1474.26 Q1903.82 1469.61 1905 1468.27 Q1907.25 1465.74 1908.13 1464.01 Q1909.03 1462.25 1909.03 1460.56 Q1909.03 1457.8 1907.09 1456.07 Q1905.17 1454.33 1902.06 1454.33 Q1899.87 1454.33 1897.41 1455.09 Q1894.98 1455.86 1892.2 1457.41 L1892.2 1452.69 Q1895.03 1451.55 1897.48 1450.97 Q1899.93 1450.39 1901.97 1450.39 Q1907.34 1450.39 1910.54 1453.08 Q1913.73 1455.77 1913.73 1460.26 Q1913.73 1462.39 1912.92 1464.31 Q1912.13 1466.2 1910.03 1468.8 Q1909.45 1469.47 1906.35 1472.69 Q1903.25 1475.88 1897.6 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1933.73 1454.1 Q1930.12 1454.1 1928.29 1457.66 Q1926.49 1461.2 1926.49 1468.33 Q1926.49 1475.44 1928.29 1479.01 Q1930.12 1482.55 1933.73 1482.55 Q1937.37 1482.55 1939.17 1479.01 Q1941 1475.44 1941 1468.33 Q1941 1461.2 1939.17 1457.66 Q1937.37 1454.1 1933.73 1454.1 M1933.73 1450.39 Q1939.54 1450.39 1942.6 1455 Q1945.68 1459.58 1945.68 1468.33 Q1945.68 1477.06 1942.6 1481.67 Q1939.54 1486.25 1933.73 1486.25 Q1927.92 1486.25 1924.84 1481.67 Q1921.79 1477.06 1921.79 1468.33 Q1921.79 1459.58 1924.84 1455 Q1927.92 1450.39 1933.73 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M2226.65 1454.1 Q2223.04 1454.1 2221.21 1457.66 Q2219.4 1461.2 2219.4 1468.33 Q2219.4 1475.44 2221.21 1479.01 Q2223.04 1482.55 2226.65 1482.55 Q2230.28 1482.55 2232.09 1479.01 Q2233.92 1475.44 2233.92 1468.33 Q2233.92 1461.2 2232.09 1457.66 Q2230.28 1454.1 2226.65 1454.1 M2226.65 1450.39 Q2232.46 1450.39 2235.51 1455 Q2238.59 1459.58 2238.59 1468.33 Q2238.59 1477.06 2235.51 1481.67 Q2232.46 1486.25 2226.65 1486.25 Q2220.84 1486.25 2217.76 1481.67 Q2214.7 1477.06 2214.7 1468.33 Q2214.7 1459.58 2217.76 1455 Q2220.84 1450.39 2226.65 1450.39 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M2246.81 1479.7 L2251.69 1479.7 L2251.69 1485.58 L2246.81 1485.58 L2246.81 1479.7 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M2265.91 1481.64 L2282.23 1481.64 L2282.23 1485.58 L2260.28 1485.58 L2260.28 1481.64 Q2262.94 1478.89 2267.53 1474.26 Q2272.13 1469.61 2273.31 1468.27 Q2275.56 1465.74 2276.44 1464.01 Q2277.34 1462.25 2277.34 1460.56 Q2277.34 1457.8 2275.4 1456.07 Q2273.48 1454.33 2270.37 1454.33 Q2268.18 1454.33 2265.72 1455.09 Q2263.29 1455.86 2260.51 1457.41 L2260.51 1452.69 Q2263.34 1451.55 2265.79 1450.97 Q2268.24 1450.39 2270.28 1450.39 Q2275.65 1450.39 2278.85 1453.08 Q2282.04 1455.77 2282.04 1460.26 Q2282.04 1462.39 2281.23 1464.31 Q2280.44 1466.2 2278.34 1468.8 Q2277.76 1469.47 2274.66 1472.69 Q2271.55 1475.88 2265.91 1481.64 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M2292.09 1451.02 L2310.44 1451.02 L2310.44 1454.96 L2296.37 1454.96 L2296.37 1463.43 Q2297.39 1463.08 2298.41 1462.92 Q2299.43 1462.73 2300.44 1462.73 Q2306.23 1462.73 2309.61 1465.9 Q2312.99 1469.08 2312.99 1474.49 Q2312.99 1480.07 2309.52 1483.17 Q2306.05 1486.25 2299.73 1486.25 Q2297.55 1486.25 2295.28 1485.88 Q2293.04 1485.51 2290.63 1484.77 L2290.63 1480.07 Q2292.71 1481.2 2294.93 1481.76 Q2297.16 1482.32 2299.63 1482.32 Q2303.64 1482.32 2305.98 1480.21 Q2308.31 1478.1 2308.31 1474.49 Q2308.31 1470.88 2305.98 1468.77 Q2303.64 1466.67 2299.63 1466.67 Q2297.76 1466.67 2295.88 1467.08 Q2294.03 1467.5 2292.09 1468.38 L2292.09 1451.02 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M966.529 1520.52 L976.109 1520.52 L988.236 1552.86 L1000.43 1520.52 L1010.01 1520.52 L1010.01 1568.04 L1003.74 1568.04 L1003.74 1526.32 L991.483 1558.91 L985.021 1558.91 L972.767 1526.32 L972.767 1568.04 L966.529 1568.04 L966.529 1520.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1038.72 1550.12 Q1031.62 1550.12 1028.88 1551.75 Q1026.14 1553.37 1026.14 1557.29 Q1026.14 1560.4 1028.18 1562.25 Q1030.25 1564.07 1033.78 1564.07 Q1038.65 1564.07 1041.58 1560.63 Q1044.54 1557.16 1044.54 1551.43 L1044.54 1550.12 L1038.72 1550.12 M1050.4 1547.71 L1050.4 1568.04 L1044.54 1568.04 L1044.54 1562.63 Q1042.54 1565.88 1039.54 1567.44 Q1036.55 1568.97 1032.22 1568.97 Q1026.75 1568.97 1023.5 1565.91 Q1020.29 1562.82 1020.29 1557.67 Q1020.29 1551.65 1024.3 1548.6 Q1028.34 1545.54 1036.33 1545.54 L1044.54 1545.54 L1044.54 1544.97 Q1044.54 1540.93 1041.87 1538.73 Q1039.23 1536.5 1034.42 1536.5 Q1031.36 1536.5 1028.47 1537.23 Q1025.57 1537.97 1022.9 1539.43 L1022.9 1534.02 Q1026.11 1532.78 1029.14 1532.17 Q1032.16 1531.54 1035.02 1531.54 Q1042.76 1531.54 1046.58 1535.55 Q1050.4 1539.56 1050.4 1547.71 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1092.09 1532.4 L1079.2 1549.74 L1092.76 1568.04 L1085.85 1568.04 L1075.48 1554.04 L1065.1 1568.04 L1058.2 1568.04 L1072.04 1549.39 L1059.37 1532.4 L1066.28 1532.4 L1075.73 1545.1 L1085.19 1532.4 L1092.09 1532.4 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1101.04 1532.4 L1106.89 1532.4 L1106.89 1568.04 L1101.04 1568.04 L1101.04 1532.4 M1101.04 1518.52 L1106.89 1518.52 L1106.89 1525.93 L1101.04 1525.93 L1101.04 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1146.9 1539.24 Q1149.1 1535.29 1152.15 1533.41 Q1155.21 1531.54 1159.35 1531.54 Q1164.92 1531.54 1167.94 1535.45 Q1170.96 1539.33 1170.96 1546.53 L1170.96 1568.04 L1165.08 1568.04 L1165.08 1546.72 Q1165.08 1541.59 1163.26 1539.11 Q1161.45 1536.63 1157.72 1536.63 Q1153.17 1536.63 1150.53 1539.65 Q1147.89 1542.68 1147.89 1547.9 L1147.89 1568.04 L1142 1568.04 L1142 1546.72 Q1142 1541.56 1140.19 1539.11 Q1138.37 1536.63 1134.58 1536.63 Q1130.1 1536.63 1127.45 1539.68 Q1124.81 1542.71 1124.81 1547.9 L1124.81 1568.04 L1118.92 1568.04 L1118.92 1532.4 L1124.81 1532.4 L1124.81 1537.93 Q1126.82 1534.66 1129.62 1533.1 Q1132.42 1531.54 1136.27 1531.54 Q1140.15 1531.54 1142.86 1533.51 Q1145.6 1535.48 1146.9 1539.24 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1182.04 1553.98 L1182.04 1532.4 L1187.9 1532.4 L1187.9 1553.75 Q1187.9 1558.81 1189.87 1561.36 Q1191.84 1563.87 1195.79 1563.87 Q1200.53 1563.87 1203.27 1560.85 Q1206.04 1557.83 1206.04 1552.61 L1206.04 1532.4 L1211.9 1532.4 L1211.9 1568.04 L1206.04 1568.04 L1206.04 1562.57 Q1203.91 1565.82 1201.07 1567.41 Q1198.27 1568.97 1194.55 1568.97 Q1188.41 1568.97 1185.22 1565.15 Q1182.04 1561.33 1182.04 1553.98 M1196.78 1531.54 L1196.78 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1251.71 1539.24 Q1253.91 1535.29 1256.96 1533.41 Q1260.02 1531.54 1264.16 1531.54 Q1269.73 1531.54 1272.75 1535.45 Q1275.78 1539.33 1275.78 1546.53 L1275.78 1568.04 L1269.89 1568.04 L1269.89 1546.72 Q1269.89 1541.59 1268.07 1539.11 Q1266.26 1536.63 1262.53 1536.63 Q1257.98 1536.63 1255.34 1539.65 Q1252.7 1542.68 1252.7 1547.9 L1252.7 1568.04 L1246.81 1568.04 L1246.81 1546.72 Q1246.81 1541.56 1245 1539.11 Q1243.18 1536.63 1239.4 1536.63 Q1234.91 1536.63 1232.27 1539.68 Q1229.62 1542.71 1229.62 1547.9 L1229.62 1568.04 L1223.74 1568.04 L1223.74 1532.4 L1229.62 1532.4 L1229.62 1537.93 Q1231.63 1534.66 1234.43 1533.1 Q1237.23 1531.54 1241.08 1531.54 Q1244.97 1531.54 1247.67 1533.51 Q1250.41 1535.48 1251.71 1539.24 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1331.63 1537.81 L1331.63 1518.52 L1337.49 1518.52 L1337.49 1568.04 L1331.63 1568.04 L1331.63 1562.7 Q1329.79 1565.88 1326.96 1567.44 Q1324.15 1568.97 1320.21 1568.97 Q1313.75 1568.97 1309.67 1563.81 Q1305.63 1558.65 1305.63 1550.25 Q1305.63 1541.85 1309.67 1536.69 Q1313.75 1531.54 1320.21 1531.54 Q1324.15 1531.54 1326.96 1533.1 Q1329.79 1534.62 1331.63 1537.81 M1311.68 1550.25 Q1311.68 1556.71 1314.32 1560.4 Q1316.99 1564.07 1321.64 1564.07 Q1326.29 1564.07 1328.96 1560.4 Q1331.63 1556.71 1331.63 1550.25 Q1331.63 1543.79 1328.96 1540.13 Q1326.29 1536.44 1321.64 1536.44 Q1316.99 1536.44 1314.32 1540.13 Q1311.68 1543.79 1311.68 1550.25 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1380.05 1548.76 L1380.05 1551.62 L1353.12 1551.62 Q1353.5 1557.67 1356.75 1560.85 Q1360.03 1564 1365.85 1564 Q1369.22 1564 1372.37 1563.17 Q1375.56 1562.35 1378.68 1560.69 L1378.68 1566.23 Q1375.53 1567.57 1372.22 1568.27 Q1368.91 1568.97 1365.5 1568.97 Q1356.97 1568.97 1351.97 1564 Q1347.01 1559.04 1347.01 1550.57 Q1347.01 1541.82 1351.72 1536.69 Q1356.46 1531.54 1364.48 1531.54 Q1371.67 1531.54 1375.84 1536.18 Q1380.05 1540.8 1380.05 1548.76 M1374.19 1547.04 Q1374.13 1542.23 1371.48 1539.37 Q1368.87 1536.5 1364.54 1536.5 Q1359.64 1536.5 1356.68 1539.27 Q1353.76 1542.04 1353.31 1547.07 L1374.19 1547.04 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1407.7 1518.52 L1407.7 1523.39 L1402.1 1523.39 Q1398.95 1523.39 1397.71 1524.66 Q1396.5 1525.93 1396.5 1529.24 L1396.5 1532.4 L1406.14 1532.4 L1406.14 1536.95 L1396.5 1536.95 L1396.5 1568.04 L1390.61 1568.04 L1390.61 1536.95 L1385.01 1536.95 L1385.01 1532.4 L1390.61 1532.4 L1390.61 1529.91 Q1390.61 1523.96 1393.38 1521.26 Q1396.15 1518.52 1402.17 1518.52 L1407.7 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1412.61 1518.52 L1418.46 1518.52 L1418.46 1568.04 L1412.61 1568.04 L1412.61 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1461.21 1548.76 L1461.21 1551.62 L1434.28 1551.62 Q1434.66 1557.67 1437.91 1560.85 Q1441.19 1564 1447.01 1564 Q1450.39 1564 1453.54 1563.17 Q1456.72 1562.35 1459.84 1560.69 L1459.84 1566.23 Q1456.69 1567.57 1453.38 1568.27 Q1450.07 1568.97 1446.66 1568.97 Q1438.13 1568.97 1433.14 1564 Q1428.17 1559.04 1428.17 1550.57 Q1428.17 1541.82 1432.88 1536.69 Q1437.62 1531.54 1445.64 1531.54 Q1452.84 1531.54 1457.01 1536.18 Q1461.21 1540.8 1461.21 1548.76 M1455.35 1547.04 Q1455.29 1542.23 1452.65 1539.37 Q1450.04 1536.5 1445.71 1536.5 Q1440.81 1536.5 1437.85 1539.27 Q1434.92 1542.04 1434.47 1547.07 L1455.35 1547.04 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1496.47 1533.76 L1496.47 1539.24 Q1493.99 1537.87 1491.48 1537.2 Q1488.99 1536.5 1486.45 1536.5 Q1480.75 1536.5 1477.6 1540.13 Q1474.45 1543.73 1474.45 1550.25 Q1474.45 1556.78 1477.6 1560.4 Q1480.75 1564 1486.45 1564 Q1488.99 1564 1491.48 1563.33 Q1493.99 1562.63 1496.47 1561.26 L1496.47 1566.68 Q1494.02 1567.82 1491.38 1568.39 Q1488.77 1568.97 1485.81 1568.97 Q1477.76 1568.97 1473.02 1563.91 Q1468.27 1558.85 1468.27 1550.25 Q1468.27 1541.53 1473.05 1536.53 Q1477.85 1531.54 1486.19 1531.54 Q1488.9 1531.54 1491.48 1532.11 Q1494.06 1532.65 1496.47 1533.76 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1512.45 1522.27 L1512.45 1532.4 L1524.52 1532.4 L1524.52 1536.95 L1512.45 1536.95 L1512.45 1556.3 Q1512.45 1560.66 1513.63 1561.9 Q1514.84 1563.14 1518.5 1563.14 L1524.52 1563.14 L1524.52 1568.04 L1518.5 1568.04 Q1511.72 1568.04 1509.14 1565.53 Q1506.56 1562.98 1506.56 1556.3 L1506.56 1536.95 L1502.27 1536.95 L1502.27 1532.4 L1506.56 1532.4 L1506.56 1522.27 L1512.45 1522.27 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1532.22 1532.4 L1538.07 1532.4 L1538.07 1568.04 L1532.22 1568.04 L1532.22 1532.4 M1532.22 1518.52 L1538.07 1518.52 L1538.07 1525.93 L1532.22 1525.93 L1532.22 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1564.14 1536.5 Q1559.43 1536.5 1556.69 1540.19 Q1553.96 1543.85 1553.96 1550.25 Q1553.96 1556.65 1556.66 1560.34 Q1559.4 1564 1564.14 1564 Q1568.82 1564 1571.56 1560.31 Q1574.29 1556.62 1574.29 1550.25 Q1574.29 1543.92 1571.56 1540.23 Q1568.82 1536.5 1564.14 1536.5 M1564.14 1531.54 Q1571.78 1531.54 1576.14 1536.5 Q1580.5 1541.47 1580.5 1550.25 Q1580.5 1559 1576.14 1564 Q1571.78 1568.97 1564.14 1568.97 Q1556.47 1568.97 1552.11 1564 Q1547.78 1559 1547.78 1550.25 Q1547.78 1541.47 1552.11 1536.5 Q1556.47 1531.54 1564.14 1531.54 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1619.84 1546.53 L1619.84 1568.04 L1613.99 1568.04 L1613.99 1546.72 Q1613.99 1541.66 1612.01 1539.14 Q1610.04 1536.63 1606.09 1536.63 Q1601.35 1536.63 1598.61 1539.65 Q1595.87 1542.68 1595.87 1547.9 L1595.87 1568.04 L1589.99 1568.04 L1589.99 1532.4 L1595.87 1532.4 L1595.87 1537.93 Q1597.98 1534.72 1600.81 1533.13 Q1603.67 1531.54 1607.4 1531.54 Q1613.54 1531.54 1616.69 1535.36 Q1619.84 1539.14 1619.84 1546.53 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1651.7 1518.52 L1665.2 1518.52 L1665.2 1523.07 L1657.56 1523.07 L1657.56 1572.09 L1665.2 1572.09 L1665.2 1576.64 L1651.7 1576.64 L1651.7 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1705.43 1539.24 Q1707.62 1535.29 1710.68 1533.41 Q1713.74 1531.54 1717.87 1531.54 Q1723.44 1531.54 1726.47 1535.45 Q1729.49 1539.33 1729.49 1546.53 L1729.49 1568.04 L1723.6 1568.04 L1723.6 1546.72 Q1723.6 1541.59 1721.79 1539.11 Q1719.97 1536.63 1716.25 1536.63 Q1711.7 1536.63 1709.06 1539.65 Q1706.42 1542.68 1706.42 1547.9 L1706.42 1568.04 L1700.53 1568.04 L1700.53 1546.72 Q1700.53 1541.56 1698.71 1539.11 Q1696.9 1536.63 1693.11 1536.63 Q1688.62 1536.63 1685.98 1539.68 Q1683.34 1542.71 1683.34 1547.9 L1683.34 1568.04 L1677.45 1568.04 L1677.45 1532.4 L1683.34 1532.4 L1683.34 1537.93 Q1685.34 1534.66 1688.15 1533.1 Q1690.95 1531.54 1694.8 1531.54 Q1698.68 1531.54 1701.39 1533.51 Q1704.12 1535.48 1705.43 1539.24 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1754.86 1518.52 L1754.86 1576.64 L1741.36 1576.64 L1741.36 1572.09 L1748.97 1572.09 L1748.97 1523.07 L1741.36 1523.07 L1741.36 1518.52 L1754.86 1518.52 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,1423.18 368.631,123.472 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,1386.4 387.529,1386.4 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,1079.86 387.529,1079.86 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,773.326 387.529,773.326 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,466.791 387.529,466.791 "/> +<polyline clip-path="url(#clip810)" style="stroke:#000000; stroke-linecap:round; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none" points="368.631,160.256 387.529,160.256 "/> +<path clip-path="url(#clip810)" d="M320.687 1372.19 Q317.076 1372.19 315.247 1375.76 Q313.442 1379.3 313.442 1386.43 Q313.442 1393.54 315.247 1397.1 Q317.076 1400.64 320.687 1400.64 Q324.321 1400.64 326.127 1397.1 Q327.955 1393.54 327.955 1386.43 Q327.955 1379.3 326.127 1375.76 Q324.321 1372.19 320.687 1372.19 M320.687 1368.49 Q326.497 1368.49 329.553 1373.1 Q332.631 1377.68 332.631 1386.43 Q332.631 1395.16 329.553 1399.76 Q326.497 1404.35 320.687 1404.35 Q314.877 1404.35 311.798 1399.76 Q308.743 1395.16 308.743 1386.43 Q308.743 1377.68 311.798 1373.1 Q314.877 1368.49 320.687 1368.49 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M119.885 1099.65 L136.204 1099.65 L136.204 1103.59 L114.26 1103.59 L114.26 1099.65 Q116.922 1096.9 121.505 1092.27 Q126.112 1087.62 127.292 1086.27 Q129.538 1083.75 130.417 1082.01 Q131.32 1080.26 131.32 1078.57 Q131.32 1075.81 129.376 1074.07 Q127.455 1072.34 124.353 1072.34 Q122.154 1072.34 119.7 1073.1 Q117.269 1073.87 114.492 1075.42 L114.492 1070.7 Q117.316 1069.56 119.769 1068.98 Q122.223 1068.4 124.26 1068.4 Q129.63 1068.4 132.825 1071.09 Q136.019 1073.77 136.019 1078.26 Q136.019 1080.39 135.209 1082.32 Q134.422 1084.21 132.316 1086.81 Q131.737 1087.48 128.635 1090.69 Q125.533 1093.89 119.885 1099.65 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M146.019 1097.71 L150.903 1097.71 L150.903 1103.59 L146.019 1103.59 L146.019 1097.71 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M161.135 1069.03 L179.491 1069.03 L179.491 1072.96 L165.417 1072.96 L165.417 1081.44 Q166.436 1081.09 167.454 1080.93 Q168.473 1080.74 169.491 1080.74 Q175.278 1080.74 178.658 1083.91 Q182.038 1087.08 182.038 1092.5 Q182.038 1098.08 178.565 1101.18 Q175.093 1104.26 168.774 1104.26 Q166.598 1104.26 164.329 1103.89 Q162.084 1103.52 159.677 1102.78 L159.677 1098.08 Q161.76 1099.21 163.982 1099.77 Q166.204 1100.32 168.681 1100.32 Q172.686 1100.32 175.024 1098.22 Q177.362 1096.11 177.362 1092.5 Q177.362 1088.89 175.024 1086.78 Q172.686 1084.68 168.681 1084.68 Q166.806 1084.68 164.931 1085.09 Q163.079 1085.51 161.135 1086.39 L161.135 1069.03 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M201.25 1072.11 Q197.639 1072.11 195.811 1075.67 Q194.005 1079.21 194.005 1086.34 Q194.005 1093.45 195.811 1097.01 Q197.639 1100.56 201.25 1100.56 Q204.885 1100.56 206.69 1097.01 Q208.519 1093.45 208.519 1086.34 Q208.519 1079.21 206.69 1075.67 Q204.885 1072.11 201.25 1072.11 M201.25 1068.4 Q207.061 1068.4 210.116 1073.01 Q213.195 1077.59 213.195 1086.34 Q213.195 1095.07 210.116 1099.68 Q207.061 1104.26 201.25 1104.26 Q195.44 1104.26 192.362 1099.68 Q189.306 1095.07 189.306 1086.34 Q189.306 1077.59 192.362 1073.01 Q195.44 1068.4 201.25 1068.4 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M249.584 1078.13 L239.005 1088.75 L249.584 1099.33 L246.829 1102.13 L236.204 1091.51 L225.579 1102.13 L222.848 1099.33 L233.403 1088.75 L222.848 1078.13 L225.579 1075.32 L236.204 1085.95 L246.829 1075.32 L249.584 1078.13 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M261.945 1099.65 L269.583 1099.65 L269.583 1073.29 L261.273 1074.95 L261.273 1070.7 L269.537 1069.03 L274.213 1069.03 L274.213 1099.65 L281.852 1099.65 L281.852 1103.59 L261.945 1103.59 L261.945 1099.65 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M301.296 1072.11 Q297.685 1072.11 295.856 1075.67 Q294.051 1079.21 294.051 1086.34 Q294.051 1093.45 295.856 1097.01 Q297.685 1100.56 301.296 1100.56 Q304.93 1100.56 306.736 1097.01 Q308.565 1093.45 308.565 1086.34 Q308.565 1079.21 306.736 1075.67 Q304.93 1072.11 301.296 1072.11 M301.296 1068.4 Q307.106 1068.4 310.162 1073.01 Q313.241 1077.59 313.241 1086.34 Q313.241 1095.07 310.162 1099.68 Q307.106 1104.26 301.296 1104.26 Q295.486 1104.26 292.407 1099.68 Q289.352 1095.07 289.352 1086.34 Q289.352 1077.59 292.407 1073.01 Q295.486 1068.4 301.296 1068.4 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M323.265 1060.62 Q320.707 1060.62 319.203 1062.37 Q317.717 1064.12 317.717 1067.17 Q317.717 1070.2 319.203 1071.97 Q320.707 1073.71 323.265 1073.71 Q325.823 1073.71 327.309 1071.97 Q328.813 1070.2 328.813 1067.17 Q328.813 1064.12 327.309 1062.37 Q325.823 1060.62 323.265 1060.62 M330.807 1048.72 L330.807 1052.18 Q329.378 1051.5 327.911 1051.14 Q326.462 1050.79 325.033 1050.79 Q321.271 1050.79 319.278 1053.33 Q317.303 1055.87 317.021 1061 Q318.131 1059.36 319.804 1058.5 Q321.478 1057.61 323.491 1057.61 Q327.723 1057.61 330.168 1060.19 Q332.631 1062.75 332.631 1067.17 Q332.631 1071.49 330.074 1074.11 Q327.516 1076.72 323.265 1076.72 Q318.394 1076.72 315.817 1073 Q313.241 1069.26 313.241 1062.17 Q313.241 1055.51 316.4 1051.56 Q319.56 1047.59 324.883 1047.59 Q326.312 1047.59 327.76 1047.87 Q329.227 1048.15 330.807 1048.72 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M115.904 762.494 L134.26 762.494 L134.26 766.429 L120.186 766.429 L120.186 774.901 Q121.205 774.554 122.223 774.392 Q123.242 774.206 124.26 774.206 Q130.047 774.206 133.427 777.378 Q136.806 780.549 136.806 785.966 Q136.806 791.544 133.334 794.646 Q129.862 797.725 123.543 797.725 Q121.367 797.725 119.098 797.355 Q116.853 796.984 114.445 796.243 L114.445 791.544 Q116.529 792.679 118.751 793.234 Q120.973 793.79 123.45 793.79 Q127.455 793.79 129.792 791.683 Q132.13 789.577 132.13 785.966 Q132.13 782.355 129.792 780.248 Q127.455 778.142 123.45 778.142 Q121.575 778.142 119.7 778.558 Q117.848 778.975 115.904 779.855 L115.904 762.494 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M146.019 791.174 L150.903 791.174 L150.903 797.054 L146.019 797.054 L146.019 791.174 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M171.089 765.572 Q167.477 765.572 165.649 769.137 Q163.843 772.679 163.843 779.808 Q163.843 786.915 165.649 790.48 Q167.477 794.021 171.089 794.021 Q174.723 794.021 176.528 790.48 Q178.357 786.915 178.357 779.808 Q178.357 772.679 176.528 769.137 Q174.723 765.572 171.089 765.572 M171.089 761.869 Q176.899 761.869 179.954 766.475 Q183.033 771.058 183.033 779.808 Q183.033 788.535 179.954 793.142 Q176.899 797.725 171.089 797.725 Q165.278 797.725 162.2 793.142 Q159.144 788.535 159.144 779.808 Q159.144 771.058 162.2 766.475 Q165.278 761.869 171.089 761.869 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M201.25 765.572 Q197.639 765.572 195.811 769.137 Q194.005 772.679 194.005 779.808 Q194.005 786.915 195.811 790.48 Q197.639 794.021 201.25 794.021 Q204.885 794.021 206.69 790.48 Q208.519 786.915 208.519 779.808 Q208.519 772.679 206.69 769.137 Q204.885 765.572 201.25 765.572 M201.25 761.869 Q207.061 761.869 210.116 766.475 Q213.195 771.058 213.195 779.808 Q213.195 788.535 210.116 793.142 Q207.061 797.725 201.25 797.725 Q195.44 797.725 192.362 793.142 Q189.306 788.535 189.306 779.808 Q189.306 771.058 192.362 766.475 Q195.44 761.869 201.25 761.869 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M249.584 771.591 L239.005 782.216 L249.584 792.794 L246.829 795.595 L236.204 784.97 L225.579 795.595 L222.848 792.794 L233.403 782.216 L222.848 771.591 L225.579 768.79 L236.204 779.415 L246.829 768.79 L249.584 771.591 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M261.945 793.118 L269.583 793.118 L269.583 766.753 L261.273 768.419 L261.273 764.16 L269.537 762.494 L274.213 762.494 L274.213 793.118 L281.852 793.118 L281.852 797.054 L261.945 797.054 L261.945 793.118 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M301.296 765.572 Q297.685 765.572 295.856 769.137 Q294.051 772.679 294.051 779.808 Q294.051 786.915 295.856 790.48 Q297.685 794.021 301.296 794.021 Q304.93 794.021 306.736 790.48 Q308.565 786.915 308.565 779.808 Q308.565 772.679 306.736 769.137 Q304.93 765.572 301.296 765.572 M301.296 761.869 Q307.106 761.869 310.162 766.475 Q313.241 771.058 313.241 779.808 Q313.241 788.535 310.162 793.142 Q307.106 797.725 301.296 797.725 Q295.486 797.725 292.407 793.142 Q289.352 788.535 289.352 779.808 Q289.352 771.058 292.407 766.475 Q295.486 761.869 301.296 761.869 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M323.265 754.089 Q320.707 754.089 319.203 755.838 Q317.717 757.587 317.717 760.634 Q317.717 763.662 319.203 765.43 Q320.707 767.179 323.265 767.179 Q325.823 767.179 327.309 765.43 Q328.813 763.662 328.813 760.634 Q328.813 757.587 327.309 755.838 Q325.823 754.089 323.265 754.089 M330.807 742.184 L330.807 745.644 Q329.378 744.967 327.911 744.61 Q326.462 744.253 325.033 744.253 Q321.271 744.253 319.278 746.792 Q317.303 749.331 317.021 754.465 Q318.131 752.829 319.804 751.964 Q321.478 751.08 323.491 751.08 Q327.723 751.08 330.168 753.657 Q332.631 756.214 332.631 760.634 Q332.631 764.96 330.074 767.574 Q327.516 770.189 323.265 770.189 Q318.394 770.189 315.817 766.465 Q313.241 762.722 313.241 755.631 Q313.241 748.973 316.4 745.024 Q319.56 741.055 324.883 741.055 Q326.312 741.055 327.76 741.337 Q329.227 741.62 330.807 742.184 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M114.677 455.959 L136.899 455.959 L136.899 457.949 L124.353 490.519 L119.468 490.519 L131.274 459.894 L114.677 459.894 L114.677 455.959 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M146.019 484.639 L150.903 484.639 L150.903 490.519 L146.019 490.519 L146.019 484.639 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M161.135 455.959 L179.491 455.959 L179.491 459.894 L165.417 459.894 L165.417 468.366 Q166.436 468.019 167.454 467.857 Q168.473 467.672 169.491 467.672 Q175.278 467.672 178.658 470.843 Q182.038 474.014 182.038 479.431 Q182.038 485.01 178.565 488.111 Q175.093 491.19 168.774 491.19 Q166.598 491.19 164.329 490.82 Q162.084 490.449 159.677 489.709 L159.677 485.01 Q161.76 486.144 163.982 486.699 Q166.204 487.255 168.681 487.255 Q172.686 487.255 175.024 485.148 Q177.362 483.042 177.362 479.431 Q177.362 475.82 175.024 473.713 Q172.686 471.607 168.681 471.607 Q166.806 471.607 164.931 472.023 Q163.079 472.44 161.135 473.32 L161.135 455.959 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M201.25 459.037 Q197.639 459.037 195.811 462.602 Q194.005 466.144 194.005 473.273 Q194.005 480.38 195.811 483.945 Q197.639 487.486 201.25 487.486 Q204.885 487.486 206.69 483.945 Q208.519 480.38 208.519 473.273 Q208.519 466.144 206.69 462.602 Q204.885 459.037 201.25 459.037 M201.25 455.334 Q207.061 455.334 210.116 459.94 Q213.195 464.524 213.195 473.273 Q213.195 482 210.116 486.607 Q207.061 491.19 201.25 491.19 Q195.44 491.19 192.362 486.607 Q189.306 482 189.306 473.273 Q189.306 464.524 192.362 459.94 Q195.44 455.334 201.25 455.334 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M249.584 465.056 L239.005 475.681 L249.584 486.26 L246.829 489.06 L236.204 478.435 L225.579 489.06 L222.848 486.26 L233.403 475.681 L222.848 465.056 L225.579 462.255 L236.204 472.88 L246.829 462.255 L249.584 465.056 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M261.945 486.584 L269.583 486.584 L269.583 460.218 L261.273 461.885 L261.273 457.625 L269.537 455.959 L274.213 455.959 L274.213 486.584 L281.852 486.584 L281.852 490.519 L261.945 490.519 L261.945 486.584 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M301.296 459.037 Q297.685 459.037 295.856 462.602 Q294.051 466.144 294.051 473.273 Q294.051 480.38 295.856 483.945 Q297.685 487.486 301.296 487.486 Q304.93 487.486 306.736 483.945 Q308.565 480.38 308.565 473.273 Q308.565 466.144 306.736 462.602 Q304.93 459.037 301.296 459.037 M301.296 455.334 Q307.106 455.334 310.162 459.94 Q313.241 464.524 313.241 473.273 Q313.241 482 310.162 486.607 Q307.106 491.19 301.296 491.19 Q295.486 491.19 292.407 486.607 Q289.352 482 289.352 473.273 Q289.352 464.524 292.407 459.94 Q295.486 455.334 301.296 455.334 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M323.265 447.554 Q320.707 447.554 319.203 449.303 Q317.717 451.053 317.717 454.099 Q317.717 457.127 319.203 458.895 Q320.707 460.645 323.265 460.645 Q325.823 460.645 327.309 458.895 Q328.813 457.127 328.813 454.099 Q328.813 451.053 327.309 449.303 Q325.823 447.554 323.265 447.554 M330.807 435.649 L330.807 439.11 Q329.378 438.433 327.911 438.075 Q326.462 437.718 325.033 437.718 Q321.271 437.718 319.278 440.257 Q317.303 442.796 317.021 447.93 Q318.131 446.294 319.804 445.429 Q321.478 444.545 323.491 444.545 Q327.723 444.545 330.168 447.122 Q332.631 449.68 332.631 454.099 Q332.631 458.425 330.074 461.039 Q327.516 463.654 323.265 463.654 Q318.394 463.654 315.817 459.93 Q313.241 456.187 313.241 449.097 Q313.241 442.439 316.4 438.489 Q319.56 434.521 324.883 434.521 Q326.312 434.521 327.76 434.803 Q329.227 435.085 330.807 435.649 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M118.003 180.049 L125.642 180.049 L125.642 153.683 L117.332 155.35 L117.332 151.091 L125.595 149.424 L130.271 149.424 L130.271 180.049 L137.91 180.049 L137.91 183.984 L118.003 183.984 L118.003 180.049 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M147.355 178.104 L152.239 178.104 L152.239 183.984 L147.355 183.984 L147.355 178.104 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M172.424 152.503 Q168.813 152.503 166.984 156.067 Q165.179 159.609 165.179 166.739 Q165.179 173.845 166.984 177.41 Q168.813 180.952 172.424 180.952 Q176.058 180.952 177.864 177.41 Q179.692 173.845 179.692 166.739 Q179.692 159.609 177.864 156.067 Q176.058 152.503 172.424 152.503 M172.424 148.799 Q178.234 148.799 181.29 153.405 Q184.368 157.989 184.368 166.739 Q184.368 175.465 181.29 180.072 Q178.234 184.655 172.424 184.655 Q166.614 184.655 163.535 180.072 Q160.48 175.465 160.48 166.739 Q160.48 157.989 163.535 153.405 Q166.614 148.799 172.424 148.799 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M202.586 152.503 Q198.975 152.503 197.146 156.067 Q195.34 159.609 195.34 166.739 Q195.34 173.845 197.146 177.41 Q198.975 180.952 202.586 180.952 Q206.22 180.952 208.026 177.41 Q209.854 173.845 209.854 166.739 Q209.854 159.609 208.026 156.067 Q206.22 152.503 202.586 152.503 M202.586 148.799 Q208.396 148.799 211.451 153.405 Q214.53 157.989 214.53 166.739 Q214.53 175.465 211.451 180.072 Q208.396 184.655 202.586 184.655 Q196.776 184.655 193.697 180.072 Q190.641 175.465 190.641 166.739 Q190.641 157.989 193.697 153.405 Q196.776 148.799 202.586 148.799 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M250.919 158.521 L240.34 169.146 L250.919 179.725 L248.164 182.526 L237.539 171.901 L226.914 182.526 L224.183 179.725 L234.738 169.146 L224.183 158.521 L226.914 155.72 L237.539 166.345 L248.164 155.72 L250.919 158.521 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M263.28 180.049 L270.919 180.049 L270.919 153.683 L262.609 155.35 L262.609 151.091 L270.872 149.424 L275.548 149.424 L275.548 180.049 L283.187 180.049 L283.187 183.984 L263.28 183.984 L263.28 180.049 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M302.632 152.503 Q299.02 152.503 297.192 156.067 Q295.386 159.609 295.386 166.739 Q295.386 173.845 297.192 177.41 Q299.02 180.952 302.632 180.952 Q306.266 180.952 308.071 177.41 Q309.9 173.845 309.9 166.739 Q309.9 159.609 308.071 156.067 Q306.266 152.503 302.632 152.503 M302.632 148.799 Q308.442 148.799 311.497 153.405 Q314.576 157.989 314.576 166.739 Q314.576 175.465 311.497 180.072 Q308.442 184.655 302.632 184.655 Q296.821 184.655 293.743 180.072 Q290.687 175.465 290.687 166.739 Q290.687 157.989 293.743 153.405 Q296.821 148.799 302.632 148.799 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M314.576 128.494 L332.631 128.494 L332.631 130.111 L322.438 156.574 L318.469 156.574 L328.061 131.691 L314.576 131.691 L314.576 128.494 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M16.4842 973.416 L16.4842 933.217 L21.895 933.217 L21.895 950.086 L64.0042 950.086 L64.0042 956.547 L21.895 956.547 L21.895 973.416 L16.4842 973.416 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M33.8307 916.188 Q33.2578 917.175 33.0032 918.353 Q32.7167 919.499 32.7167 920.899 Q32.7167 925.864 35.9632 928.538 Q39.1779 931.18 45.2253 931.18 L64.0042 931.18 L64.0042 937.068 L28.3562 937.068 L28.3562 931.18 L33.8944 931.18 Q30.6479 929.334 29.0883 926.373 Q27.4968 923.413 27.4968 919.18 Q27.4968 918.575 27.5923 917.843 Q27.656 917.111 27.8151 916.22 L33.8307 916.188 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M46.0847 893.845 Q46.0847 900.942 47.7079 903.68 Q49.3312 906.417 53.2461 906.417 Q56.3653 906.417 58.2114 904.38 Q60.0256 902.311 60.0256 898.778 Q60.0256 893.908 56.5881 890.98 Q53.1188 888.02 47.3897 888.02 L46.0847 888.02 L46.0847 893.845 M43.6657 882.164 L64.0042 882.164 L64.0042 888.02 L58.5933 888.02 Q61.8398 890.025 63.3994 893.017 Q64.9272 896.009 64.9272 900.338 Q64.9272 905.812 61.8716 909.059 Q58.7843 912.273 53.6281 912.273 Q47.6125 912.273 44.5569 908.263 Q41.5014 904.221 41.5014 896.232 L41.5014 888.02 L40.9285 888.02 Q36.8862 888.02 34.6901 890.694 Q32.4621 893.335 32.4621 898.142 Q32.4621 901.197 33.1941 904.094 Q33.9262 906.99 35.3903 909.664 L29.9795 909.664 Q28.7381 906.449 28.1334 903.425 Q27.4968 900.401 27.4968 897.537 Q27.4968 889.803 31.5072 885.983 Q35.5176 882.164 43.6657 882.164 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M29.7248 844.447 L35.1993 844.447 Q33.8307 846.929 33.1623 849.444 Q32.4621 851.927 32.4621 854.473 Q32.4621 860.17 36.0905 863.321 Q39.6872 866.472 46.212 866.472 Q52.7369 866.472 56.3653 863.321 Q59.9619 860.17 59.9619 854.473 Q59.9619 851.927 59.2935 849.444 Q58.5933 846.929 57.2247 844.447 L62.6355 844.447 Q63.7814 846.898 64.3543 849.539 Q64.9272 852.149 64.9272 855.109 Q64.9272 863.162 59.8664 867.904 Q54.8057 872.647 46.212 872.647 Q37.491 872.647 32.4939 867.873 Q27.4968 863.067 27.4968 854.727 Q27.4968 852.022 28.0697 849.444 Q28.6108 846.866 29.7248 844.447 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M18.2347 828.469 L28.3562 828.469 L28.3562 816.406 L32.9077 816.406 L32.9077 828.469 L52.2594 828.469 Q56.6199 828.469 57.8613 827.291 Q59.1026 826.082 59.1026 822.421 L59.1026 816.406 L64.0042 816.406 L64.0042 822.421 Q64.0042 829.201 61.4897 831.779 Q58.9434 834.357 52.2594 834.357 L32.9077 834.357 L32.9077 838.654 L28.3562 838.654 L28.3562 834.357 L18.2347 834.357 L18.2347 828.469 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M28.3562 808.703 L28.3562 802.847 L64.0042 802.847 L64.0042 808.703 L28.3562 808.703 M14.479 808.703 L14.479 802.847 L21.895 802.847 L21.895 808.703 L14.479 808.703 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M32.4621 776.779 Q32.4621 781.49 36.1542 784.227 Q39.8145 786.965 46.212 786.965 Q52.6095 786.965 56.3017 784.259 Q59.9619 781.522 59.9619 776.779 Q59.9619 772.101 56.2698 769.363 Q52.5777 766.626 46.212 766.626 Q39.8781 766.626 36.186 769.363 Q32.4621 772.101 32.4621 776.779 M27.4968 776.779 Q27.4968 769.141 32.4621 764.78 Q37.4273 760.42 46.212 760.42 Q54.9649 760.42 59.9619 764.78 Q64.9272 769.141 64.9272 776.779 Q64.9272 784.45 59.9619 788.811 Q54.9649 793.139 46.212 793.139 Q37.4273 793.139 32.4621 788.811 Q27.4968 784.45 27.4968 776.779 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M42.4881 721.079 L64.0042 721.079 L64.0042 726.936 L42.679 726.936 Q37.6183 726.936 35.1038 728.909 Q32.5894 730.883 32.5894 734.829 Q32.5894 739.572 35.6131 742.309 Q38.6368 745.046 43.8567 745.046 L64.0042 745.046 L64.0042 750.935 L28.3562 750.935 L28.3562 745.046 L33.8944 745.046 Q30.6797 742.946 29.0883 740.113 Q27.4968 737.248 27.4968 733.524 Q27.4968 727.381 31.3163 724.23 Q35.1038 721.079 42.4881 721.079 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M14.479 689.219 L14.479 675.724 L19.0304 675.724 L19.0304 683.363 L68.0464 683.363 L68.0464 675.724 L72.5979 675.724 L72.5979 689.219 L14.479 689.219 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M21.7677 656.563 L39.6235 656.563 L39.6235 648.479 Q39.6235 643.991 37.3 641.54 Q34.9765 639.089 30.6797 639.089 Q26.4147 639.089 24.0912 641.54 Q21.7677 643.991 21.7677 648.479 L21.7677 656.563 M16.4842 662.992 L16.4842 648.479 Q16.4842 640.49 20.1126 636.416 Q23.7092 632.31 30.6797 632.31 Q37.7138 632.31 41.3104 636.416 Q44.907 640.49 44.907 648.479 L44.907 656.563 L64.0042 656.563 L64.0042 662.992 L16.4842 662.992 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M46.0847 610.666 Q46.0847 617.764 47.7079 620.501 Q49.3312 623.239 53.2461 623.239 Q56.3653 623.239 58.2114 621.202 Q60.0256 619.133 60.0256 615.6 Q60.0256 610.73 56.5881 607.802 Q53.1188 604.842 47.3897 604.842 L46.0847 604.842 L46.0847 610.666 M43.6657 598.985 L64.0042 598.985 L64.0042 604.842 L58.5933 604.842 Q61.8398 606.847 63.3994 609.839 Q64.9272 612.831 64.9272 617.159 Q64.9272 622.634 61.8716 625.88 Q58.7843 629.095 53.6281 629.095 Q47.6125 629.095 44.5569 625.085 Q41.5014 621.042 41.5014 613.053 L41.5014 604.842 L40.9285 604.842 Q36.8862 604.842 34.6901 607.515 Q32.4621 610.157 32.4621 614.963 Q32.4621 618.019 33.1941 620.915 Q33.9262 623.811 35.3903 626.485 L29.9795 626.485 Q28.7381 623.27 28.1334 620.247 Q27.4968 617.223 27.4968 614.358 Q27.4968 606.624 31.5072 602.805 Q35.5176 598.985 43.6657 598.985 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M14.479 573.236 L72.5979 573.236 L72.5979 586.731 L68.0464 586.731 L68.0464 579.124 L19.0304 579.124 L19.0304 586.731 L14.479 586.731 L14.479 573.236 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M903.063 12.096 L954.226 12.096 L954.226 18.9825 L932.756 18.9825 L932.756 72.576 L924.533 72.576 L924.533 18.9825 L903.063 18.9825 L903.063 12.096 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M975.898 34.1734 Q974.642 33.4443 973.144 33.1202 Q971.685 32.7556 969.903 32.7556 Q963.584 32.7556 960.181 36.8875 Q956.818 40.9789 956.818 48.6757 L956.818 72.576 L949.324 72.576 L949.324 27.2059 L956.818 27.2059 L956.818 34.2544 Q959.168 30.1225 962.935 28.1376 Q966.703 26.1121 972.09 26.1121 Q972.86 26.1121 973.792 26.2337 Q974.723 26.3147 975.858 26.5172 L975.898 34.1734 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1004.34 49.7694 Q995.302 49.7694 991.818 51.8354 Q988.335 53.9013 988.335 58.8839 Q988.335 62.8538 990.927 65.2034 Q993.56 67.5124 998.057 67.5124 Q1004.25 67.5124 1007.98 63.1374 Q1011.75 58.7219 1011.75 51.4303 L1011.75 49.7694 L1004.34 49.7694 M1019.2 46.6907 L1019.2 72.576 L1011.75 72.576 L1011.75 65.6895 Q1009.2 69.8214 1005.39 71.8063 Q1001.58 73.7508 996.072 73.7508 Q989.104 73.7508 984.972 69.8619 Q980.881 65.9325 980.881 59.3701 Q980.881 51.7138 985.985 47.825 Q991.13 43.9361 1001.3 43.9361 L1011.75 43.9361 L1011.75 43.2069 Q1011.75 38.0623 1008.35 35.2672 Q1004.98 32.4315 998.867 32.4315 Q994.978 32.4315 991.292 33.3632 Q987.605 34.295 984.203 36.1584 L984.203 29.2718 Q988.294 27.692 992.142 26.9223 Q995.991 26.1121 999.637 26.1121 Q1009.48 26.1121 1014.34 31.2163 Q1019.2 36.3204 1019.2 46.6907 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1067.21 28.9478 L1067.21 35.9153 Q1064.05 34.1734 1060.85 33.3227 Q1057.69 32.4315 1054.45 32.4315 Q1047.19 32.4315 1043.18 37.0496 Q1039.17 41.6271 1039.17 49.9314 Q1039.17 58.2358 1043.18 62.8538 Q1047.19 67.4314 1054.45 67.4314 Q1057.69 67.4314 1060.85 66.5807 Q1064.05 65.6895 1067.21 63.9476 L1067.21 70.8341 Q1064.09 72.2924 1060.72 73.0216 Q1057.4 73.7508 1053.64 73.7508 Q1043.39 73.7508 1037.35 67.3098 Q1031.31 60.8689 1031.31 49.9314 Q1031.31 38.832 1037.39 32.472 Q1043.51 26.1121 1054.12 26.1121 Q1057.56 26.1121 1060.85 26.8413 Q1064.13 27.5299 1067.21 28.9478 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1087.54 14.324 L1087.54 27.2059 L1102.89 27.2059 L1102.89 32.9987 L1087.54 32.9987 L1087.54 57.6282 Q1087.54 63.1779 1089.04 64.7578 Q1090.58 66.3376 1095.24 66.3376 L1102.89 66.3376 L1102.89 72.576 L1095.24 72.576 Q1086.61 72.576 1083.33 69.3758 Q1080.05 66.1351 1080.05 57.6282 L1080.05 32.9987 L1074.58 32.9987 L1074.58 27.2059 L1080.05 27.2059 L1080.05 14.324 L1087.54 14.324 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1112.7 27.2059 L1120.15 27.2059 L1120.15 72.576 L1112.7 72.576 L1112.7 27.2059 M1112.7 9.54393 L1120.15 9.54393 L1120.15 18.9825 L1112.7 18.9825 L1112.7 9.54393 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1153.33 32.4315 Q1147.33 32.4315 1143.85 37.1306 Q1140.36 41.7891 1140.36 49.9314 Q1140.36 58.0738 1143.81 62.7728 Q1147.29 67.4314 1153.33 67.4314 Q1159.28 67.4314 1162.77 62.7323 Q1166.25 58.0333 1166.25 49.9314 Q1166.25 41.8701 1162.77 37.1711 Q1159.28 32.4315 1153.33 32.4315 M1153.33 26.1121 Q1163.05 26.1121 1168.6 32.4315 Q1174.15 38.7509 1174.15 49.9314 Q1174.15 61.0714 1168.6 67.4314 Q1163.05 73.7508 1153.33 73.7508 Q1143.57 73.7508 1138.02 67.4314 Q1132.51 61.0714 1132.51 49.9314 Q1132.51 38.7509 1138.02 32.4315 Q1143.57 26.1121 1153.33 26.1121 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1224.22 45.1919 L1224.22 72.576 L1216.77 72.576 L1216.77 45.4349 Q1216.77 38.994 1214.25 35.7938 Q1211.74 32.5936 1206.72 32.5936 Q1200.68 32.5936 1197.2 36.4419 Q1193.72 40.2903 1193.72 46.9338 L1193.72 72.576 L1186.22 72.576 L1186.22 27.2059 L1193.72 27.2059 L1193.72 34.2544 Q1196.39 30.163 1199.99 28.1376 Q1203.64 26.1121 1208.38 26.1121 Q1216.2 26.1121 1220.21 30.9732 Q1224.22 35.7938 1224.22 45.1919 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1235.32 46.5287 L1257.15 46.5287 L1257.15 53.1722 L1235.32 53.1722 L1235.32 46.5287 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1298.88 34.0924 L1298.88 9.54393 L1306.33 9.54393 L1306.33 72.576 L1298.88 72.576 L1298.88 65.7705 Q1296.53 69.8214 1292.92 71.8063 Q1289.36 73.7508 1284.33 73.7508 Q1276.11 73.7508 1270.93 67.1883 Q1265.78 60.6258 1265.78 49.9314 Q1265.78 39.2371 1270.93 32.6746 Q1276.11 26.1121 1284.33 26.1121 Q1289.36 26.1121 1292.92 28.0971 Q1296.53 30.0415 1298.88 34.0924 M1273.48 49.9314 Q1273.48 58.1548 1276.84 62.8538 Q1280.24 67.5124 1286.16 67.5124 Q1292.07 67.5124 1295.47 62.8538 Q1298.88 58.1548 1298.88 49.9314 Q1298.88 41.7081 1295.47 37.0496 Q1292.07 32.3505 1286.16 32.3505 Q1280.24 32.3505 1276.84 37.0496 Q1273.48 41.7081 1273.48 49.9314 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1321.68 27.2059 L1329.14 27.2059 L1329.14 72.576 L1321.68 72.576 L1321.68 27.2059 M1321.68 9.54393 L1329.14 9.54393 L1329.14 18.9825 L1321.68 18.9825 L1321.68 9.54393 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1373.66 28.5427 L1373.66 35.5912 Q1370.5 33.9709 1367.09 33.1607 Q1363.69 32.3505 1360.05 32.3505 Q1354.5 32.3505 1351.7 34.0519 Q1348.95 35.7533 1348.95 39.156 Q1348.95 41.7486 1350.93 43.2475 Q1352.92 44.7058 1358.91 46.0426 L1361.46 46.6097 Q1369.4 48.3111 1372.72 51.4303 Q1376.09 54.509 1376.09 60.0587 Q1376.09 66.3781 1371.06 70.0644 Q1366.08 73.7508 1357.33 73.7508 Q1353.69 73.7508 1349.72 73.0216 Q1345.79 72.3329 1341.41 70.9151 L1341.41 63.2184 Q1345.54 65.3654 1349.55 66.4591 Q1353.56 67.5124 1357.49 67.5124 Q1362.76 67.5124 1365.6 65.73 Q1368.43 63.9071 1368.43 60.6258 Q1368.43 57.5877 1366.36 55.9673 Q1364.34 54.3469 1357.41 52.8481 L1354.82 52.2405 Q1347.89 50.7821 1344.81 47.7845 Q1341.74 44.7463 1341.74 39.4801 Q1341.74 33.0797 1346.27 29.5959 Q1350.81 26.1121 1359.15 26.1121 Q1363.29 26.1121 1366.93 26.7198 Q1370.58 27.3274 1373.66 28.5427 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1395.17 65.7705 L1395.17 89.8329 L1387.67 89.8329 L1387.67 27.2059 L1395.17 27.2059 L1395.17 34.0924 Q1397.52 30.0415 1401.08 28.0971 Q1404.69 26.1121 1409.67 26.1121 Q1417.93 26.1121 1423.08 32.6746 Q1428.26 39.2371 1428.26 49.9314 Q1428.26 60.6258 1423.08 67.1883 Q1417.93 73.7508 1409.67 73.7508 Q1404.69 73.7508 1401.08 71.8063 Q1397.52 69.8214 1395.17 65.7705 M1420.53 49.9314 Q1420.53 41.7081 1417.12 37.0496 Q1413.76 32.3505 1407.85 32.3505 Q1401.93 32.3505 1398.53 37.0496 Q1395.17 41.7081 1395.17 49.9314 Q1395.17 58.1548 1398.53 62.8538 Q1401.93 67.5124 1407.85 67.5124 Q1413.76 67.5124 1417.12 62.8538 Q1420.53 58.1548 1420.53 49.9314 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1440.62 9.54393 L1448.07 9.54393 L1448.07 72.576 L1440.62 72.576 L1440.62 9.54393 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1484.29 49.7694 Q1475.25 49.7694 1471.77 51.8354 Q1468.29 53.9013 1468.29 58.8839 Q1468.29 62.8538 1470.88 65.2034 Q1473.51 67.5124 1478.01 67.5124 Q1484.21 67.5124 1487.93 63.1374 Q1491.7 58.7219 1491.7 51.4303 L1491.7 49.7694 L1484.29 49.7694 M1499.15 46.6907 L1499.15 72.576 L1491.7 72.576 L1491.7 65.6895 Q1489.15 69.8214 1485.34 71.8063 Q1481.53 73.7508 1476.02 73.7508 Q1469.06 73.7508 1464.92 69.8619 Q1460.83 65.9325 1460.83 59.3701 Q1460.83 51.7138 1465.94 47.825 Q1471.08 43.9361 1481.25 43.9361 L1491.7 43.9361 L1491.7 43.2069 Q1491.7 38.0623 1488.3 35.2672 Q1484.93 32.4315 1478.82 32.4315 Q1474.93 32.4315 1471.24 33.3632 Q1467.56 34.295 1464.15 36.1584 L1464.15 29.2718 Q1468.25 27.692 1472.09 26.9223 Q1475.94 26.1121 1479.59 26.1121 Q1489.43 26.1121 1494.29 31.2163 Q1499.15 36.3204 1499.15 46.6907 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1547.16 28.9478 L1547.16 35.9153 Q1544 34.1734 1540.8 33.3227 Q1537.64 32.4315 1534.4 32.4315 Q1527.15 32.4315 1523.13 37.0496 Q1519.12 41.6271 1519.12 49.9314 Q1519.12 58.2358 1523.13 62.8538 Q1527.15 67.4314 1534.4 67.4314 Q1537.64 67.4314 1540.8 66.5807 Q1544 65.6895 1547.16 63.9476 L1547.16 70.8341 Q1544.04 72.2924 1540.68 73.0216 Q1537.35 73.7508 1533.59 73.7508 Q1523.34 73.7508 1517.3 67.3098 Q1511.27 60.8689 1511.27 49.9314 Q1511.27 38.832 1517.34 32.472 Q1523.46 26.1121 1534.07 26.1121 Q1537.52 26.1121 1540.8 26.8413 Q1544.08 27.5299 1547.16 28.9478 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1598.93 48.0275 L1598.93 51.6733 L1564.66 51.6733 Q1565.14 59.3701 1569.27 63.421 Q1573.45 67.4314 1580.86 67.4314 Q1585.15 67.4314 1589.16 66.3781 Q1593.22 65.3249 1597.19 63.2184 L1597.19 70.267 Q1593.18 71.9684 1588.96 72.8596 Q1584.75 73.7508 1580.41 73.7508 Q1569.56 73.7508 1563.2 67.4314 Q1556.88 61.1119 1556.88 50.3365 Q1556.88 39.1965 1562.87 32.6746 Q1568.91 26.1121 1579.12 26.1121 Q1588.27 26.1121 1593.58 32.0264 Q1598.93 37.9003 1598.93 48.0275 M1591.47 45.84 Q1591.39 39.7232 1588.03 36.0774 Q1584.71 32.4315 1579.2 32.4315 Q1572.96 32.4315 1569.19 35.9558 Q1565.47 39.4801 1564.9 45.8805 L1591.47 45.84 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1646.48 35.9153 Q1649.28 30.8922 1653.17 28.5022 Q1657.06 26.1121 1662.32 26.1121 Q1669.41 26.1121 1673.26 31.0947 Q1677.11 36.0368 1677.11 45.1919 L1677.11 72.576 L1669.62 72.576 L1669.62 45.4349 Q1669.62 38.913 1667.31 35.7533 Q1665 32.5936 1660.26 32.5936 Q1654.47 32.5936 1651.1 36.4419 Q1647.74 40.2903 1647.74 46.9338 L1647.74 72.576 L1640.25 72.576 L1640.25 45.4349 Q1640.25 38.8725 1637.94 35.7533 Q1635.63 32.5936 1630.81 32.5936 Q1625.1 32.5936 1621.73 36.4824 Q1618.37 40.3308 1618.37 46.9338 L1618.37 72.576 L1610.88 72.576 L1610.88 27.2059 L1618.37 27.2059 L1618.37 34.2544 Q1620.92 30.082 1624.49 28.0971 Q1628.05 26.1121 1632.95 26.1121 Q1637.9 26.1121 1641.34 28.6237 Q1644.82 31.1352 1646.48 35.9153 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1730.78 48.0275 L1730.78 51.6733 L1696.51 51.6733 Q1697 59.3701 1701.13 63.421 Q1705.3 67.4314 1712.72 67.4314 Q1717.01 67.4314 1721.02 66.3781 Q1725.07 65.3249 1729.04 63.2184 L1729.04 70.267 Q1725.03 71.9684 1720.82 72.8596 Q1716.61 73.7508 1712.27 73.7508 Q1701.42 73.7508 1695.06 67.4314 Q1688.74 61.1119 1688.74 50.3365 Q1688.74 39.1965 1694.73 32.6746 Q1700.77 26.1121 1710.98 26.1121 Q1720.13 26.1121 1725.44 32.0264 Q1730.78 37.9003 1730.78 48.0275 M1723.33 45.84 Q1723.25 39.7232 1719.89 36.0774 Q1716.57 32.4315 1711.06 32.4315 Q1704.82 32.4315 1701.05 35.9558 Q1697.32 39.4801 1696.76 45.8805 L1723.33 45.84 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1780.73 45.1919 L1780.73 72.576 L1773.28 72.576 L1773.28 45.4349 Q1773.28 38.994 1770.77 35.7938 Q1768.26 32.5936 1763.23 32.5936 Q1757.2 32.5936 1753.71 36.4419 Q1750.23 40.2903 1750.23 46.9338 L1750.23 72.576 L1742.73 72.576 L1742.73 27.2059 L1750.23 27.2059 L1750.23 34.2544 Q1752.9 30.163 1756.51 28.1376 Q1760.15 26.1121 1764.89 26.1121 Q1772.71 26.1121 1776.72 30.9732 Q1780.73 35.7938 1780.73 45.1919 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><path clip-path="url(#clip810)" d="M1802.97 14.324 L1802.97 27.2059 L1818.32 27.2059 L1818.32 32.9987 L1802.97 32.9987 L1802.97 57.6282 Q1802.97 63.1779 1804.47 64.7578 Q1806.01 66.3376 1810.67 66.3376 L1818.32 66.3376 L1818.32 72.576 L1810.67 72.576 Q1802.04 72.576 1798.76 69.3758 Q1795.48 66.1351 1795.48 57.6282 L1795.48 32.9987 L1790.01 32.9987 L1790.01 27.2059 L1795.48 27.2059 L1795.48 14.324 L1802.97 14.324 Z" fill="#000000" fill-rule="nonzero" fill-opacity="1" /><polyline clip-path="url(#clip812)" style="stroke:#009af9; stroke-linecap:round; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none" points="424.786,1386.4 926.263,773.326 985.537,705.207 1056.5,637.088 1137.34,568.969 1232.41,500.851 1357.01,432.732 1532.78,364.613 1754.25,296.494 2009.96,228.375 2296.6,160.256 "/> +<line clip-path="url(#clip812)" x1="424.786" y1="1386.4" x2="424.786" y2="1370.4" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="424.786" y1="1386.4" x2="408.786" y2="1386.4" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="424.786" y1="1386.4" x2="424.786" y2="1402.4" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="424.786" y1="1386.4" x2="440.786" y2="1386.4" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="926.263" y1="773.326" x2="926.263" y2="757.326" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="926.263" y1="773.326" x2="910.263" y2="773.326" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="926.263" y1="773.326" x2="926.263" y2="789.326" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="926.263" y1="773.326" x2="942.263" y2="773.326" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="985.537" y1="705.207" x2="985.537" y2="689.207" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="985.537" y1="705.207" x2="969.537" y2="705.207" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="985.537" y1="705.207" x2="985.537" y2="721.207" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="985.537" y1="705.207" x2="1001.54" y2="705.207" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1056.5" y1="637.088" x2="1056.5" y2="621.088" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1056.5" y1="637.088" x2="1040.5" y2="637.088" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1056.5" y1="637.088" x2="1056.5" y2="653.088" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1056.5" y1="637.088" x2="1072.5" y2="637.088" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1137.34" y1="568.969" x2="1137.34" y2="552.969" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1137.34" y1="568.969" x2="1121.34" y2="568.969" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1137.34" y1="568.969" x2="1137.34" y2="584.969" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1137.34" y1="568.969" x2="1153.34" y2="568.969" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1232.41" y1="500.851" x2="1232.41" y2="484.851" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1232.41" y1="500.851" x2="1216.41" y2="500.851" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1232.41" y1="500.851" x2="1232.41" y2="516.851" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1232.41" y1="500.851" x2="1248.41" y2="500.851" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1357.01" y1="432.732" x2="1357.01" y2="416.732" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1357.01" y1="432.732" x2="1341.01" y2="432.732" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1357.01" y1="432.732" x2="1357.01" y2="448.732" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1357.01" y1="432.732" x2="1373.01" y2="432.732" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1532.78" y1="364.613" x2="1532.78" y2="348.613" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1532.78" y1="364.613" x2="1516.78" y2="364.613" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1532.78" y1="364.613" x2="1532.78" y2="380.613" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1532.78" y1="364.613" x2="1548.78" y2="364.613" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1754.25" y1="296.494" x2="1754.25" y2="280.494" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1754.25" y1="296.494" x2="1738.25" y2="296.494" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1754.25" y1="296.494" x2="1754.25" y2="312.494" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="1754.25" y1="296.494" x2="1770.25" y2="296.494" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="2009.96" y1="228.375" x2="2009.96" y2="212.375" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="2009.96" y1="228.375" x2="1993.96" y2="228.375" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="2009.96" y1="228.375" x2="2009.96" y2="244.375" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="2009.96" y1="228.375" x2="2025.96" y2="228.375" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="2296.6" y1="160.256" x2="2296.6" y2="144.256" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="2296.6" y1="160.256" x2="2280.6" y2="160.256" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="2296.6" y1="160.256" x2="2296.6" y2="176.256" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> +<line clip-path="url(#clip812)" x1="2296.6" y1="160.256" x2="2312.6" y2="160.256" style="stroke:#009af9; stroke-width:8; stroke-opacity:1"/> </svg> diff --git a/dev/tutorials/plasticity/index.html b/dev/tutorials/plasticity/index.html index a4e89bd6c3..0d3d840fc4 100644 --- a/dev/tutorials/plasticity/index.html +++ b/dev/tutorials/plasticity/index.html @@ -346,7 +346,7 @@ markershape = :auto ) ylabel!("Traction [Pa]") -xlabel!("Maximum deflection [m]")</code></pre><img src="3e25d0a4.svg" alt="Example block output"/><p><em>Figure 2.</em> Load-displacement-curve for the beam, showing a clear decrease in stiffness as more material starts to yield.</p><h2 id="plasticity-plain-program"><a class="docs-heading-anchor" href="#plasticity-plain-program">Plain program</a><a id="plasticity-plain-program-1"></a><a class="docs-heading-anchor-permalink" href="#plasticity-plain-program" title="Permalink"></a></h2><p>Here follows a version of the program without any comments. The file is also available here: <a href="../plasticity.jl"><code>plasticity.jl</code></a>.</p><pre><code class="language-julia hljs">using Ferrite, Tensors, SparseArrays, LinearAlgebra, Printf +xlabel!("Maximum deflection [m]")</code></pre><img src="d0ba011e.svg" alt="Example block output"/><p><em>Figure 2.</em> Load-displacement-curve for the beam, showing a clear decrease in stiffness as more material starts to yield.</p><h2 id="plasticity-plain-program"><a class="docs-heading-anchor" href="#plasticity-plain-program">Plain program</a><a id="plasticity-plain-program-1"></a><a class="docs-heading-anchor-permalink" href="#plasticity-plain-program" title="Permalink"></a></h2><p>Here follows a version of the program without any comments. The file is also available here: <a href="../plasticity.jl"><code>plasticity.jl</code></a>.</p><pre><code class="language-julia hljs">using Ferrite, Tensors, SparseArrays, LinearAlgebra, Printf struct J2Plasticity{T, S <: SymmetricTensor{4, 3, T}} G::T # Shear modulus @@ -649,4 +649,4 @@ markershape = :auto ) ylabel!("Traction [Pa]") -xlabel!("Maximum deflection [m]")</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../hyperelasticity/">« Hyperelasticity</a><a class="docs-footer-nextpage" href="../transient_heat_equation/">Transient heat equation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +xlabel!("Maximum deflection [m]")</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../hyperelasticity/">« Hyperelasticity</a><a class="docs-footer-nextpage" href="../transient_heat_equation/">Transient heat equation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/porous_media/index.html b/dev/tutorials/porous_media/index.html index 13605465b2..3004128a3d 100644 --- a/dev/tutorials/porous_media/index.html +++ b/dev/tutorials/porous_media/index.html @@ -478,4 +478,4 @@ end; dh, ch, domains = setup_problem() -solve(dh, ch, domains);</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../stokes-flow/">« Stokes flow</a><a class="docs-footer-nextpage" href="../ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +solve(dh, ch, domains);</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../stokes-flow/">« Stokes flow</a><a class="docs-footer-nextpage" href="../ns_vs_diffeq/">Incompressible Navier-Stokes equations via DifferentialEquations.jl »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/reactive_surface.ipynb b/dev/tutorials/reactive_surface.ipynb index 0c4f473045..95ff569920 100644 --- a/dev/tutorials/reactive_surface.ipynb +++ b/dev/tutorials/reactive_surface.ipynb @@ -332,10 +332,10 @@ "text": [ "Info : Meshing 1D...\n", "Info : [ 40%] Meshing curve 2 (Circle)\n", - "Info : Done meshing 1D (Wall 9.4327e-05s, CPU 9.5e-05s)\n", + "Info : Done meshing 1D (Wall 0.000103574s, CPU 0.000104s)\n", "Info : Meshing 2D...\n", "Info : Meshing surface 1 (Sphere, Frontal-Delaunay)\n", - "Info : Done meshing 2D (Wall 0.00963593s, CPU 0.009618s)\n", + "Info : Done meshing 2D (Wall 0.00984966s, CPU 0.009832s)\n", "Info : 160 nodes 328 elements\n", "Info : Refining mesh...\n", "Info : Meshing order 2 (curvilinear on)...\n", @@ -345,8 +345,8 @@ "Info : [ 70%] Meshing surface 1 order 2\n", "Info : [ 90%] Meshing volume 1 order 2\n", "Info : Surface mesh: worst distortion = 0.970866 (0 elements in ]0, 0.2]); worst gamma = 0.433887\n", - "Info : Done meshing order 2 (Wall 0.00114026s, CPU 0.00114s)\n", - "Info : Done refining mesh (Wall 0.00146305s, CPU 0.001463s)\n", + "Info : Done meshing order 2 (Wall 0.00116066s, CPU 0.00116s)\n", + "Info : Done refining mesh (Wall 0.00149942s, CPU 0.001499s)\n", "Info : Refining mesh...\n", "Info : Meshing order 2 (curvilinear on)...\n", "Info : [ 0%] Meshing curve 1 order 2\n", @@ -355,8 +355,8 @@ "Info : [ 70%] Meshing surface 1 order 2\n", "Info : [ 90%] Meshing volume 1 order 2\n", "Info : Surface mesh: worst distortion = 0.992408 (0 elements in ]0, 0.2]); worst gamma = 0.421451\n", - "Info : Done meshing order 2 (Wall 0.0043544s, CPU 0.004353s)\n", - "Info : Done refining mesh (Wall 0.00560651s, CPU 0.005606s)\n", + "Info : Done meshing order 2 (Wall 0.00442149s, CPU 0.004421s)\n", + "Info : Done refining mesh (Wall 0.00570811s, CPU 0.005707s)\n", "Info : Refining mesh...\n", "Info : Meshing order 2 (curvilinear on)...\n", "Info : [ 0%] Meshing curve 1 order 2\n", @@ -365,8 +365,8 @@ "Info : [ 70%] Meshing surface 1 order 2\n", "Info : [ 90%] Meshing volume 1 order 2\n", "Info : Surface mesh: worst distortion = 0.998082 (0 elements in ]0, 0.2]); worst gamma = 0.418317\n", - "Info : Done meshing order 2 (Wall 0.0166962s, CPU 0.016695s)\n", - "Info : Done refining mesh (Wall 0.0218316s, CPU 0.021831s)\n" + "Info : Done meshing order 2 (Wall 0.0167681s, CPU 0.016767s)\n", + "Info : Done refining mesh (Wall 0.0219069s, CPU 0.021906s)\n" ] } ], diff --git a/dev/tutorials/reactive_surface/index.html b/dev/tutorials/reactive_surface/index.html index e1292f22be..0bb0487a74 100644 --- a/dev/tutorials/reactive_surface/index.html +++ b/dev/tutorials/reactive_surface/index.html @@ -222,10 +222,10 @@ material = GrayScottMaterial(0.00016, 0.00008, 0.06, 0.062) gray_scott_on_sphere(material, 10.0, 32000.0, 3)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">Info : Meshing 1D... Info : [ 40%] Meshing curve 2 (Circle) -Info : Done meshing 1D (Wall 8.9588e-05s, CPU 9e-05s) +Info : Done meshing 1D (Wall 9.8384e-05s, CPU 0.0001s) Info : Meshing 2D... Info : Meshing surface 1 (Sphere, Frontal-Delaunay) -Info : Done meshing 2D (Wall 0.00949275s, CPU 0.009474s) +Info : Done meshing 2D (Wall 0.00923319s, CPU 0.009215s) Info : 160 nodes 328 elements Info : Refining mesh... Info : Meshing order 2 (curvilinear on)... @@ -235,8 +235,8 @@ Info : [ 70%] Meshing surface 1 order 2 Info : [ 90%] Meshing volume 1 order 2 Info : Surface mesh: worst distortion = 0.970866 (0 elements in ]0, 0.2]); worst gamma = 0.433887 -Info : Done meshing order 2 (Wall 0.0012175s, CPU 0.001217s) -Info : Done refining mesh (Wall 0.00156364s, CPU 0.001564s) +Info : Done meshing order 2 (Wall 0.00114717s, CPU 0.001132s) +Info : Done refining mesh (Wall 0.00149521s, CPU 0.001475s) Info : Refining mesh... Info : Meshing order 2 (curvilinear on)... Info : [ 0%] Meshing curve 1 order 2 @@ -245,8 +245,8 @@ Info : [ 70%] Meshing surface 1 order 2 Info : [ 90%] Meshing volume 1 order 2 Info : Surface mesh: worst distortion = 0.992408 (0 elements in ]0, 0.2]); worst gamma = 0.421451 -Info : Done meshing order 2 (Wall 0.00447432s, CPU 0.004474s) -Info : Done refining mesh (Wall 0.00579685s, CPU 0.005797s) +Info : Done meshing order 2 (Wall 0.00463219s, CPU 0.004623s) +Info : Done refining mesh (Wall 0.00615366s, CPU 0.006145s) Info : Refining mesh... Info : Meshing order 2 (curvilinear on)... Info : [ 0%] Meshing curve 1 order 2 @@ -255,8 +255,8 @@ Info : [ 70%] Meshing surface 1 order 2 Info : [ 90%] Meshing volume 1 order 2 Info : Surface mesh: worst distortion = 0.998082 (0 elements in ]0, 0.2]); worst gamma = 0.418317 -Info : Done meshing order 2 (Wall 0.0171863s, CPU 0.017184s) -Info : Done refining mesh (Wall 0.0228193s, CPU 0.022819s)</code></pre><h2 id="reactive_surface-plain-program"><a class="docs-heading-anchor" href="#reactive_surface-plain-program">Plain program</a><a id="reactive_surface-plain-program-1"></a><a class="docs-heading-anchor-permalink" href="#reactive_surface-plain-program" title="Permalink"></a></h2><p>Here follows a version of the program without any comments. The file is also available here: <a href="../reactive_surface.jl"><code>reactive_surface.jl</code></a>.</p><pre><code class="language-julia hljs">using Ferrite, FerriteGmsh +Info : Done meshing order 2 (Wall 0.017739s, CPU 0.017738s) +Info : Done refining mesh (Wall 0.0239097s, CPU 0.023908s)</code></pre><h2 id="reactive_surface-plain-program"><a class="docs-heading-anchor" href="#reactive_surface-plain-program">Plain program</a><a id="reactive_surface-plain-program-1"></a><a class="docs-heading-anchor-permalink" href="#reactive_surface-plain-program" title="Permalink"></a></h2><p>Here follows a version of the program without any comments. The file is also available here: <a href="../reactive_surface.jl"><code>reactive_surface.jl</code></a>.</p><pre><code class="language-julia hljs">using Ferrite, FerriteGmsh using BlockArrays, SparseArrays, LinearAlgebra, WriteVTK struct GrayScottMaterial{T} @@ -484,4 +484,4 @@ # This parametrization gives the spot pattern shown in the gif above. material = GrayScottMaterial(0.00016, 0.00008, 0.06, 0.062) - gray_scott_on_sphere(material, 10.0, 32000.0, 3)</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../ns_vs_diffeq/">« Incompressible Navier-Stokes equations via DifferentialEquations.jl</a><a class="docs-footer-nextpage" href="../linear_shell/">Linear shell »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> + gray_scott_on_sphere(material, 10.0, 32000.0, 3)</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../ns_vs_diffeq/">« Incompressible Navier-Stokes equations via DifferentialEquations.jl</a><a class="docs-footer-nextpage" href="../linear_shell/">Linear shell »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/stokes-flow/index.html b/dev/tutorials/stokes-flow/index.html index 604fc3a93b..f21e8504a2 100644 --- a/dev/tutorials/stokes-flow/index.html +++ b/dev/tutorials/stokes-flow/index.html @@ -482,4 +482,4 @@ return end -main()</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../computational_homogenization/">« Computational homogenization</a><a class="docs-footer-nextpage" href="../porous_media/">Porous media »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +main()</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../computational_homogenization/">« Computational homogenization</a><a class="docs-footer-nextpage" href="../porous_media/">Porous media »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/transient_heat_equation/index.html b/dev/tutorials/transient_heat_equation/index.html index 3a6c41a25f..a0c4a2e5dd 100644 --- a/dev/tutorials/transient_heat_equation/index.html +++ b/dev/tutorials/transient_heat_equation/index.html @@ -233,4 +233,4 @@ uₙ .= u end -vtk_save(pvd);</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../plasticity/">« Von Mises plasticity</a><a class="docs-footer-nextpage" href="../computational_homogenization/">Computational homogenization »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:47">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +vtk_save(pvd);</code></pre><hr/><p><em>This page was generated using <a href="https://github.com/fredrikekre/Literate.jl">Literate.jl</a>.</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../plasticity/">« Von Mises plasticity</a><a class="docs-footer-nextpage" href="../computational_homogenization/">Computational homogenization »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 10 January 2025 11:48">Friday 10 January 2025</span>. Using Julia version 1.11.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/dev/tutorials/vortex-street.pvd b/dev/tutorials/vortex-street.pvd index 91ea81106e..db1e99e661 100755 --- a/dev/tutorials/vortex-street.pvd +++ b/dev/tutorials/vortex-street.pvd @@ -3,37 +3,37 @@ <Collection> <DataSet timestep="0.0" part="0" file="vortex-street-1.vtu"/> <DataSet timestep="0.1" part="0" file="vortex-street-2.vtu"/> - <DataSet timestep="0.14596645898489624" part="0" file="vortex-street-3.vtu"/> - <DataSet timestep="0.22438131462649163" part="0" file="vortex-street-4.vtu"/> - <DataSet timestep="0.2871602254543282" part="0" file="vortex-street-5.vtu"/> - <DataSet timestep="0.36440118484370215" part="0" file="vortex-street-6.vtu"/> - <DataSet timestep="0.44164214423307613" part="0" file="vortex-street-7.vtu"/> - <DataSet timestep="0.5189083098837332" part="0" file="vortex-street-8.vtu"/> - <DataSet timestep="0.5961744755343902" part="0" file="vortex-street-9.vtu"/> - <DataSet timestep="0.6734406411850472" part="0" file="vortex-street-10.vtu"/> - <DataSet timestep="0.7507068068357042" part="0" file="vortex-street-11.vtu"/> - <DataSet timestep="0.8279729724863613" part="0" file="vortex-street-12.vtu"/> - <DataSet timestep="0.9052391381370183" part="0" file="vortex-street-13.vtu"/> - <DataSet timestep="0.9825053037876753" part="0" file="vortex-street-14.vtu"/> + <DataSet timestep="0.14597505895698665" part="0" file="vortex-street-3.vtu"/> + <DataSet timestep="0.2244069890488254" part="0" file="vortex-street-4.vtu"/> + <DataSet timestep="0.2871966083231415" part="0" file="vortex-street-5.vtu"/> + <DataSet timestep="0.36446694274162084" part="0" file="vortex-street-6.vtu"/> + <DataSet timestep="0.44173727716010025" part="0" file="vortex-street-7.vtu"/> + <DataSet timestep="0.5190294900449979" part="0" file="vortex-street-8.vtu"/> + <DataSet timestep="0.5963217029298955" part="0" file="vortex-street-9.vtu"/> + <DataSet timestep="0.6736139158147931" part="0" file="vortex-street-10.vtu"/> + <DataSet timestep="0.7509061286996908" part="0" file="vortex-street-11.vtu"/> + <DataSet timestep="0.8281983415845884" part="0" file="vortex-street-12.vtu"/> + <DataSet timestep="0.905490554469486" part="0" file="vortex-street-13.vtu"/> + <DataSet timestep="0.9827827673543836" part="0" file="vortex-street-14.vtu"/> <DataSet timestep="1.0" part="0" file="vortex-street-15.vtu"/> - <DataSet timestep="1.0433164070930814" part="0" file="vortex-street-16.vtu"/> - <DataSet timestep="1.0669706472570621" part="0" file="vortex-street-17.vtu"/> - <DataSet timestep="1.0986571029642447" part="0" file="vortex-street-18.vtu"/> - <DataSet timestep="1.131488811754707" part="0" file="vortex-street-19.vtu"/> - <DataSet timestep="1.1683917437885567" part="0" file="vortex-street-20.vtu"/> - <DataSet timestep="1.2091529326645216" part="0" file="vortex-street-21.vtu"/> - <DataSet timestep="1.254463869486111" part="0" file="vortex-street-22.vtu"/> - <DataSet timestep="1.3045768438789849" part="0" file="vortex-street-23.vtu"/> - <DataSet timestep="1.3600348547419046" part="0" file="vortex-street-24.vtu"/> - <DataSet timestep="1.421654589615906" part="0" file="vortex-street-25.vtu"/> - <DataSet timestep="1.4933716343824255" part="0" file="vortex-street-26.vtu"/> - <DataSet timestep="1.5869171707140537" part="0" file="vortex-street-27.vtu"/> - <DataSet timestep="1.7046006318831246" part="0" file="vortex-street-28.vtu"/> - <DataSet timestep="1.8556415535228648" part="0" file="vortex-street-29.vtu"/> - <DataSet timestep="2.040339447560499" part="0" file="vortex-street-30.vtu"/> - <DataSet timestep="2.263814651440928" part="0" file="vortex-street-31.vtu"/> - <DataSet timestep="2.565223953658555" part="0" file="vortex-street-32.vtu"/> - <DataSet timestep="3.0734193027621965" part="0" file="vortex-street-33.vtu"/> - <DataSet timestep="3.975806007288741" part="0" file="vortex-street-34.vtu"/> + <DataSet timestep="1.043116983116654" part="0" file="vortex-street-16.vtu"/> + <DataSet timestep="1.0665515103994272" part="0" file="vortex-street-17.vtu"/> + <DataSet timestep="1.0980568023695918" part="0" file="vortex-street-18.vtu"/> + <DataSet timestep="1.1306837259237168" part="0" file="vortex-street-19.vtu"/> + <DataSet timestep="1.167405802180629" part="0" file="vortex-street-20.vtu"/> + <DataSet timestep="1.2079680903419512" part="0" file="vortex-street-21.vtu"/> + <DataSet timestep="1.2530623284432467" part="0" file="vortex-street-22.vtu"/> + <DataSet timestep="1.3029581233222918" part="0" file="vortex-street-23.vtu"/> + <DataSet timestep="1.3581830264152623" part="0" file="vortex-street-24.vtu"/> + <DataSet timestep="1.4195145656064088" part="0" file="vortex-street-25.vtu"/> + <DataSet timestep="1.4907238562248968" part="0" file="vortex-street-26.vtu"/> + <DataSet timestep="1.5832511589564664" part="0" file="vortex-street-27.vtu"/> + <DataSet timestep="1.7000138498077326" part="0" file="vortex-street-28.vtu"/> + <DataSet timestep="1.8492012946660041" part="0" file="vortex-street-29.vtu"/> + <DataSet timestep="2.032444667381421" part="0" file="vortex-street-30.vtu"/> + <DataSet timestep="2.2547567635523666" part="0" file="vortex-street-31.vtu"/> + <DataSet timestep="2.5503285566085734" part="0" file="vortex-street-32.vtu"/> + <DataSet timestep="3.0536116937234974" part="0" file="vortex-street-33.vtu"/> + <DataSet timestep="3.9273749853824538" part="0" file="vortex-street-34.vtu"/> </Collection> </VTKFile>