I am using the StructureMeshMapper to create a 3d mesh by interpolating between two DEMs.
I am getting this error:
ERROR:: DetectExtrudedStructure: Zero rounds implies unsuccesfull operation
ERROR:: DetectExtrudedStructure: Zero rounds implies unsuccesfull operation
StructuredMeshMapper: ---------------------------------------
StructuredMeshMapper: Performing mapping on a structured mesh
StructuredMeshMapper: ---------------------------------------
DetectExtrudedStructure: Determining extruded structure
DetectExtrudedStructure: Unit vector of direction: 0.000 0.000 1.000
DetectExtrudedStructure: determine up and down pointers
DetectExtrudedStructure: determine top and bottom pointers
DetectExtrudedStructure: Layered structure detected in 0 cycles
DetectExtrudedStructure: Try to increase value for > Dot Product Tolerance <
ERROR:: DetectExtrudedStructure: Zero rounds implies unsuccesfull operation
ERROR:: DetectExtrudedStructure: Zero rounds implies unsuccesfull operation
Before the StructureMeshMapper I am using the Grid2DInterpolator. Here is the relevant part of my sif file
Here is how I created the mesh.
1. Create a 2d mesh with gmsh
2. partition the 2d mesh with ElmerGrid 2 2
3. Run the sif file
I have added Extrude Coordinate Index = Integer 3 in the Simulation section and can confirm that it extrudes in the 3rd direction.
I have also increased the value of Dot Product Tolerance in the StructureMeshMapper section to some really high number but then Elmer crashed in the first iteration.
[Loading user function library: [ResultOutputSolve]...[ResultOutputSolver_Init]
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver]
Grid2DInterpolator: ----------ALL DONE----------
StructuredMeshMapper: ---------------------------------------
StructuredMeshMapper: Performing mapping on a structured mesh
StructuredMeshMapper: ---------------------------------------
DetectExtrudedStructure: Determining extruded structure
DetectExtrudedStructure: Unit vector of direction: 0.000 0.000 1.000
DetectExtrudedStructure: determine up and down pointers
DetectExtrudedStructure: determine top and bottom pointers
DetectExtrudedStructure: Layered structure detected in 526 cycles
DetectExtrudedStructure: counting top and bottom bodes
DetectExtrudedStructure: Setting pointer structures
DetectExtrudedStructure: Top and bottom pointer init time: 0.0000000000000000
DetectExtrudedStructure: Top and bottom pointer init rounds: 526
DetectExtrudedStructure: Number of nodes at the top: 40
DetectExtrudedStructure: Number of nodes at the bottom: 50
StructuredMeshMapper: Active coordinate mapping time: 0.0000000000000000
ListToCRSMatrix: Matrix format changed from CRS to List
ListToCRSMatrix: Number of entries in coupled matrix: 29997
ListToCRSMatrix: Matrix format changed from List to CRS
ComputeNormalSolver: Computing Normal Vector for Nodes
ComputeNormalSolver: End
MAIN:
MAIN: -------------------------------------
MAIN: Time: 1/5 126230.39999999999
MAIN: -------------------------------------
MAIN:
StructuredProjectToPlane: ------------------------------------------
StructuredProjectToPlane: Performing projection on a structured mesh
StructuredProjectToPlane: ------------------------------------------
DetectExtrudedStructure: Determining extruded structure
DetectExtrudedStructure: Unit vector of direction: 0.000 0.000 1.000
DetectExtrudedStructure: determine up and down pointers
ERROR:: DetectExtrudedStructure: Zero rounds implies unsuccesfull operation
ERROR:: DetectExtrudedStructure: Zero rounds implies unsuccesfull operation
DetectExtrudedStructure: determine top and bottom pointers
DetectExtrudedStructure: Layered structure detected in 0 cycles
DetectExtrudedStructure: Try to increase value for > Dot Product Tolerance <
ERROR:: DetectExtrudedStructure: Zero rounds implies unsuccesfull operation
ERROR:: DetectExtrudedStructure: Zero rounds implies unsuccesfull operation
--------------------------------------------------------------------------
Ok, if your "dot product tolerance" is too large you may get something strange. The idea is that two nodes are assumed to be in the same line if the dot product between [0 0 1] and the vector has almost the length of the vector. So a tolerance should always be 0<eps<<1. Whether it is 1e-8 or 0.01 depends on the accuracy of the extrusion. Too small value might not detect all extruded lines while too big a value will detect wrong lines.
Hello Peter,
Thanks for the tip, however, I've tried every value between 10-1 and 10-8 and get the same problem.
I've checked that the x,y coord are identical in the two DEM so I don't know what could be wrong.
Any other ideas?
The problem was rather small but often these are difficult to track: the keyword prefix is "Extruded" not "Extrude". These should work in the Simulation section:
Extruded Mesh Levels = 12
Extruded Mesh Ratio = Real 4.0
Extruded Coordinate Index = Integer 3
Extruded Min Coordinate = Real 0.0
Extruded Max Coordinate = Real 1.0e5
The current trunk version has all keywords defined so you could leave the type unset. This is often a good solution to ensure that right keywords are used.
Indeed a small stupid mistake.
That + playing with the dot product solved this problem.
However, I am puzzled by another, which again may have a simple answer:
In the NS solver I get this error:
Does this happen immediately after the SructuredMeshMapper solver? In the sif file there was also the MeshUpdate solver, it can also mess some things up.
Perhaps you can use the StructuredProjectToPlane to compute the height of the mesh.