File: F.h

package info (click to toggle)
getdp 3.0.4%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 10,856 kB
  • sloc: cpp: 63,020; fortran: 13,955; yacc: 9,350; f90: 1,640; lex: 799; makefile: 55; ansic: 34; awk: 33; sh: 23
file content (478 lines) | stat: -rw-r--r-- 18,530 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
// GetDP - Copyright (C) 1997-2018 P. Dular and C. Geuzaine, University of Liege
//
// See the LICENSE.txt file for license information. Please report all
// issues on https://gitlab.onelab.info/getdp/getdp/issues

#ifndef _F_H_
#define _F_H_

#include <vector>
#include "ProData.h"

/* ------------------------------------------------------------------------ */
/*  Warning: the pointers A and V can be identical. You must                */
/*           use temporary variables in your computations: you can only     */
/*           affect to V at the very last time (when you're sure you will   */
/*           not use A anymore).                                            */
/* ------------------------------------------------------------------------ */

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

/* F_Analytic */

// using +iwt convention
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_CurrentPerfectlyConductingSphere(F_ARG);

// using -iwt convention
void  F_ElectricFieldPerfectlyConductingSphereMwt(F_ARG);
void  F_ElectricFieldDielectricSphereMwt(F_ARG);
void  F_ExactOsrcSolutionPerfectlyConductingSphereMwt(F_ARG);
void  F_CurrentPerfectlyConductingSphereMwt(F_ARG);

void  F_AcousticFieldSoftSphere(F_ARG) ;
void  F_AcousticFieldSoftSphereABC(F_ARG) ;
void  F_DrAcousticFieldSoftSphere(F_ARG) ;
void  F_RCSSoftSphere(F_ARG) ;
void  F_AcousticFieldHardSphere(F_ARG) ;
void  F_RCSHardSphere(F_ARG) ;
void  F_AcousticFieldSoftCylinder(F_ARG) ;
void  F_AcousticFieldSoftCylinderABC(F_ARG) ;
void  F_DrAcousticFieldSoftCylinder(F_ARG) ;
void  F_RCSSoftCylinder(F_ARG) ;
void  F_AcousticFieldHardCylinder(F_ARG) ;
void  F_AcousticFieldHardCylinderABC(F_ARG) ;
void  F_DthetaAcousticFieldHardCylinder(F_ARG) ;
void  F_RCSHardCylinder(F_ARG) ;

void  F_OSRC_C0(F_ARG);
void  F_OSRC_R0(F_ARG);
void  F_OSRC_Aj(F_ARG);
void  F_OSRC_Bj(F_ARG);

void  F_pnm             (F_ARG) ;
void  F_unm             (F_ARG) ;
void  F_snm             (F_ARG) ;
void  F_Xnm             (F_ARG) ;
void  F_Ynm             (F_ARG) ;
void  F_Znm             (F_ARG) ;
void  F_Mnm             (F_ARG) ;
void  F_Nnm             (F_ARG) ;

void  F_DyadGreenHom     (F_ARG) ;
void  F_CurlDyadGreenHom (F_ARG) ;


/* F_PeWe */

void  F_ElastodynamicsCylinderCavity(F_ARG);
void  F_ElastodynamicsCylinderWall(F_ARG);
void  F_ElastodynamicsCylinderWallS(F_ARG);
void  F_ElastodynamicsCylinderWallOut(F_ARG);
void  F_ElastodynamicsCylinderWallsOut(F_ARG);
void  F_ElastoCylinderWallOutAbc(F_ARG);
void  F_ElastoCylinderWallsOutAbc(F_ARG);
void  F_ElastoCylinderWallOutAbc2(F_ARG);
void  F_ElastoCylinderWallOutAbc2Pade(F_ARG);
void  F_ElastoCylinderWallsOutAbc2Pade(F_ARG);

/* F_Geometry */

void  F_ProjectPointOnEllipse(F_ARG);
void  F_Normal          (F_ARG) ;
void  F_NormalSource    (F_ARG) ;
void  F_Tangent         (F_ARG) ;
void  F_TangentSource   (F_ARG) ;
void  F_ElementVol      (F_ARG) ;
void  F_SurfaceArea     (F_ARG) ;
void  F_GetVolume       (F_ARG) ;
void  F_GetNumElement   (F_ARG) ;
void  F_GetNumElements  (F_ARG) ;
void  F_GetNumNodes     (F_ARG) ;
void  F_CellSize        (F_ARG) ;
void  F_SquNormEdgeValues(F_ARG) ;

/* F_Raytracing */

void  F_CylinderPhase(F_ARG);
void  F_DiamondPhase(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_Atanh           (F_ARG) ;
void  F_Fabs            (F_ARG) ;
void  F_Abs             (F_ARG) ;
void  F_Floor           (F_ARG) ;
void  F_Ceil            (F_ARG) ;
void  F_Fmod            (F_ARG) ;
void  F_Sign            (F_ARG) ;
void  F_Min             (F_ARG) ;
void  F_Max             (F_ARG) ;
void  F_Jn              (F_ARG) ;
void  F_JnComplex       (F_ARG) ;
void  F_Yn              (F_ARG) ;
void  F_dJn             (F_ARG) ;
void  F_dYn             (F_ARG) ;
void  F_JnSph           (F_ARG) ;
void  F_YnSph           (F_ARG) ;
void  F_dJnSph          (F_ARG) ;
void  F_dYnSph          (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_Inv             (F_ARG) ;
void  F_Det             (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_ScalarUnit      (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) ;
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_Comp            (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) ;

void  F_CoordXS         (F_ARG) ;
void  F_CoordYS         (F_ARG) ;
void  F_CoordZS         (F_ARG) ;
void  F_CoordXYZS       (F_ARG) ;

/* F_Misc */

void  F_Printf          (F_ARG) ;
void  F_Rand            (F_ARG) ;
void  F_CompElementNum  (F_ARG) ;
void  F_ElementNum      (F_ARG) ;
void  F_QuadraturePointIndex (F_ARG) ;
void  F_GetCpuTime      (F_ARG) ;
void  F_GetWallClockTime(F_ARG) ;
void  F_GetMemory       (F_ARG) ;
void  F_SetNumberRunTime(F_ARG) ;
void  F_GetNumberRunTime(F_ARG) ;
void  F_SetVariable     (F_ARG) ;
void  F_SetCumulativeVariable (F_ARG) ;
void  F_GetVariable     (F_ARG) ;
void  F_ValueFromTable  (F_ARG) ;
void  F_VirtualWork     (F_ARG) ;

void  F_Felec		(F_ARG) ;

void  F_dFxdux		(F_ARG) ;
void  F_dFydux		(F_ARG) ;
void  F_dFzdux		(F_ARG) ;
void  F_dFxduy		(F_ARG) ;
void  F_dFyduy		(F_ARG) ;
void  F_dFzduy		(F_ARG) ;
void  F_dFxduz		(F_ARG) ;
void  F_dFyduz		(F_ARG) ;
void  F_dFzduz		(F_ARG) ;

void  F_dFxdv		(F_ARG) ;
void  F_dFydv		(F_ARG) ;
void  F_dFzdv		(F_ARG) ;

void  F_dWedxdv		(F_ARG) ;
void  F_dWedydv		(F_ARG) ;
void  F_dWedzdv		(F_ARG) ;

void  F_NodeForceDensity(F_ARG) ;
void  F_AssDiag         (F_ARG) ;  /* pour Patrick */

void  F_AtIndex         (F_ARG) ;

/* F_Interpolation */

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_InterpolationBilinear (F_ARG) ;
void  F_dInterpolationBilinear (F_ARG) ;
void  F_InterpolationTrilinear (F_ARG) ;
void  F_dInterpolationTrilinear (F_ARG) ;
bool  Fi_InterpolationBilinear (double *x, double *y, double *M, int NL, int NC,
                                double xp, double yp, double *zp);
bool  Fi_dInterpolationBilinear(double *x, double *y, double *M, int NL, int NC,
                                double xp, double yp, double *dzp_dx, double *dzp_dy);
bool  Fi_InterpolationTrilinear (double *x, double *y, double *z, double *M, int NX, int NY, int NZ,
                                double xp, double yp, double zp, double *vp);
bool  Fi_dInterpolationTrilinear (double *x, double *y, double *z, double *M, int NX, int NY, int NZ,
                                 double xp, double yp, double zp, double *dvp_dx, double *dvp_dy, double *dvp_dz);
void  Fi_InitListX      (F_ARG) ; // List
void  Fi_InitListXY     (F_ARG) ; // ListAlt
void  Fi_InitListXY2    (F_ARG) ;
void  Fi_InitAkima      (F_ARG) ;
void  Fi_InitListMatrix (F_ARG) ;
void  Fi_InitListMatrix3D (F_ARG) ;
void  F_ValueFromIndex (F_ARG) ;
void  F_VectorFromIndex (F_ARG) ;
void  Fi_InitValueFromIndex (F_ARG) ;
void  Fi_InitVectorFromIndex (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 */

/* F_Hysteresis */

void  F_dhdb_Jiles      (F_ARG) ;
void  F_dbdh_Jiles      (F_ARG) ;
void  F_h_Jiles         (F_ARG) ;
void  F_b_Jiles         (F_ARG) ;

void  F_dhdb_Ducharne(F_ARG) ;
void  F_h_Ducharne (F_ARG) ;
void  F_nu_Ducharne(F_ARG) ;
double Fi_h_Ducharne (double *hi, double *bi, double *M, int NL,
                      int NC, double h0, double b0, double b);

void  F_nu_Vinch (F_ARG) ; // NOT USED FOR NOW (26/06/2016)
void  F_mu_Vinch (F_ARG) ; // NOT USED FOR NOW (26/06/2016)

void  F_h_Vinch (F_ARG) ; // NOT USED FOR NOW (26/06/2016)
void  F_dhdb_Vinch(F_ARG) ; // NOT USED FOR NOW (26/06/2016)
void  F_dbdh_Vinch(F_ARG) ; // NOT USED FOR NOW (26/06/2016)

// kj+++
//Usefull Mathematical functions:
double Mul_VecVec_K(const double *v1, const double *v2);
void Mul_TensorVec_K(const double *M, const double *v, double *Mv, const int transpose_M);
void Mul_TensorSymTensorSym_K(double *A, double *B, double *C);
void Mul_TensorNonSymTensorNonSym_K(double *A, double *B, double *C);
void Mul_TensorNonSymTensorSym_K(double *A, double *B, double *C);
void Mul_TensorSymTensorNonSym_K(double *A, double *B, double *C);
void Inv_Tensor3x3_K (double *T, double *invT);
void Inv_TensorSym3x3_K (double *T, double *invT);

//Anhysteretic curve Characteristics:
double Lang(double nhr, double Ja, double ha);
double dLang(double nhr, double Ja, double ha);
double LangOverx(double nhr, double Ja, double ha);
double dLangOverx(double nhr, double Ja, double ha);
double ILang(double nhr, double Ja, double ha);

double Janhy(double nhr, double Ja, double ha);
double dJanhy(double nhr,double Js, double alpha);
double Xanhy(double nhr,double Js, double alpha);
double dXanhy(double nhr,double Js, double alpha);
double IJanhy(double nhr, double Js, double alpha);
double InvJanhy(double nJ, double Js, double alpha);
double dInvJanhy(double nJ, double Js, double alpha) ;

double Janhy(double nJ, double Ja, double ha, double Jb, double hb) ;
double dJanhy(double nJ, double Ja, double ha, double Jb, double hb) ;
double Xanhy(double nJ, double Ja, double ha, double Jb, double hb) ;
double dXanhy(double nJ, double Ja, double ha, double Jb, double hb) ;
double IJanhy(double nJ, double Ja, double ha, double Jb, double hb) ;
double InvJanhy(double nJ, double Ja, double ha, double Jb, double hb) ;
double dInvJanhy_hr(double nhr, double Ja, double ha, double Jb, double hb);

double u_hr(double nhr, double Ja, double ha, double Jb, double hb) ;
double u_J(double nJ, double Js, double alpha);


void Vector_Find_Jk_K (const double hrk[3],
                       const double Ja, const double ha, const double Jb, const double hb,
                       double Jk[3]);
void Vector_Find_hrk_K(const double Jk[3],
                       const double Ja, const double ha, const double Jb, const double hb,
                       double hrk[3]);
void Tensor_dJkdhrk_K(const double hr[3],
                      const double Ja, const double ha, const double Jb, const double hb,
                      double mutg[6]);

//Pseudo-Potential Functional Characteristics:
double fct_omega(const double h[3], const double Jk[3], const double Jkp[3], const double chi,
                 const double Ja, const double ha, const double Jb, const double hb);
void fct_d_omega (const double h[3], const double Jk[3], const double Jkp[3], const double chi,
                  const double Ja, const double ha, const double Jb, const double hb,
                  double *d_omega);
void fct_dd_omega(const double h[3], const double Jk[3], const double Jkp[3], const double chi,
                  const double Ja, const double ha, const double Jb, const double hb,
                  double *ddfdJ2);
void fct_dd_omega_Num(const double h[3], const double Jk[3], const double Jkp[3], const double chi,
                  const double Ja, const double ha, const double Jb, const double hb,
                  double *ddfdJ2);

//Usefull Functions for the Full Differential Approach:
void FullDiff_hi(double x, double chi, double ex[3]);
void FullDiff_xup(double x, double chi, double h[3], double xup[3]);
double FullDiff_ff_new (double y, void *params);
double FullDiff_ff (double y, void *params);

//Energy-Based Model - Vector Update:
void Vector_Update_Jk_K(const double h[3], double Jk[3], const double Jkp[3], const double chi,
                        const double Ja, const double ha, const double Jb, const double hb);
void Vector_Update_hr_K(const double h[3], double hr[3], const double hrp[3], const double chi,
                        const double Ja, const double ha, const double Jb, const double hb);
void Vector_Update_Simple_hr_K   (const double h[3], double hr[3], const double hrp[3], const double chi) ;

void Vector_b_Vinch_K     (const double h[3], double *Jk_all,
                           const double *Jkp_all, struct FunctionActive *D,double b[3] ) ;
void Vector_h_Vinch_K   (const double b[3], double bc[3], double *Jk_all,
                           const double *Jkp_all, struct FunctionActive *D, double h[3] );

//Energy-Based Model - Tensor Construction:
void Tensor_dJkdh_Var(const double h[3], const double Jk[3], const double Jkp[3], const double chi,
                      const double Ja, const double ha, const double Jb, const double hb,
                      double *dJkdh);
void Tensor_dJkdh_Var_Num(const double h[3], const double Jk[3], const double Jkp[3], const double chi,
                          const double Ja, const double ha, const double Jb, const double hb,
                          double *dJkdh);
void Tensor_dJkdh_Diff_K( const double h[3], const double hrk[3], const double hrkp[3], const double chi,
                            const double Ja, const double ha, const double Jb, const double hb,
                            double *dJkdh);
void Tensor_dhrkdh_Diff_ana(const double h[3], const double hrk[3], const double hrkp[3], const double chi,
                              const double Ja, const double ha, const double Jb, const double hb,
                              const double dJkdhrk[6],
                              double *dhrkdh);
void Tensor_dhrkdh_Simple_ana(const double h[3], const double hrkp[3], const double chi,
                              const double Ja, const double ha, const double Jb, const double hb,
                              double *dhrkdh);
void Tensor_dhrkdh_Num(const double h[3], const double xkp[3], const double chi,
                       const double Ja, const double ha, const double Jb, const double hb,
                       double *dhrkdh);
void Tensor_dhrkdh_Simple_Num(const double h[3], const double xkp[3], const double chi,
                              double *dhrkdh); //NOT USE FOR NOW
void Tensor_dJkdh_Diff_K_old( const double h[3], const double hrk[3], const double hrkp[3], const double chi,
                          const double Ja, const double ha, const double Jb, const double hb,
                            double *dJkdh); //NOT USE FOR NOW

void Tensor_dbdh_Vinch_K  ( const double h[3],  const double *Jk_all,
                           const double *Jkp_all, struct FunctionActive *D,  double *dbdh);
void Tensor_dbdh_Num(const double h[3], double *xk_all, const double *xkp_all,
                      struct FunctionActive *D,double *dbdh);
void Tensor_dhdb_Good_BFGS(const double dx[3],const double df[3],double *dhdb);

//Energy-Based Model - GetDP Functions:
void F_Update_Cell_K (F_ARG) ;
void F_b_Vinch_K(F_ARG);
void F_hr_Vinch_K(F_ARG);
void F_Jr_Vinch_K(F_ARG);
void F_h_Vinch_K(F_ARG);
void F_dbdh_Vinch_K(F_ARG);
void F_dhdb_Vinch_K(F_ARG);

/* 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, std::vector<struct Value> &MH_Inputs,
		 struct Expression * Expression_P, int NbrPoints, struct Value &MH_Output);

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

/* F_Gmsh */
void  F_Field(F_ARG) ;
void  F_ScalarField(F_ARG) ;
void  F_VectorField(F_ARG) ;
void  F_TensorField(F_ARG) ;
void  F_ComplexScalarField(F_ARG) ;
void  F_ComplexVectorField(F_ARG) ;
void  F_ComplexTensorField(F_ARG) ;
void  F_GradScalarField(F_ARG) ;
void  F_GradVectorField(F_ARG) ;
void  F_GradComplexScalarField(F_ARG) ;
void  F_GradComplexVectorField(F_ARG) ;

/* F_DiffGeom */
void  F_Hodge(F_ARG) ;
void  F_InnerProduct(F_ARG) ;
void  F_Sharp(F_ARG) ;
void  F_Flat(F_ARG) ;
void  F_WedgeProduct(F_ARG) ;
void  F_TensorProduct(F_ARG) ;
void  F_InteriorProduct(F_ARG) ;
void  F_PullBack(F_ARG) ;
void  F_PullBackMetric(F_ARG) ;
void  F_PushForward(F_ARG) ;
void  F_InvPullBack(F_ARG) ;
void  F_InvPushForward(F_ARG) ;

/* F_Octave */
void  F_Octave(F_ARG) ;

/* F_Python */
void  F_Python(F_ARG) ;

#endif