Skip to content

Added sliding boundary nodes to VariationalMeshSmoother #4216

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 38 commits into
base: devel
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
4a50ef6
Sliding boundary nodes working for 2D and 3D (coplanar edges only for…
pbehne Jun 22, 2025
ecad271
Moved logic to constrain node to plane into dedicated function.
pbehne Jun 22, 2025
eb7459c
Added method to constrain nodes to lines in 3D.
pbehne Jun 22, 2025
d76ad06
documentation
pbehne Jun 23, 2025
1262cf6
Added logic where only nodes that share the same bid with neighbors a…
pbehne Jun 28, 2025
405e516
Added equilateral triangle as the target element for TRI3s.
pbehne Jun 28, 2025
11331fb
Cleaned up constrints, added relative_fuzzy_equals to multiple subdom…
pbehne Jun 29, 2025
a9f92bb
Nodes on internal subdomain boundaries are now allowed to slide.
pbehne Jun 30, 2025
3e11730
Fixed bug in constraints where the correct common element and matched…
pbehne Jun 30, 2025
ed5b413
Eliminated a level of indentation.
pbehne Jul 2, 2025
0ea66cb
Moved subdomain constraints ahead of boundary constraints. Result loo…
pbehne Jul 2, 2025
1c3b0bf
Saving current changes that almost fix constraint issues, but not quite.
pbehne Jul 8, 2025
c6e42e7
Refactored variational smoother constraints.
pbehne Jul 15, 2025
4c07077
Fixed bug causing 'node already constrained' error.
pbehne Jul 16, 2025
702e58d
Generalized DistortSquare, now distort sliding boundary nodes.
pbehne Jul 17, 2025
15cf24a
Increased the complexity of the subdomain boundary test.
pbehne Jul 17, 2025
c6e37e4
Added fallback to fixed node constraint in event that constrints do n…
pbehne Jul 17, 2025
6c5303c
Updated identification of subdomain boundary node neighbors.
pbehne Jul 17, 2025
86eee47
Added 1D and 3D tests for the VariationalMeshSmoother.
pbehne Jul 17, 2025
c9973d1
Include variant.
pbehne Jul 17, 2025
db4b69d
Removed some assertions that don't apply in 1D.
pbehne Jul 17, 2025
92200b5
Addressed maybe-uninitialized error.
pbehne Jul 17, 2025
7aeaa2b
Separated testSmoother function into testVariationalSmoother and test…
pbehne Jul 17, 2025
d4e397b
Swaped doxygen syntax from '///' to '/***/'
pbehne Jul 18, 2025
b32de64
Added documentation for Point/Line/PlaneConstraint operators < and ==.
pbehne Jul 18, 2025
3533633
Document the throwing of error in *Constraint structs.
pbehne Jul 18, 2025
899e743
Made *Constraint struct operator< symmetric and compatible with opera…
pbehne Jul 18, 2025
0720610
Changed try/catch to libmesh_try/libmesh_catch.
pbehne Jul 18, 2025
4153e1e
Changed Point/Line/PlaneConstraint structs to classes, made attribute…
pbehne Jul 18, 2025
cf08059
Added _tol attibute to Point/Line/Plane constraints.
pbehne Jul 18, 2025
e6a353f
Silenced variational smoother solver.
pbehne Jul 23, 2025
bca5f98
Added dummy InvalidConstraint class to eliminate dependent on thrown …
pbehne Jul 23, 2025
73e927c
Added explanatory comment.
pbehne Jul 23, 2025
57c7c4e
clang-format on variational_smoother_constraint.C
pbehne Jul 23, 2025
e2d026a
clang-format on mesh_smoother_test.C
pbehne Jul 23, 2025
ea104ce
Addressed John's review.
pbehne Jul 24, 2025
505bb55
indented contents of switch statement.
pbehne Jul 24, 2025
f8c37d4
reindeneted some unindents.
pbehne Jul 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Changed Point/Line/PlaneConstraint structs to classes, made attribute…
…s private.
  • Loading branch information
pbehne committed Jul 18, 2025
commit 4153e1e2e6dd1c2aa2d778545c598b12847a7ee5
84 changes: 64 additions & 20 deletions include/systems/variational_smoother_constraint.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
namespace libMesh
{

struct PointConstraint;
struct LineConstraint;
struct PlaneConstraint;
class PointConstraint;
class LineConstraint;
class PlaneConstraint;

/**
* Type used to store a constraint that may be a PlaneConstraint,
Expand All @@ -42,15 +42,16 @@ using ConstraintVariant =
/**
* Represents a fixed point constraint.
*/
struct PointConstraint {
Point location;
class PointConstraint {

public:
PointConstraint() = default;

/**
* Constructor
* @param p The point defining the constraint.
* @param point The point defining the constraint.
*/
PointConstraint(const Point &p);
PointConstraint(const Point &point);

/**
* Comparison operator for ordering PointConstraint objects.
Expand Down Expand Up @@ -79,23 +80,33 @@ struct PointConstraint {
* intersect.
*/
ConstraintVariant intersect(const ConstraintVariant &other) const;

/**
* Const getter for the _point attribute
*/
const Point &point() const { return _point; }

private:
// Life is easier if we don't make this const
/**
* Location of constraint
*/
Point _point;
};

/**
* Represents a line constraint defined by a base point and direction vector.
*/
struct LineConstraint {
Point r0;
Point dir;

class LineConstraint {
public:
LineConstraint() = default;

/**
* Constructor
* @param p A point on the constraining line.
* @param d the direction of the constraining line.
* @param point A point on the constraining line.
* @param direction the direction of the constraining line.
*/
LineConstraint(const Point &p, const Point &d);
LineConstraint(const Point &point, const Point &direction);

/**
* Comparison operator for ordering LineConstraint objects.
Expand Down Expand Up @@ -146,23 +157,39 @@ struct LineConstraint {
* intersect.
*/
ConstraintVariant intersect(const ConstraintVariant &other) const;

/**
* Const getter for the _point attribute
*/
const Point &point() const { return _point; }

/**
* Const getter for the _direction attribute
*/
const Point &direction() const { return _direction; }

private:
// Life is easier if we don't make these const
/// A point on the constraining line
Point _point;
/// Direction of the constraining line
Point _direction;
};

/**
* Represents a plane constraint defined by a point and normal vector.
*/
struct PlaneConstraint {
Point point;
Point normal;
class PlaneConstraint {

public:
PlaneConstraint() = default;

/**
* Constructor
* @param p A point on the constraining plane.
* @param n the direction normal to the constraining plane.
* @param point A point on the constraining plane.
* @param normal the direction normal to the constraining plane.
*/
PlaneConstraint(const Point &p, const Point &n);
PlaneConstraint(const Point &point, const Point &normal);

/**
* Comparison operator for ordering PlaneConstraint objects.
Expand Down Expand Up @@ -220,6 +247,23 @@ struct PlaneConstraint {
* intersect.
*/
ConstraintVariant intersect(const ConstraintVariant &other) const;

/**
* Const getter for the _point attribute
*/
const Point &point() const { return _point; }

/**
* Const getter for the _normal attribute
*/
const Point &normal() const { return _normal; }

private:
// Life is easier if we don't make these const
/// A point on the constraining plane
Point _point;
/// The direction normal to the constraining plane
Point _normal;
};

/**
Expand Down
Loading
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy