41 namespace NekMeshUtils
45 "cfi", CADCurveCFI::create,
"CADCurveCFI");
47 void CADCurveCFI::Initialise(
int i, cfi::Line *in,
NekDouble s)
51 m_length = m_cfiEdge->calcLength() * m_scal;
72 NekDouble mag1 = sqrt(drdt1[3] * drdt1[3] + drdt1[4] * drdt1[4] +
74 NekDouble mag2 = sqrt(drdt2[3] * drdt2[3] + drdt2[4] * drdt2[4] +
77 len += (mag1 + mag2) / 2.0 * dt;
86 p.x = xyz[0] / m_scal;
87 p.y = xyz[1] / m_scal;
88 p.z = xyz[2] / m_scal;
90 boost::optional<cfi::Projected<double>> pj = m_cfiEdge->calcTFromXYZ(p, -1);
92 t = pj.value().parameters;
94 return pj.value().distance * m_scal;
112 NekDouble mag1 = sqrt(drdt1[3] * drdt1[3] + drdt1[4] * drdt1[4] +
113 drdt1[5] * drdt1[5]);
114 NekDouble mag2 = sqrt(drdt2[3] * drdt2[3] + drdt2[4] * drdt2[4] +
115 drdt2[5] * drdt2[5]);
117 len += (mag1 + mag2) / 2.0 * dt;
125 cfi::Position
p = m_cfiEdge->calcXYZAtT(t);
129 out[0] = p.x * m_scal;
130 out[1] = p.y * m_scal;
131 out[2] = p.z * m_scal;
138 cfi::Position
p = m_cfiEdge->calcXYZAtT(t);
147 vector<cfi::DerivativeList> *d = m_cfiEdge->calcDerivAtT(t);
148 cfi::Position
p = m_cfiEdge->calcXYZAtT(t);
152 out[0] = p.x * m_scal;
153 out[1] = p.y * m_scal;
154 out[2] = p.z * m_scal;
156 cfi::DerivativeList d1 = d->at(0);
157 cfi::DerivativeList d2 = d->at(1);
159 out[3] = d1.getDeriv(0) * m_scal;
160 out[4] = d1.getDeriv(1) * m_scal;
161 out[5] = d1.getDeriv(2) * m_scal;
162 out[6] = d2.getDeriv(0) * m_scal;
163 out[7] = d2.getDeriv(1) * m_scal;
164 out[8] = d2.getDeriv(2) * m_scal;
188 cfi::Position x1 = m_cfiEdge->calcXYZAtT(bds[0]);
189 cfi::Position x2 = m_cfiEdge->calcXYZAtT(bds[1]);
193 locs[0] = x1.x * m_scal;
194 locs[1] = x1.y * m_scal;
195 locs[2] = x1.z * m_scal;
196 locs[3] = x2.x * m_scal;
197 locs[4] = x2.y * m_scal;
198 locs[5] = x2.z * m_scal;
CADCurveFactory & GetCADCurveFactory()
void P(NekDouble t, NekDouble &x, NekDouble &y, NekDouble &z)
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.