xref: /phasta/phSolver/incompressible/usr.h (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen /*===========================================================================
2*59599516SKenneth E. Jansen  *
3*59599516SKenneth E. Jansen  * "usr.h":  Juin's header funtion
4*59599516SKenneth E. Jansen  *
5*59599516SKenneth E. Jansen  *===========================================================================
6*59599516SKenneth E. Jansen  */
7*59599516SKenneth E. Jansen 
8*59599516SKenneth E. Jansen #ifndef	__USR_H__
9*59599516SKenneth E. Jansen #define	__USR_H__
10*59599516SKenneth E. Jansen 
11*59599516SKenneth E. Jansen #include <FCMangle.h>
12*59599516SKenneth E. Jansen 
13*59599516SKenneth E. Jansen /*===========================================================================
14*59599516SKenneth E. Jansen  *
15*59599516SKenneth E. Jansen  * "UsrHd":  User main struct
16*59599516SKenneth E. Jansen  *
17*59599516SKenneth E. Jansen  *===========================================================================
18*59599516SKenneth E. Jansen  */
19*59599516SKenneth E. Jansen typedef struct _Usr {
20*59599516SKenneth E. Jansen     int         eqnType ;               /* equation type flag             */
21*59599516SKenneth E. Jansen     double*	aperm ;			/* permanent data	          */
22*59599516SKenneth E. Jansen     double*	atemp ;			/* temporary data	          */
23*59599516SKenneth E. Jansen     double*	resf ;			/* residual vector	          */
24*59599516SKenneth E. Jansen     double*	solinc ;		/* solution increment	          */
25*59599516SKenneth E. Jansen     double*     flowDiag ;              /* global diagonal of total lhs   */
26*59599516SKenneth E. Jansen     double*     sclrDiag ;              /* global diagonal of energy lhs  */
27*59599516SKenneth E. Jansen     double*     lesP ;                  /* utility vector for Q = A * P   */
28*59599516SKenneth E. Jansen     double*     lesQ ;                  /* utility vector for Q = A * P   */
29*59599516SKenneth E. Jansen     int*        iBC  ;                  /* boundary condition code        */
30*59599516SKenneth E. Jansen     double*     BC   ;                  /* boundary condition array       */
31*59599516SKenneth E. Jansen     int*        iper ;                  /* periodic nodal information     */
32*59599516SKenneth E. Jansen     int*        ilwork ;                /* local MPI communication array  */
33*59599516SKenneth E. Jansen     int         numpe ;                 /* number of processors           */
34*59599516SKenneth E. Jansen     int		nNodes ;		/* number of nodes	          */
35*59599516SKenneth E. Jansen     int         nenl ;                  /* number of element nodes        */
36*59599516SKenneth E. Jansen     int		nPermDims ;		/* number of permanent data	  */
37*59599516SKenneth E. Jansen     int		nTmpDims ;		/* number of temporary data	  */
38*59599516SKenneth E. Jansen     int*       	rowp ;		        /* row of p for nonzero's of A    */
39*59599516SKenneth E. Jansen     int*       	colm ;		        /* start index for rowp vector    */
40*59599516SKenneth E. Jansen     double*     lhsK ;		        /* sparse K matrix (9,nnzeros)    */
41*59599516SKenneth E. Jansen     double*     lhsP ;		        /* sparse GoC matrix (4,nnzeros)  */
42*59599516SKenneth E. Jansen     double*     lhsS ;
43*59599516SKenneth E. Jansen     int*        nnz_tot  ;              /* factor for number of nonzeros) */
44*59599516SKenneth E. Jansen     double*     CGsol;                  /* pdot after CG solve */
45*59599516SKenneth E. Jansen } Usr ;
46*59599516SKenneth E. Jansen 
47*59599516SKenneth E. Jansen typedef struct _Usr* UsrHd ;
48*59599516SKenneth E. Jansen 
49*59599516SKenneth E. Jansen /*===========================================================================
50*59599516SKenneth E. Jansen  *
51*59599516SKenneth E. Jansen  * C to Fortran naming conversion
52*59599516SKenneth E. Jansen  *
53*59599516SKenneth E. Jansen  *===========================================================================
54*59599516SKenneth E. Jansen  */
55*59599516SKenneth E. Jansen 
56*59599516SKenneth E. Jansen #define	usrNew		FortranCInterface_GLOBAL_(usrnew,USRNEW)
57*59599516SKenneth E. Jansen #define getSol          FortranCInterface_GLOBAL_(getsol,GETSOL)         /* extract Dy from usrHd        */
58*59599516SKenneth E. Jansen 
59*59599516SKenneth E. Jansen #define drvlesPrepDiag   FortranCInterface_GLOBAL_(drvlesprepdiag,DRVLESPREPDIAG)
60*59599516SKenneth E. Jansen #define drvLesApG        FortranCInterface_GLOBAL_(drvlesapg,DRVLESAPG)
61*59599516SKenneth E. Jansen #define drvLesApKG       FortranCInterface_GLOBAL_(drvlesapkg,DRVLESAPKG)
62*59599516SKenneth E. Jansen #define drvLesApNGt      FortranCInterface_GLOBAL_(drvlesapngt,DRVLESAPNGT)
63*59599516SKenneth E. Jansen #define drvLesApNGtC     FortranCInterface_GLOBAL_(drvlesapngtc,DRVLESAPNGTC)
64*59599516SKenneth E. Jansen #define drvLesApFull     FortranCInterface_GLOBAL_(drvlesapfull,DRVLESAPFULL)
65*59599516SKenneth E. Jansen 
66*59599516SKenneth E. Jansen #define commOut          FortranCInterface_GLOBAL_(commout,COMMOUT)
67*59599516SKenneth E. Jansen #define commIn           FortranCInterface_GLOBAL_(commin,COMMIN)
68*59599516SKenneth E. Jansen #define fLesSparseApSclr FortranCInterface_GLOBAL_(flessparseapsclr,FLESSPARSEAPSCLR)
69*59599516SKenneth E. Jansen #define fLesSparseApG        FortranCInterface_GLOBAL_(flessparseapg,FLESSPARSEAPG)
70*59599516SKenneth E. Jansen #define fLesSparseApKG       FortranCInterface_GLOBAL_(flessparseapkg,FLESSPARSEAPKG)
71*59599516SKenneth E. Jansen #define fLesSparseApNGt      FortranCInterface_GLOBAL_(flessparseapngt,FLESSPARSEAPNGT)
72*59599516SKenneth E. Jansen #define fLesSparseApNGtC     FortranCInterface_GLOBAL_(flessparseapngtc,FLESSPARSEAPNGTC)
73*59599516SKenneth E. Jansen #define fLesSparseApFull     FortranCInterface_GLOBAL_(flessparseapfull,FLESSPARSEAPFULL)
74*59599516SKenneth E. Jansen 
75*59599516SKenneth E. Jansen #define drvsclrDiag      FortranCInterface_GLOBAL_(drvsclrdiag,DRVSCLRDIAG)
76*59599516SKenneth E. Jansen #define drvLesApSclr     FortranCInterface_GLOBAL_(drvlesapsclr,DRVLESAPSCLR)
77*59599516SKenneth E. Jansen #define drvAllreduce     FortranCInterface_GLOBAL_(drvallreduce,DRVALLREDUCE)
78*59599516SKenneth E. Jansen #define drvAllreducesclr FortranCInterface_GLOBAL_(drvallreducesclr,DRVALLREDUCESCLR)
79*59599516SKenneth E. Jansen #define	flesCp       FortranCInterface_GLOBAL_(flescp,FLESCP)
80*59599516SKenneth E. Jansen #define	flesScale    FortranCInterface_GLOBAL_(flesscale,FLESSCALE)
81*59599516SKenneth E. Jansen #define	flesScaleCp  FortranCInterface_GLOBAL_(flesscalecp,FLESSCALECP)
82*59599516SKenneth E. Jansen #define	flesAdd      FortranCInterface_GLOBAL_(flesadd,FLESADD)
83*59599516SKenneth E. Jansen #define	flesSub      FortranCInterface_GLOBAL_(flessub,FLESSUB)
84*59599516SKenneth E. Jansen #define	flesDot1     FortranCInterface_GLOBAL_(flesdot1,FLESDOT1)
85*59599516SKenneth E. Jansen #define	flesDot2     FortranCInterface_GLOBAL_(flesdot2,FLESDOT2)
86*59599516SKenneth E. Jansen #define	flesDaxpy    FortranCInterface_GLOBAL_(flesdaxpy,FLESDAXPY)
87*59599516SKenneth E. Jansen #define	flesDxpay    FortranCInterface_GLOBAL_(flesdxpay,FLESDXPAY)
88*59599516SKenneth E. Jansen #define	flesInv      FortranCInterface_GLOBAL_(flesinv,FLESINV)
89*59599516SKenneth E. Jansen #define	flesZero     FortranCInterface_GLOBAL_(fleszero,FLESZERO)
90*59599516SKenneth E. Jansen #define fsclrDiag    FortranCInterface_GLOBAL_(fsclrdiag,FSCLRDIAG)
91*59599516SKenneth E. Jansen #define flesApSclr   FortranCInterface_GLOBAL_(flesapsclr,FLESAPSCLR)
92*59599516SKenneth E. Jansen #define	fMtxVdimVecMult   FortranCInterface_GLOBAL_(fmtxvdimvecmult,FMTXVDIMVECMULT)
93*59599516SKenneth E. Jansen #define	fMtxBlkDot2       FortranCInterface_GLOBAL_(fmtxblkdot2,FMTXBLKDOT2)
94*59599516SKenneth E. Jansen #define	fMtxBlkDaxpy      FortranCInterface_GLOBAL_(fmtxblkdaxpy,FMTXBLKDAXPY)
95*59599516SKenneth E. Jansen #define	fMtxBlkDyeax      FortranCInterface_GLOBAL_(fmtxblkdyeax,FMTXBLKDYEAX)
96*59599516SKenneth E. Jansen #define	fMtxBlkDmaxpy     FortranCInterface_GLOBAL_(fmtxblkdmaxpy,FMTXBLKDMAXPY)
97*59599516SKenneth E. Jansen #define	fMtxVdimVecCp     FortranCInterface_GLOBAL_(fmtxvdimveccp,FMTXVDIMVECCP)
98*59599516SKenneth E. Jansen #define	fMtxVdimVecDot2   FortranCInterface_GLOBAL_(fmtxvdimvecdot2,FMTXVDIMVECDOT2)
99*59599516SKenneth E. Jansen #define	fMtxVdimVecDaxpy  FortranCInterface_GLOBAL_(fmtxvdimvecdaxpy,FMTXVDIMVECDAXPY)
100*59599516SKenneth E. Jansen #define ramg_interface    FortranCInterface_GLOBAL_(ramg_interface,RAMG_INTERFACE)
101*59599516SKenneth E. Jansen #define ramg_normcheck    FortranCInterface_GLOBAL_(ramg_normcheck,RAMG_NORMCHECK)
102*59599516SKenneth E. Jansen 
103*59599516SKenneth E. Jansen /*===========================================================================
104*59599516SKenneth E. Jansen  *
105*59599516SKenneth E. Jansen  * Function declaration
106*59599516SKenneth E. Jansen  *
107*59599516SKenneth E. Jansen  *===========================================================================
108*59599516SKenneth E. Jansen  */
109*59599516SKenneth E. Jansen void 		usrNew(			UsrHd		usrHd,
110*59599516SKenneth E. Jansen                                     int*            eqnType,
111*59599516SKenneth E. Jansen                                     double*		aperm,
112*59599516SKenneth E. Jansen                                     double*		atemp,
113*59599516SKenneth E. Jansen                                     double*         resf,
114*59599516SKenneth E. Jansen                                     double*         solinc,
115*59599516SKenneth E. Jansen                                     double*         flowDiag,
116*59599516SKenneth E. Jansen                                     double*         sclrDiag,
117*59599516SKenneth E. Jansen                                     double*         lesP,
118*59599516SKenneth E. Jansen                                     double*         lesQ,
119*59599516SKenneth E. Jansen                                     int*            iBC,
120*59599516SKenneth E. Jansen                                     double*         BC,
121*59599516SKenneth E. Jansen                                     int*            iper,
122*59599516SKenneth E. Jansen                                     int*            ilwork,
123*59599516SKenneth E. Jansen                                     int*            numpe,
124*59599516SKenneth E. Jansen                                     int*		nNodes,
125*59599516SKenneth E. Jansen                                     int*            nenl,
126*59599516SKenneth E. Jansen                                     int*		nPermDims,
127*59599516SKenneth E. Jansen                                     int*		nTmpDims,
128*59599516SKenneth E. Jansen                                     int*		rowp,
129*59599516SKenneth E. Jansen                                     int*		colm,
130*59599516SKenneth E. Jansen                                     double*		lhsK,
131*59599516SKenneth E. Jansen                                     double*		lhsP,
132*59599516SKenneth E. Jansen                                     double*         lhsS,
133*59599516SKenneth E. Jansen                                     int*             nnz_tot,
134*59599516SKenneth E. Jansen                                     double*         CGsol) ;
135*59599516SKenneth E. Jansen 
136*59599516SKenneth E. Jansen double*	usrPointer(			UsrHd   usrHd,
137*59599516SKenneth E. Jansen                             int	id,
138*59599516SKenneth E. Jansen                             int	offset,
139*59599516SKenneth E. Jansen                             int	nDims ) ;
140*59599516SKenneth E. Jansen 
141*59599516SKenneth E. Jansen void              getSol(      UsrHd            usrHd,
142*59599516SKenneth E. Jansen                                         double*          Dy		) ;
143*59599516SKenneth E. Jansen 
144*59599516SKenneth E. Jansen /*===========================================================================
145*59599516SKenneth E. Jansen  *
146*59599516SKenneth E. Jansen  * Fortran Function declaration
147*59599516SKenneth E. Jansen  *
148*59599516SKenneth E. Jansen  *===========================================================================
149*59599516SKenneth E. Jansen  */
150*59599516SKenneth E. Jansen double    flesDot1(		double*		a,
151*59599516SKenneth E. Jansen                                     int*		m,
152*59599516SKenneth E. Jansen                                     int*		n		) ;
153*59599516SKenneth E. Jansen double	  flesDot2(		double*		a,
154*59599516SKenneth E. Jansen                                     double*		b,
155*59599516SKenneth E. Jansen                                     int*		m,
156*59599516SKenneth E. Jansen                                     int*		n		) ;
157*59599516SKenneth E. Jansen 
158*59599516SKenneth E. Jansen /*===========================================================================
159*59599516SKenneth E. Jansen  *
160*59599516SKenneth E. Jansen  * End of the file
161*59599516SKenneth E. Jansen  *
162*59599516SKenneth E. Jansen  *===========================================================================
163*59599516SKenneth E. Jansen  */
164*59599516SKenneth E. Jansen 
165*59599516SKenneth E. Jansen #endif	/* __USR_H__ */
166*59599516SKenneth E. Jansen 
167