1%%%%%%%%%%%%%%%%%%% 2% XLiFE++ is an extended library of finite elements written in C++ 3% Copyright (C) 2014 Lunéville, Eric; Kielbasiewicz, Nicolas; Lafranche, Yvon; Nguyen, Manh-Ha; Chambeyron, Colin 4% 5% This program is free software: you can redistribute it and/or modify 6% it under the terms of the GNU General Public License as published by 7% the Free Software Foundation, either version 3 of the License, or 8% (at your option) any later version. 9% This program is distributed in the hope that it will be useful, 10% but WITHOUT ANY WARRANTY; without even the implied warranty of 11% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12% GNU General Public License for more details. 13% You should have received a copy of the GNU General Public License 14% along with this program. If not, see <http://www.gnu.org/licenses/>. 15%%%%%%%%%%%%%%%%%%% 16 17\section{The {\classtitle OperatorOnUnknowns} class} 18 19The {\class OperatorOnUnknowns} class deals with a pair of {\class OperatorOnUnknown} object related by an {\class AlgebraicOperator} (one of product, inner product, cross product or contracted product): 20It is useful to store syntax like \emph{opu aop opv} occurring in bilinear forms. 21\vspace{.1cm} 22\begin{lstlisting}[]{} 23class OperatorOnUnknowns 24{ 25 protected : 26 OperatorOnUnknown opu_; //left operator on unknown 27 OperatorOnUnknown opv_; //right operator on unknown (test function) 28 AlgebraicOperator aop_; //algebraic operation (*,|,%,^) 29} 30\end{lstlisting} 31\vspace{.3cm} 32The class provides basic constructor and accessors: 33\vspace{.1cm} 34\begin{lstlisting}[]{} 35OperatorOnUnknowns(){}; 36OperatorOnUnknowns(const OperatorOnUnknown& operu, const OperatorOnUnknown& operv, AlgebraicOperator aop); 37const OperatorOnUnknown& opu() const; 38OperatorOnUnknown& opu(); 39OperatorOnUnknown& opv(); 40AlgebraicOperator algop(); 41ValueType valueType() const; 42\end{lstlisting} 43\vspace{.3cm} 44a function checking the consistancy of expression: 45\vspace{.1cm} 46\begin{lstlisting}[]{} 47bool checkConsistancy(); 48\end{lstlisting} 49\vspace{.3cm} 50The \verb?checkConsitancy? function checks that the given {\class OperatorOnUnknown} objects 51are consistent (in structure not in dimension) with the given algebraic operation. If not an 52error is handled. \\ 53Some print facilities are provided: 54\vspace{.1cm} 55\begin{lstlisting}[]{} 56void print(std::ostream&) const; 57friend std::ostream& operator<<(std::ostream&, const OperatorOnUnknowns&); 58\end{lstlisting} 59\vspace{.3cm} 60Besides, some extern functions acts like constructors: 61\vspace{.1cm} 62\begin{lstlisting}[]{} 63OperatorOnUnknowns operator*(OperatorOnUnknown&,OperatorOnUnknown&); //opu * opv 64OperatorOnUnknowns operator|(OperatorOnUnknown&,OperatorOnUnknown&); //opu | opv 65OperatorOnUnknowns operator^(OperatorOnUnknown&,OperatorOnUnknown&); //opu ^ opv 66OperatorOnUnknowns operator%(OperatorOnUnknown&,OperatorOnUnknown&); //opu % opv 67OperatorOnUnknowns operator*(OperatorOnUnknown&,Unknown&); //opu * v 68OperatorOnUnknowns operator|(OperatorOnUnknown&,Unknown&); //opu | v 69OperatorOnUnknowns operator^(OperatorOnUnknown&,Unknown&); //opu ^ v 70OperatorOnUnknowns operator%(OperatorOnUnknown&,Unknown&); //opu % v 71OperatorOnUnknowns operator*(Unknown&,OperatorOnUnknown&); //u * opv 72OperatorOnUnknowns operator|(Unknown&,OperatorOnUnknown&); //u | opv 73OperatorOnUnknowns operator^(Unknown&,OperatorOnUnknown&); //u ^ opv 74OperatorOnUnknowns operator%(Unknown&,OperatorOnUnknown&); //u % opv 75OperatorOnUnknowns operator*(Unknown&,Unknown&); //u * v 76OperatorOnUnknowns operator|(Unknown&,Unknown&); //u | v 77OperatorOnUnknowns operator^(Unknown&,Unknown&); //u ^ v 78OperatorOnUnknowns operator%(Unknown&,Unknown&); //u % v 79\end{lstlisting} 80\vspace{.3cm} 81 82\displayInfos{library=operator, header=OperatorOnUnknowns.hpp, implementation=OperatorOnUnknowns.cpp, 83test=test\_operator.cpp, header dep={OperatorOnUnknown.hpp, config.h, utils.h}} 84 85