Why a NURBS surface always automatically rotates after being generated

Moderator: GiD Team

KHTseng
Posts: 3
Joined: Wed Jun 05, 2019 4:24 pm

Why a NURBS surface always automatically rotates after being generated

Postby KHTseng » Wed Jun 05, 2019 4:50 pm

Dear All,

I have a question about generating a NURBS surface:
That the generated NURBS surface (by points) always be rotated automatically.
For example: 1) A set of xyz data was imported for representing the topography.
2) Then I used geometry->create->NURBS surface->by points to select all the dots for generating a NURBS surface.
(I tried to do this is because I have to generated meshes for the controlled-source EM problem which considers topography. And I want to use the NURBS surface to save the memory from millions dots to one surface)
3) press ESC to create the NURBS surface.
Image
Then the result is shown as above figure.
I have no idea why this problem happen because I made another one successfully in several months ago. However, I couldn't remember the flow what I tried.

Does anybody have an idea about this issue?

-------
By the way, may I know if there is any way to add some points and lines in the NURBS meshes for assigning sizes during generating the unstructured meshes?
I hope to generate finer meshes near some points (as the observation sites) and two lines (as the transmitter power line). My idea is:
1) creating the ground as a NURBS surface (from topography dots),
2) add dots and lines as the receivers and transmitters,
3) mesh->unstructured->assign sizes on [points/line/surface] (for stations, transmitters and ground) to generate meshes as following style
Image

I will be very grateful for any suggestions.
Have a nice day :)

K. H. Tseng
User avatar
escolano
Posts: 1547
Joined: Thu Sep 18, 2014 3:31 pm

Re: Why a NURBS surface always automatically rotates after being generated

Postby escolano » Wed Jun 05, 2019 6:48 pm

The "create NURBS surface by points" tools as first step calculate x'y'z' local axes, and do a projection in z' axis, and a bounding box in x'y' axes.

To calculate these local axes is considering your points as a cloud of concentrated masses and calculate its main inertia axis.
The x'y' could become not parallel to global xy as you expected (it your particular case were the points are inside a xy projected rectangle)
Nowadays you cannot control how to select these x'y'z' local axes (e.g. to use the XYZ global axes like you wanted, maybe we can add this feature for next versions)

If do you want, you can try to trim the surface created, cutting it with the surfaces extruded from the rectangular lines you want.

Consider also the option of create from a cloud of nodes a grid of surfaces/elements (or a raster Arc/Info ASCII file), respectively with
-Geometry->Create->Geometry from mesh->Nodes to grid surfaces
-Mesh->Edit mesh->Nodes to grid quadrilaterals
-Files->Export->Nodes to raster

About assign mesh sizes to geometrical entities, you can only assign it to the boundary lines and/or points of the surface. There are not 'inner points or lines' on the surface.
what you can try is a meshing preference that automatically refine the mesh based on the 'curved inner parts' of the surface (really based on the 'chordal error' or distance between the mesh and the surface shape)
Utilities->Preferences... Meshing->Chordal error
try setting a relative and/or absolute 'chordal error', and maybe other of the possible setting.

About the points to place your 'transmitters', you can try to force some points to be on the final mesh (to have a node with its coordinates).
Mesh->Mesh criteria->Force points to->Surface mesh
A final meshing step will force to have these points on the surface mesh (moving some node or inserting some new node)
but I thing that you cannot assign mesh sizes to these points to have control on the surface mesh size.
KHTseng
Posts: 3
Joined: Wed Jun 05, 2019 4:24 pm

Re: Why a NURBS surface always automatically rotates after being generated

Postby KHTseng » Thu Jun 06, 2019 8:48 am

Dear escolano,

Thank you very much for your explanation.
a)
The second figure which I attached in my first post was also created by GiD in couple of months ago (with a correct fitting between NURBS surface and dot data cloud), then I wander why the NURBS surface became different in this time.

As your mentioned explanation about the x'y'z' projection, seems the new z' is created by some interpolation method (?). Then I wander how the z' is calculated where out of the surface cloud (whether that is close to the nearest point or some mean value from the local points). However, that may become an acceptable error for my result which I do not have to worry about, probably.

[Consider also the option of create from a cloud of nodes a grid of surfaces/elements (or a raster Arc/Info ASCII file), respectively with
-Geometry->Create->Geometry from mesh->Nodes to grid surfaces
-Mesh->Edit mesh->Nodes to grid quadrilaterals
-Files->Export->Nodes to raster]
Unfortunately, I am using the GiD with version 13, that the above mentioned instruction doesn't work (there is no "Nodes to grid surface" under the "Geometry from mesh").

b)
Then for the created NURBS surface, may I know if there is any setting for the resolution of NURBS surface? That I create one surface from million of dots but the details look not so clean as the dot cloud. Which some of the specific topography characteristics that I want to present are at the center of this surface.

c)
For the explanation about assigning mesh sizes near lines and points on a surface, I found some stuffs of my past work with GiD:
Screen Shot 2019-06-06 at 4.24.08 PM.png
Screen Shot 2019-06-06 at 4.24.08 PM.png (38.43 KiB) Viewed 76 times
Screen Shot 2019-06-06 at 4.24.18 PM.png
Screen Shot 2019-06-06 at 4.24.18 PM.png (16.31 KiB) Viewed 76 times
Screen Shot 2019-06-06 at 4.26.07 PM.png
Screen Shot 2019-06-06 at 4.26.07 PM.png (14.7 KiB) Viewed 76 times

I can easily figure out how did I make the points for assigning mesh sizes. By simply using the routine of splitting surface then did the way as the one which mentioned in the tutorial.
But sadly to say, I couldn't remember how did I make the line in a surface with GiD...
That seems I created two lines by several points and combined the lines with the NURBS surface as an inner boundary (now I couldn't understand why an inner boundary could exist without any connection with other boundaries, but obviously it worked with some way before...). May I know if you have any idea for the similar process?

Wish you have a nice day.
K. H. Tseng
User avatar
escolano
Posts: 1547
Joined: Thu Sep 18, 2014 3:31 pm

Re: Why a NURBS surface always automatically rotates after being generated

Postby escolano » Thu Jun 06, 2019 9:45 pm

a) z coordinate is extrapolated as you pointed, with a kind of weighted average of a cloud of closed points

b) There is not possible to have user control on the resolution the NURBS surface created, it is automatic, in any case it is only an approximation, does not fit the original points.

c) I don't know how have you created in the past the entities of the model of your pictures.
Maybe they were created from a triangulation, that wast tried to be converted in geometry using the tools like
Geometry->Create->Surf mesh (this create surf-meshes, that are GiD pseudo-surfaces with shape defined by a underlying triangulation)
or
Geometry->Create->Geometry from mesh->NURBS patches
both cases try to divide the triangles in parts, and create its points, lines and surfaces.

About creating curves on an existent surface, you can divide it in u or v parametric direction
Geometry->Edit->Divide->Surfaces
or create the curve by intersection with other auxiliary surface (e.g. some extra plane)
Geometry->Edit->Intersection->Surfaces
or
Geometry->Edit->Intersection->Surface 2 points
(this ask for 2 points on the surface, and create do do the intersection a 'virtual plane' with the points and a normal averaging the normal of the surface on the points)
KHTseng
Posts: 3
Joined: Wed Jun 05, 2019 4:24 pm

Re: Why a NURBS surface always automatically rotates after being generated

Postby KHTseng » Thu Jun 13, 2019 2:31 am

Dear escolano,

Thank you very much for the detailed explanation about how the GiD create NURBS surface.
Now I have a clearer view.

About the interesting question that how did I make that mesh which can solve all of my questions...
Well, I tried to use a smaller dot cloud, from a square shape to a rectangular shape. Surprisedly, the NURBS surface fit the shape of cloud now. I couldn't explain the reason but it just works. (Thus, the NURBS problem is solved.)
Now I am trying to follow your suggestions to combine the line with the NURB surface.
The closest result was madden by "Geometry->intersection->surface-line"
That I got the following result:

Image

The all the dots are chosen to make a NURBS surface, and two lines (blue) are made by parts of that dots.
The purple lines are, what I think, the projected lines on the NURBS surface. The follow figure shows the mesh result which assigned the blue lines:
Image

That we can see the result is not completely correct. I think that only part of the blue lines successfully projected to the NURBS surface.

Then I have one question about this result:
Is there anyway to draw a short line on the NURBS surface by two points? (The "Geometry->intersection->surface-2 points" will split the surface instead of make a short line on the surface).
Or, is there any trick for adjusting the result to make the blue lines fully project to the NURBS surface? (that the purple lines should have fully same shape as blue lines)

Best regards,
K.H. Tseng
User avatar
escolano
Posts: 1547
Joined: Thu Sep 18, 2014 3:31 pm

Re: Why a NURBS surface always automatically rotates after being generated

Postby escolano » Thu Jun 13, 2019 3:13 pm

The pink lines is a way of represent the surface in 'normal render'.
The surface is represented drawing its lines 'a little' contracted to 'a center'

Usually the surface lines are only the ones of its outer boundary or inner boundary of holes.

By intersection or collapsing it is possible that finally the surface include the intersection line in its boundary definition. It is like a special hole or gap, with zero depth. The same curves are repeated twice for the surface boundary definition, once in a direction and another time in the opposite direction.

It is not possible to add this 'kind of holes' manually.
In fact when selecting entities, the second time that an entity is specified in become unselected. (the selection is a list of integer ids without repetition)

The surface mesh will match the line mesh of its boundary curves, but not other curves (also if in 3D space the curve is 'on the surface')

Return to “Geometry”

Who is online

Users browsing this forum: No registered users and 1 guest