Skip to content
Permalink
Browse files

Merge pull request #13119 from lee7632/concentric_13020

Add smoothing to ConcentricCircleMeshGenerator
  • Loading branch information...
permcody committed Mar 28, 2019
2 parents 699e6c8 + 247f549 commit 85f7bd2aaae2f62de872c54f6a698d23b589e1ba
@@ -4,24 +4,41 @@

## Description

The `ConcentricCircleMeshGenerator` object is to generate meshes for concentric circles. Particularly, it would be useful to generate 2D meshes for typical LWR fuels. Users can refine meshes by providing a higher number of rings for each specified concentric circle region or a higher number of sectors in each quadrant.
The `ConcentricCircleMeshGenerator` object is to generate 2D mesh for concentric circles. Users can refine mesh by providing a high number of rings for each specified concentric circle region or a high number of sectors in each quadrant. The test, [concentric_circle_mesh_generator.i](test/tests/meshgenerators/concentric_circle_mesh_generator/concentric_circle_mesh_generator.i), explains the use of the 'ConcentricCircleMeshGenerator' object. To execute the test only for generating 2D mesh,

```bash
~/projects/moose/test/moose_test-opt -i concentric_circle_mesh_generator.i --mesh-only
```

To execute the test with the engineering and mathematical physics solvers,

```bash
~/projects/moose/test/moose_test-opt -i concentric_circle_mesh2.i
```

!alert note
Be aware: `ConcentricCircleMeshGenerator` only works with the ReplicatedMesh type.

### More Information

`ConcentricCircleMeshGenerator` works by creating the first quadrant called "top_right." MooseEnum called portion controls which portion of meshes is generated. Any other one-fourth portions of circles are generated by rotating the "top_right" portion. Half portions are generated by stitching two different one-fourth portions depending on users' usages.
`ConcentricCircleMeshGenerator` works by creating the first quadrant called "top_right." MooseEnum called 'portion' controls which portion of mesh would be generated. Any other one-fourth portions of circles are generated by rotating the "top_right" portion. Half portions are generated by stitching two different one-fourth portions depending on users' usages.

Users must provide the input parameters, such as a number of sectors in a quadrant, a list of radii, a list of rings, the inner mesh fraction, a boolean for the volume preserving function, and an iteration number for Laplace smoothing.
* list of radii: specific locations of radii of concentric circles
* list of rings: numbers of rings for concentric circles
* inner mesh fraction: ratio of the length of the inner square to the radius of the innermost circle mesh
* volume for concentric circles can be preserved or not (on/off).
* iteration number: number of iterations for Laplace smoothing

Users can choose if mesh for the enclosing square is added to the concentric circle mesh or not. A portion can be specified, however, it is not required. The default setting generates the full concentric circles.

## Developer Information

Users must provide the input parameters such as a number of sectors in a quadrant, a list of radii, a list of rings, the inner mesh fraction, a boolean for the volume preserving function.
- list of radii: specific locations of radii of concentric circles
- list of rings: numbers of rings for concentric circles
- inner mesh fraction: ratio of the length of the inner square to the radius of the innermost circle mesh
- volume for concentric circles can be preserved or not (on/off).
If you're going to enhance `ConcentricCircleMeshGenerator,` Laplace smoothing has to be constrained to the center circle. Efficient algorithms for adding nodes and elements, including the connectivity, may be needed. They can be found in `ConcentricCircleMeshGenerator.C`.

Users can choose if meshes for the moderator are added to meshes for concentric circles or not. A portion can be specified, however, it is not required. The default setting generates the full concentric circles.
## Example Syntax

## Further ConcentricCircleMeshGenerator Information
!listing test/tests/meshgenerators/concentric_circle_mesh_generator/concentric_circle_mesh_generator.i

!syntax parameters /MeshGenerators/ConcentricCircleMeshGenerator

@@ -13,7 +13,6 @@
#include "MeshGenerator.h"
#include "MooseEnum.h"

// Forward declarations
class ConcentricCircleMeshGenerator;

template <>
@@ -36,21 +35,24 @@ class ConcentricCircleMeshGenerator : public MeshGenerator
/// Radii of concentric circles
std::vector<Real> _radii;

/// Number of rings in each circle or in the moderator
/// Number of rings in each circle or in the enclosing square
std::vector<unsigned int> _rings;

/// Size of inner square in relation to radius of the innermost concentric circle
Real _inner_mesh_fraction;

/// Adding the moderator is optional
/// Adding the enclosing square is optional
bool _has_outer_square;
Real _pitch;

/// Volume preserving function is optional
bool _preserve_volumes;

/// Iteration number for Laplace smoothing
unsigned int _smoothing_max_it;

/// Control of which portion of mesh will be developed
MooseEnum _portion;
};

#endif // ANNULARMESHGENERATOR_H
#endif /* CONCENTRICCIRCLEMESHGENERATOR_H */
Oops, something went wrong.

0 comments on commit 85f7bd2

Please sign in to comment.
You can’t perform that action at this time.