file: Hlib/src/Quad.c
/**************************************************************************/
// //
// Author: T.Warburton //
// Design: T.Warburton && S.Sherwin //
// Date : 12/4/96 //
// //
// Copyright notice: This code shall not be replicated or used without //
// the permission f the author. //
// //
/**************************************************************************/
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <polylib.h>
#include "veclib.h"
#include "hotel.h"
#include "nekstruct.h"
double Quad_Penalty_Fac = 1.;
Quad::Quad() : Element(){ //OVERLOAD CALL: Element: Element.c(Element), Element.c(Element), Element.c(Element)
Nverts = 4;
Nedges = 4;
Nfaces = 1;
}
Quad::Quad(Element *E){
if(dparam("DPENFAC"))
Quad_Penalty_Fac = dparam("DPENFAC"); //OVERLOAD CALL: Quad_Penalty_Fac: Boundary.c(?), Quad.c(?)
if(!Quad_wk)
Quad_work();
id = E->id;
type = E->type;
state = 'p';
Nverts = 4;
Nedges = 4;
Nfaces = 1;
vert = (Vert *)calloc(Nverts,sizeof(Vert));
edge = (Edge *)calloc(Nedges,sizeof(Edge));
face = (Face *)calloc(Nfaces,sizeof(Face));
lmax = E->lmax;
interior_l = E->interior_l;
Nmodes = E->Nmodes;
Nbmodes = E->Nbmodes;
qa = E->qa;
qb = E->qb;
qc = 0;
qtot = qa*qb;
memcpy(vert,E->vert,Nverts*sizeof(Vert));
memcpy(edge,E->edge,Nedges*sizeof(Edge));
memcpy(face,E->face,Nfaces*sizeof(Face));
/* set memory */
vert[0].hj = (double*) 0;
face[0].hj = (double**) 0;
h = (double**) 0;
curve = E->curve;
curvX = E->curvX;
geom = E->geom;
dgL = E->dgL;
}
Quad::Quad(int i_d, char ty, int L, int Qa, int Qb, int Qc, Coord *X){ //OVERLOAD CALL: Coord: nekstruct.h(?), hotel.h(?)
int i;
if(!Quad_wk)
Quad_work();
Qc = Qc; // compiler fix
id = i_d;
type = ty; state = 'p';
Nverts = 4;
Nedges = 4;
Nfaces = 1;
vert = (Vert *)calloc(Nverts,sizeof(Vert));
edge = (Edge *)calloc(Nedges,sizeof(Edge));
face = (Face *)calloc(Nfaces,sizeof(Face));
lmax = L;
interior_l = 0;
Nmodes = Nverts + Nedges*(L-2) + Nfaces*(L-2)*(L-2);
Nbmodes = Nmodes - (L-2)*(L-2);
qa = Qa;
qb = Qb;
qc = 0;
qtot = qa*qb;
/* set vertex solve mask to 1 by default */
for(i = 0; i < Nverts; ++i){
vert[i].id = i;
vert[i].eid = id;
vert[i].solve = 1;
vert[i].x = X->x[i];
vert[i].y = X->y[i];
}
/* construct edge system */
for(i = 0; i < Nedges; ++i){
edge[i].id = i;
edge[i].eid = id;
edge[i].l = L-2;
}
/* construct face system */
for(i = 0; i < Nfaces; ++i){
face[i].id = i;
face[i].eid = id;
face[i].l = max(0,L-2);
}
/* set memory */
vert[0].hj = (double*) 0;
face[0].hj = (double**) 0;
h = (double**) 0;
curve = (Curve*) calloc(1,sizeof(Curve));
curve->face = -1;
curve->type = T_Straight;
curvX = (Cmodes*)0;
}
Quad::Quad(int , char , int *, int *, Coord *){ //OVERLOAD CALL: Coord: nekstruct.h(?), hotel.h(?)
}
C++ to HTML Conversion by ctoohtml