ug4
Todo List
Page Detailed JuQueen Information
Maybe some notes about available "Tools" like the "call graph" would be nice. For the moment try yourself and/or see the TotalView docu (links below).
Page Doxygen Quick Reference
Extend the documentation.
Page How to build UG for VRL for Windows
Make this instructions more readable / structured
Class SmartPtr< void >
add to_smart_ptr_dynamic
Member stl_reader::ReadStlFile_BINARY (const char *filename, TNumberContainer &coordsOut, TNumberContainer &normalsOut, TIndexContainer &trisOut, TIndexContainer &solidRangesOut)
support systems with big endianess
Class ug::AdaptiveRegularRefiner_MultiGrid
The current implementation has a performance overhead, since currently all closure elements are removed prior to grid adaption. This should be reduced to only remove closure elements which are affected by adaption. One could therefore replace Selector by BoolMarker and adjust the collect_objects_for_refinement / coarsening routines to use callbacks when identifying valid refine / coarsen objects.
Member ug::BinaryStream::can_read_more ()
this method should be removed. The normal stream-methdos should be used instead (eof,...). However - those do not seem to work properly in the moment.
Class ug::BoolMarker

Allow to restrict marking to vertices, edges, faces or volumes

Add is_marked, mark, unmark for GridObject

Refactor to template <class T> Marker.

Member ug::bridge::ExportedMethod::create_parameter_stack ()
: replace this method with a better integrated way.
Member ug::CheckOrientation (Volume *vol, TAAPosVRT &aaPosVRT)
this method could be improved by adding specialised versions for the different volume types.
Member ug::CommunicateConnections (std::vector< std::vector< int > > &connectionsToProcsOut, std::vector< std::vector< int > > &connectionsToSubDomsOut, IndexLayout &masterLayout, IndexLayout &slaveLayout, int highestReferencedIndex, pcl::IDomainDecompositionInfo &ddinfo)
The method should probably automatically find the highestReferencedIndex, to avoid misuse.
Member ug::CreateLayoutsFromDistInfos (MultiGrid &mg, GridLayoutMap &glm, DistInfoSupplier &distInfos, AGeomObjID &aGID)
Think about caching interfaces to speed up this method.
Member ug::CreatePolyChain (std::vector< Vertex * > &polyChainOut, Grid &grid, TEdgeIter edgesBegin, TEdgeIter edgesEnd)
add support for open chains.
Member ug::DelaunayInfo< TAAPos >::init_marks (TIter trisBegin, TIter trisEnd, bool pushFlipCandidates)
think about adding a cleanup at the beginning of init_marks (costly)
Member ug::DeserializeMultiGridElements (MultiGrid &mg, BinaryBuffer &in, std::vector< Vertex * > *pvVrts=NULL, std::vector< Edge * > *pvEdges=NULL, std::vector< Face * > *pvFaces=NULL, std::vector< Volume * > *pvVols=NULL, MultiElementAttachmentAccessor< AGeomObjID > *paaID=NULL)
add support for constrained/constraining faces
Member ug::ExtendSelection (TSelector &sel, size_t extSize, ISelector::status_t status=ISelector::SELECTED)
: Performance can be improved. See implementation.
Member ug::ExtendSelectionInDirection (TSelector &sel, size_t extSize, const typename TAAPos::ValueType &dir, number minAngle, number maxAngle, const TAAPos &aaPos, ISelector::status_t status=ISelector::SELECTED)
: Performance can be improved. See implementation.
Member ug::ExtrudeCylinder (Grid &grid, SubsetHandler &sh, Vertex *vrt, const vector3 &direction, number height, number radius, number rimSnapThreshold, Grid::VertexAttachmentAccessor< APosition > &aaPos, int bottomSubInd=-1, int cylSubInd=-1, Selector *pSel=NULL)
: Add a parameter that allows to specify whether the source-faces of the extrusion shall be erased.
Member ug::ExtrudeCylinder (Grid &grid, Vertex *vrt, const vector3 &direction, number height, number radius, number rimSnapThreshold, Grid::VertexAttachmentAccessor< APosition > &aaPos, Selector *pSel=NULL)
: Add a parameter that allows to specify whether the source-faces of the extrusion shall be erased.
Class ug::FracturedMediaRefiner< TGrid, TAPosition >

Add support for degenerated volumes

Use a IsDegenerated callback instead of thresholds

Member ug::FracturedMediaRefiner< TGrid, TAPosition >::set_position_attachment (TAPosition &aPos)
: replace this with a callback
Member ug::FVLineSourceOrSink< dim, TData >::corresponds_to (TElem *elem, Grid &grid, TAAPos &aaPos, const TFVGeom &geo, size_t co, MathVector< dim > &ls, MathVector< dim > &le)
This function works only for there is only one scv per corner. This is not true for pyramids!
Member ug::Grid::copy_user_attachments (const TAttachmentPipe &apSrc, TAttachmentPipe &apDest, std::vector< int > &srcDataIndices)
Copy behavior should be changed to all user-attachments.
Member ug::Grid::erase (const GeomObjIter &iterBegin, const GeomObjIter &iterEnd)
: This erase method can cause problems if used with multi-grids.
Class ug::GridReaderUGX
: Improve performance by using in-situ stringstreams during element creation.
Class ug::GridReaderVTU
: Improve performance by using in-situ stringstreams during element creation.
Class ug::HangingNodeRefiner_MultiGrid
: Avoid the removal of refinement marks during coarsening and of coarsening marks during refinement.
Member ug::hash_key< GeomObjID > (const GeomObjID &key)
Check distribution quality.
Member ug::Heightfield::interpolate (number x, number y, int interpOrder) const

: add a method 'set_interpolation_method' to also support bilinear- or spline-interpolation

Member ug::IntersectCloseEdges (Grid &grid, TObjectCollection &elems, TAAPosVRT &aaPos, number snapThreshold)
: speed up through octree (use MultiEdgeSplit)
Member ug::IsBoundaryEdge3D (Grid &grid, Edge *e)
This algorithm should work without VOLOPT_AUTOGENERATE_FACES, too.
Member ug::MarkForAdaption_GradientJump (IRefiner &refiner, SmartPtr< GridFunction< TDomain, TAlgebra > > u, const char *cmp, number refFrac, int minLvl, int maxLvl, std::string jumpType)
: Add coarsenFrac and apply coarsen-marks, too.
Member ug::MarkForAdaption_ResidualErrorP1Absolute (IRefiner &refiner, SmartPtr< GridFunction< TDomain, TAlgebra > > u, SmartPtr< UserData< number, TDomain::dim > > f, const char *cmp, number time, number refTol, number coarsenTol, int maxLvl, int quadOrder, std::string quadType, bool refTopLvlOnly=false)
: Add coarsenFrac and apply coarsen-marks, too.
Member ug::MarkForAdaption_ResidualErrorP1Relative (IRefiner &refiner, SmartPtr< GridFunction< TDomain, TAlgebra > > u, SmartPtr< UserData< number, TDomain::dim > > f, const char *cmp, number time, number refFrac, int minLvl, int maxLvl, int quadOrder, std::string quadType)
: Add coarsenFrac and apply coarsen-marks, too.
Member ug::MatrixIOMtx::write_from (matrix_type &matrix, std::string comment="%Generated with ug4.")
Implement validity check for the comment.
Member ug::MinimizeEdgeLength_SwapsOnly (Grid &grid, EdgeIterator edgesBegin, EdgeIterator edgesEnd, TAAPos &aaPos)
add support for 2d position attachments.
Member ug::MMTypeCode::to_string ()
Display corresponding strings instead of internal numeric codes.
Class ug::MultipleErrEstData< TDomain, TErrEstData >
Maybe find a better way to deal with the orders of ErrEstData objects here and unknowns in the elem discs.
Class ug::node_tree::Traverser_IntersectFaces
A list with local coordinates of intersections should be created during intersect_tri. This list should then be available to the user.
Member ug::ntree< tree_dim, world_dim, TElem, TCommonData >::add_element (const elem_t &elem)
Allow optional on-the-fly insertion of elements.
Member ug::operator<< (std::ostream &os, const Table< T > &table)
Support for line-breaks ('
' etc) and multi-line rows.
Class ug::ParallelDualGraph< TGeomBaseObj, TIndexType, TConnectingObj >
The current implementation has support for MultiGrids only. Support for flat grids should be added.
Member ug::ParallelDualGraph< TGeomBaseObj, TIndexType, TConnectingObj >::generate_graph (int level, pcl::ProcessCommunicator procCom=pcl::ProcessCommunicator(pcl::PCD_WORLD))
add more generate_graph methods, e.g. for flat grids or complete hierarchies.
Class ug::PartitionMap
a partition map should feature a constructor which takes a grid.
Class ug::PointerConstArray< TPtr >

: Add iterators

: Implement analogous PointerArray with additional resize method, which allows to change existing entries.

Member ug::RayElementIntersection (number &sminOut, number &smaxOut, const vector3 &from, const vector3 &dir, Face *f, Grid &g, Grid::VertexAttachmentAccessor< AVector3 > aaPos, number sml=SMALL)
if a ray lies in the plane of a face, sminOut and smaxOut are currently not correctly computed (see note).
Member ug::RayElementIntersection (number &sminOut, number &smaxOut, const vector2 &from, const vector2 &dir, Edge *e, Grid &g, Grid::VertexAttachmentAccessor< AVector2 > aaPos, number sml=SMALL)
if a ray lies in the plane of an edge, sminOut and smaxOut are currently not correctly computed (see note).
Member ug::RemoveDoubles (Grid &grid, const TVrtIterator &iterBegin, const TVrtIterator &iterEnd, Attachment< MathVector< dim > > &aPos, number threshold)

remove container restrictions as described above.

Member ug::ResolveEdgeFaceIntersection (Grid &grid, Edge *e, Face *f, TAAPosVRT &aaPos, number snapThreshold)

Instead of manually refining the face, an external function SplitFace should be used, which can take care of volume, too.

Instead of manually refining the face, an external function SplitFace should be used, which can take care of volume, too.

Member ug::ResolveVertexFaceIntersection (Grid &grid, Vertex *v, Face *f, TAAPosVRT &aaPos, number snapThreshold, std::vector< Face * > *pNewFacesOut)

Instead of manually refining the face, an external function SplitFace should be used, which can take care of volumes, too.

Instead of manually refining the face, an external function SplitFace should be used, which can take care of volumes, too.

Member ug::SaveGridHierarchyTransformed (MultiGrid &mg, const char *filename, number offset)
: Support any type of position attachment
Member ug::SaveGridHierarchyTransformed (MultiGrid &mg, ISubsetHandler &sh, const char *filename, number offset)
: Support any type of position attachment
Member ug::SaveParallelGridLayout (MultiGrid &mg, const char *filename, number offset=0.1)
: Support any type of position attachment
Member ug::SavePartitionMapToFile (PartitionMap &pm, const char *filename, TAPos &aPos)
currently only the .ugx format is supported.
Member ug::SaveSurfaceViewTransformed (MultiGrid &mg, const SurfaceView &sv, const char *filename, number offset=0.1)
: Support any type of position attachment
Member ug::SelectSmoothEdgePath (Selector &sel, number thresholdDegree, number normalWeight, bool stopAtSelVrts=true, APosition &aPos=aPosition)
: replace aPos by an template AttachmentAccessor TAAPosVrt.
Member ug::SerializeMultiGridElements (MultiGrid &mg, GridObjectCollection goc, MultiElementAttachmentAccessor< AInt > &aaInt, BinaryBuffer &out, MultiElementAttachmentAccessor< AGeomObjID > *paaID=NULL)

add support for constrained/constraining faces

use ConstVertexArrays instead of virtual functions ...->vertex(...)

Member ug::shared_rules::RecursiveRefine (int *newIndsOut, int *newEdgeVrts, const int faceVrtInds[][4], const int faceEdgeInds[][4], int numVrts, int numEdges, int numFaces)
add support for snap-vertices.
Member ug::StdTransfer< TDomain, TAlgebra >::enable_p1_lagrange_optimization (bool enable)
The normal assembling strategy should be optimized in such a way that the p1-lagrange optimization is no longer required. This however involves something like a ref-type-hash for each element, which returns a unique number based on the types and order of children.
Class ug::Table< T >
different alignments for different columns / rows / fields
Class ug::TParallelGlobalRefiner< TRefiner >
This class would benefit from some comfort methods and a better documentation.
Member ug::vtk_export_ho (SmartPtr< TGridFunction > u, const std::vector< std::string > &vFct, size_t order, SmartPtr< VTKOutput< TGridFunction::domain_type::dim > > vtkOutput, const char *filename, size_t step, number time, const std::vector< std::string > &vSubset)
The order parameter might be left out and determined automatically from the grid function.