diff --git a/docs/sphinx/devel/about_doc.rst b/docs/sphinx/devel/about_doc.rst index 22c4cf828704bc1101b9bbf37224bb7c8b304003..e846e8355e2c518728b43844b8382ca368e401d4 100644 --- a/docs/sphinx/devel/about_doc.rst +++ b/docs/sphinx/devel/about_doc.rst @@ -3,9 +3,8 @@ How to document classes in HySoP ================================= -We try to fit as much as possible with `numpydoc guide <https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt>` +We try to fit as much as possible with `numpydoc guide <https://numpydoc.readthedocs.io/en/latest/>` guide standards. See the files fields/continuous.py and operator/drag_and_lift.py which are used as reference files for documentation -and - +and diff --git a/docs/sphinx/devel/about_operators_graph.rst b/docs/sphinx/devel/about_operators_graph.rst new file mode 100644 index 0000000000000000000000000000000000000000..2ba3dfd61b7a4f6f31c06ef99f8f2ac5c2bb0600 --- /dev/null +++ b/docs/sphinx/devel/about_operators_graph.rst @@ -0,0 +1,45 @@ +.. _about_operators_graph: + +How HySoP deals with computational graphs of operators +====================================================== + +.. inheritance-diagram:: + hysop.core.graph.computational_node.ComputationalGraphNode + hysop.core.graph.computational_graph.ComputationalGraph + hysop.core.graph.node_generator.ComputationalGraphNodeGenerator + hysop.core.graph.computational_operator.ComputationalGraphOperator + hysop.core.graph.computational_node_frontend.ComputationalGraphNodeFrontend + hysop.operator.directional.directional.DirectionalOperatorBase + hysop.operator.directional.directional.DirectionalOperatorGenerator + hysop.operator.directional.directional.DirectionalOperatorFrontend + hysop.numerics.splitting.directional_splitting.DirectionalSplitting + hysop.problem.Problem + :parts: 1 + :caption: Inheritance diagram for HySoP computational graphs. + + +HySoP library is designed for the user to manipulate only operators +and problems. It internally build a directed graph of operators (low level +computations or data operations) for running a single a solver +iteration. Therefore, solving a Problem means running iteratively the +graph traversal. Order of inserting elements in the Problem using +:meth:`~hysop.problem.Problem.insert` (or graph using :meth:`~hysop.core.graph.computational_graph.ComputationalGraph.push_nodes`) +is important. + +Two kind of object can be inserted into a graph: + +- a :class:`~hysop.core.graph.computational_node.ComputationalGraphNode` by means of: + + * an operator (:class:`~hysop.core.graph.computational_operator.ComputationalGraphOperator`) + * a sub-graph (:class:`~hysop.core.graph.computational_graph.ComputationalGraph`) when using a operator of operators + +- an operator generator (:class:`~hysop.core.graph.node_generator.ComputationalGraphNodeGenerator` or + :class:`~hysop.core.graph.computational_node_frontend.ComputationalGraphNodeFrontend`). In that case, only generated + operators are inserted into graph, the generator itself is not inserted. + +We distinguish directional operators from operators. Directional +operators must split into several operators (at least one per spatial +directions) using a :class:`~hysop.numerics.splitting.directional_splitting.DirectionalSplitting`. The nested +operators are sharing a common basis: +:class:`~hysop.operator.directional.directional.DirectionalOperatorBase` that are generated by :class:`~hysop.operator.directional.directional.DirectionalOperatorGenerator`. Directional operators generators will automatically insert also +transposition operators (see :ref:`about_work_arrays`). diff --git a/docs/sphinx/devel/index.rst b/docs/sphinx/devel/index.rst index 660c466335a11edf864680c296aed9dc49aa7d83..2eef3e21d7b6b4314f300b3c6022680ef804985c 100644 --- a/docs/sphinx/devel/index.rst +++ b/docs/sphinx/devel/index.rst @@ -2,7 +2,7 @@ ############################ -HySoP Developers Guide +HySoP Developers Guide ############################ This part is for developers of Hysop and provides guidelines on the "proper" ways to write python code, documentation, examples, tests ... in HySoP. @@ -12,6 +12,11 @@ This part is for developers of Hysop and provides guidelines on the "proper" way about_doc coding_guidelines + fortran2python + about_operators_graph about_work_arrays + about_codegen + about_autotuning + about_symbolic memo_sphinx hysop_validation diff --git a/docs/sphinx/index.rst.in b/docs/sphinx/index.rst.in index a70e47b6ef165447fb4be63b39982cb68c75616d..89158201271167117b27f74454ced348e71c36f1 100644 --- a/docs/sphinx/index.rst.in +++ b/docs/sphinx/index.rst.in @@ -13,6 +13,7 @@ HySoP software: hybrid simulation with particles getting_started/index users_guide/index examples/index + devel/index reference/index license contacts @@ -32,6 +33,3 @@ The library is mainly written in Python (high level functionnalities) and Fortra .. image:: /figures/vorticity_field.* :height: 200px - - -