/*
 * 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 _MISCELLANEOUS_H_
#define _MISCELLANEOUS_H_

#include "Data_Active.h"

#define F_ARG   struct Function * Fct, struct Value * A, struct Value * V


/* F_Analytic */

void  F_Sphere            (F_ARG) ;
void  F_Cylinder          (F_ARG) ;
void  F_JFIE_ZPolCyl      (F_ARG) ; 
void  F_RCS_ZPolCyl       (F_ARG) ; 
void  F_JFIE_TransZPolCyl (F_ARG) ;
void  F_JFIE_SphTheta     (F_ARG) ;
void  F_RCS_SphTheta      (F_ARG) ;
void  F_JFIE_SphPhi       (F_ARG) ;
void  F_RCS_SphPhi        (F_ARG) ;
void  F_AcousticSoftSphere(F_ARG) ;
void  F_AcousticFieldSoftCylinder(F_ARG) ;
void  F_DrAcousticFieldSoftCylinder(F_ARG) ;
void  F_AcousticFieldHardCylinder(F_ARG) ;
void  F_OSRC_C0(F_ARG);
void  F_OSRC_Aj(F_ARG);
void  F_OSRC_Bj(F_ARG);

/* F_Math */

void  F_Exp             (F_ARG) ;
void  F_Log             (F_ARG) ;
void  F_Log10           (F_ARG) ;
void  F_Sqrt            (F_ARG) ;
void  F_Sin             (F_ARG) ;
void  F_Asin            (F_ARG) ;
void  F_Cos             (F_ARG) ;
void  F_Acos            (F_ARG) ;
void  F_Tan             (F_ARG) ;
void  F_Atan            (F_ARG) ;
void  F_Sinh            (F_ARG) ;
void  F_Cosh            (F_ARG) ;
void  F_Tanh            (F_ARG) ;
void  F_Fabs            (F_ARG) ;
void  F_Floor           (F_ARG) ;
void  F_Ceil            (F_ARG) ;
void  F_Fmod            (F_ARG) ;

/* F_ExtMath */

void  F_Hypot           (F_ARG) ;
void  F_Atan2           (F_ARG) ;
void  F_TanhC2          (F_ARG) ;
void  F_Transpose       (F_ARG) ;
void  F_Trace           (F_ARG) ;
void  F_RotateXYZ       (F_ARG) ;
void  F_Norm            (F_ARG) ;
void  F_SquNorm         (F_ARG) ;
void  F_Unit            (F_ARG) ;
void  F_Cos_wt_p        (F_ARG) ;
void  F_Sin_wt_p        (F_ARG) ;
void  F_Period          (F_ARG) ;
void  F_Interval        (F_ARG) ;

/* F_Type */

void  F_Complex         (F_ARG) ;
void  F_Complex_MH      (F_ARG) ;
void  F_Re              (F_ARG) ;
void  F_Im              (F_ARG) ;
void  F_Conj            (F_ARG) ;
void  F_Cart2Pol        (F_ARG) ;
void  F_Vector          (F_ARG) ;
void  F_Tensor          (F_ARG) ;
void  F_TensorV         (F_ARG) ;
void  F_TensorSym       (F_ARG) ;
void  F_TensorDiag      (F_ARG) ;
void  F_SquDyadicProduct(F_ARG) ;
void  F_CompX           (F_ARG) ;
void  F_CompY           (F_ARG) ;
void  F_CompZ           (F_ARG) ;
void  F_CompXX          (F_ARG) ;
void  F_CompXY          (F_ARG) ;
void  F_CompXZ          (F_ARG) ;
void  F_CompYX          (F_ARG) ;
void  F_CompYY          (F_ARG) ;
void  F_CompYZ          (F_ARG) ;
void  F_CompZX          (F_ARG) ;
void  F_CompZY          (F_ARG) ;
void  F_CompZZ          (F_ARG) ;
void  F_Cart2Sph        (F_ARG) ;
void  F_Cart2Cyl        (F_ARG) ;
void  F_UnitVectorX     (F_ARG) ;
void  F_UnitVectorY     (F_ARG) ;
void  F_UnitVectorZ     (F_ARG) ;

/* F_Coord */

/* se basent sur le uvw courant (-> en cal) */
void  F_CoordX          (F_ARG) ;
void  F_CoordY          (F_ARG) ;
void  F_CoordZ          (F_ARG) ;
void  F_CoordXYZ        (F_ARG) ;

/* se basent sur le xyz courant, i.e. les coord d'un noeud (-> en pre)*/
void  F_aX_bY_cZ        (F_ARG) ;
void  F_aX21_bY21_cZ21  (F_ARG) ;


/* F_Misc */

void  F_Printf          (F_ARG) ;
void  F_Normal          (F_ARG) ;
void  F_NormalSource    (F_ARG) ;
void  F_Tangent         (F_ARG) ;
void  F_CompElementNum  (F_ARG) ;
void  F_ElementVol      (F_ARG) ;
void  F_SurfaceArea     (F_ARG) ;
void  F_InterpolationLinear   (F_ARG) ;
void  F_dInterpolationLinear  (F_ARG) ;
void  F_dInterpolationLinear2 (F_ARG) ;
void  F_InterpolationAkima    (F_ARG) ;
void  F_dInterpolationAkima   (F_ARG) ;
void  F_InterpolationMatrix   (F_ARG) ;

void  Fi_InitListXY     (F_ARG) ;
void  Fi_InitListXY2    (F_ARG) ;
void  Fi_InitAkima      (F_ARG) ;

void  F_ValueFromIndex (F_ARG) ;
void  Fi_InitValueFromIndex (F_ARG) ;

void  F_TransformTensor (F_ARG) ;  /* pour Tuan */
void  F_TransformPerm   (F_ARG) ;  /* pour Tuan */
void  F_TransformPiezo  (F_ARG) ;  /* pour Tuan */
void  F_TransformPiezoT (F_ARG) ;  /* pour Tuan */

void  F_dhdb_Jiles      (F_ARG) ;  /* pour Johan */
void  F_dbdh_Jiles      (F_ARG) ;  /* pour Johan */
void  F_h_Jiles         (F_ARG) ;  /* pour Johan */
void  F_b_Jiles         (F_ARG) ;  /* pour Johan */

void  F_VirtualWork     (F_ARG) ;  /* pour Patrick */


/* F_MultiHar */

void  F_MHToTime           (F_ARG) ;

/* the following should go somewhere else... */

void  Fi_MHTimeIntegration(int TypePsi, int NbrTimePoint,
			   List_T * WholeQuantity_L, int FreqOffSet,
			   struct Element * Element,
			   struct QuantityStorage * QuantityStorage_P0,
			   double u, double v, double w,
			   struct Value *ValueOut) ;
void  F_MHToTime0 (int init, struct Value * A, struct Value * V, 
		   int iTime, int NbrTimePoint, double * TimeMH) ;/* OJO!!! int *init */
void  MHTransform(struct Element * Element, struct QuantityStorage * QuantityStorage_P0,
		  double u, double v, double w, struct Value *MH_Value,
		  struct Expression * Expression_P, int NbrPoints);

/* F_BiotSavart */
void  F_BiotSavart (F_ARG) ;
void  F_Pocklington (F_ARG) ;

/* F_DiscreteGeometry */

void  F_IncMatrixEdgesXNodes    (F_ARG) ;

void  F_MatrixDualEdgesXEdges   (F_ARG) ;


#undef F_ARG

#endif









syntax highlighted by Code2HTML, v. 0.9.1