From: jfa Date: Thu, 1 Jun 2006 11:21:18 +0000 (+0000) Subject: Join modifications from branch BR_DEBUG_3_2_0b1 X-Git-Tag: T3_2_0b2 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=720fbb2ca9b24fcd1a6242fca1d0dfadf43e75bf;p=tools%2Fmedcoupling.git Join modifications from branch BR_DEBUG_3_2_0b1 --- diff --git a/doc/MEDMEM/FIELDcreate.cxx b/doc/MEDMEM/FIELDcreate.cxx index ca0706467..d7535213d 100644 --- a/doc/MEDMEM/FIELDcreate.cxx +++ b/doc/MEDMEM/FIELDcreate.cxx @@ -1,21 +1,5 @@ // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ // using namespace std; #include "MEDMEM_Mesh.hxx" diff --git a/doc/MEDMEM/FIELDcreate.py b/doc/MEDMEM/FIELDcreate.py index 478d6dc56..908aac180 100644 --- a/doc/MEDMEM/FIELDcreate.py +++ b/doc/MEDMEM/FIELDcreate.py @@ -1,3 +1,6 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# ###################################################################### # # # This Python script should be executed when the shared library is # diff --git a/doc/MEDMEM/FIELDgeneral.cxx b/doc/MEDMEM/FIELDgeneral.cxx index 82771051a..6a546ee3b 100644 --- a/doc/MEDMEM/FIELDgeneral.cxx +++ b/doc/MEDMEM/FIELDgeneral.cxx @@ -1,21 +1,5 @@ // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ // using namespace std; #include "MEDMEM_Mesh.hxx" diff --git a/doc/MEDMEM/FIELDgeneral.py b/doc/MEDMEM/FIELDgeneral.py index 34f6873ab..5daf18bda 100644 --- a/doc/MEDMEM/FIELDgeneral.py +++ b/doc/MEDMEM/FIELDgeneral.py @@ -1,3 +1,6 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# ###################################################################### # # # This Python script should be executed when the shared library is # diff --git a/doc/MEDMEM/MEDMEM_Content.tex.in b/doc/MEDMEM/MEDMEM_Content.tex.in new file mode 100644 index 000000000..109e8bc66 --- /dev/null +++ b/doc/MEDMEM/MEDMEM_Content.tex.in @@ -0,0 +1,959 @@ +% ___________________________________________________________________________ +% | | +% | DEBUT DU TEXTE | +% |___________________________________________________________________________| + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Introduction} +\section{Rationale for Med Memory} +The Med data exchange model (DEM in proper english) is the format used in the +Salome platform for communicating data between different components. It +manipulates objects that describe the meshes underlying scientific +computations and the value fields lying on these meshes. This data exchange +can be achieved either through files using the Med-file formalism or directly +through memory with the Med Memory (\verb+MEDMEM+) library. + +The Med libraries are oganized in multiple layers: +\begin{itemize} +\item The MED file layer : C and Fortran API to implement mesh and field +persistency. +\item The MED Memory level C++ API to create and manipulate mesh and field +objects in memory. +\item Python API generated using SWIG which wraps the complete C++ API of the +MED Memory +\item CORBA API to simplify distributed computation inside SALOME (Server +Side). +\item MED Client classes to simplify and optimize interaction of distant +objects within the local solver. +\end{itemize} + +Thanks to Med Memory, any component can access a distant +mesh or field object. Two codes running on +different machines can thus exchange meshes and fields. +These meshes and fields can easily be read/written in a Med file +format, enabling access to the whole Salome suite of tools +(CAD, meshing, Visualization, other components). + +\section{Outline} + +In this document, we describe the API of the Med Memory library (available in +C++ and in Python). This document is intended for developers who are in charge +of integrating existing applications in the Salome platform. + +As will be seen in section \ref{sec:objects}, the API consists +of very few classes: +\begin{itemize} +\item a general MED container, +\item meshes, +\item supports and derived classes, +\item fields +\item drivers for reading and writing in MED, GIBI and VTK files. +\end{itemize} + +All these are detailed in the following sections. The C++ +formalism will be used for the description in these sections. + Python syntax is very similar and is given in appendix \ref{sec:python}. + +\section{Naming conventions} +The naming conventions are rather straightforward, but the user used to the +Med-File semantics may find that there are a few noticeable differences (see +the following section). +\begin{description} +\item[cell] entity of dimension equal to the mesh dimension ($1$, $2$ or $3$). +\item[component] in a field, represents a value that is available for each +element of the support (for instance : $T$, $v_x$, $\sigma_{xy}$)). +\item[connectivity (descending)] connectivity table expressing connectivity of +dimension $d$ elements in terms of list of dimension $d-1$ elements. +\item[connectivity (nodal)] connectivity table expressing connectivity of +dimension $d$ elements in terms of list of nodes. +\item[coordinates] in a mesh, coordinates can be described by strings giving +the names of the coordinates, the units of the coordinates, and the type of +coordinates ('CARTESIAN', 'SPHERICAL' or 'CYLINDRICAL'). +\item[description] string of characters used to describ an object without +giving any access to a query method. +\item[dimension] Med Memory discriminates the mesh dimension from the space +dimension (a surface shape in $3D$ will have $2$ as a mesh dimension). +\item[driver] object attached to a mesh or a field to read (resp. write) data +from (resp. to) a Med-file. +\item[edge] entity of dimension $1$ in a $2D$ mesh. +\item[element] elementary component of a mesh ($0D$, $1D$, $2D$ or $3D$). +\item[entity] category giving information on the dimension of elementary +components of meshes : node, edge, face (only in $3D$) or cell. +\item[face] for $3D$ meshes, faces are the $2D$ entities. +\item[family] support which is composed of a set of groups, which do not +intersect each other, and which gives access to those groups. +\item[field] array of integer, integer array, real or real array lying on a +support (the dimension of the array of values for each element of the support +is called the number of components). A field is uniquely defined by its name, +its support, its iteration number and its order number. $-1$ is the default +value of those two numbers. +\item[group] support with additional access to parent families. +\item[iteration number] information attached to a field that expresses the +number of the time step in the computation ($-1$ is its default value). +\item[name] information attached to a mesh, support or field to name it and access to it. +\item[node] entity of dimension $0$. +\item[order number] information attached to a field that expresses the number +of an internal iteration inside a time step in the computation ($-1$ is its +default value). +\item[support] list of elements of the same entity. +\item[type] category of an entity (triangle, segment, quadrangle, tetrahedron, +hexahedron, etc...). +\end{description} + +\section{Limitations and advantages regarding Med-File} +The Med Memory may only read meshes defined by their nodale connectivities. +Following this assumption, in Med File framework all elements defined +in the mesh should be stored as a {\bf MED\_MAILLE}. + +The Med Memory is able to read meshes defined by their nodale connectivities, +and where somme geometric faces are stored as a {\bf MED\_FACE} or a +{\bf MED\_ARETE} Med files. Which is not really Med File compliant. + +{\bf MED\_MAILLE}, {\bf MED\_FACE} and {\bf MED\_ARETE} should be taken in the +Med File sense. In future version, meshes defined by their descending +connectivities could be treated. + +The field notion in Med File and Med Memory is quite different. In Med memory +a field is of course its name, but as well its iteration number, its order +number and finally its corresponding sot of values. But in Med File a field is +only flagged by its name. + +\chapter{Med Memory API}\label{sec:objects} + +\section{Conventions} + +\begin{itemize} +\item In this document, one refers to the main user documentation +\cite{RefManualMedMemory} where the variable \verb+$MED_ROOT_DIR+ (resp. +\verb+$MED_SRC_DIR+) is the Med Memory directory installation (resp. sources +directory). + +\item All numberings start at one (take care of array index !). + +\item When one gets a C (resp. C++) type array (resp. container) using a \texttt{get...} method, one should +not replace some value of it. Access is in read only. Other use may +product an impredicable result. To modify a such array (resp. container) use a \texttt{set...} +method. + +\item There are many couple of methods that have similar syntaxes (one singular and one +plural). The plural method returns an array and the singular one returns one +particular value in this array (see \method{double getCoordinate(int i)} and +\method{double* getCoordinates()} for example). + +\item Difference between local and global number in mesh element connectivity list~: when one talks about an +element number, one could see $i^{th}$ quadrangle ($i^{th}$ in quadrangles +array~: local numbering) or $j^{th}$ element ($j^{th}$ in all elements array~: +global numbering). These two numbering are equivalent only if one has only one +geometric type ; + +\end{itemize} + +\section{Namespaces} +Med Memory uses two namespaces : \verb+MEDMEM+ which is the general +namespace where the main classes are defined and \verb+MED_EN+ +which defines enums that can be used by an English-speaking +programer. + +\section{Classes} +At a basic usage level, the API consists in few classes which are located in +the \verb+MEDMEM+ C++ namespace (consult figure \ref{fig:uml_light} which gives +an UML diagram view of the main Med Memory classes~: +\begin{description} +\item[MED] the global container; +\item[MESH] the class containing 2D or 3D mesh objects; +\item[SUPPORT] the class containing mainly a list of mesh elements; +\item[FIELD] the class template containing list of values lying on a +particular support. +\end{description} +\begin{center} +\begin{figure} +\includegraphics[width=15cm]{MEDMEM_UML_light.png} +\caption{UML diagram of basic Med Memory API classes.}\label{fig:uml_light} +\end{figure} +\end{center} +The API of those classes is quite sufficient for most of the component +integrations in the Salome platform. The use of the Med Memory libraries may +make easier the code coupling in the Salome framework. With these classes, it +is possible to~: +\begin{itemize} +\item read/write meshes and fields from MED-files; +\item create fields containing scalar or vectorial values on list of elements +of the mesh; +\item communicate these fields between different components; +\item read/write such fields. +\end{itemize} +Note that on the figure \ref{fig:uml_light} as well as \ref{fig:uml} that the +MED container controls the life cycle of all the objects it contains~: its +destructor will destroy all the objects it aggregates. On the other hand, the +life cycle of mesh, support and field objects are independent. Destroying a +support (resp. a mesh) will have no effect on the fields (resp. on the support) +which refer to it. But the user has to maintain the link~: a mesh agregates a +support which agregates a field. If the user has to delete Med Memory objects, +the field has to be deleted first, then the support and finally the mesh. + +A more advanced usage of the Med Memory is possible through other classes. +Figure \ref{fig:uml} gives a complete view of the Med Memory API. It includes : +\begin{description} +\item[GROUP] a class inherited from the SUPPORT class used to create supports +linked to mesh groups. It stores restricted list of elements used to set +boundary conditions, initial values. +\item[FAMILY] which is used to manipulate a certain kind of support and does +not intersect each other; +\item[MESHING] which builds meshes from scratch, it can be used to transform +meshes from a specific format to the MED format or to integrate a mesher +within Salome platform (note that class does not add element or node to a +mesh); +\item[Driver classes] which enable the user to get a fine control of the I/O +operations. +\end{description} +\begin{center} +\begin{figure} +\includegraphics[width=15cm]{MEDMEM_UML.png} +\caption{UML diagram of Med Memory API classes.}\label{fig:uml} +\end{figure} +\end{center} +\section{Enums} +A few enums are defined in the \verb+MED_EN+ namespace : +\begin{itemize} +\item The \verb+medGeometryElement+ enum which defines geometry types. The +available types are linear and quadratic elements (consult +\cite{RefManualMedMemory}). The entries of the enum are quite +self-explanatory~: +\begin{itemize} +\item \verb+MED_NONE+ +\item \verb+MED_POINT1+ +\item \verb+MED_SEG2+ +\item \verb+MED_SEG3+ +\item \verb+MED_TRIA3+ +\item \verb+MED_QUAD4+ +\item \verb+MED_TRIA6+ +\item \verb+MED_QUAD8+ +\item \verb+MED_TETRA4+ +\item \verb+MED_PYRA5+ +\item \verb+MED_PENTA6+ +\item \verb+MED_HEXA8+ +\item \verb+MED_TETRA10+ +\item \verb+MED_PYRA13+ +\item \verb+MED_PENTA15+ +\item \verb+MED_HEXA20+ +\item \verb+MED_POLYGON+ +\item \verb+MED_POLYHEDRA+ +\item \verb+MED_ALL_ELEMENTS+ +\end{itemize} +\item +an enum which contains the different mesh entities, \verb+medEntityMesh+, the +entries of which being : +\begin{itemize} +\item \verb+MED_CELL+ +\item \verb+MED_FACE+ +\item \verb+MED_EDGE+ +\item \verb+MED_NODE+ +\item \verb+MED_ALL_ENTITIES+ +\end{itemize} +\item an enum which describes the way node coordinates or field values are +stored, +\begin{itemize} +\item \verb+MED_FULL_INTERLACE+ for arrays such that $x_1,y_1,z_1,x_2,y_2,z_2,\ldots,x_n,y_n,z_n$; +\item \verb+MED_NO_INTERLACE+ for arrays such that $x_1,x_2,\ldots,x_n,y_1,y_2,\ldots,y_n,z_1,z_2,\ldots,z_n$; +\item \verb+MED_UNDEFINED_INTERLACE+, the undefined interlacing mode. +\end{itemize} +\item +an enum which describes the type of connectivity +\begin{itemize} +\item \verb+MED_NODAL+ for nodal connectivity; +\item \verb+MED_DESCENDING+ for descending connectivity. +\end{itemize} +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{How to use MED object} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{General Information} + +A typical use of this object is to mount in memory what is in a MED file (or +any type of driver in red or read/write mode) and it will manage its memory on +its own. Then from this object one can get some information such as~: + +\begin{itemize} +\item the number of meshes stored in this object using the +{\method{getNumberOfMeshes}}. +\item the number of fields stored in this object using the +{\method{getNumberOfFields}}. +\item a list of mesh names using the {\method{getMeshNames}}. +\item a list of field names using the {\method{getFieldNames}}. +\item a list of MESH object using the {\method{getMesh}} +\item a list of FIELD object using the {\method{getField}} +\item a list of SUPPORT object on all type of entities (node, cell, + face in 3d or edge on 2d) using the {\method{getSupport}}. +\end{itemize} + +The destructor of this object will destruct itself all FIELD, SUPPORT and MESH +objects; via its get method you will have a pointer on this object and you +should never delete it. + +One can add as well some MESH or FIELD object via the {\method{addMesh}} and +the {\method{addField}} respectively. + +To write a complete MED object in an available writing format, on may use +{\method{addDriver}} and then {\method{write}}. + +For an example using these methods, one may see the Python scripts in the +directory \verb+$MED_ROOT_DIR/bin/salome/+,\verb+testMedObj.py+, or C++ +example program in the directory \verb+$MED_SRC_DIR/src/MEDMEM+, +\verb+duplicateMED.cxx+. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{How to use MESH object} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\section{General Information} + +We could get some general information about a MESH object such as~: + +\begin{itemize} +\item name (\method{getName}) +\item a description (\method{getDescription}) +\item the space dimension (\method{getSpaceDimension}) +\item the mesh dimension (\method{getMeshDimension}) +\end{itemize} + +Here is a small C++ example program which the Python version may be found in +\ref{MESHgeneral.py}. + +\fileCxx{MESHgeneral.cxx} + +\section{Information about nodes} + +\begin{enumerate} +\item I want to get the number of nodes~: Really simple, use \method{getNumberOfNodes}. +\item I want to get the coordinates components names~: use \method{getCoordinatesNames} +which returns a string array (one string for each space dimension) +\item I want to get the coordinates components units~: use \method{getCoordinatesUnits} +which returns a string array (one string for each space dimension) +\item I want to get the coordinates system~: use \method{getCoordinatesSystem} +which returns a string (\verb+"CARTESIAN"+, \verb+"CYLINDRICAL"+ or \verb+"SPHERICAL"+). +\item I want to get the nodes coordinates~: use \method{getCoordinates} +which return a pointer to the coordinates array where values are interlace +or no. + +\textbf{Warning~:} + +\begin{itemize} +\item When we get coordinates in \verb+MED_NO_INTERLACE+ mode, we get an +array where values are ordered like (\verb+X1,X2,X..., Y1,Y..., Z1,Z...+). +\item When we get coordinates in \verb+MED_FULL_INTERLACE+ mode, we get +an array where values are ordered like (\verb+X1,Y1,Z1, X2,Y2,Z2, ...+). +\end{itemize} +\item I want to get one particular value of coordinate~: use \method{getCoordinate} +which returns the value of \( i^{th} \) node and \( j^{th} \) axis. +\end{enumerate} + +Here is a small C++ example program which the Python version may be found in +\ref{MESHcoordinates.py}. + +\fileCxx{MESHcoordinates.cxx} + +\section{Information about cells} + +\begin{enumerate} +\item I want to get the number of geometric type for a mesh entity~: use +\method{getNumberOfTypes} + + +\textbf{C++ Example~:} + +\verb+int NumberOfCellsTypes = myMesh.getNumberOfTypes(MED_CELL);+ + +%%%%%%%%%%%%%%%%% +\item I want to get all geometric type for a mesh entity~: use +\method{getTypes} to get an array of \verb+medGeometryElement+ +(to use directly in others methods). + +\textbf{C++ Example~:} + +\verb+const medGeometryElement * Types = myMesh.getTypes(MED_CELL);+ + +(array is of size \verb+NumberOfCellsTypes+) + +\item I want to get the number of cells~: use \method{getNumberOfElements} +which return this information. You must give the mesh entity (\verb+MED_CELL+, +\verb+MED_FACE+, \verb+MED_EDGE+ or \verb+MED_NODE+) and a geometric +type of this entity. + + +\textbf{C++ Example~:} + +\verb+int NumberOfTriangle = myMesh.getNumberOfElements(MED_FACE,MED_TRIA3);+ + +\verb+int NumberOfFace = myMesh.getNumberOfElements(MED_FACE,MED_ALL_ELEMENT);+ + +\item I want to get the geometric type of one element~: use \method{getElementType} +which return a \verb+medGeometryElement+. + + +\textbf{C++ Example~:} + +\verb+medGeometryElement myType = myMesh.getElementType(MED_FACE,10);+ + +Return the \verb+medGeometryElement+ of \( 10^{th} \) face. + +\item I want to get a connectivity~: use \method{getConnectivity} which +return an array with connectivity values. + + +\label{getConnectivity} + +\textbf{C++ Example~:} + +\begin{verbatim} +int NumberOfTetrahedron = myMesh.getNumberOfElements(MED_CELL,MED_TETRA4); +const int * TetrahedronConnectivity = + myMesh.getConnectivity(MED_FULL_ENTERLACE, + MED_NODAL, + MED_CELL, + MED_TETRA4); +\end{verbatim} +\verb+TetrahedronConnectivity+ contain nodal connectivity +of tetrahedron in mesh. It is arranged in full enterlace mode and +its size is \verb+NumberOfTetrahedron x 4+. + +If you want to get connectivity of all elements (with \verb+Type=MED_ALL_ELEMENTS+), +you must use the index array (return by \method{getConnectivityIndex}) +to get connectivity for each elements (see example \myref{MESHconnectivities.cxx}). + +\item I want to get an element number from a connectivity~: use \method{getElementNumber} +which return the global number of a given connectivity. + + +\textbf{C++ Example~:} +\begin{verbatim} +int * myElementConnectivity = {2,10,12,14}; +int myNumber = myMesh.getElementNumber(MED_NODAL,MED_CELL, + myElementConnectivity); +\end{verbatim} + +%%%%%%%%%%% WITH POLY METHODS %%%%%%%%%%%% + +\item The listed above methods do not take into account information about + \verb+polygonal+ and \verb+polyhedral+ cells contained in a MESH object. To get + full information about cell types, use the same methods with + \verb+WithPoly+ postfix: +\begin{itemize} +\item use \method{getNumberOfTypesWithPoly} to get the number of + geometric types for a mesh entity; +\item use \method{getTypesWithPoly} to get all geometric types for a mesh entity; +\item use \method{getNumberOfElementsWithPoly} to get the number of cells; +\item use \method{getElementTypeWithPoly} to get the geometric type of + one element. +\end{itemize} +There are separate methods to get number of polygons and polyhedrons: +\method{getNumberOfPolygons} and \method{getNumberOfPolyhedron} + +To get connectivity of polygonal elements, use \method{getPolygonsConnectivity} along with +\method{getPolygonsConnectivityIndex} (see example \myref{MESHconnectivities.cxx}). + +To get nodal connectivity of polyhedral elements, it is necessary use together +3 methods: \method{getPolyhedronConnectivity}, \method{getPolyhedronFacesIndex} +and \method{getPolyhedronIndex} (see example \myref{MESHconnectivities.cxx}). + +\end{enumerate} + +Here is a small C++ example program which the Python version may be found in +\ref{MESHconnectivities.py}. + +\fileCxx{MESHconnectivities.cxx} + +\section{Information about FAMILY and GROUP} + +If one wants to get from a MESH object + + + + +To write a complete MESH object in an available writing format, on may use +{\method{addDriver}} and then {\method{write}}. + +For an example using these methods, one may see the Python scripts in the +directory \verb+$MED_ROOT_DIR/bin/salome/+,\verb+med_test1.py+, or C++ example +program in the directory \verb+$MED_SRC_DIR/src/MEDMEM+, \verb+med_test.cxx+. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{How to use SUPPORT object} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Create a SUPPORT object} + +\label{CreateSupport} + +To create a SUPPORT object, you must give : + +\begin{itemize} +\item a reference to a MESH object +\item its name +\item on which mesh entity it apply to +\end{itemize} +\textbf{C++ example~:} + +\verb+SUPPORT mySupport(myMesh,"support on all faces",MED_FACE) ;+ +By default, this support is defined on all elements of the given entity. + +If you want a restricted SUPPORT, you must add manualy information +about what do you want~: + +\begin{itemize} +\item is not on all elements~: \verb+mySupport.setAll(false);+ +\item on how many geometric type~:\\ + \verb+mySupport.setNumberOfGeometricType(myNumberOfGeometricType);+ +\item on which geometric type~:\\ + \verb+mySupport.setGeometricType(myGeometricType);+ +\item Temporary : the Gauss point number for each geometric type~:\\ + \verb+mySupport.setNumberOfGaussPoint(myNumberOfGaussPoint);+ +\item the number of elements for each geometric type~:\\ + \verb+mySupport.setNumberOfEntities(myNumberOfEntities);+ +\item the total number of elements~:\\ + \verb+mySupport.setTotalNumberOfEntities(myTotalNumberOfEntities);+ +\item the array which contains elements for each geometric type~:\\ + \verb+mySupport.setNumber(myNumber);+ +\end{itemize} +You could also use \method{setpartial} which set all you need. + + +\section{Use a SUPPORT object} + +You could get all basic information (as you set them in \myref{CreateSupport})~: + +\begin{itemize} +\item \verb+getName()+ +\item \verb+getDescription()+ +\item \verb+getMesh()+ +\item \verb+getEntity()+ +\item \verb+isOnAllElements()+ +\item \verb+getNumberOfTypes()+ +\item \verb+getTypes()+ +%\item \verb+getNumberOfGaussPoint()+ +%\item \verb+getNumberOfGaussPoint(myGeometricType)+ +\item \verb+getGeometricTypeNumber()+ +\item \verb+getNumberOfElements(myGeometricType)+ +\item \verb+getNumber(myGeometricType)+ +\item \verb+getNumberIndex()+ +\end{itemize} +For details about this methods, see the reference manual \cite{RefManualMedFile}. + +The use of \method{getNumber} and \method{getNumberIndex} are the +same as \method{getConnectivity} and \method{getConnectivityIndex} +(see item \myref{getConnectivity} + +There is another particular method to blend another SUPPORT object +into it. + +For example in C++ : +\begin{verbatim} +SUPPORT mySupport ; +SUPPORT myOtherSupport ; +... +mySupport.blending(myOtherSupport) ; +\end{verbatim} + +\verb+mySupport+ contain now all elements defined originally in it, +more those defined in \verb+myOtherSupport+. + + +\section{Case of FAMILY object} + +A FAMILY is a SUPPORT with some additionnal methods that concern some optional attribut (we could have none) and group (we could also have none) : +\begin{itemize} +\item \method{getIdentifier} return the family identifier (an integer) + +\item \method{getNumberOfAttributes} return the number of attributes of this family +\item \method{getAttributesIdentifiers} and \method{getAttributeIdentifier} return an integer array or an integer that represent attribut identifier. +\item \method{getAttributesValues} and \method{getAttributeValue} return an integer array or an integer that represent attribut value. +\item \method{getAttributesDescriptions} and \method{getAttributeDescription} return a string array or a string that represent attribut description. + +\item \method{getNumberOfGroups} return the number of groups which it belog to. +\item \method{getGroupsNames} and \method{getGroupName} return a string array or a string that represent the group name which it belog to. + +\end{itemize} + +\section{Case of GROUP object} + +A GROUP is a SUPPORT with some additionnal methods to find FAMILY that make up it : +\begin{itemize} +\item \method{getNumberOfFamilies} return the number of FAMILY that make up the GROUP ; +\item \method{getFamilies} and \method{getFamily} return a FAMILY array or a FAMILY that make up the GROUP. +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{How to use Field} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Introduction} + +A field is characterized by its name (\method{getName}) and an optional description (\method{getDescription}). + +It is also characterized by this calculating moment : +\begin{itemize} +\item an iteration number (time step number) +\item an order number (use if there are internal iteration in a time step) +\item the time that correspond to this iteration number. +\end{itemize} + +By default, there are no iteration and order number defined (value +MED\_NOPDT and MED\_NONOR). + +A field contain values which apply on some nodes or elements (cell, face or edge). + +We find these informations from a SUPPORT object (see \method{getSupport}). + +Each field have a number of components (\method getNumberOfComponents) and all these components have a name (\method{getComponentsNames} and \method{getComponentName}), a description (\method{getComponentsDescriptions} and \method{getComponentDescription}) and an unit (\method{getMEDComponentsUnits} and \method{getMEDComponentUnit}). + +To get values of a FIELD, you could use \method{getValue}, \method{getValueI} +and \method{getValueIJ}~: + +\begin{itemize} +\item First return a reference to all values in the given mode (full or no +interlace). +\item Second return a reference to $i^{th}$ element values or component values (in accordance with the given mode). +\item Third return the $j^{th}$ component of $i^{th}$ element. +\end{itemize} + +Here is a small C++ example program which the Python version may be found in +\ref{FIELDgeneral.py}. + +\fileCxx{FIELDgeneral.cxx} + +\section{Create a Field} + +It is simple to create a field object. You must know its SUPPORT and the number of components. + +\textbf{Example :} +\verb+FILED myField(mySupport,NumberOfComponents) ;+ + +You must now set a name (\method{setName}) and optionaly a description +(\method{setDescription}). + +By default there are no iteration and order number (negative values) and +time is null. You could change this by using \method{setIterationNumber}, +\method{setOrderNumber} and \method{setTime}. + +You \textbf{SHOULD} also set unit of your components with \method{setMEDComponentUnit} + +To set value, use \method{setValueIJ} to put new value of field. + +Here is a small C++ example program which the Python version may be found in +\ref{FIELDcreate.py}. + +\fileCxx{FIELDcreate.cxx} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{How to use MESHING object} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +This class is a derivated class of MESH class to build a MESH object from +scratch (use of set methods). + +All verifications are under user responsability : If arrays values or arrays +dimensions are wrongs, results are impredicable. + +All arrays in arguments in set methods are duplicated in MESHING object. + +\section{Build a MESHING} + +\label{BuildMeshing} + +\subsection{Coordinates} + +First we must defined points coordinates of the mesh. We use +\method{setCoordinates}. + +\textbf{C++ Example~:} +\begin{verbatim} +MESHING myMeshing ; +const int SpaceDimension=2; +const int NumberOfNodes=6; +int * Coordinates = new int[SpaceDimension*NumberOfNodes] ; +string System="CARTESIAN"; +medModeSwitch MED_FULL_INTERLACE ; +myMeshing.setCoordinates(SpaceDimension,NumberOfNodes,Coordinates,System,Mode); +\end{verbatim} + +Then you could set the coordinates names and units (with +\method{setCoordinatesNames} and \method{setCoordinatesUnits}). + +\subsection{Connectivities} + +When coordinates are defined, we could defined connectivities. + +First we must defined connectivity of MED\_CELL elements. +After, we could defined constituent connectivity if necesary +(MED\_FACE and/or MED\_EDGE). + +For each connectivities, you could use some methods in the following order : +\begin{itemize} +\item \method{setNumberOfTypes} to set the number of differents geometrics +types (3 for example). This method allocates all arrays which size is this +number ; +\item \method{setTypes} to set the differents geometrics types +({MED\_TETRA4,MED\_PYRA5,MED\_HEXA8} for example). Types should be given +in increasing order of number of nodes for this type ; +\item \method{setNumberOfElements} to set the number of elements for +each geometric type. This method allocates connectivities array ; +\item \method{setConnectivity} to set the connectivity in MED\_FULL\_INTERLACE +mode for each geometric type (use \method{setPolygonsConnectivity} and +\method{setPolyhedraConnectivity} for poly elements); +\end{itemize} + +\textbf{C++ Example~:} +\begin{verbatim} +MESHING myMeshing ; +myMeshing.setCoordinates(SpaceDimension,NumberOfNodes,Coordinates,System,Mode); + +myMeshing.setNumberOfTypes(2,MED_CELL); +myMeshing.setTypes({MED_TRIA3,MED_QUAD4},MED_CELL); +myMeshing.setNumberOfElements({3,2},MED_CELL); // 3 MED_TRIA3 and 2 MED_QUAD4 +myMeshing.setConnectivity({1,2,3,6,8,9,4,5,6},MED_CELL,MED_TRIA3); +myMeshing.setConnectivity({1,3,4,5,4,5,7,8},MED_CELL,MED_QUAD4); +\end{verbatim} + + +\section{Defined a GROUP object} + +To add a group in a MESHING object, use \method{addGroup}. + +This method duplicate the GROUP object in the MESH object. + +To build this GROUP object, use SUPPORT methods \ref{CreateSupport} to set all attributes. + +\subsection{WARNING} + +For instance, translation from GROUP objects to FAMILY objects are not completed ! + +You MUST set GROUP objects as if they are FAMILY objects. + +This feature will be fully implemented in next release of med memory. + +Here is a small C++ example program which the Python version may be found in +\ref{MESHINGexample.py}. + +\fileCxx{MESHINGexample.cxx} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Using drivers} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The generic driver mecanism gives users the possibility to write/read +the content of an object according to a specified file format. The +semantic remains the same whatever the object is (MESH, FIELD, MED). +By the way it allows using several file formats for writting an object. + + +\section{Invoking a driver} + + +\subsection{Invoking a driver at creation object time} + +This is the simplest way of invoking a driver. The driver parameters +are given to the constructor of the object. Except for the MED object, +this way of invoking a driver assume you know exactly the name of +the MESH/FIELD you want read from a file of type . + +ex 1.1 : For a FIELD object, invoking FIELD myField(MED\_DRIVER,fileName,fieldName) +create a FIELD object and a driver which loads the mesh +from the MED file (Not implemented yet !). + +ex 1.2 : To remove the default driver previously created myField->rmDriver(); + +ex 2 : For a MESH object, invoking MESH myMesh(MED\_DRIVER,fileName,meshName) +create a MESH object and a driver which loads the mesh +from the MED file . + +ex 3 : For a MED object, invoking MED myMed(MED\_DRIVER,fileName) +create a MED object to explore the MED file . + +rem 1 : ex1 is equivalent to \ref{sec:invoking_a_driver_from_the_std_drv_method} +ex1. + +rem 2 : Since the driver has read the object, the associated file +is closed. You can reread the object with the default driver by calling +the read() method : myObject.read(). + +Here is a small C++ example program which the Python version may be found in +\ref{MEDMEM_InvokingDriverAtObjectCreationTime.py}. + +\fileCxx{MEDMEM_InvokingDriverAtObjectCreationTime.cxx} + +\subsection{Invoking a driver from the standard driver method of an object\label{sec:invoking_a_driver_from_the_std_drv_method}} + +This way of invoking a driver give the possiblility to add several +drivers to an exiting object. + +ex1 : First we create a FIELD without any driver FIELD~{*}~myField1~=~new~FIELD; +then we add a driver with int myDriver1 = myField1->addDriver(driverType1, +fileName1, fieldName1); for reading from file +with myField1->read(myDriver1); + +ex2 : We add a new driver of type int myDriver2 = myField1->addDriver(driverType2, +fileName2,fieldName2); in order to write myField1 in file +with name using command myField1->write(myDriver2); + +rem 1 : Files are openned then closed each time you call read() or +write() methods. + +rem 2 : If you use more than a driver you need to keep the driver +handlers (myDriverI ). + +Here is a small C++ example program which the Python version may be found in +\ref{MEDMEM_InvokingDriverFromStandardObjectMethod.py}. + +\fileCxx{MEDMEM_InvokingDriverFromStandardObjectMethod.cxx} + +\subsection{Invoking a driver and attaching it to an existing object} + +The methods exposed in the two previous sections always create drivers +in read/write access mode. Another way of creating a driver is to +create a driver with a specific access mode. + +ex1 : First we create a FIELD without any driver FIELD~{*}~myField1~=~new +FIELD(); then we create a read-only driver MED\_FIELD\_RDONLY\_DRIVER~myRdOnlyDriver(fileName1,myField1); +and attached it to myField1. Finally you must set the fieldName1 you +want to acess in fileName1 with myRdOnlyDriver->setFieldName(fieldName1); +in order to read the field with myRdOnlyDriver->open(); myRdOnlyDriver->read(); + +Don't forget to close the file with myRdOnlyDriver->close(). + +ToDo : By now when you create such specific drivers, the object doesn't +know anything about it. + +Here is a small C++ example program which the Python version may be found in +\ref{MEDMEM_InvokingDriverByAttachingItToAnObject.py}. + +\fileCxx{MEDMEM_InvokingDriverByAttachingItToAnObject.cxx} + +\section{Using the MED driver} + +The MED object provides the ability of : + +\begin{enumerate} +\item \noindent Obtainning a reference on the whole structure contained +in a file. +\item Obtainning the list of all the Meshes/Fields names contained in a +file. +\item Obtainning a Mesh/Field reference using a name. +\item Writting a whole set of independent objects with a simple command. +\end{enumerate} + +\subsection{Exploring files} + +In this first use case the user wants to explore the meshes \& fields +containned within a file of type given by the +parameter. + +ex 1 : Calling MED {*} myMed = new MED(driverType1, fileName1); create +a MED object which open fileName1, read all MESHes/FIELDs relations +then close the file. + +This is equivalent to MED~{*}~myMed~=~new~MED(); myDriver~=~myMed->addDriver(driverType1,fileName1); +myMed->readFileStruct(myDriver); + +ex 2 : To get the list of meshNames from a MED object, first ask the +object how many meshes it had by calling int numberOfMeshes~=~myMed->getNumberOfMeshes(); +then get the list with myMeshNames~=~new string{[}getMeshNames{]}; +myMed->getMeshNames(myMeshNames). + +Note you can also use the deque getMeshNames() method. + +ex 3 : To get a list of fieldNames from a MED object, first ask the +object how many fields it had by calling int numberOfFields~=~myMed->getNumberOfFields(); +then get the list with myFieldNames~=~new string{[}getFieldNames{]}; +myMed->getFieldNames(myFieldNames). + +ex 4 :To get a particular MESH use MESH {*} myMesh1 = myMED->getMesh(myMeshNames{[}0{]}) + +ex 5 :To get a particular FIELD you first need to know what (time +step, iteration number) list is used by calling deque~myField1DtIt~=~myMed->getFieldIteration(FieldName{[}0{]}) +; then you can ask for getting a specific FIELD with FIELD~{*}~myField1~=~myMED->getField(myFieldNames{[}0{]},myField1DtIt{[}0{]}.dt,myField1DtIt{[}0{]}.it). + +ex2 : To write the whole content of a MED object first add a driver +myDriver2~=~myMed.addDriver(driverType2,~fileName2); then ask for +writing the object myMed->write(myDriver2); (not implemented yet !) + +You can remove the driver with myMed->rmDriver(myDriver2); + +rem 1 : It is possible to use multiple drivers to read a set of FIELDs +/ MESHes from various file formats and writing the whole set through +a specific write.(not implemented yet !) + + +\subsubsection{Adding existing MESHes/FIELDs objects} + +Not yet implemented. + +\section{Using the VTK driver} + +This driver allow to save all MESH and FIELD objects in an ASCII file in +VTK format \cite{vtk}. + +You could use this driver only from a MED object, because VTK file format +impose to write objects in particular order. + +\textbf{C++ Example~:} +\begin{verbatim} +MED myMed(MED_DRIVER,"file.med"); +myMed.read(); +int id = myMed.addDriver(VTK_DRIVER,"file.vtk"); +myMed.write(id) ; +\end{verbatim} + +\section{Using the GIBI driver} + +This driver allow to load a mesh from a GIBI file (ASCII file with the extension '.sauve'), puting the mesh into a MESH object of MED. It's a read only driver and is applicable only to a MESH object. + +\textbf{C++ Example~:} +\begin{verbatim} +MESH * myMesh= new MESH() ; +GIBI_MESH_RDONLY_DRIVER myGibiMeshDriver("file.sauve", myMesh) ; +myGibiMeshDriver.open() ; +myGibiMeshDriver.read() ; +myGibiMeshDriver.close() ; +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Appendix: Python example scripts.}\label{sec:python} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Full Python example for \ref{MESHgeneral.cxx}~:} +\label{MESHgeneral.py} +\verbatiminput{@srcdir@/MESHgeneral.py} + +\section{Full Python example for \ref{MESHcoordinates.cxx}~:} +\label{MESHcoordinates.py} +\verbatiminput{@srcdir@/MESHcoordinates.py} + +\section{Full Python example for \ref{MESHconnectivities.cxx}~:} +\label{MESHconnectivities.py} +\verbatiminput{@srcdir@/MESHconnectivities.py} + +\section{Full Python example for \ref{FIELDgeneral.cxx}~:} +\label{FIELDgeneral.py} +\verbatiminput{@srcdir@/FIELDgeneral.py} + +\section{Full Python example for \ref{FIELDcreate.cxx}~:} +\label{FIELDcreate.py} +\verbatiminput{@srcdir@/FIELDcreate.py} + +\section{Full Python example for \ref{MESHINGexample.cxx}~:} +\label{MESHINGexample.py} +\verbatiminput{@srcdir@/MESHINGexample.py} + +\section{Full Python example for \ref{MEDMEM_InvokingDriverAtObjectCreationTime.cxx}~:} +\label{MEDMEM_InvokingDriverAtObjectCreationTime.py} +\verbatiminput{@srcdir@/MEDMEM_InvokingDriverAtObjectCreationTime.py} + +\section{Full Python example for \ref{MEDMEM_InvokingDriverFromStandardObjectMethod.cxx}~:} +\label{MEDMEM_InvokingDriverFromStandardObjectMethod.py} +\verbatiminput{@srcdir@/MEDMEM_InvokingDriverFromStandardObjectMethod.py} + +\section{Full Python example for \ref{MEDMEM_InvokingDriverByAttachingItToAnObject.cxx}~:} +\label{MEDMEM_InvokingDriverByAttachingItToAnObject.py} +\verbatiminput{@srcdir@/MEDMEM_InvokingDriverByAttachingItToAnObject.py} diff --git a/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.cxx b/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.cxx index 61ec44500..91c8ee465 100644 --- a/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.cxx +++ b/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.cxx @@ -1,22 +1,6 @@ // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ -// #include "MEDMEM_Exception.hxx" #include "MEDMEM_define.hxx" diff --git a/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.py b/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.py index c13612fb8..06573aea1 100644 --- a/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.py +++ b/doc/MEDMEM/MEDMEM_InvokingDriverAtObjectCreationTime.py @@ -1,3 +1,6 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# ###################################################################### # # # This Python script should be executed when the shared library is # diff --git a/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.cxx b/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.cxx index d02b07c74..657a7e8ae 100644 --- a/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.cxx +++ b/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.cxx @@ -1,22 +1,6 @@ // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ -// #include "MEDMEM_Exception.hxx" #include "MEDMEM_define.hxx" diff --git a/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.py b/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.py index beb217667..78aa1eeee 100644 --- a/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.py +++ b/doc/MEDMEM/MEDMEM_InvokingDriverByAttachingItToAnObject.py @@ -1,3 +1,6 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# ###################################################################### # # # This Python script should be executed when the shared library is # diff --git a/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.cxx b/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.cxx index 0465c695b..ba8afff00 100644 --- a/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.cxx +++ b/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.cxx @@ -1,22 +1,6 @@ // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ -// #include "MEDMEM_Exception.hxx" #include "MEDMEM_define.hxx" diff --git a/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.py b/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.py index 3ddef5fad..1b1804df1 100644 --- a/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.py +++ b/doc/MEDMEM/MEDMEM_InvokingDriverFromStandardObjectMethod.py @@ -1,3 +1,6 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# ###################################################################### # # # This Python script should be executed when the shared library is # diff --git a/doc/MEDMEM/MEDMEM_MedAddingAnExistingObject.cxx b/doc/MEDMEM/MEDMEM_MedAddingAnExistingObject.cxx index fad6b8b39..b36fef10b 100644 --- a/doc/MEDMEM/MEDMEM_MedAddingAnExistingObject.cxx +++ b/doc/MEDMEM/MEDMEM_MedAddingAnExistingObject.cxx @@ -1,22 +1,6 @@ // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ -// #include "MEDMEM_Exception.hxx" #include "MEDMEM_define.hxx" diff --git a/doc/MEDMEM/MEDMEM_UML.dia b/doc/MEDMEM/MEDMEM_UML.dia deleted file mode 100644 index 13d59840c..000000000 Binary files a/doc/MEDMEM/MEDMEM_UML.dia and /dev/null differ diff --git a/doc/MEDMEM/MEDMEM_UML.png.in b/doc/MEDMEM/MEDMEM_UML.png.in new file mode 100644 index 000000000..28418d122 Binary files /dev/null and b/doc/MEDMEM/MEDMEM_UML.png.in differ diff --git a/doc/MEDMEM/MEDMEM_UML_light.png.in b/doc/MEDMEM/MEDMEM_UML_light.png.in new file mode 100644 index 000000000..8eff5fa9c Binary files /dev/null and b/doc/MEDMEM/MEDMEM_UML_light.png.in differ diff --git a/doc/MEDMEM/MEDMEM_UsersGuide.tex.in b/doc/MEDMEM/MEDMEM_UsersGuide.tex.in index ab5b149b3..a0ea7cd2a 100644 --- a/doc/MEDMEM/MEDMEM_UsersGuide.tex.in +++ b/doc/MEDMEM/MEDMEM_UsersGuide.tex.in @@ -71,8 +71,8 @@ % | LE DOCUMENT | % |___________________________________________________________________________| % -\title{User's Guide Of Med Memory} -\author{Patrick Goldbronn \and Eric Fayolle \and Nadir Bouhamou \and Jerome Roy \and Nicolas Crouzet} +\title{User's Guide Of Med Memory V 3.2} +\author{Patrick Goldbronn \and Eric Fayolle \and Nadir Bouhamou \and Jerome Roy \and Nicolas Crouzet \and Vincent Bergeaud} % ___________________________________________________________________________ % | | @@ -95,691 +95,21 @@ %\newpage \cleardoublepage \tableofcontents + % ___________________________________________________________________________ % | | -% | DEBUT DU TEXTE | +% | DOCUMENT PRINCIPAL | % |___________________________________________________________________________| +% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{Introduction} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\section{Convention} - -\begin{itemize} - -\item Difference between local and global number~: when we talk about an -element number, we could see $i^{th}$ quadrangle ($i^{th}$ in quadrangles -array~: local numbering) or $j^{th}$ element ($j^{th}$ in all elements array~: -global numbering). This two numbering are equivalent only if we have one -geometric type ; - -\item All numbering begin at one (take care of array index !) ; -\item When you get a C type array with a \texttt{get...} method, you must -not replace some value of it. Access is in read only. Other use may -product an impredicable result. To modify a such array use method -\texttt{set...} ; -\item Difference between local and global number~: when we talk about an -element number, we could see \( i^{th} \) quadrangle (\( i^{th} \) -in quadrangles array~: local numbering) or \( j^{th} \) element -(\( j^{th} \) in all elements array~: global numbering). This two -numbering are equivalent only if we have one geometric type. -\item They are many methods that have two syntax (one singular and one -plural). Plurals methods returns array and singulars methods returns one -particular value in this array (see \method{getCoordinate} and -\method{getCoordinates}). - -\end{itemize} - -\section{UML diagram} - -\includegraphics[width=16cm]{MEDMEM_UML.eps} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{How to use MED object} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\section{General Information} - -A typical use of this object is to mount in memory what is in a MED file (or -any type of driver in red or read/write mode) and it will manage its memory on -its own. Then from this object one can get some information such as~: - -\begin{itemize} -\item the number of meshes stored in this object using the -{\method{getNumberOfMeshes}}. -\item the number of fields stored in this object using the -{\method{getNumberOfFields}}. -\item a list of mesh names using the {\method{getMeshNames}}. -\item a list of field names using the {\method{getFieldNames}}. -\item a list of MESH object using the {\method{getMesh}} -\item a list of FIELD object using the {\method{getField}} -\item a list of SUPPORT object on all type of entities (node, cell, - face in 3d or edge on 2d) using the {\method{getSupport}}. -\end{itemize} - -The destuctor of this object will destruct itself all FIELD, SUPPORT and MESH -objects; via its get method you will have a pointeur on this object and you -should never delete it. - -One can add as well some MESH or FIELD object via the {\method{addMesh}} and -the {\method{addField}} respectively. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{How to use MESH object} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -\section{General Information} - -We could get some general information about a MESH object such as~: - -\begin{itemize} -\item name (\method{getName}) -\item a description (\method{getDescription}) -\item the space dimension (\method{getSpaceDimension}) -\item the mesh dimension (\method{getMeshDimension}) -\end{itemize} -\fileCxx{MESHgeneral.cxx} - -\filePython{MESHgeneral.py} - -\section{Information about nodes} - -\begin{enumerate} -\item I want to get the number of nodes~: Realy simple, use \method{getNumberOfNodes}. -\item I want to get the coordinates components names~: use \method{getCoordinatesNames} -which return a string array (one string for each space dimension) -\item I want to get the coordinates components units~: use \method{getCoordinatesUnits} -which return a string array (one string for each space dimension) -\item I want to get the coordinates system~: use \method{getCoordinatesSystem} -which return a string (\verb+"CARTESIAN"+, \verb+"CYLINDRICAL"+ or \verb+"SPHERICAL"+). -\item I want to get the nodes coordinates~: use \method{getCoordinates} -which return a pointer to the coordinates array where values are interlace -or no. \textbf{Warning~:} - -\begin{itemize} -\item When we get coordinates in \verb+MED_NO_INTERLACE+ mode, we get an -array where values are ordered like (\verb+X1,X2,X..., Y1,Y..., Z1,Z...+). -\item When we get coordinates in \verb+MED_FULL_INTERLACE+ mode, we get -an array where values are ordered like (\verb+X1,Y1,Z1, X2,Y2,Z2, ...+). -\end{itemize} -\item I want to get one particular value of coordinate~: use \method{getCoordinate} -which return the value of \( i^{th} \) node and \( j^{th} \) axis. -\end{enumerate} -\fileCxx{MESHcoordinates.cxx} - -\filePython{MESHcoordinates.py} - -\section{Information about cells} - -\begin{enumerate} -\item I want to get the number of geometric type for a mesh entity~: use -\method{getNumberOfTypes} - - -\textbf{C++ Example~:} - -\verb+int NumberOfCellsTypes = myMesh.getNumberOfTypes(MED_CELL);+ - -%%%%%%%%%%%%%%%%% -\item I want to get all geometric type for a mesh entity~: use -\method{getTypes} to get an array of \verb+medGeometryElement+ -(to use directly in others methods) or \method{getCellsTypes} to get -an array of \verb+CELLMODEL+ (to ask mode information~: see \myref{CellModel}) . - -\textbf{C++ Example~:} - -\verb+const medGeometryElement * Types = myMesh.getTypes(MED_CELL);+ - -\verb+const CELLMODEL * CellsTypes = myMesh.getCellsTypes(MED_CELL);+ - -(each arrays are size \verb+NumberOfCellsTypes+) - -\item I want to get the number of cells~: use \method{getNumberOfElements} -which return this information. You must give the mesh entity (\verb+MED_CELL+, -\verb+MED_FACE+, \verb+MED_EDGE+ or \verb+MED_NODE+) and a geometric -type of this entity. - - -\textbf{C++ Example~:} - -\verb+int NumberOfTriangle = myMesh.getNumberOfElements(MED_FACE,MED_TRIA3);+ - -\verb+int NumberOfFace = myMesh.getNumberOfElements(MED_FACE,MED_ALL_ELEMENT);+ - -\item I want to get the geometric type of one element~: use \method{getElementType} -which return a \verb+medGeometryElement+. - - -\textbf{C++ Example~:} - -\verb+medGeometryElement myType = myMesh.getElementType(MED_FACE,10);+ - -Return the \verb+medGeometryElement+ of \( 10^{th} \) face. - -\item I want to get a connectivity~: use \method{getConnectivity} which -return an array with connectivity values. - - -\label{getConnectivity} - -\textbf{C++ Example~:} - -\begin{verbatim} -int NumberOfTetrahedron = myMesh.getNumberOfElements(MED_CELL,MED_TETRA4); -const int * TetrahedronConnectivity = - myMesh.getConnectivity(MED_FULL_ENTERLACE, - MED_NODAL, - MED_CELL, - MED_TETRA4); -\end{verbatim} -\verb+TetrahedronConnectivity+ contain nodal connectivity -of tetrahedron in mesh. It is arranged in full enterlace mode and -its size is \verb+NumberOfTetrahedron x 4+. - -If you want to get connectivity of all elements (with \verb+Type=MED_ALL_ELEMENTS+), -you must use the index array (return by \method{getConnectivityIndex}) -to get connectivity for each elements (see example \myref{MESHconnectivities.cxx}). - -\item I want to get an element number from a connectivity~: use \method{getElementNumber} -which return the global number of a given connectivity. - - -\textbf{C++ Example~:} -\begin{verbatim} -int * myElementConnectivity = {2,10,12,14}; -int myNumber = myMesh.getElementNumber(MED_NODAL,MED_CELL, - myElementConnectivity); -\end{verbatim} - -%%%%%%%%%%% WITH POLY METHODS %%%%%%%%%%%% - -\item The listed above methods do not take into account information about - \verb+polygonal+ and \verb+polyhedral+ cells contained in a MESH object. To get - full information about cell types, use the same methods with - \verb+WithPoly+ postfix: -\begin{itemize} -\item use \method{getNumberOfTypesWithPoly} to get the number of - geometric types for a mesh entity; -\item use \method{getTypesWithPoly} to get all geometric types for a mesh entity; -\item use \method{getNumberOfElementsWithPoly} to get the number of cells; -\item use \method{getElementTypeWithPoly} to get the geometric type of - one element. -\end{itemize} -There are separate methods to get number of polygons and polyhedrons: -\method{getNumberOfPolygons} and \method{getNumberOfPolyhedron} - -To get connectivity of polygonal elements, use \method{getPolygonsConnectivity} along with -\method{getPolygonsConnectivityIndex} (see example \myref{MESHconnectivities.cxx}). - -To get nodal connectivity of polyhedral elements, it is necessary use together -3 methods: \method{getPolyhedronConnectivity}, \method{getPolyhedronFacesIndex} -and \method{getPolyhedronIndex} (see example \myref{MESHconnectivities.cxx}). - -\end{enumerate} -\fileCxx{MESHconnectivities.cxx} - -\filePython{MESHconnectivities.py} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{How to use MESHING object} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -This class is a derivated class of MESH class to build a MESH object from -scratch (use of set methods). - -All verifications are under user responsability : If arrays values or arrays -dimensions are wrongs, results are impredicable. - -All arrays in arguments in set methods are duplicated in MESHING object. - -\section{Build a MESHING} - -\label{BuildMeshing} - -\subsection{Coordinates} - -First we must defined points coordinates of the mesh. We use -\method{setCoordinates}. - -\textbf{C++ Example~:} -\begin{verbatim} -MESHING myMeshing ; -const int SpaceDimension=2; -const int NumberOfNodes=6; -int * Coordinates = new int[SpaceDimension*NumberOfNodes] ; -string System="CARTESIAN"; -medModeSwitch MED_FULL_INTERLACE ; -myMeshing.setCoordinates(SpaceDimension,NumberOfNodes,Coordinates,System,Mode); -\end{verbatim} - -Then you could set the coordinates names and units (with -\method{setCoordinatesNames} and \method{setCoordinatesUnits}). - -\subsection{Connectivities} - -When coordinates are defined, we could defined connectivities. - -First we must defined connectivity of MED\_CELL elements. -After, we could defined constituent connectivity if necesary -(MED\_FACE and/or MED\_EDGE). - -For each connectivities, you could use some methods in the following order : -\begin{itemize} -\item \method{setNumberOfTypes} to set the number of differents geometrics -types (3 for example). This method allocates all arrays which size is this -number ; -\item \method{setTypes} to set the differents geometrics types -({MED\_TETRA4,MED\_PYRA5,MED\_HEXA8} for example). Types should be given -in increasing order of number of nodes for this type ; -\item \method{setNumberOfElements} to set the number of elements for -each geometric type. This method allocates connectivities array ; -\item \method{setConnectivity} to set the connectivity in MED\_FULL\_INTERLACE -mode for each geometric type (use \method{setPolygonsConnectivity} and -\method{setPolyhedraConnectivity} for poly elements); -\end{itemize} - -\textbf{C++ Example~:} -\begin{verbatim} -MESHING myMeshing ; -myMeshing.setCoordinates(SpaceDimension,NumberOfNodes,Coordinates,System,Mode); - -myMeshing.setNumberOfTypes(2,MED_CELL); -myMeshing.setTypes({MED_TRIA3,MED_QUAD4},MED_CELL); -myMeshing.setNumberOfElements({3,2},MED_CELL); // 3 MED_TRIA3 and 2 MED_QUAD4 -myMeshing.setConnectivity({1,2,3,6,8,9,4,5,6},MED_CELL,MED_TRIA3); -myMeshing.setConnectivity({1,3,4,5,4,5,7,8},MED_CELL,MED_QUAD4); -\end{verbatim} - - -\section{Defined a GROUP object} - -To add a group in a MESHING object, use \method{addGroup}. - -This method duplicate the GROUP object in the MESH object. - -To build this GROUP object, use SUPPORT methods \ref{CreateSupport} to set all attributes. - -\subsection{WARNING} - -For instance, translation from GROUP objects to FAMILY objects are not completed ! - -You MUST set GROUP objects as if they are FAMILY objects. - -This feature will be fully implemented in next release of med memory. - -\section{Example} - -\fileCxx{MESHINGexample.cxx} - -%\filePython{MESHINGexample.py} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{How to use SUPPORT object} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\section{Create a SUPPORT object} - -\label{CreateSupport} - -To create a SUPPORT object, you must give : - -\begin{itemize} -\item a reference to a MESH object -\item its name -\item on which mesh entity it apply to -\end{itemize} -\textbf{C++ example~:} - -\verb+SUPPORT mySupport(myMesh,"support on all faces",MED_FACE) ;+ -By default, this support is defined on all elements of the given entity. - -If you want a restricted SUPPORT, you must add manualy information -about what do you want~: - -\begin{itemize} -\item is not on all elements~: \verb+mySupport.setAll(false);+ -\item on how many geometric type~:\\ - \verb+mySupport.setNumberOfGeometricType(myNumberOfGeometricType);+ -\item on which geometric type~:\\ - \verb+mySupport.setGeometricType(myGeometricType);+ -\item Temporary : the Gauss point number for each geometric type~:\\ - \verb+mySupport.setNumberOfGaussPoint(myNumberOfGaussPoint);+ -\item the number of elements for each geometric type~:\\ - \verb+mySupport.setNumberOfEntities(myNumberOfEntities);+ -\item the total number of elements~:\\ - \verb+mySupport.setTotalNumberOfEntities(myTotalNumberOfEntities);+ -\item the array which contains elements for each geometric type~:\\ - \verb+mySupport.setNumber(myNumber);+ -\end{itemize} -You could also use \method{setpartial} which set all you need. - - -\section{Use a SUPPORT object} - -You could get all basic information (as you set them in \myref{CreateSupport})~: - -\begin{itemize} -\item \verb+getName()+ -\item \verb+getDescription()+ -\item \verb+getMesh()+ -\item \verb+getEntity()+ -\item \verb+isOnAllElements()+ -\item \verb+getNumberOfTypes()+ -\item \verb+getTypes()+ -%\item \verb+getNumberOfGaussPoint()+ -%\item \verb+getNumberOfGaussPoint(myGeometricType)+ -\item \verb+getGeometricTypeNumber()+ -\item \verb+getNumberOfElements(myGeometricType)+ -\item \verb+getNumber(myGeometricType)+ -\item \verb+getNumberIndex()+ -\end{itemize} -For details about this methods, see the reference manual \cite{RefManual}. - -The use of \method{getNumber} and \method{getNumberIndex} are the -same as \method{getConnectivity} and \method{getConnectivityIndex} -(see item \myref{getConnectivity} - -There is another particular method to blend another SUPPORT object -into it. - -For example in C++ : -\begin{verbatim} -SUPPORT mySupport ; -SUPPORT myOtherSupport ; -... -mySupport.blending(myOtherSupport) ; -\end{verbatim} - -\verb+mySupport+ contain now all elements defined originally in it, -more those defined in \verb+myOtherSupport+. - - -\section{Case of FAMILY object} - -A FAMILY is a SUPPORT with some additionnal methods that concern some optional attribut (we could have none) and group (we could also have none) : -\begin{itemize} -\item \method{getIdentifier} return the family identifier (an integer) - -\item \method{getNumberOfAttributes} return the number of attributes of this family -\item \method{getAttributesIdentifiers} and \method{getAttributeIdentifier} return an integer array or an integer that represent attribut identifier. -\item \method{getAttributesValues} and \method{getAttributeValue} return an integer array or an integer that represent attribut value. -\item \method{getAttributesDescriptions} and \method{getAttributeDescription} return a string array or a string that represent attribut description. - -\item \method{getNumberOfGroups} return the number of groups which it belog to. -\item \method{getGroupsNames} and \method{getGroupName} return a string array or a string that represent the group name which it belog to. - -\end{itemize} - -\section{Case of GROUP object} - -A GROUP is a SUPPORT with some additionnal methods to find FAMILY that make up it : -\begin{itemize} -\item \method{getNumberOfFamilies} return the number of FAMILY that make up the GROUP ; -\item \method{getFamilies} and \method{getFamily} return a FAMILY array or a FAMILY that make up the GROUP. -\end{itemize} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{How to use Field} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\section{Introduction} - -A field is characterized by its name (\method{getName}) and an optional description (\method{getDescription}). - -It is also characterized by this calculating moment : -\begin{itemize} -\item an iteration number (time step number) -\item an order number (use if there are internal iteration in a time step) -\item the time that correspond to this iteration number. -\end{itemize} - -By default, there are no iteration and order number defined (value -MED\_NOPDT and MED\_NONOR). - -A field contain values which apply on some nodes or elements (cell, face or edge). - -We find these informations from a SUPPORT object (see \method{getSupport}). - -Each field have a number of components (\method getNumberOfComponents) and all these components have a name (\method{getComponentsNames} and \method{getComponentName}), a description (\method{getComponentsDescriptions} and \method{getComponentDescription}) and an unit (\method{getMEDComponentsUnits} and \method{getMEDComponentUnit}). - -For unit you could use later UNIT (\myref{Unit}) objet to make a more general control on it. But the use of this class must be specified. - -To get values of a FIELD, you could use \method{getValue}, \method{getValueI} -and \method{getValueIJ}~: - -\begin{itemize} -\item First return a reference to all values in the given mode (full or no -interlace). -\item Second return a reference to $i^{th}$ element values or component values (in accordance with the given mode). -\item Third return the $j^{th}$ component of $i^{th}$ element. -\end{itemize} - -\fileCxx{FIELDgeneral.cxx} - -\filePython{FIELDgeneral.py} - -\section{Create a Field} - -It is simple to create a field object. You must know its SUPPORT and the number of components. - -\textbf{Example :} -\verb+FILED myField(mySupport,NumberOfComponents) ;+ - -You must now set a name (\method{setName}) and optionaly a description -(\method{setDescription}). - -By default there are no iteration and order number (negative values) and -time is null. You could change this by using \method{setIterationNumber}, -\method{setOrderNumber} and \method{setTime}. - -You \textbf{SHOULD} also set unit of your components with \method{setMEDComponentUnit} - -To set value, use \method{setValueIJ} to put new value of field. - -\fileCxx{FIELDcreate.cxx} - -\filePython{FIELDcreate.py} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{Other Classes} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -\section{class CELLMODEL} -\label{CellModel} - -To do - -\section{class UNIT} -\label{Unit} - -To do - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{Using drivers} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -The generic driver mecanism gives users the possibility to write/read -the content of an object according to a specified file format. The -semantic remains the same whatever the object is (MESH, FIELD, MED). -By the way it allows using several file formats for writting an object. - - -\section{Invoking a driver} - - -\subsection{Invoking a driver at creation object time} - -This is the simplest way of invoking a driver. The driver parameters -are given to the constructor of the object. Except for the MED object, -this way of invoking a driver assume you know exactly the name of -the MESH/FIELD you want read from a file of type . - -ex 1.1 : For a FIELD object, invoking FIELD myField(MED\_DRIVER,fileName,fieldName) -create a FIELD object and a driver which loads the mesh -from the MED file (Not implemented yet !). - -ex 1.2 : To remove the default driver previously created myField->rmDriver(); - -ex 2 : For a MESH object, invoking MESH myMesh(MED\_DRIVER,fileName,meshName) -create a MESH object and a driver which loads the mesh -from the MED file . - -ex 3 : For a MED object, invoking MED myMed(MED\_DRIVER,fileName) -create a MED object to explore the MED file . - -rem 1 : ex1 is equivalent to \ref{sec:invoking_a_driver_from_the_std_drv_method} -ex1. - -rem 2 : Since the driver has read the object, the associated file -is closed. You can reread the object with the default driver by calling -the read() method : myObject.read(). - -\fileCxx{MEDMEM_InvokingDriverAtObjectCreationTime.cxx} - -\filePython{MEDMEM_InvokingDriverAtObjectCreationTime.py} - -\subsection{Invoking a driver from the standard driver method of an object\label{sec:invoking_a_driver_from_the_std_drv_method}} - -This way of invoking a driver give the possiblility to add several -drivers to an exiting object. - -ex1 : First we create a FIELD without any driver FIELD~{*}~myField1~=~new~FIELD; -then we add a driver with int myDriver1 = myField1->addDriver(driverType1, -fileName1, fieldName1); for reading from file -with myField1->read(myDriver1); - -ex2 : We add a new driver of type int myDriver2 = myField1->addDriver(driverType2, -fileName2,fieldName2); in order to write myField1 in file -with name using command myField1->write(myDriver2); - -rem 1 : Files are openned then closed each time you call read() or -write() methods. - -rem 2 : If you use more than a driver you need to keep the driver -handlers (myDriverI ). - -\fileCxx{MEDMEM_InvokingDriverFromStandardObjectMethod.cxx} - -\filePython{MEDMEM_InvokingDriverFromStandardObjectMethod.py} - -\subsection{Invoking a driver and attaching it to an existing object} - -The methods exposed in the two previous sections always create drivers -in read/write access mode. Another way of creating a driver is to -create a driver with a specific access mode. - -ex1 : First we create a FIELD without any driver FIELD~{*}~myField1~=~new -FIELD(); then we create a read-only driver MED\_FIELD\_RDONLY\_DRIVER~myRdOnlyDriver(fileName1,myField1); -and attached it to myField1. Finally you must set the fieldName1 you -want to acess in fileName1 with myRdOnlyDriver->setFieldName(fieldName1); -in order to read the field with myRdOnlyDriver->open(); myRdOnlyDriver->read(); - -Don't forget to close the file with myRdOnlyDriver->close(). - -ToDo : By now when you create such specific drivers, the object doesn't -know anything about it. - -\fileCxx{MEDMEM_InvokingDriverByAttachingItToAnObject.cxx} - -\filePython{MEDMEM_InvokingDriverByAttachingItToAnObject.py} - -\section{Using the MED driver} - -The MED object provides the ability of : - -\begin{enumerate} -\item \noindent Obtainning a reference on the whole structure contained -in a file. -\item Obtainning the list of all the Meshes/Fields names contained in a -file. -\item Obtainning a Mesh/Field reference using a name. -\item Writting a whole set of independent objects with a simple command. -\end{enumerate} - -\subsection{Exploring files} - -In this first use case the user wants to explore the meshes \& fields -containned within a file of type given by the -parameter. - -ex 1 : Calling MED {*} myMed = new MED(driverType1, fileName1); create -a MED object which open fileName1, read all MESHes/FIELDs relations -then close the file. - -This is equivalent to MED~{*}~myMed~=~new~MED(); myDriver~=~myMed->addDriver(driverType1,fileName1); -myMed->readFileStruct(myDriver); - -ex 2 : To get the list of meshNames from a MED object, first ask the -object how many meshes it had by calling int numberOfMeshes~=~myMed->getNumberOfMeshes(); -then get the list with myMeshNames~=~new string{[}getMeshNames{]}; -myMed->getMeshNames(myMeshNames). - -Note you can also use the deque getMeshNames() method. - -ex 3 : To get a list of fieldNames from a MED object, first ask the -object how many fields it had by calling int numberOfFields~=~myMed->getNumberOfFields(); -then get the list with myFieldNames~=~new string{[}getFieldNames{]}; -myMed->getFieldNames(myFieldNames). - -ex 4 :To get a particular MESH use MESH {*} myMesh1 = myMED->getMesh(myMeshNames{[}0{]}) - -ex 5 :To get a particular FIELD you first need to know what (time -step, iteration number) list is used by calling deque~myField1DtIt~=~myMed->getFieldIteration(FieldName{[}0{]}) -; then you can ask for getting a specific FIELD with FIELD~{*}~myField1~=~myMED->getField(myFieldNames{[}0{]},myField1DtIt{[}0{]}.dt,myField1DtIt{[}0{]}.it). - -ex2 : To write the whole content of a MED object first add a driver -myDriver2~=~myMed.addDriver(driverType2,~fileName2); then ask for -writing the object myMed->write(myDriver2); (not implemented yet !) - -You can remove the driver with myMed->rmDriver(myDriver2); - -rem 1 : It is possible to use multiple drivers to read a set of FIELDs -/ MESHes from various file formats and writing the whole set through -a specific write.(not implemented yet !) - - -\subsubsection{Adding existing MESHes/FIELDs objects} - -Not yet implemented. - -\section{Using the VTK driver} - -This driver allow to save all MESH and FIELD objects in an ASCII file in -VTK format \cite{vtk}. - -You could use this driver only from a MED object, because VTK file format -impose to write objects in particular order. - -\textbf{C++ Example~:} -\begin{verbatim} -MED myMed(MED_DRIVER,"file.med"); -myMed.read(); -int id = myMed.addDriver(VTK_DRIVER,"file.vtk"); -myMed.write(id) ; -\end{verbatim} - -\section{Using the GIBI driver} - -This driver allow to load a mesh from a GIBI file (ASCII file with the extension '.sauve'), puting the mesh into a MESH object of MED. It's a read only driver and is applicable only to a MESH object. - -\textbf{C++ Example~:} -\begin{verbatim} -MESH * myMesh= new MESH() ; -GIBI_MESH_RDONLY_DRIVER myGibiMeshDriver("file.sauve", myMesh) ; -myGibiMeshDriver.open() ; -myGibiMeshDriver.read() ; -myGibiMeshDriver.close() ; -\end{verbatim} - +\input{MEDMEM_Content.tex} +% % ___________________________________________________________________________ % | | % | REFERENCES | % |___________________________________________________________________________| -% + \newpage %\thebibliography{biblio} \begin{thebibliography}{1} @@ -788,9 +118,22 @@ myGibiMeshDriver.close() ; \addcontentsline{toc}{chapter}{Bibliography} -\bibitem{RefManual} Reference Manual~: \verb+http://www-drn2.cea.fr/MED/MEDMEM/DOC/html/index.html+ +\bibitem{RefManualMedFile} +\newblock {Reference Manual for Med File~:} \\ +{\sc V. Lefebvre \and E. Fayolle} \\ +\newblock {Projet PAL: Définition du modèle d'échange de données MED V2.2} +\newblock {\it Note technique EDF/SINETICS} +\newblock {HI-26-03-012/A} \\ +\newblock {\verb+http://www-drn2.cea.fr/MED/MEDMEM/DOC/html/index.html+} + +\bibitem{RefManualMedMemory} +\newblock {Med Memory Users Reference Manual~:} \\ +\newblock {\verb+file:://$MED_ROOT_DIR/share/salome/doc/html_ref_user/index.html+} \\ +\newblock {\verb+$MED_ROOT_DIR/share/salome/doc/MedMemory_user_2on1.pdf+} + -\bibitem{vtk} VTK home page~: \verb+http://public.kitware.com/VTK+ +\bibitem{vtk} +\newblock {VTK home page~: \verb+http://public.kitware.com/VTK+} \end{thebibliography} diff --git a/doc/MEDMEM/MESHINGexample.cxx b/doc/MEDMEM/MESHINGexample.cxx index 36ef5a7c9..e40c27b35 100644 --- a/doc/MEDMEM/MESHINGexample.cxx +++ b/doc/MEDMEM/MESHINGexample.cxx @@ -1,22 +1,6 @@ // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ -// #include "MEDMEM_Meshing.hxx" #include "MEDMEM_Group.hxx" diff --git a/doc/MEDMEM/MESHINGexample.py b/doc/MEDMEM/MESHINGexample.py new file mode 100644 index 000000000..9d88636d6 --- /dev/null +++ b/doc/MEDMEM/MESHINGexample.py @@ -0,0 +1,696 @@ +################################################################################### +# +# This Python script uses the wrapped C++ class MESHING to buid a mesh from only +# primitive data like coordinates (Pythoin double array) and connectivity (Python +# integer arrays). It is the Python equivalent of the C++ program +# test_MEDMEM_Meshing.cxx in the ../MEDMEM directory of the SALOME distribution +# +################################################################################### + +from libMEDMEM_Swig import * + +# files name to save the generated MESH(ING) in different format +# Med V2.1 Med V2.2 and vtk + +med21FileName = "toto21.med" + +med22FileName = "toto22.med" + +vtkFileName = "toto.vtk" + +myMeshing = MESHING() + +myMeshing.setName("meshing") + +# definition of the coordinates + +spaceDimension = 3 + +numberOfNodes = 19 + +coordinates = [] + +coordinate = [0.0, 0.0, 0.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [0.0, 0.0, 1.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [2.0, 0.0, 1.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [0.0, 2.0, 1.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [-2.0, 0.0, 1.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [0.0, -2.0, 1.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [1.0, 1.0, 2.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [-1.0, 1.0, 2.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [-1.0, -1.0, 2.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [1.0, -1.0, 2.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [1.0, 1.0, 3.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [-1.0, 1.0, 3.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [-1.0, -1.0, 3.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [1.0, -1.0, 3.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [1.0, 1.0, 4.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [-1.0, 1.0, 4.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [-1.0, -1.0, 4.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [1.0, -1.0, 4.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) +coordinate = [0.0, 0.0, 5.0] +coordinates.append(coordinate[0]) +coordinates.append(coordinate[1]) +coordinates.append(coordinate[2]) + +myMeshing.setCoordinates(spaceDimension,numberOfNodes,coordinates,"CARTESIAN",MED_FULL_INTERLACE) + +for i in range(spaceDimension): + unit = "cm " + if (i == 0): + name = "X " + elif (i == 1): + name = "Y " + elif (i == 2): + name = "Z " + + myMeshing.setCoordinateName(name,i) + myMeshing.setCoordinateUnit(unit,i) + +# definition of connectivities +# cell part + +numberOfTypes = 3 +entity = MED_CELL + +types = [] +numberOfElements = [] + +types.append(MED_TETRA4) +numberOfElements.append(12) + +types.append(MED_PYRA5) +numberOfElements.append(2) + +types.append(MED_HEXA8) +numberOfElements.append(2) + +myMeshing.setNumberOfTypes(numberOfTypes,entity) +myMeshing.setTypes(types,entity) +myMeshing.setNumberOfElements(numberOfElements,entity) + +connectivityTetra = [] + +connectivity = [1,2,3,6] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [1,2,4,3] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [1,2,5,4] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [1,2,6,5] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [2,7,4,3] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [2,8,5,4] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [2,9,6,5] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [2,10,3,6] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [2,7,3,10] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [2,8,4,7] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [2,9,5,8] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) +connectivity = [2,10,6,9] +connectivityTetra.append(connectivity[0]) +connectivityTetra.append(connectivity[1]) +connectivityTetra.append(connectivity[2]) +connectivityTetra.append(connectivity[3]) + +myMeshing.setConnectivity(connectivityTetra,entity,types[0]) + +connectivityPyra = [] +connectivity = [7,8,9,10,2] +connectivityPyra.append(connectivity[0]) +connectivityPyra.append(connectivity[1]) +connectivityPyra.append(connectivity[2]) +connectivityPyra.append(connectivity[3]) +connectivityPyra.append(connectivity[4]) +connectivity = [15,18,17,16,19] +connectivityPyra.append(connectivity[0]) +connectivityPyra.append(connectivity[1]) +connectivityPyra.append(connectivity[2]) +connectivityPyra.append(connectivity[3]) +connectivityPyra.append(connectivity[4]) + +myMeshing.setConnectivity(connectivityPyra,entity,types[1]) + +connectivityHexa = [] +connectivity = [11,12,13,14,7,8,9,10] +connectivityHexa.append(connectivity[0]) +connectivityHexa.append(connectivity[1]) +connectivityHexa.append(connectivity[2]) +connectivityHexa.append(connectivity[3]) +connectivityHexa.append(connectivity[4]) +connectivityHexa.append(connectivity[5]) +connectivityHexa.append(connectivity[6]) +connectivityHexa.append(connectivity[7]) +connectivity = [15,16,17,18,11,12,13,14] +connectivityHexa.append(connectivity[0]) +connectivityHexa.append(connectivity[1]) +connectivityHexa.append(connectivity[2]) +connectivityHexa.append(connectivity[3]) +connectivityHexa.append(connectivity[4]) +connectivityHexa.append(connectivity[5]) +connectivityHexa.append(connectivity[6]) +connectivityHexa.append(connectivity[7]) + +myMeshing.setConnectivity(connectivityHexa,entity,types[2]) + +# face part + +numberOfTypes = 2 +entity = MED_FACE + +types = [] +numberOfElements = [] + +types.append(MED_TRIA3) +numberOfElements.append(4) + +types.append(MED_QUAD4) +numberOfElements.append(4) + +myMeshing.setNumberOfTypes(numberOfTypes,entity) +myMeshing.setTypes(types,entity) +myMeshing.setNumberOfElements(numberOfElements,entity) + +connectivityTria = [] +connectivity = [1,4,3] +connectivityTria.append(connectivity[0]) +connectivityTria.append(connectivity[1]) +connectivityTria.append(connectivity[2]) +connectivity = [1,5,4] +connectivityTria.append(connectivity[0]) +connectivityTria.append(connectivity[1]) +connectivityTria.append(connectivity[2]) +connectivity = [1,6,5] +connectivityTria.append(connectivity[0]) +connectivityTria.append(connectivity[1]) +connectivityTria.append(connectivity[2]) +connectivity = [1,3,6] +connectivityTria.append(connectivity[0]) +connectivityTria.append(connectivity[1]) +connectivityTria.append(connectivity[2]) + +myMeshing.setConnectivity(connectivityTria,entity,types[0]) + +connectivityQuad = [] +connectivity = [7,8,9,10] +connectivityQuad.append(connectivity[0]) +connectivityQuad.append(connectivity[1]) +connectivityQuad.append(connectivity[2]) +connectivityQuad.append(connectivity[3]) +connectivity = [11,12,13,14] +connectivityQuad.append(connectivity[0]) +connectivityQuad.append(connectivity[1]) +connectivityQuad.append(connectivity[2]) +connectivityQuad.append(connectivity[3]) +connectivity = [11,7,8,12] +connectivityQuad.append(connectivity[0]) +connectivityQuad.append(connectivity[1]) +connectivityQuad.append(connectivity[2]) +connectivityQuad.append(connectivity[3]) +connectivity = [12,8,9,13] +connectivityQuad.append(connectivity[0]) +connectivityQuad.append(connectivity[1]) +connectivityQuad.append(connectivity[2]) +connectivityQuad.append(connectivity[3]) + +myMeshing.setConnectivity(connectivityQuad,entity,types[1]) + +meshDimension = spaceDimension # because there 3D cells in the mesh +myMeshing.setMeshDimension(meshDimension) + +# edge part + +# adding GROUPs +# on Node + +myGroup = GROUP() +myGroup.setName("SomeNodes") +myGroup.setMesh(myMeshing) +myGroup.setEntity(MED_NODE) +myGroup.setNumberOfGeometricType(1) + +myTypes = [MED_NONE] +myGroup.setGeometricType(myTypes) + +myNumberOfElements = [4] +myGroup.setNumberOfElements(myNumberOfElements) + +index = [1,5] +values = [1,4,5,7] +myGroup.setNumber(index,values) + +myMeshing.addGroup(myGroup) + +myGroup = GROUP() +myGroup.setName("OtherNodes") +myGroup.setMesh(myMeshing) +myGroup.setEntity(MED_NODE) +myGroup.setNumberOfGeometricType(1) + +myTypes = [MED_NONE] +myGroup.setGeometricType(myTypes) + +myNumberOfElements = [3] +myGroup.setNumberOfElements(myNumberOfElements) + +index = [1,4] +values = [2,3,6] +myGroup.setNumber(index,values) + +myMeshing.addGroup(myGroup) + +# on Cell + +myGroup = GROUP() +myGroup.setName("SomeCells") +myGroup.setMesh(myMeshing) +myGroup.setEntity(MED_CELL) +myGroup.setNumberOfGeometricType(3) + +myTypes = [MED_TETRA4,MED_PYRA5,MED_HEXA8] +myGroup.setGeometricType(myTypes) + +myNumberOfElements = [4,1,2] +myGroup.setNumberOfElements(myNumberOfElements) + +index = [1,5,6,8] +values = [ + 2,7,8,12, + 13, + 15,16 + ] +myGroup.setNumber(index,values) + +myMeshing.addGroup(myGroup) + +myGroup = GROUP() +myGroup.setName("OtherCells") +myGroup.setMesh(myMeshing) +myGroup.setEntity(MED_CELL) +myGroup.setNumberOfGeometricType(2) + +myTypes = [MED_TETRA4,MED_PYRA5] +myGroup.setGeometricType(myTypes) + +myNumberOfElements = [4,1] +myGroup.setNumberOfElements(myNumberOfElements) + +index = [1,5,6] +values = [ + 3,4,5,9, + 14 + ] +myGroup.setNumber(index,values) + +myMeshing.addGroup(myGroup) + +# on Face + +myGroup = GROUP() +myGroup.setName("SomeFaces") +myGroup.setMesh(myMeshing) +myGroup.setEntity(MED_FACE) +myGroup.setNumberOfGeometricType(2) + +myTypes = [MED_TRIA3,MED_QUAD4] +myGroup.setGeometricType(myTypes) + +myNumberOfElements = [2,3] +myGroup.setNumberOfElements(myNumberOfElements) + +index = [1,3,6] +values = [ + 2,4, + 5,6,8 + ] +myGroup.setNumber(index,values) + +myMeshing.addGroup(myGroup) + +myGroup = GROUP() +myGroup.setName("OtherFaces") +myGroup.setMesh(myMeshing) +myGroup.setEntity(MED_FACE) +myGroup.setNumberOfGeometricType(1) + +myTypes = [MED_TRIA3] +myGroup.setGeometricType(myTypes) + +myNumberOfElements = [2] +myGroup.setNumberOfElements(myNumberOfElements) + +index = [1,3] +values = [ + 1,3 + ] +myGroup.setNumber(index,values) + +myMeshing.addGroup(myGroup) + +# saving of the generated mesh in MED 2.1, 2.2 and VTK format + +medFileVersion = getMedFileVersionForWriting() +print "Med File Version For Writing ",medFileVersion + +if (medFileVersion == V22): + setMedFileVersionForWriting(V21) + +idMedV21 = myMeshing.addDriver(MED_DRIVER,med21FileName,myMeshing.getName()) +myMeshing.write(idMedV21) + +medFileVersion = getMedFileVersionForWriting() +if (medFileVersion == V21): + setMedFileVersionForWriting(V22) + +idMedV22 = myMeshing.addDriver(MED_DRIVER,med22FileName,myMeshing.getName()) +myMeshing.write(idMedV22) + +idVtk = myMeshing.addDriver(VTK_DRIVER,vtkFileName,myMeshing.getName()) +myMeshing.write(idVtk) + +# we build now 8 fields : 4 fields double (integer) : +# 2 fields on nodes (cells) : +# 1 scalar (vector) + +supportOnNodes = SUPPORT(myMeshing,"On_All_Nodes",MED_NODE) +numberOfNodes = supportOnNodes.getNumberOfElements(MED_ALL_ELEMENTS) + +supportOnCells = SUPPORT(myMeshing,"On_All_Cells",MED_CELL) +numberOfCells = supportOnCells.getNumberOfElements(MED_ALL_ELEMENTS) + +fieldDoubleScalarOnNodes = FIELDDOUBLE(supportOnNodes,1) +fieldDoubleScalarOnNodes.setName("fieldScalarDoubleNode") +fieldDoubleScalarOnNodes.setIterationNumber(-1) +fieldDoubleScalarOnNodes.setOrderNumber(-1) +fieldDoubleScalarOnNodes.setTime(0.0) + +fieldDoubleScalarOnNodes.setComponentName(1,"Vx") +fieldDoubleScalarOnNodes.setComponentDescription(1,"comp1") +fieldDoubleScalarOnNodes.setMEDComponentUnit(1,"unit1") + +fieldDoubleVectorOnNodes = FIELDDOUBLE(supportOnNodes,spaceDimension) +fieldDoubleVectorOnNodes.setName("fieldVectorDoubleNode") +fieldDoubleVectorOnNodes.setIterationNumber(-1) +fieldDoubleVectorOnNodes.setOrderNumber(-1) +fieldDoubleVectorOnNodes.setTime(0.0) + +fieldDoubleVectorOnNodes.setComponentName(1,"Vx") +fieldDoubleVectorOnNodes.setComponentDescription(1,"comp1") +fieldDoubleVectorOnNodes.setMEDComponentUnit(1,"unit1") +fieldDoubleVectorOnNodes.setComponentName(2,"Vy") +fieldDoubleVectorOnNodes.setComponentDescription(2,"comp2") +fieldDoubleVectorOnNodes.setMEDComponentUnit(2,"unit2") +fieldDoubleVectorOnNodes.setComponentName(3,"Vz") +fieldDoubleVectorOnNodes.setComponentDescription(3,"comp3") +fieldDoubleVectorOnNodes.setMEDComponentUnit(3,"unit3") + +fieldDoubleScalarOnCells = FIELDDOUBLE(supportOnCells,1) +fieldDoubleScalarOnCells.setName("fieldScalarDoubleCell") +fieldDoubleScalarOnCells.setIterationNumber(-1) +fieldDoubleScalarOnCells.setOrderNumber(-1) +fieldDoubleScalarOnCells.setTime(0.0) + +fieldDoubleScalarOnCells.setComponentName(1,"Vx") +fieldDoubleScalarOnCells.setComponentDescription(1,"comp1") +fieldDoubleScalarOnCells.setMEDComponentUnit(1,"unit1") + +fieldDoubleVectorOnCells = FIELDDOUBLE(supportOnCells,spaceDimension) +fieldDoubleVectorOnCells.setName("fieldVectorrDoubleCell") +fieldDoubleVectorOnCells.setIterationNumber(-1) +fieldDoubleVectorOnCells.setOrderNumber(-1) +fieldDoubleVectorOnCells.setTime(0.0) + +fieldDoubleVectorOnCells.setComponentName(1,"Vx") +fieldDoubleVectorOnCells.setComponentDescription(1,"comp1") +fieldDoubleVectorOnCells.setMEDComponentUnit(1,"unit1") +fieldDoubleVectorOnCells.setComponentName(2,"Vy") +fieldDoubleVectorOnCells.setComponentDescription(2,"comp2") +fieldDoubleVectorOnCells.setMEDComponentUnit(2,"unit2") +fieldDoubleVectorOnCells.setComponentName(3,"Vz") +fieldDoubleVectorOnCells.setComponentDescription(3,"comp3") +fieldDoubleVectorOnCells.setMEDComponentUnit(3,"unit3") + +fieldIntScalarOnNodes = FIELDINT(supportOnNodes,1) +fieldIntScalarOnNodes.setName("fieldScalarIntNode") +fieldIntScalarOnNodes.setIterationNumber(-1) +fieldIntScalarOnNodes.setOrderNumber(-1) +fieldIntScalarOnNodes.setTime(0.0) + +fieldIntScalarOnNodes.setComponentName(1,"Vx") +fieldIntScalarOnNodes.setComponentDescription(1,"comp1") +fieldIntScalarOnNodes.setMEDComponentUnit(1,"unit1") + +fieldIntVectorOnNodes = FIELDINT(supportOnNodes,spaceDimension) +fieldIntVectorOnNodes.setName("fieldVectorIntNode") +fieldIntVectorOnNodes.setIterationNumber(-1) +fieldIntVectorOnNodes.setOrderNumber(-1) +fieldIntVectorOnNodes.setTime(0.0) + +fieldIntVectorOnNodes.setComponentName(1,"Vx") +fieldIntVectorOnNodes.setComponentDescription(1,"comp1") +fieldIntVectorOnNodes.setMEDComponentUnit(1,"unit1") +fieldIntVectorOnNodes.setComponentName(2,"Vy") +fieldIntVectorOnNodes.setComponentDescription(2,"comp2") +fieldIntVectorOnNodes.setMEDComponentUnit(2,"unit2") +fieldIntVectorOnNodes.setComponentName(3,"Vz") +fieldIntVectorOnNodes.setComponentDescription(3,"comp3") +fieldIntVectorOnNodes.setMEDComponentUnit(3,"unit3") + +fieldIntScalarOnCells = FIELDINT(supportOnCells,1) +fieldIntScalarOnCells.setName("fieldScalarIntCell") +fieldIntScalarOnCells.setIterationNumber(-1) +fieldIntScalarOnCells.setOrderNumber(-1) +fieldIntScalarOnCells.setTime(0.0) + +fieldIntScalarOnCells.setComponentName(1,"Vx") +fieldIntScalarOnCells.setComponentDescription(1,"comp1") +fieldIntScalarOnCells.setMEDComponentUnit(1,"unit1") + +fieldIntVectorOnCells = FIELDINT(supportOnCells,spaceDimension) +fieldIntVectorOnCells.setName("fieldVectorrIntCell") +fieldIntVectorOnCells.setIterationNumber(-1) +fieldIntVectorOnCells.setOrderNumber(-1) +fieldIntVectorOnCells.setTime(0.0) + +fieldIntVectorOnCells.setComponentName(1,"Vx") +fieldIntVectorOnCells.setComponentDescription(1,"comp1") +fieldIntVectorOnCells.setMEDComponentUnit(1,"unit1") +fieldIntVectorOnCells.setComponentName(2,"Vy") +fieldIntVectorOnCells.setComponentDescription(2,"comp2") +fieldIntVectorOnCells.setMEDComponentUnit(2,"unit2") +fieldIntVectorOnCells.setComponentName(3,"Vz") +fieldIntVectorOnCells.setComponentDescription(3,"comp3") +fieldIntVectorOnCells.setMEDComponentUnit(3,"unit3") + +for i in range(numberOfNodes): + valueInt1 = i+1 + valueInt2 = i+2 + valueInt3 = i+3 + valueDbl1 = valueInt1*0.1 + valueDbl2 = valueInt2*0.1 + valueDbl3 = valueInt3*0.1 + fieldDoubleScalarOnNodes.setValueIJ(i+1,1,valueDbl1) + + fieldIntScalarOnNodes.setValueIJ(i+1,1,valueInt1) + + fieldDoubleVectorOnNodes.setValueIJ(i+1,1,valueDbl1) + fieldDoubleVectorOnNodes.setValueIJ(i+1,2,valueDbl2) + fieldDoubleVectorOnNodes.setValueIJ(i+1,3,valueDbl3) + + fieldIntVectorOnNodes.setValueIJ(i+1,1,valueInt1) + fieldIntVectorOnNodes.setValueIJ(i+1,2,valueInt2) + fieldIntVectorOnNodes.setValueIJ(i+1,3,valueInt3) + +for i in range(numberOfCells): + valueInt1 = i+1 + valueInt2 = i+2 + valueInt3 = i+3 + valueDbl1 = valueInt1*0.1 + valueDbl2 = valueInt2*0.1 + valueDbl3 = valueInt3*0.1 + fieldDoubleScalarOnCells.setValueIJ(i+1,1,valueDbl1) + + fieldIntScalarOnCells.setValueIJ(i+1,1,valueInt1) + + fieldDoubleVectorOnCells.setValueIJ(i+1,1,valueDbl1) + fieldDoubleVectorOnCells.setValueIJ(i+1,2,valueDbl2) + fieldDoubleVectorOnCells.setValueIJ(i+1,3,valueDbl3) + + fieldIntVectorOnCells.setValueIJ(i+1,1,valueInt1) + fieldIntVectorOnCells.setValueIJ(i+1,2,valueInt2) + fieldIntVectorOnCells.setValueIJ(i+1,3,valueInt3) + +medFileVersion = getMedFileVersionForWriting() +print "Med File Version For Writing ",medFileVersion + +if (medFileVersion == V22): + setMedFileVersionForWriting(V21) + +idMedV21 = fieldDoubleScalarOnNodes.addDriver(MED_DRIVER,med21FileName,fieldDoubleScalarOnNodes.getName()) +fieldDoubleScalarOnNodes.write(idMedV21) + +idMedV21 = fieldIntScalarOnNodes.addDriver(MED_DRIVER,med21FileName,fieldIntScalarOnNodes.getName()) +fieldIntScalarOnNodes.write(idMedV21) + +idMedV21 = fieldDoubleVectorOnNodes.addDriver(MED_DRIVER,med21FileName,fieldDoubleVectorOnNodes.getName()) +fieldDoubleVectorOnNodes.write(idMedV21) + +idMedV21 = fieldIntVectorOnNodes.addDriver(MED_DRIVER,med21FileName,fieldIntVectorOnNodes.getName()) +fieldIntVectorOnNodes.write(idMedV21) + +idMedV21 = fieldDoubleScalarOnCells.addDriver(MED_DRIVER,med21FileName,fieldDoubleScalarOnCells.getName()) +fieldDoubleScalarOnCells.write(idMedV21) + +idMedV21 = fieldIntScalarOnCells.addDriver(MED_DRIVER,med21FileName,fieldIntScalarOnCells.getName()) +fieldIntScalarOnCells.write(idMedV21) + +idMedV21 = fieldDoubleVectorOnCells.addDriver(MED_DRIVER,med21FileName,fieldDoubleVectorOnCells.getName()) +fieldDoubleVectorOnCells.write(idMedV21) + +idMedV21 = fieldIntVectorOnCells.addDriver(MED_DRIVER,med21FileName,fieldIntVectorOnCells.getName()) +fieldIntVectorOnCells.write(idMedV21) + +medFileVersion = getMedFileVersionForWriting() +if (medFileVersion == V21): + setMedFileVersionForWriting(V22) + +idMedV22 = fieldDoubleScalarOnNodes.addDriver(MED_DRIVER,med22FileName,fieldDoubleScalarOnNodes.getName()) +fieldDoubleScalarOnNodes.write(idMedV22) + +idMedV22 = fieldIntScalarOnNodes.addDriver(MED_DRIVER,med22FileName,fieldIntScalarOnNodes.getName()) +fieldIntScalarOnNodes.write(idMedV22) + +idMedV22 = fieldDoubleVectorOnNodes.addDriver(MED_DRIVER,med22FileName,fieldDoubleVectorOnNodes.getName()) +fieldDoubleVectorOnNodes.write(idMedV22) + +idMedV22 = fieldIntVectorOnNodes.addDriver(MED_DRIVER,med22FileName,fieldIntVectorOnNodes.getName()) +fieldIntVectorOnNodes.write(idMedV22) + +idMedV22 = fieldDoubleScalarOnCells.addDriver(MED_DRIVER,med22FileName,fieldDoubleScalarOnCells.getName()) +fieldDoubleScalarOnCells.write(idMedV22) + +idMedV22 = fieldIntScalarOnCells.addDriver(MED_DRIVER,med22FileName,fieldIntScalarOnCells.getName()) +fieldIntScalarOnCells.write(idMedV22) + +idMedV22 = fieldDoubleVectorOnCells.addDriver(MED_DRIVER,med22FileName,fieldDoubleVectorOnCells.getName()) +fieldDoubleVectorOnCells.write(idMedV22) + +idMedV22 = fieldIntVectorOnCells.addDriver(MED_DRIVER,med22FileName,fieldIntVectorOnCells.getName()) +fieldIntVectorOnCells.write(idMedV22) + +idVtk = fieldDoubleScalarOnNodes.addDriver(VTK_DRIVER,vtkFileName,fieldDoubleScalarOnNodes.getName()) +fieldDoubleScalarOnNodes.writeAppend(idVtk) + +idVtk = fieldIntScalarOnNodes.addDriver(VTK_DRIVER,vtkFileName,fieldIntScalarOnNodes.getName()) +fieldIntScalarOnNodes.writeAppend(idVtk) + +idVtk = fieldDoubleVectorOnNodes.addDriver(VTK_DRIVER,vtkFileName,fieldDoubleVectorOnNodes.getName()) +fieldDoubleVectorOnNodes.writeAppend(idVtk) + +idVtk = fieldIntVectorOnNodes.addDriver(VTK_DRIVER,vtkFileName,fieldIntVectorOnNodes.getName()) +fieldIntVectorOnNodes.writeAppend(idVtk) + +idVtk = fieldDoubleScalarOnCells.addDriver(VTK_DRIVER,vtkFileName,fieldDoubleScalarOnCells.getName()) +fieldDoubleScalarOnCells.writeAppend(idVtk) + +idVtk = fieldIntScalarOnCells.addDriver(VTK_DRIVER,vtkFileName,fieldIntScalarOnCells.getName()) +fieldIntScalarOnCells.writeAppend(idVtk) + +idVtk = fieldDoubleVectorOnCells.addDriver(VTK_DRIVER,vtkFileName,fieldDoubleVectorOnCells.getName()) +fieldDoubleVectorOnCells.writeAppend(idVtk) + +idVtk = fieldIntVectorOnCells.addDriver(VTK_DRIVER,vtkFileName,fieldIntVectorOnCells.getName()) +fieldIntVectorOnCells.writeAppend(idVtk) diff --git a/doc/MEDMEM/MESHconnectivities.cxx b/doc/MEDMEM/MESHconnectivities.cxx index 947cd8598..1580d640f 100644 --- a/doc/MEDMEM/MESHconnectivities.cxx +++ b/doc/MEDMEM/MESHconnectivities.cxx @@ -1,24 +1,7 @@ // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ -// #include "MEDMEM_Mesh.hxx" -#include "MEDMEM_CellModel.hxx" using namespace MEDMEM ; using namespace MED_EN ; @@ -38,16 +21,15 @@ int main (int argc, char ** argv) { // we get all type for cell entity : int NumberOfTypes = myMesh.getNumberOfTypes(MED_CELL) ; - const CELLMODEL * Types = myMesh.getCellsTypes(MED_CELL) ; - cout << "Show Connectivity (Nodal) :" << endl ; - // this example use access with a specified medGeometryElement through - // CELLMODEL class + // this example use access with a specified medGeometryElement array + const medGeometryElement * Types = myMesh.getTypes(MED_CELL); + string * cellTypeNames = myMesh.getCellTypeNames(MED_CELL); for (int i=0; iMEDMEM_UsersGuide_2on1.ps @@ -116,17 +131,13 @@ MEDMEM_UsersGuide_2on1.ps: MEDMEM_UsersGuide.ps MEDMEM_UsersGuide_2on1.pdf: MEDMEM_UsersGuide_2on1.ps ps2pdf MEDMEM_UsersGuide_2on1.ps MEDMEM_UsersGuide_2on1.pdf - -MEDMEM_UML.eps:MEDMEM_UML.dia - dia -e $@ $< - -MEDMEM_UsersGuide.dvi: MEDMEM_UsersGuide.tex MEDMEM_UML.eps - echo "Running latex..." - latex $< +MEDMEM_UsersGuide.pdf: MEDMEM_UsersGuide.tex MEDMEM_Content.tex MEDMEM_UML_light.png MEDMEM_UML.png FIELDcreate.cxx FIELDgeneral.cxx MEDMEM_InvokingDriverAtObjectCreationTime.cxx MEDMEM_InvokingDriverByAttachingItToAnObject.cxx MEDMEM_InvokingDriverFromStandardObjectMethod.cxx MEDMEM_MedAddingAnExistingObject.cxx MESHconnectivities.cxx MESHcoordinates.cxx MESHgeneral.cxx MESHINGexample.cxx FIELDcreate.py FIELDgeneral.py MEDMEM_InvokingDriverAtObjectCreationTime.py MEDMEM_InvokingDriverByAttachingItToAnObject.py MEDMEM_InvokingDriverFromStandardObjectMethod.py MESHconnectivities.py MESHcoordinates.py MESHgeneral.py MESHINGexample.py + echo "Running pdflatex..." + pdflatex $< #echo "Running makeindex..." #makeindex MEDMEM_UsersGuide.idx echo "Rerunning latex...." - latex $< + pdflatex $< latex_count=5 while egrep -s 'Rerun (LaTeX|to get cross-references right)' MEDMEM_UsersGuide.log && [ $latex_count -gt 0 ] ;\ do \ @@ -138,6 +149,15 @@ MEDMEM_UsersGuide.dvi: MEDMEM_UsersGuide.tex MEDMEM_UML.eps MEDMEM_UsersGuide.tex:MEDMEM_UsersGuide.tex.in cd $(top_builddir) && CONFIG_FILES=./doc/MEDMEM/MEDMEM_UsersGuide.tex ./config.status +MEDMEM_Content.tex:MEDMEM_Content.tex.in + cd $(top_builddir) && CONFIG_FILES=./doc/MEDMEM/MEDMEM_Content.tex ./config.status + +MEDMEM_UML_light.png:MEDMEM_UML_light.png.in + cd $(top_builddir) && CONFIG_FILES=./doc/MEDMEM/MEDMEM_UML_light.png ./config.status + +MEDMEM_UML.png:MEDMEM_UML.png.in + cd $(top_builddir) && CONFIG_FILES=./doc/MEDMEM/MEDMEM_UML.png ./config.status + # install procedure install: $(datadir)/doc ps_2on1 pdf_2on1 diff --git a/doc/Makefile.in b/doc/Makefile.in index 7295ede75..c54fc262b 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# # -* Makefile *- # @@ -15,7 +33,7 @@ SUBDIRS= salome @COMMENCE@ -docs: +dev_docs: @@SETX@; for d in $(SUBDIRS); do \ (cd $$d && $(MAKE) $@) || exit 1; \ done diff --git a/doc/html/INPUT/doxyfile b/doc/html/INPUT/doxyfile deleted file mode 100755 index 6e7f69462..000000000 --- a/doc/html/INPUT/doxyfile +++ /dev/null @@ -1,201 +0,0 @@ -# Doxyfile 1.3-rc1 - -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "SALOME - MED - v.2.0.0" -PROJECT_NUMBER = id#1.1 -OUTPUT_DIRECTORY = ../ -OUTPUT_LANGUAGE = English -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = NO -ALWAYS_DETAILED_SEC = YES -INLINE_INHERITED_MEMB = YES -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -SHORT_NAMES = NO -HIDE_SCOPE_NAMES = NO -VERBATIM_HEADERS = YES -SHOW_INCLUDE_FILES = YES -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = NO -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 5 -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ALIASES = -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 25 -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = YES -SHOW_USED_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = log.txt -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../../../share/salome/idl/MED.idl \ - ../../../share/salome/idl/MED_Gen.idl -FILE_PATTERNS = -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = sources/ -INPUT_FILTER = -FILTER_SOURCE_FILES = YES -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = sources/myheader.html -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = YES -TOC_EXPAND = YES -DISABLE_INDEX = YES -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_SCHEMA = -XML_DTD = -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = NO -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = NO -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DOT_IMAGE_FORMAT = jpg -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1200 -GENERATE_LEGEND = NO -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO -CGI_NAME = search.cgi -CGI_URL = -DOC_URL = -DOC_ABSPATH = -BIN_ABSPATH = /usr/local/bin/ -EXT_DOC_PATHS = diff --git a/doc/html/INPUT/doxyfile.in b/doc/html/INPUT/doxyfile.in new file mode 100755 index 000000000..023290eed --- /dev/null +++ b/doc/html/INPUT/doxyfile.in @@ -0,0 +1,201 @@ +# Doxyfile 1.3-rc1 + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "SALOME - MED - v.@VERSION@" +PROJECT_NUMBER = id#1.1 +OUTPUT_DIRECTORY = ../ +OUTPUT_LANGUAGE = English +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = NO +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +SHORT_NAMES = NO +HIDE_SCOPE_NAMES = NO +VERBATIM_HEADERS = YES +SHOW_INCLUDE_FILES = YES +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 5 +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ALIASES = +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 25 +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = YES +SHOW_USED_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = log.txt +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../../../share/salome/idl/MED.idl \ + ../../../share/salome/idl/MED_Gen.idl +FILE_PATTERNS = +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = sources/ +INPUT_FILTER = +FILTER_SOURCE_FILES = YES +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = sources/myheader.html +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = YES +TOC_EXPAND = YES +DISABLE_INDEX = YES +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_SCHEMA = +XML_DTD = +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = NO +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DOT_IMAGE_FORMAT = jpg +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1200 +GENERATE_LEGEND = NO +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO +CGI_NAME = search.cgi +CGI_URL = +DOC_URL = +DOC_ABSPATH = +BIN_ABSPATH = /usr/local/bin/ +EXT_DOC_PATHS = diff --git a/doc/html/Makefile.in b/doc/html/Makefile.in index 135b2daef..36943e852 100644 --- a/doc/html/Makefile.in +++ b/doc/html/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# # -* Makefile *- # # Author : Vasily Rusyaev (Open Cascade NN) diff --git a/doc/salome/MED_index_v3.1.0.html b/doc/salome/MED_index_v3.1.0.html deleted file mode 100644 index 5217304ed..000000000 --- a/doc/salome/MED_index_v3.1.0.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - Med Module Documentation - - - -
  -
-
                   -   
- - - - - - - - - -
- - - -
- -
-
-
-

Med MODULE Documentation

-
-
- - - - - -
-
- -
-

Application-About.png -     

-
- -
- - - - -
-
-
- -
-
- -
- -
- -

-
- -
- -
TUI Documentation
- -
- -
- -

-
-
-
-
-
-
-
- - diff --git a/doc/salome/Makefile.in b/doc/salome/Makefile.in index c19de8770..c88e71139 100644 --- a/doc/salome/Makefile.in +++ b/doc/salome/Makefile.in @@ -1,3 +1,21 @@ +# Copyright (C) 2005 OPEN CASCADE, CEA, EDF R&D, LEG +# PRINCIPIA R&D, EADS CCR, Lip6, BV, CEDRAT +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# # -* Makefile *- # @@ -15,29 +33,35 @@ SUBDIRS= tui @COMMENCE@ -docs: +dev_docs: @@SETX@; for d in $(SUBDIRS); do \ (cd $$d && $(MAKE) $@) || exit 1; \ done; \ - cp -f $(srcdir)/MED_index_v3.1.0.html MED_index_v3.1.0.html clean: @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ + if test -d $$d/MED; then \ + (cd $$d && $(MAKE) $@) || exit 1; \ + fi; \ done distclean: clean @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ + if test -d $$d/MED; then \ + (cd $$d && $(MAKE) $@) || exit 1; \ + fi; \ done install: - $(MAKE) docs - (cd tui && $(MAKE) install); - cp -f MED_index_v3.1.0.html $(docdir) + @@SETX@; for d in $(SUBDIRS); do \ + if test -d $$d/MED; then \ + (cd $$d && $(MAKE) $@); \ + fi; \ + done uninstall: @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ + if test -d $$d/MED; then \ + (cd $$d && $(MAKE) $@) || exit 1; \ + fi; \ done; \ - rm -fr $(docdir)/MED_index_v3.1.0.html diff --git a/doc/salome/tui/MED/doxyfile b/doc/salome/tui/MED/doxyfile deleted file mode 100755 index 7b65febdb..000000000 --- a/doc/salome/tui/MED/doxyfile +++ /dev/null @@ -1,230 +0,0 @@ -# Doxyfile 1.3.7 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "SALOME - MED - v.3.2.0b1" -PROJECT_NUMBER = id#1.1 -OUTPUT_DIRECTORY = ../ -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = NO -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 5 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = YES -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = NO -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 25 -SHOW_USED_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = log.txt - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../../../share/salome/src \ - ../../../share/salome/idl \ - ../../../build/salome/bin -FILE_PATTERNS = *.idl *.h *.hh *.hxx *.c *.cc *.cxx *.ixx *.jxx python_extension_must_be_here -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = YES -IMAGE_PATH = sources/ -INPUT_FILTER = -FILTER_SOURCE_FILES = YES - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = YES -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = MED -HTML_FILE_EXTENSION = .html -HTML_HEADER = sources/myheader.html -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = YES -TOC_EXPAND = YES -DISABLE_INDEX = YES -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = NO - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = NO -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = NO -UML_LOOK = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = NO -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DOT_IMAGE_FORMAT = jpg -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1200 -MAX_DOT_GRAPH_DEPTH = 0 -GENERATE_LEGEND = NO -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/doc/salome/tui/MED/doxyfile.in b/doc/salome/tui/MED/doxyfile.in new file mode 100755 index 000000000..06d537f1f --- /dev/null +++ b/doc/salome/tui/MED/doxyfile.in @@ -0,0 +1,231 @@ +# Doxyfile 1.3.7 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "SALOME - MED - v.@VERSION@" +PROJECT_NUMBER = +OUTPUT_DIRECTORY = ../ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = ../../../share/salome \ + ../../../build/salome +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = NO +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 5 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = YES +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 25 +SHOW_USED_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = log.txt + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../../../share/salome/src \ + ../../../share/salome/idl \ + ../../../build/salome/bin +FILE_PATTERNS = *.idl *.h *.hh *.hxx *.c *.cc *.cxx *.ixx *.jxx python_extension_must_be_here +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = YES +IMAGE_PATH = sources/ +INPUT_FILTER = +FILTER_SOURCE_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = MED +HTML_FILE_EXTENSION = .html +HTML_HEADER = sources/myheader.html +HTML_FOOTER = sources/footer.html +HTML_STYLESHEET = sources/static/doxygen.css +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = YES +TOC_EXPAND = YES +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = NO + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = NO +UML_LOOK = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = NO +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DOT_IMAGE_FORMAT = jpg +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1200 +MAX_DOT_GRAPH_DEPTH = 0 +GENERATE_LEGEND = NO +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/doc/salome/tui/MED/sources/footer.html b/doc/salome/tui/MED/sources/footer.html new file mode 100755 index 000000000..cb55f397a --- /dev/null +++ b/doc/salome/tui/MED/sources/footer.html @@ -0,0 +1,5 @@ + + + + diff --git a/doc/salome/tui/MED/sources/myheader.html b/doc/salome/tui/MED/sources/myheader.html index 83ca543cd..d2efb75fa 100755 --- a/doc/salome/tui/MED/sources/myheader.html +++ b/doc/salome/tui/MED/sources/myheader.html @@ -5,20 +5,9 @@ Main Page +   -
- - - - - - -
-
-
- - diff --git a/doc/salome/tui/MED/sources/static/doxygen.css b/doc/salome/tui/MED/sources/static/doxygen.css index 0a8e93d50..88e613d23 100755 --- a/doc/salome/tui/MED/sources/static/doxygen.css +++ b/doc/salome/tui/MED/sources/static/doxygen.css @@ -1,21 +1,139 @@ -H1 { text-align: center; } -CAPTION { font-weight: bold } +H1 { + text-align: center; +} + +CAPTION { + font-weight: bold +} + +/* Link in the top navbar */ A.qindex {} + A.qindexRef {} -A.el { text-decoration: none; font-weight: bold } -A.elRef { font-weight: bold } -A.code { text-decoration: none; font-weight: normal; color: #4444ee } -A.codeRef { font-weight: normal; color: #4444ee } -A:hover { text-decoration: none; background-color: lightblue } -DL.el { margin-left: -1cm } -DIV.fragment { width: 100%; border: none; background-color: #CCCCCC } -DIV.ah { background-color: #CCCCCC; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } -TD.md { background-color: lightblue; font-weight: bold; } -TD.mdname1 { background-color: lightblue; font-weight: bold; color: #602020; } -TD.mdname { background-color: lightblue; font-weight: bold; color: #602020; width: 600px; } -DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold } -DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } -BODY { background: url(sources/bg_salome.gif) } + +/* Link to any cross-referenced Doxygen element */ +A.el { + text-decoration: none; + font-weight: bold +} + +A.elRef { + font-weight: bold +} + +/* Link to any cross-referenced Doxygen element inside a code section + (ex: header) +*/ +A.code { + text-decoration: none; + font-weight: normal; + color: #4444ee +} + +A.codeRef { + font-weight: normal; + color: #4444ee +} + +A:hover { + text-decoration: none; + background-color: lightblue +} + +DL.el { + margin-left: -1cm +} + +/* A code fragment (ex: header) */ +DIV.fragment { + width: 100%; + border: none; + background-color: #CCCCCC +} + +/* In the alpha list (coumpound index), style of an alphabetical index letter */ +DIV.ah { + background-color: #CCCCCC; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px +} + +/* Method name (+ type) */ +TD.md { + background-color: lightblue; + font-weight: bold; +} + +/* Method parameter (some of them) */ +TD.mdname1 { + background-color: lightblue; + font-weight: bold; color: #602020; +} + +/* Method parameter (some of them) */ +TD.mdname { + background-color: lightblue; + font-weight: bold; + color: #602020; + width: 600px; +} + +/* Separator between methods group (usually empty, seems not supported by IE) */ +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold +} + +DIV.groupText { + margin-left: 16px; + font-style: italic; + font-size: smaller +} + +BODY { + background: #FFFFFF; +} + +/*div.div-page { + background-color: #FFFFFF; + margin-left: 1em; + margin-right: 1em; + margin-top: 1em; + margin-bottom: 0.1em; + + padding-left: 1em; + padding-right: 1em; + padding-top: 0.5em; + padding-bottom: 0.5em; + + border: 2px solid #0D299A; + border-width: 2px; + border-color: #0D299A; +}*/ + +div.tabs { + text-align: justify; + margin-left : 2px; + margin-right : 2px; + margin-top : 2px; + margin-bottom : 2px + font-weight: bold; + color: #FFFFFF; +} + +DIV.div-footer { + margin-left: 1em; + margin-right: 1em; + margin-bottom: 0.2em; + text-align: right; + font-size: 9pt; +} + +/* In File List, Coumpound List, etc, 1st column of the index */ TD.indexkey { background-color: #CCCCCC; font-weight: bold; @@ -28,6 +146,8 @@ TD.indexkey { margin-top : 2px; margin-bottom : 2px } + +/* In File List, Coumpound List, etc, 2nd column of the index */ TD.indexvalue { background-color: #CCCCCC; font-style: italic; @@ -40,6 +160,7 @@ TD.indexvalue { margin-top : 2px; margin-bottom : 2px } + span.keyword { color: #008000 } span.keywordtype { color: #604020 } span.keywordflow { color: #e08000 } diff --git a/doc/salome/tui/MED/sources/static/tree.js b/doc/salome/tui/MED/sources/static/tree.js deleted file mode 100755 index 6ea5bb6ca..000000000 --- a/doc/salome/tui/MED/sources/static/tree.js +++ /dev/null @@ -1,20 +0,0 @@ -foldersTree = gFld("SALOME v.3.2.0b1 ", "", "") - insDoc(foldersTree, gLnk("Main Page", "", "main.html")) - -aux1 = insFld(foldersTree, gFld("TUI Reference Guide", "")) - aux2 = insFld(aux1, gFld("Modules", "")) - aux3 = insFld(aux2, gFld("SALOME MED module", "")) -/*! insDoc(aux3, gLnk("Overview", "", "overview_Med.html"))*/ - aux4 = insFld(aux3, gFld("Packages", "")) - insDoc(aux4, gLnk("SALOME_MED", "", "namespaceSALOME__MED.html")) -/*! insDoc(aux3, gLnk("Examples", "", "examples_MED.html")) -*/ - - insDoc(aux1, gLnk("Data Structures", "", "annotated.html")) - insDoc(aux1, gLnk("Class Hierarchy", "", "hierarchy.html")) - insDoc(aux1, gLnk("Class methods list", "", "functions.html")) - insDoc(aux1, gLnk("Namespace Members", "", "namespacemembers.html")) - insDoc(aux1, gLnk("File List", "", "files.html")) - -aux1 = insFld(foldersTree, gFld("IDL/Python mapping", "")) - insDoc(aux1, gLnk("Mapping of MED IDL definitions to Python language", "", "page2.html")) diff --git a/doc/salome/tui/MED/sources/static/tree.js.in b/doc/salome/tui/MED/sources/static/tree.js.in new file mode 100755 index 000000000..b4ff3414f --- /dev/null +++ b/doc/salome/tui/MED/sources/static/tree.js.in @@ -0,0 +1,20 @@ +foldersTree = gFld("SALOME v.@VERSION@ ", "", "") + insDoc(foldersTree, gLnk("Main Page", "", "main.html")) + +aux1 = insFld(foldersTree, gFld("TUI Reference Guide", "")) + aux2 = insFld(aux1, gFld("Modules", "")) + aux3 = insFld(aux2, gFld("SALOME MED module", "")) +/*! insDoc(aux3, gLnk("Overview", "", "overview_Med.html"))*/ + aux4 = insFld(aux3, gFld("Packages", "")) + insDoc(aux4, gLnk("SALOME_MED", "", "namespaceSALOME__MED.html")) +/*! insDoc(aux3, gLnk("Examples", "", "examples_MED.html")) +*/ + + insDoc(aux1, gLnk("Data Structures", "", "annotated.html")) + insDoc(aux1, gLnk("Class Hierarchy", "", "hierarchy.html")) + insDoc(aux1, gLnk("Class methods list", "", "functions.html")) + insDoc(aux1, gLnk("Namespace Members", "", "namespacemembers.html")) + insDoc(aux1, gLnk("File List", "", "files.html")) + +aux1 = insFld(foldersTree, gFld("IDL/Python mapping", "")) + insDoc(aux1, gLnk("Mapping of MED IDL definitions to Python language", "", "page2.html")) diff --git a/doc/salome/tui/Makefile.in b/doc/salome/tui/Makefile.in index 5434c5517..8c85f6e65 100644 --- a/doc/salome/tui/Makefile.in +++ b/doc/salome/tui/Makefile.in @@ -1,6 +1,6 @@ # Copyright (C) 2003 CEA/DEN, EDF R&D # -# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # File : Makefile.in # Author : Vasily Rusyaev (Open Cascade NN) @@ -16,8 +16,10 @@ doxygen=@DOXYGEN@ @COMMENCE@ -docs: +dev_docs: cp -fr $(srcdir)/MED ./INPUT; \ + cp -fr ./MED/doxyfile ./INPUT; \ + cp -fr ./MED/sources/static/tree.js ./INPUT/sources/static; \ cd INPUT; \ sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \ sed 's|../../build/salome|$(top_builddir)|' ./doxyfile1 > ./doxyfile2; \