Issue whith mesh

Issue trying to create monopole with planar surface or rectangle underneath and attached to antenna, was trying to do it from half wave dipole example.

  1. i can’t remove surface 2
  2. when perfomimg simulatiom, it says there is no common edge( Positive side : 0 Negative side : 1
    No edges found in common with surfaces 0 and 1. Please ensure that you have selected the correct surface IDs.
    NSEM returned an error. Please check the error log for more information.Returned 1)

here comes Journal editor with main operations

reset

Create a ~900 MHz monopole

#{lam = 333.3}
#{a = 0.005lam}
#{w = 4
a}
#{L = 0.47*lam}

create surface rectangle width {w} height {L} yplane
split surface 1 across location position {-w} 0 0 location position {w} 0 0

view top
#keep im mind surface created
create planar surface with plane zplane offset -78.3255 intersecting body 1

create surface rectangle width 1000 height 100 zplane
#this depemds om surface created
move Surface 5 location surface 4 include_merged

#delete this surface created
delete surface 4

nsem voltage source “port” pos surface 3 neg surface 5 impedance 75
nsem print status

block 1 surface 3,5
surface 3,5 scheme auto
surface 3,5 size {w}
mesh surface all

save cub5 “monopole.cub5” overwrite journal

@diogo76, thanks for your question. I’ve attached below an updated version of your journal file based on what I gathered you’re trying to do. First, I create the monopole strip. Prep automatically centers all newly created entities, so I move the strip up by half its length so that the bottom of the strip will be aligned with the ground plane. Next, I create the ground plane. I used the same dimensions you had. You can adjust the variables for ground plane size if this wasn’t your intent.

Next, we want to mimic the effect of a coaxial feed at the bottom of the monopole. This is done simply by splitting the volume representing the monopole strip. The choice of where to put the split is somewhat arbitrary, but it’s best practice to put it close to the ground plane. However, we don’t want it so close as to force the mesher to create poor aspect mesh elements. Thus, I typically place the split at a location above the ground plane about the same width as the strip.

One key piece you were missing is the imprint/merge step. In the Nullspace EM user guide, see the section on “CAD Model & Meshing” for discussion on the importance of this step. Basically, this ensures that CAD entities that overlap form common curves and surfaces. For this example, we want the bottom edge of the monopole to be “imprinted” into the ground plane, and the curve to be considered common to both the ground plane and the monopole. This will ensure the mesher see those entities as connected, and you’ll get the appropriate electrical connectivity.

Next, for this model, all surfaces need to be assigned the PEC material. You don’t have to do that explicitly for surfaces associated with voltage sources since Prep will do that automatically. However, in this case, the syntax is simple enough to simple say “all” and let all surfaces get assigned.

For meshing, the general rule of thumb for mesh size is lambda/10 when using the default basis function order (see again the CAD Model and Meshing section for more discussion). I chose lambda/15 since there are ground plane edges near the monopole, and we don’t want the mesher to produce highly skewed elements. Additionally, we want to capture the effects of the ground plane edges being near the monopole.

You’ll note that I explicitly set the mesh size for the negative surface of the monopole to half the strip width. This is due to a limitation in the mesher that a curve imprinted in a surface needs to have 2 mesh edges across it.

More generally, you’ll note that I’ve used a lot of variables and Prep journal syntax to capture entity IDs. This is more of a stylistic approach but is generally a good practice as models get more complex. In this model, you could have manually looked at the volume and surface IDs to get the same effect. Using the variable approach will help you with more complex models and optimizations in particular.

reset  # Clear Prep
reset aprepro # Clear old variables

view top

#{freq = 0.9}
#{lam = 0.3/freq*1000}  # Units in mm
#{a = 0.005*lam}
#{w = 4*a}
#{L = 0.23*lam}  # Quarter-wave monopole

# Ground plane dimensions
#{gnd_w = 1000} 
#{gnd_h = 100}

# Create the monopole
create surface rectangle width {w} height {L} yplane
#{v_monopole = Id("volume")}
move volume {v_monopole} z {L/2}

# Create the ground plane
create surface rectangle width {gnd_w} height {gnd_h} zplane
#{s_gnd = Id("surface")}

# Split the monopole surface near the ground plane to create a voltage source curve
split surface in volume {v_monopole} across location position {-w} 0 {w} location position {w} 0 {w}
#{s_monopole_neg = Id("surface")}

# Imprint and merge to create common curves among surfaces at intersections
imprint all
merge all

# Assign surfaces with PEC material and create the voltage source
nsem assign surface all material "PEC"
nsem voltage source “port” pos surface {s_monopole_neg-1} neg surface {s_monopole_neg} impedance 75

block 1 surface all
#{mesh_size = lam/15}
surface all scheme pave
surface {s_monopole_neg} size {w/2}
mesh surface {s_monopole_neg}
surface {s_monopole_neg-1} size {w}
mesh surface {s_monopole_neg-1}
surface not is_meshed size {mesh_size}
mesh surface not is_meshed

nsem print status

I hope this was helpful. Happy to answer more questions any time.

I was trying to simulate a bigger ground plane(10lambda x10lamba), but my pc is struggling to simulate and get results for a model of that size.
Any tips for addressing this kind issues.
Thanks for the help.

How much RAM do you have?

The mesh settings in the original file I sent are tailored slightly for the fact that the ground plane was small in that case. With the larger ground plane, you can use the rule of thumb that the mesh size would be lambda/10. I made these changes to the file in my previous comment:

# Ground plane dimensions
#{gnd_w = 10*lam} 
#{gnd_h = 10*lam}
#{mesh_size = lam/10}

This results in a mesh requiring ~3 GB of RAM.

You can also reduce the mesh size even further and use higher order basis functions. To do this, set the follow in the journal file:

#{mesh_size = lam/5}

In your simulation configuration file, in the section setting up the model, add

model.set_order(2)

This will require ~1.8 GB of RAM.

Thanks for your questions.

Thanks for the help.

I have 8 GB of RAM.

In the future, most likely will use models that will be more complex. Besides the techniques above, there is any more advice for addressing this kind of issues and there is any way that i know in advance, how much space the model will require, in order to take measures to deal with it.

I was working from script that is above, instead of strip on top of ground plane, is on top of small substrate that is connected to ground plane through 4 cylinders, but i wasn’t able to put them in wanted positions( i was using move command), for rest keep same approach( i don’t know if i’m doing in right way).
Another question, if i wanted to tilt the monopole strip, the appropriate manner is through move for a specific location or there is another method?
Thanks for the help.

reset  # Clear Prep
reset aprepro # Clear old variables

view top

#{freq = 0.9}
#{lam = 0.3/freq*1000}  # Units in mm
#{a = 0.005*lam}
#{w = 4*a}
#{L = 0.23*lam}  # Quarter-wave monopole

#substrate dimensions
# {sub_w = 208.6} # Units in mm
# {sub_h = 83.6}  # Units in mm

#cylinders dimensions
# {cy_h = 10} # Units in mm
# {cy_r = 2.5}  # Units in mm

# Ground plane dimensions
#{gnd_w = 10*lam} 
#{gnd_h = 10*lam}

# Create the monopole
create surface rectangle width {w} height {L} yplane
#{v_monopole = Id("volume")}
move volume {v_monopole} z {L/2}

# Create the substrate( monopole is attached to substrate at 76.3(height) and 41.8(width)-position that is attached-i wasn't able to do that)
create surface rectangle width {sub_w} height {sub_h} zplane
#{s_sub = Id("surface")}

# create 4 cylinders attached to both ground plane and substrate(working as support to stucure with monopole)- wanted to put in near end of rectangule(all 4 forming a square-i wasn't able to do that)
create cylinder height {cy_h} radius {cy_r} zplane
create cylinder height {cy_h} radius {cy_r} zplane
create cylinder height {cy_h} radius {cy_r} zplane
create cylinder height {cy_h} radius {cy_r} zplane

# Create the ground plane
create surface rectangle width {gnd_w} height {gnd_h} zplane
#{s_gnd = Id("surface")}

# Split the monopole surface near the ground plane to create a voltage source curve
split surface in volume {v_monopole} across location position {-w} 0 {w} location position {w} 0 {w}
#{s_monopole_neg = Id("surface")}

# Imprint and merge to create common curves among surfaces at intersections
imprint all
merge all

# Assign surfaces with PEC material and create the voltage source
nsem assign surface all material "PEC"
nsem voltage source "port" pos surface {s_monopole_neg-1} neg surface {s_monopole_neg} impedance 75

block 1 surface all
#{mesh_size = lam/5}
surface all scheme pave
surface {s_monopole_neg} size {w/2}
mesh surface {s_monopole_neg}
surface {s_monopole_neg-1} size {w}
mesh surface {s_monopole_neg-1}
surface not is_meshed size {mesh_size}
mesh surface not is_meshed

nsem print status
save cub5 "monopole_900_top.cub5" overwrite journal

Yes, I would recommend using a larger computer as your simulations grow. There are generally two strategies for decreasing the RAM requirements for a given simulation: 1) using high-order basis function (HOBF) and/or 2) using the compression solver.

My recommendation previously was an example of using HOBF (mesh_size = lam/5 and model.set_order(2)). In the user guide, there is a table in the CAD And Meshing section with general guideline for what mesh size to use with what HOBF order. HOBFs work best on geometries with large, smooth surfaces and not a lot of geometric complexity (for example, an antenna with multiple substrates and lots of vias would not be a good HOBF candidate).

The second strategy is to use the compression solver. To use this, all you need to do is add to your model configuration:

model.set_solve_type('compress')

The compression solver is best employed when the structure is electrically large, maybe more than 10lamba on a size. The compression solver and the HOBF features can be used together, but the recommendations for both should be satisfied. For example, if you have an electrically large, smooth structure without a lot of complexity, you can use a coarser mesh, HOBF, and turn on compression. If you are the limits of what your computer can handle, this strategy may allow to you successfully solve a given problem.

Unfortunately, right now, we don’t have an automated way of knowing how much RAM a simulation will take when you are at the Prep stage. This is a feature we hope to add soon. It is also difficult to predict the amount of compression possible if you’re using the compression solver.

Thanks.
I will look at that particular section of the user guide, in principle the antenna will not be too complex, just problaby some of them in same ground plane, i will take that into consideration.

Also as i mentioned before in previous message, i was having trouble, when having a lot of a objects, moving them to correct places and also mesh and imprint function will have to be done in different way in order to deal with many intersections( while voltage source is just same strip to substrate(just small ground plane).

Thanks for attention

From your comment, I took a guess as to what you were trying to achieve. Take a look at this and see if it is in the right direction.

reset  # Clear Prep
reset aprepro # Clear old variables

view top

#{freq = 0.9}
#{lam = 0.3/freq*1000}  # Units in mm
#{a = 0.005*lam}
#{w = 4*a}
#{L = 0.23*lam}  # Quarter-wave monopole
#{tilt = 30} # Tilt angle for monopole

#substrate dimensions
# {sub_w = 208.6} # Units in mm
# {sub_h = 83.6}  # Units in mm
# {sub_offset = 10}

#cylinders dimensions
# {cy_h = sub_offset} # Units in mm
# {cy_r = 2.5}  # Units in mm

# Ground plane dimensions
#{gnd_w = 10*lam} 
#{gnd_h = 10*lam}

# Create the monopole
create surface rectangle width {w} height {L} yplane
#{v_monopole = Id("volume")}
move volume {v_monopole} z {L/2}

# Split the monopole surface near the ground plane to create a voltage source curve
split surface in volume {v_monopole} across location position {-w} 0 {w} location position {w} 0 {w}
#{s_monopole_neg = Id("surface")}

# Rotate and move the monopole
rotate volume {v_monopole} angle {tilt} about x include_merged
move volume {v_monopole} z {sub_offset}

# Create the substrate( monopole is attached to substrate at 76.3(height) and 41.8(width)-position that is attached-i wasn't able to do that)
create surface rectangle width {sub_w} height {sub_h} zplane
#{s_sub = Id("surface")}
move surface {s_sub} z {sub_offset}

# create 4 cylinders attached to both ground plane and substrate(working as support to stucure with monopole)- wanted to put in near end of rectangule(all 4 forming a square-i wasn't able to do that)
#create cylinder height {cy_h} radius {cy_r} 
brick x {2*cy_r} y {2*cy_r} z {cy_h}
#{v_cyl_1 = Id("volume")}
brick x {2*cy_r} y {2*cy_r} z {cy_h}
brick x {2*cy_r} y {2*cy_r} z {cy_h}
brick x {2*cy_r} y {2*cy_r} z {cy_h}

move volume {v_cyl_1} x {sub_w/2 - 1*cy_r} y {sub_h/2 - 1*cy_r} z {cy_h/2}
move volume {v_cyl_1+1} x {-(sub_w/2 - 1*cy_r)} y {sub_h/2 - 1*cy_r} z {cy_h/2}
move volume {v_cyl_1+2} x {-(sub_w/2 - 1*cy_r)} y {-(sub_h/2 - 1*cy_r)} z {cy_h/2}
move volume {v_cyl_1+3} x {sub_w/2 - 1*cy_r} y {-(sub_h/2 - 1*cy_r)} z {cy_h/2}

# Create the ground plane
create surface rectangle width {gnd_w} height {gnd_h} zplane
#{s_gnd = Id("surface")}

# Imprint and merge to create common curves among surfaces at intersections
imprint all
merge all

# Assign surfaces with PEC material and create the voltage source
nsem assign volume all material "PEC"
nsem voltage source "port" pos surface {s_monopole_neg-1} neg surface {s_monopole_neg} impedance 75

block 1 surface all
#{mesh_size = lam/5}
surface all scheme pave
surface {s_monopole_neg} size {w/2}
mesh surface {s_monopole_neg}
surface {s_monopole_neg-1} size {w}
mesh surface {s_monopole_neg-1}
surface 33 size auto factor 7
mesh surface 33
surface not is_meshed size {mesh_size}
mesh surface not is_meshed

nsem print status
#save cub5 "monopole_900_top.cub5" overwrite journal

In general, I find it help to use the GUI to get a first idea for the geometry and then to copy/paste/modify the command that is echoed out into the command panel. That way, I don’t have to remember all of the specific command syntax. For example, if I want to draw a cylinder, I’ll go to Mode-Geometry, Entity-Volume, Action-Create, Cylinder, and enter an arbitrary height and radius. Then I copy that into my journal file and make the desired edits. Same thing for most other actions.

Thanks a lot, it is right direction.
If i wanted to move the strip on top of substrate for another position still on top, while maintain all the rest of structure, when doing rotate and move, add respective instruction(move volume {v_monopole} x or y{value}) depending on intended , and keep rest?
Thanks again, the help was been really helpful, since it is my first time working in this type of software and all help is welcome.

1 Like

You’re very welcome. Learning the CAD and meshing portion of any simulation software is certainly the most challenging part. Below I put an example of the syntax for moving to a location in x and y. This line would replace the ‘move’ line in the script I previously posted. You can also break them into multiple commands if that’s better for any reason.

move volume {v_monopole} x {5} y {7} z {sub_offset}

If you’re curious about things like moving and rotating, you can search the help for Prep under Help->Prep Help, which will take you to the online documentation. Prep is built on top of the CAD software Cubit, so the help page you’re directed to is for Cubit. But all of the syntax is the same. Additionally, in the command line panel, you can do things like ‘help move’ or ‘help rotate’ to see all of the commands and the syntax that have those keywords.

I was having issues when splitting the strip, when i would change is position, for central position, it works fine.

reset  # Clear Prep
reset aprepro # Clear old variables
# Create the ground plane(model for antenna)
create surface rectangle width 100 height 250 zplane 
create vertex -39.52 12.16 0 on surface 1 
create vertex 39.52 12.16 0 on surface 1 
create vertex 30.4 88.16 0 on surface 1 
create vertex -30.4 88.16 0 on surface 1 
create vertex 12.16 101.84 0 on surface 1 
create vertex -12.16 101.84 0 on surface 1 
create vertex 41.04 -48.64 0 on surface 1 
create vertex -41.04 -48.64 0 on surface 1 
create vertex 15.2 -104.88 0 on surface 1 
create vertex -15.2 -104.88 0 on surface 1 
create vertex -30.4 -89.68 0 on surface 1 
create vertex 30.4 -89.68 0 on surface 1 
create vertex -38 -71.44 0 on surface 1 
create vertex 38 -71.44 0 on surface 1 
create vertex 0 104.88 0 on surface 1
create vertex -41.04 -7.6 0 on surface 1 
create vertex 41.04 -7.6 0 on surface 1

create curve vertex 5,8 
create curve vertex 8,10
create curve vertex 10,19
create curve vertex 19,9 
create curve vertex 9,7 
create curve vertex 7,6 
create curve vertex 6,21 
create curve vertex 21,11
create curve vertex 11,18
create curve vertex 18,16
create curve vertex 16,13
create curve vertex 13,14 
create curve vertex 14,15
create curve vertex 15,17
create curve vertex 17,12 
create curve vertex 12,20
create curve vertex 20,5
create surface curve 5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 on surface 1
intersect surface 1,2

view top
#{freq = 0.9}
#{lam = 0.3/freq*1000}  # Units in mm
#{a = 0.005*lam}
#{w = 4*a}
#{L = 0.23*lam}  # Quarter-wave monopole

# Create the monopole
create surface rectangle width {w} height {L} yplane
#{v_monopole = Id("volume")}
move volume {v_monopole} z {L/2}
rotate surface 3 angle 90 about z include_merged
move surface 3 location 0 -19.76 {L/2} include_merged

# Split the monopole surface near the ground plane to create a voltage source curve
split surface in volume {v_monopole} across location position 0 {-w} {w} location position 0 {w} {w}
#{s_monopole_neg = Id("surface")}

# Imprint and merge to create common curves among surfaces at intersections
imprint all
merge all

# Assign surfaces with PEC material and create the voltage source
nsem assign surface all material "PEC"
nsem voltage source "port" pos surface {s_monopole_neg-1} neg surface {s_monopole_neg} impedance 50

block 1 surface all
#{mesh_size = lam/10}
surface all scheme pave
surface {s_monopole_neg} size {w/2}
mesh surface {s_monopole_neg}
surface {s_monopole_neg-1} size {w}
mesh surface {s_monopole_neg-1}
surface 2 size auto factor 5
mesh surface 2
surface not is_meshed size {mesh_size}
mesh surface not is_meshed

nsem print status
#save cub5 "monopole.cub5" overwrite journal

Also when trying multiples strips, same problem arises and mesh of ground plane is not done in correct way, i think is related to splitting for voltage source function.

reset  # Clear Prep
reset aprepro # Clear old variables
# Create the ground plane(model for antenna)
create surface rectangle width 100 height 250 zplane 
create vertex -39.52 12.16 0 on surface 1 
create vertex 39.52 12.16 0 on surface 1 
create vertex 30.4 88.16 0 on surface 1 
create vertex -30.4 88.16 0 on surface 1 
create vertex 12.16 101.84 0 on surface 1 
create vertex -12.16 101.84 0 on surface 1 
create vertex 41.04 -48.64 0 on surface 1 
create vertex -41.04 -48.64 0 on surface 1 
create vertex 15.2 -104.88 0 on surface 1 
create vertex -15.2 -104.88 0 on surface 1 
create vertex -30.4 -89.68 0 on surface 1 
create vertex 30.4 -89.68 0 on surface 1 
create vertex -38 -71.44 0 on surface 1 
create vertex 38 -71.44 0 on surface 1 
create vertex 0 104.88 0 on surface 1
create vertex -41.04 -7.6 0 on surface 1 
create vertex 41.04 -7.6 0 on surface 1

create curve vertex 5,8 
create curve vertex 8,10
create curve vertex 10,19
create curve vertex 19,9 
create curve vertex 9,7 
create curve vertex 7,6 
create curve vertex 6,21 
create curve vertex 21,11
create curve vertex 11,18
create curve vertex 18,16
create curve vertex 16,13
create curve vertex 13,14 
create curve vertex 14,15
create curve vertex 15,17
create curve vertex 17,12 
create curve vertex 12,20
create curve vertex 20,5
create surface curve 5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 on surface 1
intersect surface 1,2
view top

#variables at 900 MHz
#{freq_1 = 0.9}
#{lam_1 = 0.3/freq_1*1000}  # Units in mm
#{a_1 = 0.005*lam_1}
#{w_1 = 4*a_1}
#{L_1 = 0.23*lam_1}  # Quarter-wave monopole

# Create the monopole at 900 MHz
create surface rectangle width {w_1} height {L_1} yplane
#{v_monopole_1 = Id("volume")}
#{s_monopole_1 = Id("surface")}
move volume {v_monopole_1} z {L_1/2}
rotate surface 3 angle 90 about z include_merged
move surface 3 location 0 -19.76 {L_1/2} include_merged

# Split the monopole at 900MHz surface near the ground plane to create a voltage source curve
split surface in volume {v_monopole_1} across location position 0 {-w_1} {w_1} location position 0 {w_1} {w_1}
#{s_monopole_neg_1 = Id("surface")}


#variables at 1900 MHz
#{freq_2 = 1.9}
#{lam_2 = 0.3/freq_2*1000}  # Units in mm
#{a_2 = 0.005*lam_2}
#{w_2 = 4*a_2}
#{L_2 = 0.23*lam_2}  # Quarter-wave monopole

# Create the monopole at 1900 MHz
create surface rectangle width {w_2} height {L_2} yplane
#{v_monopole_2 = Id("volume")}
#{s_monopole_2 = Id("surface")}
move volume {v_monopole_2} z {L_2/2}
rotate surface 4 angle 90 about z include_merged
move surface 4 location 0 34.96 {L_2/2} include_merged

# Split the monopole at 1900MHz surface near the ground plane to create a voltage source curve
split surface in volume {v_monopole_2} across location position 0 {-w_2} {w_2} location position 0 {w_2} {w_2}
#{s_monopole_neg_2 = Id("surface")}

# Imprint and merge to create common curves among surfaces at intersections
imprint all
merge all

# Assign surfaces with PEC material and create the voltage source
nsem assign surface all material "PEC"
nsem voltage source "port_1" pos surface {s_monopole_neg_1-1} neg surface {s_monopole_neg_1} impedance 50
nsem voltage source "port_2" pos surface {s_monopole_neg_2-1} neg surface {s_monopole_neg_2} impedance 50

block 1 surface all
#{mesh_size = lam_2/10}
surface all scheme pave
surface {s_monopole_neg_1} size {w_1/2}
mesh surface {s_monopole_neg_1}
surface {s_monopole_neg_1-1} size {w_1}
mesh surface {s_monopole_neg_1-1}
surface {s_monopole_neg_2} size {w_2/2}
mesh surface {s_monopole_neg_2}
surface {s_monopole_neg_2-1} size {w_2}
mesh surface {s_monopole_neg_2-1}
surface 2 size auto factor 7
mesh surface 2
surface not is_meshed size {mesh_size}
mesh surface not is_meshed

nsem print status
#save cub5 "monopole.cub5" overwrite journal

Thanks for attention

Hello,

I am focusing on your first issue, which is splitting the monopole strip. One way I often use to split strips is w/ the webcut utilities in NSPREP. For example, I might replace your line …

split surface in volume {v_monopole} across location position 0 {-w} {w} location position 0 {w} {w}

… with something like this …

webcut volume {v_monopole} with plane zplane offset {38}

… where (38) is the z offset from z = 0 where you wish to “split”.

Does this help you move forward w/ your first issue?

Hello,

Thanks, the change solved the issues.

1 Like

Hello,
When i tried simulate, this following message appear after a while, and i’m having issue understand what is exactly the problem:

matrix memory allocation failure : bad allocation
exiting ...
NSEM returned an error. Please check the error log for more information.Returned 3221225477
Command '['C:\\Program Files\\Nullspace EM 2023 R3\\bin\\nsem.EXE', 'monopole.h5']' returned non-zero exit status 3221225477.
Traceback (most recent call last):
  File "C:\Users\diogo\Desktop\test\simulation.py", line 24, in <module>
    model.run()
  File "C:\Program Files\Nullspace EM 2023 R3\Nullspace-Python\lib\site-packages\nsem\config.py", line 744, in run
    raise subprocess.CalledProcessError(process.returncode, process.args)
subprocess.CalledProcessError: Command '['C:\\Program Files\\Nullspace EM 2023 R3\\bin\\nsem.EXE', 'monopole.h5']' returned non-zero exit status 3221225477.

This error means your simulation is too large for the amount of memory that you have. In the screen output, there is a number next to “Nb”. Can you tell me what that value is?

1 Like

Hello,
I couldn’t find the specific number, but was able to simulate, after reducing mesh size.
Is there any place that explain values that is presented in terminal ( after the simulation), some values from simulation can be useful to know(number of elements of matrix, time, etc.)?
I was trying to force the mesh to be symmetrical on specificic surface because volume is symmetrical, but in coreform documentation wasn’t able anything about that, it is possible to do it?
Thanks for attention

For example, i have been using scheme pave method, but creates some distorted areas in certain surfaces in volume like a cut in half cylinder or plane surface( that has a specific design).

Yes, this is possible. I will make you an example or two of different methods for making a symmetric mesh.

As for distorted elements, you can check the mesh quality using these options:

Generally, mesh quality is ok so long as the minimum shape metric is > 0.05.

Hello,
Thanks for that, i will check those examples when there are available and if i have any doubts, i will message in here.
I will check mesh quality using those functionalities.
Thanks for attention