Cancel
Showing results for 
Search instead for 
Did you mean: 

Equal length mesh sizing positions

Legend
Legend

Hello,

 

I would like to know which algorithm use Femap to calculate mesh size positions by Mesh Control / Size Along Curve command. I found that in many case when I set Equal length mesh sizing, in fact mesh sizing isn't equal. There are in the attached model this values by following formulas (by all curve the "dist" value must be the same):

 

dist(i)=feCurve.MeshMaxParam(i)-feCurve.MeshMaxParam(i-1)

nBias(i)=dist(i)-dist(i-1)

nGeomBias(i)=dist(i)/dist(i-1)

 

Solid.jpg

 

Curve ID19 (quarter circle):

 

Mesh Size Along Curve ID19.jpg

 

Custom Mesh Spacing Along Curves ID19.jpg

 

i=1   dist=0,1948     nBias=-0,0154             nGeomBias=0,9267

i=2   dist=0,19        nBias=-0,0048             nGeomBias=0,9754

i=3   dist=0,1948     nBias=0,0048              nGeomBias=1,0252

i=4   dist=0,2102     nBias=0,0154              nGeomBias=1,0791

 

Curve ID21 (half circle):

 

Mesh Size Along Curve ID21.jpg

 

Custom Mesh Spacing Along Curves ID21.jpg

 

i=1   dist=0,1169     nBias=-0,0329             nGeomBias=0,7802

i=2   dist=0,0992     nBias=-0,0178             nGeomBias=0,848

i=3   dist=0,0902     nBias=-0,0089             nGeomBias=0,9098

i=4   dist=0,0875     nBias=-0,0027             nGeomBias=0,9696

i=5   dist=0,0902     nBias=0,0027              nGeomBias=1,0313

i=6   dist=0,0992     nBias=0,0089              nGeomBias=1,0992

i=7   dist=0,117       nBias=0,0178              nGeomBias=1,1792

i=8   dist=0,1499     nBias=0,0329              nGeomBias=1,2817

 

Curve ID10 (straight line):

 

Mesh Size Along Curve ID10.jpg

 

Custom Mesh Spacing Along Curves ID10.jpg

 

i=1   dist=0,25          nBias=0          nGeomBias=1

i=2   dist=0,25          nBias=0          nGeomBias=1

i=3   dist=0,25          nBias=0          nGeomBias=1

 

It's interesting thing is that, when I mesh arcs (generate nodes only), the really distance between nodes will be same, and the positions of the nodes will in fact not match with mesh size positions.

 

I need to know this algorithm, because I wrote an API to copy mesh size (Mesh Size Along Curve - Match to Curve on Solid). Here I must recognize the mesh size settings, because Femap change mesh size now below 325 elements to custom mesh size, and now it isn't any properties or methods in Femap API to read this mesh size parameters of curves (number of elements; equal node spacing, bias or geometry bias; bias factor; length spacing or parametric spacing, small elements at start of curve, at end, at center or at both ends). All this parameters must I recognize now in my macro.

 

My macro is working now, but all time I recognize a biased curve, I must ask a question, that current curve is biased or not.

 

When you wish, I can send my macro too.

 

Best regards

 

Peter Kaderasz

2 REPLIES

Re: Equal length mesh sizing positions

Legend
Legend

Hi,

 

here is my macro Mesh Size Along Curve - Match to Curve on Solid. It use an .ini file, in my case "D:\Home\Femap\KadP_Femap.ini" (filename with path written in the procedure InitializeVariables, can be modified). This variables are:

 

CustomSizeLimet - this is the number of element on curve, under this value Femap modify mesh size to custom mesh size. This value in current Femap v11.2 version is 325.

Skip_NonCoincident - when True, API skip curves with noncoincident endpoints.

Tolerance - this is the tolerance to checking the endpoints of the curves.

 

First of all you must select the master solid (master curve must be on this solid), after that the muster curve (from where you want to copy mesh size) and one or more curves (where you want to copy mesh size). After copying mesh size you can select again master curve and other curve(s) until you click Cancel.

 

Best regards,

 

Peter Kaderasz

Re: Equal length mesh sizing positions

Siemens Phenom Siemens Phenom
Siemens Phenom

Peter,

 

I haven't had time to fully review your API, however here is some additional information that might be helpful.

 

* Ultimately mesh sizes are always defined in the parametric coordinate of the curves/surfaces. This results in much better performance during meshing. If you choose length-based sizing, FEMAP simply computes the desired number of parametric locations along the curves that are equidistant from each other.  If you are looking in the Custom Mesh size dialog, or listing a curve, the mesh locations you see are always parameter locations, not distances along the curve.  Depending on the type of curve, the parametric coordinates may also be uniformly spaced. For example, normally straight lines and arcs have parameterizations that result in parametric and length spacing being the same thing. For any type of NURB/spline curve however this is normally not the case... and in some cases the parametric coordinates can be dramatically different. Be aware however, simply because a curve looks like a line or arc or circle, the mathematical representation may not be and its parameter space can still be "non-equal length".

 

* There are a number of API methods on the Curve object that can help in dealing with the distinctions between parametric coordinates and equal length.

  - XYZtoParam( ) will take a coordinate location and give you back the parametric location along the curve -- might be helpful if you are dealing with an already meshed curve where you have nodal locations

  - ParamAtLength( ) will return the parametric location at a distance/curve length along a curve. So if you know you want to divide a curve at some fixed length interval, this can give you the correct parameter locations

  - PartialLength( ) returns the curve length between two parametic locations. Again possibly helpful if you are dealing with already specified parametric mesh locations and need to find the curve length between them. For a custom mesh size, checking these could let you know if there is a bias or constant length spacing.