/*
* Copyright (C) 1997-2006 P. Dular, C. Geuzaine
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems to <getdp@geuz.org>.
*/
#ifndef _TREATMENT_FORMULATION_H_
#define _TREATMENT_FORMULATION_H_
#include "Data_Active.h"
/* Treatment_Formulation & co */
/* -------------------------- */
void Treatment_Formulation(struct Formulation * Formulation_P) ;
void Treatment_FemFormulation(struct Formulation * Formulation_P) ;
void Treatment_FemGlobalTerm
(struct EquationTerm * EquationTerm_P,
struct FunctionSpace * FunctionSpace_P,
struct GlobalQuantity * GlobalQuantity_P) ;
void Treatment_GlobalFormulation(struct Formulation * Formulation_P) ;
/*---------------------------------------------------------------------*/
void Pre_InitTermOfFemEquation(struct EquationTerm * EquationTerm_P,
struct QuantityStorage * QuantityStorage_P0) ;
void Pre_TermOfFemEquation(struct Element * Element,
struct EquationTerm * EquationTerm_P,
struct QuantityStorage * QuantityStorage_P0) ;
void Pre_InitGlobalTermOfFemEquation(struct EquationTerm * EquationTerm_P,
struct QuantityStorage * QuantityStorage_P0) ;
void Pre_GlobalTermOfFemEquation(int Num_Region,
struct EquationTerm * EquationTerm_P,
struct QuantityStorage * QuantityStorage_P0) ;
void Cal_FemGlobalEquation(struct EquationTerm * EquationTerm_P,
struct DefineQuantity * DefineQuantity_P0,
struct QuantityStorage * QuantityStorage_P0) ;
void Pre_FemGlobalEquation(struct EquationTerm * EquationTerm_P,
struct DefineQuantity * DefineQuantity_P0,
struct QuantityStorage * QuantityStorage_P0) ;
void Cst_TermOfFemEquation(struct Element * Element,
struct EquationTerm * EquationTerm_P,
struct QuantityStorage * QuantityStorage_P0) ;
/*---------------------------------------------------------------------*/
void Par_TermOfFemEquation(struct Element * Element,
struct EquationTerm * EquationTerm_P,
struct QuantityStorage * QuantityStorage_P0) ;
/*---------------------------------------------------------------------*/
void Cal_InitGalerkinTermOfFemEquation(struct EquationTerm * EquationTerm_P,
struct QuantityStorage * QuantityStorage_P0,
struct QuantityStorage * QuantityStorageNoDof,
struct Dof * DofForNoDof_P) ;
void Cal_GalerkinTermOfFemEquation(struct Element * Element,
struct EquationTerm * EquationTerm_P,
struct QuantityStorage * QuantityStorage_P0) ;
void Cal_InitdeRhamTermOfFemEquation(struct EquationTerm * EquationTerm_P,
struct QuantityStorage * QuantityStorage_P0,
struct QuantityStorage * QuantityStorageNoDof,
struct Dof * DofForNoDof_P) ;
void Cal_deRhamTermOfFemEquation(struct Element * Element,
struct EquationTerm * EquationTerm_P,
struct QuantityStorage * QuantityStorage_P0) ;
void Cal_GlobalTermOfFemEquation(int Num_Region,
struct EquationTerm *EquationTerm_P,
struct QuantityStorage *QuantityStorage_P0,
struct QuantityStorage *QuantityStorageNoDof,
struct Dof *DofForNoDof_P) ;
void Cal_InitIntegralQuantity(struct Element *Element,
struct IntegralQuantityActive *IQ,
struct QuantityStorage *QuantityStorage_P) ;
void Cal_NumericalIntegralQuantity(struct Element *Element,
struct IntegralQuantityActive *IQ,
struct QuantityStorage *QuantityStorageDof_P0,
struct QuantityStorage *QuantityStorageDof_P,
int Type_DEfineQuantity,
int Nbr_Dof,
void (*xFunctionBF[])(),
struct Value vBFxDof[] ) ;
void Cal_AnalyticIntegralQuantity(struct Element *Element,
struct QuantityStorage *QuantityStorageDof_P,
int Nbr_Dof,
void (*xFunctionBF[])(),
struct Value vBFxDof[] ) ;
void Cal_vBFxDof(struct EquationTerm * EquationTerm_P,
struct FemLocalTermActive * FI,
struct QuantityStorage * QuantityStorage_P0,
struct QuantityStorage * QuantityStorageDof_P,
int Nbr_Dof,
void (*xFunctionBFDof[NBR_MAX_BASISFUNCTIONS])
(struct Element * Element, int NumEntity,
double u, double v, double w, double Value[]),
double vBFxEqu[][MAX_DIM],
struct Value vBFxDof[]);
double Cal_AnalyticIntegration(struct Element * Element,
void (*BFEqu)(), void (*BFDof)(),
int i, int j, double (*Cal_Productx)() ) ;
/*---------------------------------------------------------------------*/
void Pos_Formulation(struct Formulation * Formulation_P,
struct PostProcessing * PostProcessing_P,
struct PostSubOperation * PostSubOperation_P) ;
void Pos_FemInterpolation (struct Element * Element,
struct QuantityStorage * QuantityStorage_P0,
struct QuantityStorage * QuantityStorage_P,
int Type_Quantity, int Type_Operator,
int Type_Dimension, int UseXYZ,
double u, double v, double w,
double x, double y, double z,
double Val[], int * Type_FormDof,
int Flag_ChangeOfCoordinates) ;
void Pos_Interactive(struct Formulation *Formulation_P,
struct PostProcessing * PostProcessing_P);
/*---------------------------------------------------------------------*/
void Cal_AssembleTerm_MH_Moving_simple(struct Dof * Equ, struct Dof * Dof, double Val[]) ;
void Cal_AssembleTerm_MH_Moving_probe(struct Dof * Equ, struct Dof * Dof, double Val[]) ;
void Cal_AssembleTerm_MH_Moving_separate(struct Dof * Equ, struct Dof * Dof, double Val[]) ;
void Cal_AssembleTerm_NoDt (struct Dof * Equ, struct Dof * Dof, double Val[]) ;
void Cal_AssembleTerm_NeverDt(struct Dof * Equ, struct Dof * Dof, double Val[]) ;
void Cal_AssembleTerm_DtDof (struct Dof * Equ, struct Dof * Dof, double Val[]) ;
void Cal_AssembleTerm_Dt (struct Dof * Equ, struct Dof * Dof, double Val[]) ;
void Cal_AssembleTerm_DtDtDof(struct Dof * Equ, struct Dof * Dof, double Val[]) ;
void Cal_AssembleTerm_DtDt (struct Dof * Equ, struct Dof * Dof, double Val[]) ;
void Cal_AssembleTerm_JacNL (struct Dof * Equ, struct Dof * Dof, double Val[]) ;
void Cal_AssembleTerm_DtNL (struct Dof * Equ, struct Dof * Dof, double Val[]) ;
/*---------------------------------------------------------------------*/
int Get_ValueFromForm(int Form);
struct IntegrationCase * Get_IntegrationCase (struct Element * Element,
List_T *IntegrationCase_L,
int CriterionIndex) ;
void Get_InitFunctionValue(int Type_Operator,
struct QuantityStorage * QuantityStorage_P,
int * Type_Form) ;
void Get_FunctionValue(int Nbr_Function,
void (*xFunctionBF[])(),
int Type_Operator,
struct QuantityStorage * QuantityStorage_P,
int * Type_Form) ;
double Cal_InterpolationOrder(struct Element * Element,
struct QuantityStorage * QuantityStorage);
double Cal_MaxEdgeLength(struct Element * Element);
void Get_InitElementSource (struct Element * Element, int InIndex) ;
int Get_NextElementSource (struct Element * ElementSource) ;
void Get_ElementTrace (struct Element * Element, int InIndex) ;
void Apply_ConstantFactor(struct QuantityStorage * QuantityStorage_P,
struct Value * vBFxDof,
struct Value * Val);
/*---------------------------------------------------------------------*/
struct ConstraintActive * Generate_Network(List_T * ConstraintPerRegion_L) ;
#endif
syntax highlighted by Code2HTML, v. 0.9.1