gmsh-TingyuanDoc
0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
24 mesh.ExtrudeMesh =
false;
25 mesh.Recombine =
false;
29 mesh.ScaleLast =
false;
31 mesh.BoundaryLayerIndex = 0;
35 double A1,
double A2,
double X0,
double X1,
double X2,
54 double t =
u(iLayer, iElemLayer);
59 mesh.BoundaryLayerIndex >= 0 &&
mesh.BoundaryLayerIndex <= 1 &&
80 double dx, dy, dz,
angle;
81 double n[3] = {0., 0., 0.};
85 dx =
geo.trans[0] * t;
86 dy =
geo.trans[1] * t;
87 dz =
geo.trans[2] * t;
100 geo.angle =
geo.angle * t;
103 dx =
geo.trans[0] * t;
104 dy =
geo.trans[1] * t;
105 dz =
geo.trans[2] * t;
111 if(
mesh.BoundaryLayerIndex >= 0 &&
mesh.BoundaryLayerIndex <= 1 &&
118 default:
Msg::Error(
"Unknown extrusion type");
break;
131 t0 =
mesh.hLayer[iLayer - 1];
132 t1 =
mesh.hLayer[iLayer];
134 double t = (double)iElemLayer / (
double)
mesh.NbElmLayer[iLayer];
135 return t0 + t * (t1 - t0);
141 double v[3], m1[4][4], m2[4][4], m3[4][4];
146 for(
int i = 0; i < 4; i++)
147 for(
int j = 0; j < 4; j++) tfo[i * 4 + j] = m1[i][j];
156 for(
int i = 0; i < 4; i++) {
157 for(
int j = 0; j < 4; j++) {
159 for(
int k = 0; k < 4; k++) { m3[i][j] += m1[i][k] * m2[k][j]; }
163 for(
int i = 0; i < 4; i++) {
164 for(
int j = 0; j < 4; j++) {
166 for(
int k = 0; k < 4; k++) { m2[i][j] += m3[i][k] * m1[k][j]; }
170 for(
int i = 0; i < 4; i++)
171 for(
int j = 0; j < 4; j++) tfo[i * 4 + j] = m2[i][j];
173 tfo[3] +=
geo.trans[0];
174 tfo[7] +=
geo.trans[1];
175 tfo[11] +=
geo.trans[2];
ExtrudeParams(int Mode=EXTRUDED_ENTITY)
double angle(const SVector3 &a, const SVector3 &b)
void ProtudeXYZ(double &x, double &y, double &z, ExtrudeParams *e)
static void Error(const char *fmt,...)
bool get(double x, double y, double z, int n, double *vals) const
void SetTranslationMatrix(double matrix[4][4], double T[3])
struct ExtrudeParams::@15 geo
struct ExtrudeParams::@14 mesh
static std::vector< SPoint3 > normalsCoherence
void fill(int type, double T0, double T1, double T2, double A0, double A1, double A2, double X0, double X1, double X2, double angle)
void GetAffineTransform(std::vector< double > &tfo)
void Extrude(int iLayer, int iElemLayer, double &dx, double &dy, double &dz)
double u(int iLayer, int iElemLayer)
void SetRotationMatrix(double matrix[4][4], double Axe[3], double alpha)
bool get_scale(double x, double y, double z, double *scale_val) const
static bool calcLayerScaleFactor[2]
static smooth_data * normals[2]
static void scale(std::vector< double > &x, double s)