4. Operands#
4.1. Operand ADAPTATION#
♦ ADAPTATION =/'RAFF_DERA'
/”RAFFINEMENT” /”DERAFFINEMENT” /”RAFF_DERA_ZONE” /”RAFFINEMENT_UNIFORME” /”DERAFFINEMENT_UNIFORME” /”RIEN” /”MODIFICATION” /”LECTURE”
This operand makes it possible to define the type of adaptation desired.
First, we find the modes of adaptation that are controlled by a field. In other words, the decision to (de) refine a mesh is taken according to the value of a field calculated previously on this mesh. The choice can be made between three variants:
“RAFF_DERA”: the mesh is refined and unrefined according to the field. It is the recommended option.
“RAFFINEMENT”: only the refinement function is activated. No mesh will be unrefined.
“DERAFFINEMENT”: it’s the other way around; only the deraffine function is activated. No knitwear will be refined.
Second, it is possible to decide to adapt the mesh in geometric areas defined by boxes. All meshes where at least two knots are present in one of these boxes will be retained. This allows refinements or deraffinations to be carried out a priori, without having done any calculations.
“RAFF_DERA_ZONE”: the meshes in each of the defined boxes are refined or unrefined.
Finally, it is possible to activate a uniform adaptation of a mesh. In other words, all the meshes in the mesh are treated in the same way. The choice can be made between three variants:
“RAFFINEMENT_UNIFORME”: all the stitches are refined,
“DERAFFINEMENT_UNIFORME”: all the stitches are unrefined,
“RIEN”: all the meshes are retained; the mesh is the same at the exit as at the input.
Notes:
When you apply a de-refinement option, you’re just going back to previous refinements. This option should be understood as de-refinement. In particular, it will never be possible to obtain a mesh that is coarser than the initial mesh.
Refinement or deraffine options may only apply to a portion of the mesh. This is achieved by the filtering option GROUP_MA or GROUP_NO .
Two complementary options exist:
The first allows the modification of the mesh, to change the degree of the mesh:
“MODIFICATION”: the mesh is changed globally.
The second allows you to read fields at Gauss points that have been updated on the new mesh:
“LECTURE”: the fields at the Gauss points are read.
4.2. Operand MAILLAGE_N#
♦ MAILLAGE_N = man
The mesh type [mesh] to be adapted or modified. Attention, the adaptation can only relate to the following meshes: mesh-points, segments, triangles, quadrangles, tetrahedra, hexahedra or pentahedra. If a mesh comprising other meshes is provided, for example pyramids, two scenarios are possible: either an erroneous stop, or an adaptation to the authorized zone and an identical reproduction of the rest of the mesh. The choice between these two modes of operation is made by the keyword ELEMENTS_NON_HOMARD.
The mesh is in degrees 1 or 2, but it is not possible to mix the two.
In all cases, the presence of HEXA27 enriched meshes is prohibited.
When the choice has been made to read fields at Gauss points, we give here the mesh on which they are located.
4.3. Operand MAILLAGE_NP1#
◊ MAILLAGE_NP1 = co (manp1)
The name of the [mesh] type concept that will contain the mesh resulting from the adaptation. This name must respect the usual constraints of concept names (8 characters maximum) and must not have already been used.
4.4. Operand MAILLAGE_NP1_ANNEXE#
♦ MAILLAGE_NP1_ANNEXE = co (manp1ann)
This operand makes it possible to produce a mesh similar to the mesh obtained by operand MAILLAGE_NP1, but of a different degree. It is useful in thermo-mechanics where the thermal calculation takes place on the mesh in degree 1 and the mechanics on the same mesh but in degree 2. This name must respect the usual constraints of concept names (8 characters maximum) and must not have already been used.
4.5. Operand IDENTIFICATION#
◊ IDENTIFICATION = refmesh
Assume that the mesh resulting from an adaptation (M 1) is then slightly modified (in M 1 bis). If we adapt this modified mesh, we will naturally not be able to benefit from deraffination.
In this situation, it is possible to indicate that the modified mesh (MAILLAGE_N =M1bis) can be considered to be of the same line as M1 by indicating IDENTIFICATION =M1. Thus, the history of M1 can be used to derrefine M1bis.
Of course, it is essential that the meshes are very close and to check the result of the adaptation carefully.
4.6. Choice of the field of adaptation management#
In the case of free adaptation, the meshes to be refined or deraffinated are controlled by a field. This field is contained either in a result structure or in a quantity field. This field can be an error indicator field in the numerical sense of the term (QIRE_ELEM for example) but it is not mandatory; any field can be used. For example, adaptation can be controlled by the field of constraints or by a field constructed specifically such as a distance or a damage criterion. It is sufficient for this field to be defined by its name as described in the documents [U4.81.01], [U4.81.02], or [U4.81.03].
If the field is a node field, the refining/de-refining decision will be made on each edge based on the values of the field on its nodes. If the field is a constant field per element, it is this value that will drive the refinement/deraffination of the mesh. If the field is a field with nodes per element or at Gauss points, the algorithm will use the maximum value in the mesh to decide on refinement/deraffination.
4.6.1. Operand RESULTAT_N#
/◊ RESULTAT_N = resun
This operand allows you to designate the concept of type [result] which contains the field to be used for free adaptation.
4.6.1.1. Operand NOM_CHAM#
◊ NOM_CHAM = symb name
We specify here which field is used to pilot the adaptation.
Attention:
The field must be present in the result; if it is not present, it is not automatically calculated.
4.6.2. Operand CHAM_GD#
/◊ CHAM_GD = cham_gd_i
This operand makes it possible to designate the concept of type [cham_gd] which contains the field to be used to control the free adaptation.
4.6.3. Operand NOM_CMP#
◊ NOM_CMP = l_cmp
Name of the field component that should be used to control mesh adaptation. If several components are desired, give the list here.
If no components are defined here, the command will take all the components that exist in the transmitted field.
The type of consideration of the component (s) is controlled by USAGE_CMP.
4.6.4. Selecting the time parameter of the field#
If the result structure contains the required field for only one order number, nothing needs to be specified. The values in the field at this order number will be used.
If not, you must specify which number it is. This is done by designating an order number or an instant value. Refer to document [U4.71.00] for details on these keywords.
4.6.5. Operand USAGE_CMP#
◊ USAGE_CMP =/'NORME_L2' [DEFAUT]
/”NORME_INFINIE” /”ABSOLU” /”RELATIF”
Here we specify how to treat the various components of the field driving adaptation. It is assumed that refinement focuses on the large values examined and, symmetrically, derefinement focuses on the small values. By default, refinement and derefinement will be filtered by examining the L2 norm of the components of the field on the cells (or nodes), that is to say the square root of the sum of the squares of the values of the components (so-called Euclidean norm).
If several components have been selected, one can choose between two types of norm: either the L2 norm, the choice by default, or the infinite norm, that is to say the largest of the absolute values of the components.
If only one component is selected to control the adaptation, the choices NORME_L2, NORME_INFINIE and ABSOLU are equivalent: we will examine the absolute value of the field. An alternative is possible: using RELATIF allows you to control the adaptation with the raw values of the field. In this case, for a field whose values are negative, the refinement being based on the maximum values, it will be the areas where the value is close to 0 that will be refined; symmetrically, the derefinement will focus on the areas where the value is very large negatively.
4.6.6. Operand USAGE_CHAMP#
◊ USAGE_CHAMP = /' MAILLE '[DEFAUT]
/” SAUT “
By default, the adaptation is managed by sorting the values of the transmitted field, mesh by mesh or node by node.
With the variant SAUT, HOMARD we will sort on the field jump between cells, according to the following method. For each mesh, HOMARD starts by calculating the maximum of the absolute difference between the value of the field on the current mesh and its value on each of the neighboring cells. This maximum is attributed to the current mesh. Then, we sort the cells on these maximum differences according to the usual criteria.
In 2D, the neighbors examined are the triangles/quadrangles that share an edge with the current mesh.
In 3D, these are the volume meshes that share a triangular or quadrangular face with the current mesh.
If the field is defined per node, neighbors are the nodes that share an edge with the current node.
Note:
This option makes it easy to adapt the mesh by setting the objective of a regular variation of a field from one mesh to another. Thus, choosing the type SAUT and the field SIEF_ELGA makes it possible to obtain a mesh where the strong variations in constraints from one mesh to its neighbor will be attenuated.
4.6.7. Operand ADAP_INIT#
◊ ADAP_INIT =/'GARDER' [DEFAUT]
/”RAFFINER” /”DERAFFINER”
When the field controlling the adaptation is defined throughout the mesh, this option has no effect.
Otherwise, it allows you to specify how regions where this field is not defined are treated.
With variant GARDER, the meshes of regions where the indicator is not defined are a priori kept as they are. It is the default option.
With variant RAFFINER, the meshes of the regions where the indicator is not defined are a priori cut out.
With variant DERAFFINER, the meshes of regions where the indicator is not defined are*a priori* reactivated.
Obviously, this is only an initialization and these decisions can evolve to ensure the conformity of the mesh, taking into account the decisions made to the neighboring cells.
Note:
This option is particularly useful when using an indicator built from a field. For example, damage calculated in a given region is used while elsewhere it is not defined. You can choose not to touch the other stitches or to try to deraffine them.
For example: in excavation calculations, meshes are removed from the model to simulate digging; these meshes no longer carry an indicator value. If we don’t do anything, they stay in the mesh. If the variant DERAFFINER is chosen, they will be unrefined as the excavation progresses.
4.7. Operand CRIT_RAFF_xxxx#
In the case of free adaptation involving mesh refinement, it is necessary to define a high refinement criterion. All meshes for which the field exceeds this criterion will be refined. It is important to look at the distribution of the field afterwards. This is possible thanks to the prints made by HOMARD in the mess file. In particular, there is a table presenting this distribution in the form of a histogram; see chapter 5 for a commented example.
For the choice of the criterion, four variants are possible:
4.7.1. Operand CRIT_RAFF_PE#
◊/CRIT_RAFF_PE = crp
The criterion is defined by a proportion of meshes to be refined. It is a real number between 0 and 1. The process is as follows:
calculation of the number of cells n corresponding to the proportion defined by crp i.e. n=crp x total number of cells
refinement of the n cells with the highest value in the field.
4.7.2. Operand CRIT_RAFF_ABS#
/CRIT_RAFF_ABS = cra
The criterion is defined by an absolute value of the field. All meshes with a value greater than this value will be refined.
4.7.3. Operand CRIT_RAFF_REL#
/CRIT_RAFF_REL = crr
The criterion is defined by a relative value of the field. It is a number between 0 and 1. The process is as follows:
calculation of the minimum and maximum values of the indicator,
calculation of the value corresponding to the required proportion: v= vmin + crr (vmax-vmin),
refinement of all cells where the field is greater than this value.
4.7.4. Operand CRIT_RAFF_MS#
◊/CRIT_RAFF_MS = crms
The criterion is defined by an absolute value of the field, calculated as a function of the mean and the standard deviation of this field. All meshes with a value greater than this value will be refined. The criterion is equal to: mean + n*sigma, where n is the coefficient provided, strictly positive.
4.8. Operand CRIT_DERA_xxxx#
In the case of free adaptation involving deraffination, a low deraffination criterion must be defined. All meshes where the field is less than this criterion will be unrefined. Three variants are possible.
4.8.1. Operand CRIT_DERA_PE#
◊/CRIT_DERA_PE = cdp
The criterion is defined by a proportion of meshes to be unrefined. It is a number between 0 and 1. The process is as follows:
calculation of the number of cells n corresponding to the proportion defined by cdp i.e. n=cdp x
de-refinement of the n meshes with the lowest field value.
4.8.2. Operand CRIT_DERA_ABS#
/CRIT_DERA_ABS = cda
The criterion is defined by an absolute value of the field. All meshes with a field value less than this value will be unrefined.
4.8.3. Operand CRIT_DERA_REL#
/CRIT_DERA_REL = cdr
The criterion is defined by a relative value of the field. It is a number between 0 and 1. The process is as follows:
calculation of the minimum and maximum values of the indicator,
calculation of the error value*v corresponding to the proportion cdr such that: v= vmin + cdr (vmax-vmin),
unrefinement of all cells where the field is less than this value.
4.8.4. Operand CRIT_DERA_MS#
◊/CRIT_DERA_MS = cdms
The criterion is defined by an absolute value of the field, calculated as a function of the mean and the standard deviation of this field. All meshes with a value less than this value will be unrefined. The criterion is equal to: mean - n*sigma, where n is the coefficient provided, strictly positive.
4.9. Keyword ZONE#
♦ ZONE =_F (
In the case of a request for adaptation by zone, at least one zone must be defined. This keyword should be used as many times as you want to define areas of adaptation. The principle is as follows: an area is defined by coordinates and then each mesh whose at least one edge is in this zone will be selected.
There are several types of zones to choose from.
Attention:
For a calculation that would be 2D, the types of areas are in fact rectangles or circles. But as the concept of strictly 2D meshing is unknown in Code_Aster at the time the commands are created, it will be assumed that the 3rd z-coordinate is zero.
4.9.1. Type of zone#
♦ TYPE =/'RECTANGLE'
/”BOITE” /”DISQUE” /”SPHERE” /”CYLINDRE” /”DISQUE_PERCE” /”TUYAU”
This operand allows you to define the type of zone you want.
4.9.2. Use of the zone#
♦ USAGE =/'RAFFINEMENT' [DEFAUT]
“DERAFFINEMENT”
This operand allows you to define the use assigned to the zone. With the choice “RAFFINEMENT”, all the edges whose two ends belong to the zone will be cut. With the choice “DERAFFINEMENT”, all the edges whose two ends belong to the zone will be reactivated.
4.9.3. Case of the rectangle#
4.9.3.1. Operands X_ MINI, X_ MAXI, Y_, Y_ MINI, Y_ MAXI#
♦ X_ MINI = x_mini
♦ X_ MAXI = x_max
♦ Y_ MINI = y_mini
♦ Y_ MAXI = y_max
These are the extreme values of the coordinates of the rectangle encompassing the cells to be refined.
4.9.4. Case of the parallelepipedic box#
4.9.4.1. Operands X_ MINI, X_ MAXI, Y_, Y_ MINI, Y_, Y_ MAXI, Z_ MINI, Z_ MAXI#
♦ X_ MINI = x_mini
♦ X_ MAXI = x_max
♦ Y_ MINI = y_mini
♦ Y_ MAXI = y_max
♦ Z_ MINI = z_mini
♦ Z_ MAXI = z_max
These are the extreme values of the coordinates of the box encompassing the cells to be refined.
4.9.5. Disc case#
4.9.5.1. Operands X_ CENTRE, Y_ CENTRE#
♦ X_ CENTRE = x_center
♦ Y_ CENTRE = y_center
These are the coordinates of the center of the disk.
4.9.5.2. Operand RAYON#
♦ RAYON = radius
It is the radius of the disk.
4.9.6. Case of the sphere#
4.9.6.1. Operands X_ CENTRE, Y_ CENTRE, Z_ CENTRE#
♦ X_ CENTRE = x_center
♦ Y_ CENTRE = y_center
♦ Z_ CENTRE = z_center
These are the coordinates of the center of the sphere.
4.9.6.2. Operand RAYON#
♦ RAYON = radius
It is the radius of the sphere.
4.9.7. Cylinder case#
The cylinder is defined by an axis and a radius. It is limited by two planes perpendicular to the axis. The first plane is positioned by a point on the axis. The second plane is distant from the first by a height, in the direction of the defined axial vector.
4.9.7.1. Operands X_ AXE, Y_ AXE, Z_ AXE#
♦ X_ AXE = x_axis
♦ Y_ AXE = y_axis
♦ Z_ AXE = z_axis
These are the coordinates of the direction vector of the cylinder axis. Orientation does not matter. The vector is not necessarily standardized.
4.9.7.2. Operands X_ BASE, Y_ BASE, Z_ BASE#
♦ X_ BASE = x_base
♦ Y_ BASE = y_base
♦ Z_ BASE = z_base
These are the coordinates of a point at the base of the cylinder and located on the axis.
4.9.7.3. Operand RAYON#
♦ RAYON = radius
It’s the radius of the cylinder.
4.9.7.4. Operand HAUTEUR#
♦ HAUTEUR = height
It’s the height of the cylinder.
4.9.8. Case of a pierced disc#
4.9.8.1. Operands X_ CENTRE, Y_ CENTRE#
♦ X_ CENTRE = x_center
♦ Y_ CENTRE = y_center
These are the coordinates of the center of the disk.
4.9.8.2. Operands RAYON_INT, RAYON_EXT#
♦ RAYON_INT = int_radius
♦ RAYON_EXT = ext_radius
These are the inner and outer rays of the pierced disc.
4.9.9. Pipe case#
The pipe is defined by an axis and its internal and external radii. It is limited by two planes perpendicular to the axis. The first plane is positioned by a point on the axis. The second plane is distant from the first by a height, in the direction of the defined axial vector.
4.9.9.1. Operands X_ AXE, Y_ AXE, Z_ AXE#
♦ X_ AXE = x_axis
♦ Y_ AXE = y_axis
♦ Z_ AXE = z_axis
These are the coordinates of the direction vector of the pipe axis. Orientation does not matter. The vector is not necessarily standardized.
4.9.9.2. Operands X_ BASE, Y_ BASE, Z_ BASE#
♦ X_ BASE = x_base
♦ Y_ BASE = y_base
♦ Z_ BASE = z_base
These are the coordinates of a point at the base of the pipe and located on the axis.
4.9.9.3. Operands RAYON_INT, RAYON_EXT#
♦ RAYON_INT = int_radius
♦ RAYON_EXT = ext_radius
These are the inner and outer radii of the pipe.
4.9.9.4. Operand HAUTEUR#
♦ HAUTEUR = height
It’s the height of the pipe.
4.10. Operands GROUP_MA/GROUPE_NO#
◊ GROUP_MA = l_grma
◊ GROUP_NO = l_grno
If this option is absent, adaptation management applies to the entire mesh. If we want to restrict this control to a part of the mesh, we give here the list of groups that define this part.
Example 1, to refine a mesh region uniformly: uniform refinement is requested and the list of cell groups forming this region is given.
Example 2, to apply the adaptation management field only to certain regions: refinement/de-refinement with the field is requested and the list of mesh groups forming this region is provided.
Notes:
For all the 1D, 2D or 3D meshes contained in the groups in the list, there is refinement according to the criteria used. For the 0D meshes or the nodes contained in the groups, the edges whose two ends are in these lists are retained.
The selected meshes are adapted, but the adaptation will certainly go a step further to be able to provide a compliant mesh at the output.
4.11. Operand DIAM_MIN#
◊ DIAM_MIN = diamin
Remember that the diameter of a mesh is the length of the largest segment that can be drawn inside. For a triangle or a tetrahedron, the diameter is the length of the longest side. For a quadrangle, hexahedron, or pentahedron, the diameter is the length of the largest diagonal.
Giving a value to diamin makes it possible to step up an extremely fine mesh. A mesh that would be selected as having to be refined because of the control field or the geometric zone but whose diameter is already less than this minimum diamin value will not be cut; it will be kept as it is. Attention: it is however possible that in the end it will still be cut if its neighbors are cut up, to respect the conformity of the final mesh.
By default, no limit is given: you can get meshes as small as you want.
4.12. Operand NIVE_MAX#
◊ NIVE_MAX = Nivmax
This is the maximum level of mesh refinement. In other words, a mesh of the initial mesh cannot be divided more than nivmax times in the whole process. This ensures that the mesh will not become extremely fine in the vicinity of a singularity: the minimum size of an edge will be its initial size divided by 2nivmax.
By default, no limit is given: you can cut as much as you want.
4.13. Operand NIVE_MIN#
◊ NIVE_MIN = Nivmin
This is the minimum level of mesh derefinement. That is to say, only the meshes resulting from at least Nivmin mesh cuts can be unrefined. This makes it possible to ensure that we do not go too high in the deraffination: we thus maintain a minimum fineness of the mesh.
By default, no limit is given: you can de-refine until you find the initial mesh.
4.14. Keyword MAILLAGE_FRONTIERE#
◊ MAILLAGE_FRONTIERE = MAF
Choosing this option allows the adaptation process to follow the curvature of the mesh edges. The option only applies to 1D edges. For 2D edges, use option FRONTIERE_ANALYTIQUE. Here is provided a mesh-like Code_Aster concept that contains a fine mesh of the one-dimensional edges of the geometry. This mesh is therefore formed a priori only of segments. Their lengths are much less than those of the edge segments of the mesh to be adapted. If the adaptation process involves cutting an edge segment, the new node will be placed on the border mesh. Thus, the angles will be softened as the adaptations are made.
The different edges are identified by the groups with the following rules:
the edges are described by groups of segments;
an edge is described by the same group name in the calculation mesh and in the border mesh;
an edge can only have zero or two ends;
it is not essential or not recommended to include straight edges;
the edge can be external, the most common, as well as internal, to separate two materials.
the edge is not necessarily flat; it can be a curve in 3D space such as the intersection of two cylinders for example.
In other words, a group of edge segments must include a list of segments forming a line.
Note:
We will look at the test cases zzzz121d, zzzz121d, zzzz175a, zzzz175cet* zzzz259a for examples of border monitoring management as well as the HOMARD WEB site for a graphic illustration of the result obtained.
Example:
4.14.1. Operand GROUP_MA_FRONT#
◊ GROUP_MA_FRONT = l_grma
If this option is absent, border monitoring is done for all groups defined in the border network. If you want to restrict this monitoring to a part of the border, here is a list of the groups of segments that define this part of the border.
4.15. Keyword FRONTIERE_ANALYTIQUE#
◊ FRONTIERE_ANALYTIQUE = _F (
This keyword must be entered as many times as you want to define analytical boundaries. Choosing this option allows the adaptation process to follow the curvature of the mesh edges. The option only applies to 2D edges. For 1D edges, use option MAILLAGE_FRONTIERE. The analytical description of each border to be followed is provided here. If the adaptation process involves cutting an edge stitch, the new node will be positioned on the border, via its description. Thus, the angles will be softened as the adaptations are made.
Note:
We will look at the test cases zzzz175a, zzzz175cet zzzz259a for an example of analytical border tracking.
When you launch the adaptation several times in a row, it is essential that each analytical border be defined in the same way each time you invoke MACR_ADAP_MAIL : name, type, list of groups, list of groups, geometric characteristics.
4.15.1. Border name#
♦ NOM = name [K]
This operand allows you to define the name associated with the border. The choice of this name is free.
4.15.2. Border type#
♦ TYPE =/'SPHERE'
/”CYLINDRE” /”CONE_A” /”CONE_R” /”TORE”
This operand allows you to define the type of border desired: sphere, cylinder.
4.15.3. Operand GROUP_MA#
♦ GROUP_MA = l_grma
One gives here the list of cell groups that define the portion of the border represented by this analytic definition.
4.15.4. Case of the sphere#
4.15.4.1. Operands X_ CENTRE, Y_ CENTRE, Z_ CENTRE#
♦ X_ CENTRE = x_center
♦ Y_ CENTRE = y_center
♦ Z_ CENTRE = z_center
These are the coordinates of the center of the sphere.
4.15.4.2. Operand RAYON#
♦ RAYON = radius
It is the radius of the sphere.
4.15.5. Cylinder case#
The cylinder is defined by an axis, a point on the axis, and a radius.
4.15.5.1. Operands X_ AXE, Y_ AXE, Z_ AXE#
♦ X_ AXE = x_axis
♦ Y_ AXE = y_axis
♦ Z_ AXE = z_axis
These are the coordinates of the direction vector of the cylinder axis. Orientation does not matter. The vector is not necessarily standardized.
4.15.5.2. Operands X_ CENTRE, Y_ CENTRE, Z_ CENTRE#
♦ X_ CENTRE = x_center
♦ Y_ CENTRE = y_center
♦ Z_ CENTRE = z_center
These are the coordinates of a point located on the axis of the cylinder.
4.15.5.3. Operand RAYON#
♦ RAYON = radius
It’s the radius of the cylinder.
4.15.6. Case of the cone defined by an angle#
The cone is defined by an axis, a center on the axis, and an angle.
4.15.6.1. Operands X_ AXE, Y_ AXE, Z_ AXE#
♦ X_ AXE = x_axis
♦ Y_ AXE = y_axis
♦ Z_ AXE = z_axis
These are the coordinates of the direction vector of the cone axis. Orientation does not matter. The vector is not necessarily standardized.
4.15.6.2. Operands X_ CENTRE, Y_ CENTRE, Z_ CENTRE#
♦ X_ CENTRE = x_center
♦ Y_ CENTRE = y_center
♦ Z_ CENTRE = z_center
These are the coordinates of the center on the cone axis.
4.15.6.3. Operand ANGLE#
♦ ANGLE = angle
It is the angle in degrees of the cone.
4.15.7. Case of the cone defined by radii#
The cone is defined by two points on its axis and the two radii corresponding to these positions.
4.15.7.1. Operands X_ CENTRE, Y_ CENTRE, Z_ CENTRE#
♦ X_ CENTRE = x_center
♦ Y_ CENTRE = y_center
♦ Z_ CENTRE = z_center
These are the coordinates of the first point located on the axis of the cylinder.
4.15.7.2. Operand RAYON#
♦ RAYON = radius
This is the radius of the cone for this first position on the axis.
4.15.7.3. Operands X_ CENTRE2, Y_ CENTRE2, Z_ CENTRE2#
♦ X_ CENTRE2 = x_centre2
♦ Y_ CENTRE2 = y_centre2
♦ Z_ CENTRE2 = z_centre2
These are the coordinates of the second point located on the axis of the cylinder.
4.15.7.4. Operand RAYON2#
♦ RAYON2 = ray2
This is the radius of the cone for this second position on the axis.
4.15.8. Torus case#
The torus is defined by an axis, a center, and the two radii.
4.15.8.1. Operands X_ AXE, Y_ AXE, Z_ AXE#
♦ X_ AXE = x_axis
♦ Y_ AXE = y_axis
♦ Z_ AXE = z_axis
These are the coordinates of the direction vector of the torus axis. Orientation does not matter. The vector is not necessarily standardized.
4.15.8.2. Operands X_ CENTRE, Y_ CENTRE, Z_ CENTRE#
♦ X_ CENTRE = x_center
♦ Y_ CENTRE = y_center
♦ Z_ CENTRE = z_center
These are the coordinates of the center of the torus.
4.15.8.3. Operand RAYON#
♦ RAYON = radius
It is the radius of revolution of the torus.
4.15.8.4. Operand RAYON2#
♦ RAYON2 = ray2
It is the radius of the primary circle that rotates around the axis of the torus.
4.16. Keyword MAJ_CHAM#
◊ MAJ_CHAM = _F (
This keyword should be used as many times as there are fields to update from the old mesh to the adapted mesh. This field is contained either in a result structure or in a quantity field.
Note:
Make sure that the field is set to a mesh identical to the mesh entered under the operand MAILLAGE_N .
4.16.1. Operand RESULTAT#
/◊ RESULTAT =resu
Name of the concept [result] containing the field to be updated.
4.16.1.1. Operand NOM_CHAM#
◊ NOM_CHAM =symb name [:ref:`K16 <K16>`]
Symbolic name of the field you want to express on the new mesh.
4.16.2. Operand CHAM_GD#
/◊ CHAM_GD = cham_gd
Name of the concept [cham_gd] containing the field to be updated.
4.16.3. Operand NOM_CMP#
◊ NOM_CMP = l_cmp
The name of the field component that needs to be updated. If several components are desired, give the list here.
If no components are defined here, the command will take all the components that exist in the transmitted field.
4.16.4. Selecting the time parameter of the field to be updated#
The selection of the order number associated with the field to be interpolated is done by designating an order number or an instant value. Refer to document [U4.71.00] for details on these keywords.
4.16.5. Operand TYPE_MAJ#
◊ TYPE_MAJ =/'AUTO' [DEFAUT]
/”ISOP2”
Here we specify the type of update you want.
By default, the “AUTO” operation is… automatic: the interpolation is done according to the nature of the field.
For a constant field per element, if a mesh is split, the value of the field is transferred as it is to the daughter cells.
For a field at the nodes, interpolation takes place with the form functions P1 or P2 depending on the support of the field. A variant is possible for the fields at the nodes expressed on a degree 2 mesh. By specifying “ISOP2”, the interpolation is done by functions of form P1 expressed on the submeshes of the element. This technique ensures that the interpolated field respects the extreme values of the initial field on a mesh.
For a field with Gauss points, the update takes place only in cases where the cell types are homogeneous between the input and the output: triangle or tetrahedron. For quadrangles, hexahedra or pentahedra, nothing is done because we do not know how to define the families of Gauss points on the triangles or tetrahedra produced. For a triangle mesh, the procedure is as follows:
for a triangle that is unchanged after the adaptation, the values at the Gauss points are repeated the same.
for a triangle divided into 2 or 4, we calculate the mean value of the field on all the Gauss points and this value is assigned to all the Gauss points of all the child triangles.
for a triangle that disappears (in case of deraffination), we calculate the average of the field on all the Gauss points of this triangle and its brothers and this value is attributed to all the Gauss points of the father triangle that reappears.
This mechanism ensures that extreme milestones are not crossed. The same technique is applied to tetrahedra.
Attention:
There can be no consistency check between the requested type and the true type of the field to be interpolated.
4.16.6. Operand CHAM_MAJ#
♦ CHAM_MAJ = co (chpmaj) [:ref:`K8 <K8>`]
Name of the concept that will contain the field expressed on the new mesh. This concept does not have to exist. It will be automatically created.
A field with nodes or elements will be read automatically by the macro-command that requires the adaptation or modification of the mesh. It will be available in the calculation game as soon as the macro command is finished. However, this is not possible for a field expressed at Gauss points because Code_Aster needs to know the model to read. To do this, you have to proceed in 3 steps. The field is calculated by the macro command that requested the adaptation or modification of the mesh, as for a field with nodes. Next, a new model must be applied to the new mesh using the AFFE_MODELE command. Finally, the reading will be done by a new invocation of MACR_ADAP_MAIL using the parameter ADAPTATION = “LECTURE” and the provision of the mesh and the model.
Note:
We will look at the test case zzzz175b for an example of updating and reading fields of various types.
4.16.7. Operand TYPE_CHAM#
♦ TYPE_CHAM = /' NOEU_DEPL_R '
/” NOEU_TEMP_R “ /” ELGA_SIEF_R “ /etc…
This refers to the type of concept to be updated on the new mesh. The name of this type is constructed with the usual logic of*Code_Aster*. The first 4 characters are “NOEU”, “ELEM”, or “ELGA”. Then we find “_”. The following sequence defines the field type: “TEMP”, “DEPL”, etc. The name ends in “_R” for a real field.
Example: “NOEU_TEMP_R”, “NOEU_DEPL_R”, etc.
Attention:
There can be no consistency check between the requested type and the true type of the field to be interpolated.
4.17. Keyword ADD_CHAM#
◊ ADD_CHAM = _F (
This keyword is to be used to produce particular fields on the adapted mesh.
4.17.1. Operand CHAM_GD#
♦ CHAM_GD = co (chpmaj) [:ref:`K8 <K8>`]
Name of the concept that will contain the field expressed on the new mesh. This concept does not have to exist. It will be automatically created.
Note:
We will look at the test cases zzzz121b and zzzz121f for an example of adding fields of different types.
4.17.2. Operand CHAM_CAT#
♦ CHAM_CAT = /' NIVEAU '
/” QUALITE “ /” DIAMETRE “
Here we designate the category of field that we want to produce.
With “NIVEAU”, the product field will contain its level for each mesh. We recall that an initial level mesh is level 0. Then a stitch resulting from n standard cuts of an initial stitch will raise the n level. A mesh that ensures the transition of compliance between the n level and the n+1 level will carry the n+0.5 level.
With “QUALITE”, the product field will contain the quality value for each stitch.
With “DIAMETRE”, the product field will contain the diameter value for each mesh.
4.18. Operand MODELE#
◊ MODELE = model [model]
Attention:
This operand is only active when you have chosen “ LECTURE “ as the type of adaptation.
This operand makes it possible to specify the model that was assigned to the mesh on which the fields expressed at Gauss points were updated.
Note:
We will look at the test case zzzz175b for an example of updating and reading fields at Gauss points.
4.19. Operand DEGRE#
◊ DEGRE = /' OUI '
Attention:
This operand is only active when you have chosen “ MODIFICATION “ as the type of adaptation.
If the choice is” OUI “, the mesh degree is globally changed.
Note:
Combined with MAJ_CHAM, the operand DEGRE can be used for example for post-treatment of pressure in THM (see doc [U2.04.05]). For some 3D studies with large meshes, it can sometimes prove to be more efficient than PROJ_CHAMP.
4.20. Operand NOMBRE#
Note:
Please consult the document [U7.03.02] describing the order MACR_INFO_MAIL for comments on operand returns QUALITE, INTERPENETRATION, NOMBRE, * , * CONNEXITEet * ** TAILLE. *
◊ NOMBRE = /' OUI '[DEFAUT]
/”NON”
If the choice is” OUI “, a summary of the number of nodes and meshes is printed on the message file.
4.21. Operand QUALITE#
◊ QUALITE =/'NON' [DEFAUT]
/”OUI”
If the choice is” OUI “, a mesh quality report is printed on the message file. The quality of a triangle is defined as the ratio between the length of the longest side and the radius of the inscribed circle. The quality of a quadrangle is defined as the quotient of the product of the longest length and the averages on the sides and diagonals by the smallest of the areas of the triangles internal to the quadrangles. Likewise, the quality of a tetrahedron is defined as the ratio between the length of the longest side and the radius of the inscribed sphere. These ratios are normalized to 1 in the case of an equilateral triangle, square, tetrahedron, or equilateral hexahedron. For any non-equilateral element, the quality is greater than 1. See reference [bib1] for detailed explanations.
The result is presented in the form of tables, with the extreme values.
The interpretation of the values produced depends on the numerical method used for the calculation. Depending on whether the problem is isotropic or not, depending on the speed of spatial variation of the data, depending on the calculation technique, the same mesh can lead to a good Jacobian or not. The main thing at first is to spot the really bad stitches. If we observe that the maximum quality exceeds 100, even 1,000 or 100,000, we must be worried: one or more meshes are very deformed and the mesh must certainly be repeated. Secondly, this quality information should make it possible to compare two meshes that are a prima facie correct, without much value. If the problem is isotropic, it will be advantageous to use the mesh with the quality distribution closest to 1.
Illustrations of quality values from different meshes can be found in [Réf.5].
4.22. Operand DIAMETRE#
◊ DIAMTRE =/'NON' [DEFAUT]
/”OUI”
If the choice is” OUI “, a summary of the mesh diameters is printed on the message file. The diameter of a mesh is defined as the length of the largest segment that can be inserted into the mesh.
For a triangle or a tetrahedron, the diameter corresponds to the length of the longest side.
For a quadrangle, hexahedron, pentahedron, or pyramid, the diameter is the maximum between the length of the longest side and the length of the largest diagonal.
The result is presented in the form of tables, with the extreme values.
4.23. Operand INTERPENETRATION#
◊ INTERPENETRATION =/'NON' [DEFAUT]
/”OUI”
If the choice is” OUI “, we check that the mesh is correct from the point of view of coverage: no mesh fits into another.
4.24. Operand TAILLE#
◊ TAILLE =/'NON' [DEFAUT]
/”OUI”
If the choice is” OUI “, a summary of the sizes of the subdomains is printed on the message file. A subdomain is defined as a set of cells of the same size and belonging to the same groups.
4.25. Operand CONNEXITE#
◊ CONNEXITE =/'NON' [DEFAUT]
/”OUI”
If the choice is” OUI “, a connectivity report is printed on the message file. We will then know if the segments, the 2D elements (triangles and quadrangles combined) or the 3D cells (tetrahedra, hexahedra, pentahedra and pyramids combined) are in one piece or divided into several blocks. We will also know the number of holes in the structure: the through holes or the internal holes.
4.26. Operand PROP_CALCUL#
◊ PROP_CALCUL =/'NON' [DEFAUT]
/”OUI”
If the choice is” OUI “, a diagnosis on the properties of the meshes as elements for calculation is printed on the message file. We count the number of overstressed elements: the elements where all the vertices are located on the edge. We count the volume cells (or surface cells) that touch the edge of the domain but that are not bordered by surface cells (or linear cells).
4.27. The histories#
It should be noted that the mesh can only be unrefined within the same study. If you run a new calculation (using DEBUT and not POURSUITE), the refinement history will be lost.
4.28. Operand LANGUE#
◊ LANGUE =/'FRANCAIS' [DEFAUT]
/”FRENCH” /”ANGLAIS” /”ENGLISH”
This operand specifies the language in which messages from HOMARD are printed.
4.29. Operand VERSION_HOMARD#
◊ VERSION_HOMARD =/'V11_10' [DEFAUT]
/”V11_N” /”V11_N_ PERSO “
This operand allows you to select the version of HOMARD that is used for the adaptation. By default, HOMARD 11.10 is started. It is the reference version. Choosing “V11_N” activates version 11.n of HOMARD which is the development version. The “V11_N_ PERSO “choice activates a user-specific development version. This option allows the HOMARD development team to develop new features. It also allows the user to benefit from an innovation in HOMARD before commissioning in Code_Aster.
4.30. Operand LOGICIEL#
◊ LOGICIEL = software [K]
This option suggests using another coupling interface between Code_Aster and HOMARD than the one provided by default in the directory of tools associated with Code_Aster. This option is in fact reserved for the HOMARD development team to develop new features. It allows you to test new features before modifying the control macro command.
4.31. Operand UNITE#
◊ UNITE = unit [I]
This option is only possible if you have activated the development version of HOMARD, 11.n. The data file transmitted by the user under this logical unit number will be directly transmitted as a complement to the HOMARD configuration file. This option is in fact intended for the HOMARD development team to develop new features. It allows you to test new features before modifying the control macro command.
4.32. Operand ELEMENTS_ACCEPTES#
◊ ELEMENTS_ACCEPTES =/'HOMARD' [DEFAUT]
/”IGNORE_PYRA”
In its current version, HOMARD can read all types of meshes but only adapts to certain types: mesh-points, segments, triangles, quadrangles, tetrahedra, tetrahedra, hexahedron or pentahedron. The mesh is in degrees 1 or 2, but it is not possible to mix the two.
By using the “HOMARD” option, the transmission of a mesh containing anything other than these types of meshes will cause an error to be stopped. It is the default option.
By choosing the “IGNORE_PYRA” option, you can transmit a mesh including pyramids. The adaptation will only cover areas authorized by HOMARD. If, as a result of the spread of refinement, a forbidden zone is hit, there will be an erroneous stop. Otherwise, when the refinement is limited to the authorized area, the other meshes are restored without change.
In all cases, the presence of HEXA27 enriched meshes is prohibited.
4.33. Operand INFO#
◊ INFO =/1
/2 /3 /4
If INFO is 1, the impressions are minimal; we only get those that were explicitly requested, the quality of the stitches for example, and any error messages.
If INFO is 2, we will get the messages sent by the commands underlying the macro-command: IMPR_RESU, LIRE_MAILLAGE, LIRE_RESU.
If INFO is 3, we will get the standard messages from HOMARD, summarizing the execution.
If INFO is 4, we will have all the messages sent by HOMARD, for debugging.