9999 Wiki Organization Proposal

Kirill Terekhov edited this page Sep 22, 2015 · 16 revisions

Wiki files should be ordered and named so that they will fit nicely into PDF in later times.

Instructions on how to make PDF from github wiki are available here http://mountainbikesandtrombones.blogspot.com/2014/07/how-to-export-github-wiki-to-pdfs-andor.html.

The page title should start from 4 digits that will put each document into order. For example this document has 9999 position. In order for wiki to be extensible some enumeration should be reserved for later times.

Proposed enumeration for documents:

0000 - Home page, since github expects page with name "Home" as first page, then the page should be renamed only for the purposes of generating PDF

0001-0099 - Introduction, Motivation, Goals, etc

0100-0199 - Introduction for compilation guides, platform/compiler - specific introductions

0200-0299 - Windows compilation guides

0300-0399 - Macintosh compilation guides

0400-0599 - Linux compilation guides

0600-0699 - IBM AIX compilation guides

0700-0799 - Universal compilation guides

0800-0999 - Reserved for future compilation guides

1000 - Introduction for User Guide

  • Collection of links

1001-1199 - Reserved for Domain class, using external tools to make domains, import/export of domain, examples

1200-1299 - working with Mesh class in serial:

  • using external tools to make meshes (link to gmsh, tetgen, ani3d and other public-domain meshers, some link on how to use them),
  • import/export of mesh (file formats supported for serial use, description of Mesh::Save, Mesh::Load, Mesh::SetFileOption, Mesh::GetFileOption)
  • traversal of adjacency hierarhy, organisation of hierarchy
  • types of supported elements, concept of element as interface for data, hierarchy
  • how to get elements, number of elements, iterate through them (cover getAdjElements, nbAdjElements), getNodes, getEdges, getFaces, getCells, ElementArray::iterator)
  • using markers, safely releasing markers
  • using markers to traverse subsets of ierarhy
  • advanced hierarchy traversal (BridgeAdjacencies, Face::Neighbour)
  • computing unions, intersections, differences (class ElementArray functionality)
  • direct access to hierarchy (HighConn,LowConn)
  • converting element interface for access to functionality (getAsNode, getAsEdge, getAsFace, getAsCell)
  • associate tags with the data, parameters and limitations (cover CreateTag, DeleteTag)
  • working with mesh data, basic approach (GetData, GetDataSize, SetData, SetDataSize)
  • interface for direct access to mesh data (Real,Integer,Bulk, RealArray,...)
  • extended description for Reference, ReferenceArray data types
  • creating mesh sets, adding and deleting elements, iterating through elements (class ElementArray, GetName, PutElement(s), RemoveElement(s), ElementArray::iterator)
  • operations on sets (Union,Difference,Intersect,AddElements)
  • working with sorted sets, behaviour (SortSet)
  • hierarchy of sets as general tree structures (GetParent,GetSibling,GetChild,AddSibling,AddChild,...)
  • setting and using geometric services (PrepareGeometricData,RemoveGeometricData,Cell::Volume,Face::Area...)
  • diagnosing mesh problems (SetTopologyError, GetTopologyError)
  • building meshes on your own, preserving elements orientation (CreateNode,CreateEdge,CreateFace,CreateCell)
  • using services for mesh modification (Show,Hide,Delete,Connect,Disconnect,SplitEdge,UniteEdges,SplitFace,UniteFaces,SplitCell,UniteCells, BeginModification, ApplyModification, EndModification)
  • examples

1300-1399 - working with Mesh class in parallel

  • supported mesh formats for parallel use, how to load serial meshes for parallel use
  • concept of ghost, shared and owned elements, accessing parallel information (GetStatus,SetStatus,OwnerTag,ProcessorsTag,Layerstag,BridgeTag)
  • valid parallel state for mesh, prepearing mesh for parallel use (ResolveShared)
  • exchanging ghost elements (ExchangeGhost,Layerstag,BridgeTag)
  • prescribing elements to become ghosted (ExchangeMarked,SendtoTag)
  • exchanging mesh data from shared elements to ghosted elements (ExchangeData, ExchangeDataBegin, ExchangeDataEnd)
  • exchanging data the other way, defining reduction functions (ReduceData, ReduceDataBegin, ReduceDataEnd)
  • modifying mesh in parallel (ResolveModification)
  • redistributing mesh elements (Redistribute,RedistributeTag)
  • common problems in parallel, some scenarios of incorrect use
  • examples

1400-1499 - using Partitioner class to split mesh among processors, examples

  • using Partitioner to distribute or redistribute mesh
  • choosing ParMetis, Zoltan
  • providing weights
  • examples

1500-1599 - user guide for Solver class:

  • filling Solver::Vector with values,
  • filling Solver::Matrix with values,
  • using Solver class to solve linear problem,
  • passing parameters into solvers from code,
  • using with external solving packages, petsc, aztec, ifpack, ml (skip belos)
  • providing names to Solver to specify parameters
  • textfile of parameters for internal solvers (for future)
  • textfile of parameters for petsc (basic parameters, link to petsc page for specific)
  • xml file of parameters for trilinos (basic parameters, link to specific solver guides for more parameters)
  • examples (some words about examples/MatSolve example)

1600-1699 - using Automatizer class for automatic problem differentiation, checking derivatives, forming Solver::Matrix class by results of automatic differentiation, examples

1600-1699 - reserved for NonlinearSolver class

1700-1799 - Examples for multiple modules usage

1800 List of all examples

1801 Compiling your projects with INMOST using cmake

1801-1999 - Reserved for future

2000 - Introduction for Developer Guide

2001-2199 - Coding style, DO's, DONT's, commenting and documenting code

2200-2299 - Optimizing and debugging INMOST in parallel

2300-2999 - Reserved

3000 - Introduction for Technical Description

3001-3099 - Algorithms in Domain class

3100-3199 - Data organization in mesh, organization for mesh parts and element links, hierarchy organization, markers, modification algorithms

3200-3299 - Description for parallel algorithms

3300-3399 - Organization for mesh modification in parallel

3400-3499 - Organization of Solver::Vector and Solver::Matrix, description of algorithms for INNER_ILU2 and INNER_MLILUC

3500-3599 - Description of automatic discretization algorithms

3600-3699 - Reserved for description of nonlinear solver algorithms

3700-3999 - Reserved for technical description

4000-4999 - Benchmarking

5000-5999 - Testing

5000-5099 - articles for testing

5100-5199 - description of tests for Domain

5200-5299 - description of tests for Mesh

5300-5399 - description of tests for parallel Mesh

5400-5499 - description of tests for Solver

5500-5599 - description of tests for Autodiff

5600-5699 - description of tests for Nonlinear solver

6000-6999 - Technical proposals

7000-7099 - Porting guides from MOAB, MSTK, FMDB STK for mesh

7100-7199 - Porting guides from PETSc, Trilinos, etc for solvers

7200-9899 - Reserved for extensions

9900-9999 - Rules for writing Wiki, proposals

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.