From 94d3e79a8617f88dc0219cfdeedfa3147833719d Mon Sep 17 00:00:00 2001
From: Adrian Kummerlaender
Date: Mon, 24 Jun 2019 14:43:36 +0200
Subject: Initialize at openlb-1-3
---
.../analytical/indicator/smoothIndicatorBaseF3D.hh | 342 +++++++++++++++++++++
1 file changed, 342 insertions(+)
create mode 100644 src/functors/analytical/indicator/smoothIndicatorBaseF3D.hh
(limited to 'src/functors/analytical/indicator/smoothIndicatorBaseF3D.hh')
diff --git a/src/functors/analytical/indicator/smoothIndicatorBaseF3D.hh b/src/functors/analytical/indicator/smoothIndicatorBaseF3D.hh
new file mode 100644
index 0000000..2213f81
--- /dev/null
+++ b/src/functors/analytical/indicator/smoothIndicatorBaseF3D.hh
@@ -0,0 +1,342 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) 2014-2016 Cyril Masquelier, Albert Mink, Mathias J. Krause, Benjamin Förster
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#ifndef SMOOTH_INDICATOR_BASE_F_3D_HH
+#define SMOOTH_INDICATOR_BASE_F_3D_HH
+
+#include
+
+#include "smoothIndicatorBaseF3D.h"
+#include "utilities/vectorHelpers.h"
+
+namespace olb {
+
+
+template
+SmoothIndicatorF3D::SmoothIndicatorF3D()
+ : AnalyticalF3D(1),
+ _myMin(S()), _myMax(S()), _pos(S()), _rotMat(S()), _circumRadius(S()),
+ _theta(S()), _epsilon(S())
+{ }
+
+template
+void SmoothIndicatorF3D::init(Vector theta, Vector vel, T mass, Vector mofi) {
+ this->_rotMat[0] = std::cos(theta[1])*std::cos(theta[2]);
+ this->_rotMat[1] = std::sin(theta[0])*std::sin(theta[1])*std::cos(theta[2]) - std::cos(theta[0])*std::sin(theta[2]);
+ this->_rotMat[2] = std::cos(theta[0])*std::sin(theta[1])*std::cos(theta[2]) + std::sin(theta[0])*std::sin(theta[2]);
+ this->_rotMat[3] = std::cos(theta[1])*std::sin(theta[2]);
+ this->_rotMat[4] = std::sin(theta[0])*std::sin(theta[1])*std::sin(theta[2]) + std::cos(theta[0])*std::cos(theta[2]);
+ this->_rotMat[5] = std::cos(theta[0])*std::sin(theta[1])*std::sin(theta[2]) - std::sin(theta[0])*std::cos(theta[2]);
+ this->_rotMat[6] = -std::sin(theta[1]);
+ this->_rotMat[7] = std::sin(theta[0])*std::cos(theta[1]);
+ this->_rotMat[8] = std::cos(theta[0])*std::cos(theta[1]);
+}
+
+template
+const Vector& SmoothIndicatorF3D::getMin() const
+{
+ return _myMin;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getMax() const
+{
+ return _myMax;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getPos() const {
+ return _pos;
+}
+
+template
+const S& SmoothIndicatorF3D::getCircumRadius() const
+{
+ return _circumRadius;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getRotationMatrix() const {
+ return _rotMat;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getTheta() const {
+ return _theta;
+}
+
+template
+const S& SmoothIndicatorF3D::getEpsilon() const {
+ return _epsilon;
+}
+
+template
+std::string SmoothIndicatorF3D::name() {
+ return _name;
+}
+
+template
+void SmoothIndicatorF3D::setTheta(Vector theta) {
+ _theta[0] = theta[0];
+ _theta[1] = theta[1];
+ _theta[2] = theta[2];
+}
+
+template
+void SmoothIndicatorF3D::setEpsilon(S epsilon) {
+ _epsilon = epsilon;
+}
+
+// identity to "store results"
+template
+SmoothIndicatorIdentity3D::SmoothIndicatorIdentity3D(SmoothIndicatorF3D& f)
+ : _f(f) {
+ this->_myMin = _f.getMin();
+ this->_myMax = _f.getMax();
+ std::swap( _f._ptrCalcC, this->_ptrCalcC );
+}
+
+template
+bool SmoothIndicatorIdentity3D::operator() (T output[], const S input[]) {
+ _f(output, input);
+ return true;
+}
+
+///////////////////////// for template specialisation HLBM=true
+
+template
+SmoothIndicatorF3D::SmoothIndicatorF3D()
+ : AnalyticalF3D(1),
+ _myMin(S()), _myMax(S()), _pos(S()), _vel(S()), _acc(S()), _acc2(S()), _force(S()),
+ _rotMat(S()), _circumRadius(S()), _theta(S()), _omega(S()), _alpha(S()),
+ _alpha2(S()), _mass(S()), _mofi(S()), _epsilon(S())
+{ }
+
+template
+void SmoothIndicatorF3D::init(Vector theta, Vector vel, T mass, Vector mofi) {
+ this->_rotMat[0] = std::cos(theta[1])*std::cos(theta[2]);
+ this->_rotMat[1] = std::sin(theta[0])*std::sin(theta[1])*std::cos(theta[2]) - std::cos(theta[0])*std::sin(theta[2]);
+ this->_rotMat[2] = std::cos(theta[0])*std::sin(theta[1])*std::cos(theta[2]) + std::sin(theta[0])*std::sin(theta[2]);
+ this->_rotMat[3] = std::cos(theta[1])*std::sin(theta[2]);
+ this->_rotMat[4] = std::sin(theta[0])*std::sin(theta[1])*std::sin(theta[2]) + std::cos(theta[0])*std::cos(theta[2]);
+ this->_rotMat[5] = std::cos(theta[0])*std::sin(theta[1])*std::sin(theta[2]) - std::sin(theta[0])*std::cos(theta[2]);
+ this->_rotMat[6] = -std::sin(theta[1]);
+ this->_rotMat[7] = std::sin(theta[0])*std::cos(theta[1]);
+ this->_rotMat[8] = std::cos(theta[0])*std::cos(theta[1]);
+ _vel = vel;
+ _mass = mass;
+ _mofi = mofi;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getMin() const {
+ return _myMin;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getMax() const {
+ return _myMax;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getPos() const {
+ return _pos;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getVel() const {
+ return _vel;
+ }
+
+template
+const Vector& SmoothIndicatorF3D::getAcc() const
+{
+ return _acc;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getAcc2() const
+{
+ return _acc2;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getForce() const {
+ return _force;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getRotationMatrix() const {
+ return _rotMat;
+}
+
+template
+const S& SmoothIndicatorF3D::getCircumRadius() const {
+ return _circumRadius;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getTheta() const
+{
+ return _theta;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getOmega() const
+{
+ return _omega;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getAlpha() const
+{
+ return _alpha;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getAlpha2() const {
+ return _alpha2;
+}
+
+template
+const S& SmoothIndicatorF3D::getMass() const
+{
+ return _mass;
+}
+
+template
+const Vector& SmoothIndicatorF3D::getMofi() const
+{
+ return _mofi;
+}
+
+template
+const S& SmoothIndicatorF3D::getEpsilon() const
+{
+ return _epsilon;
+}
+
+template
+std::string SmoothIndicatorF3D::name() {
+ return _name;
+}
+
+// identity to "store results"
+template
+void SmoothIndicatorF3D::setPos(Vector pos) {
+ _pos[0] = pos[0];
+ _pos[1] = pos[1];
+ _pos[2] = pos[2];
+}
+
+template
+void SmoothIndicatorF3D::setVel(Vector vel) {
+ _vel[0] = vel[0];
+ _vel[1] = vel[1];
+ _vel[2] = vel[2];
+}
+
+template
+void SmoothIndicatorF3D::setAcc(Vector acc) {
+ _acc[0] = acc[0];
+ _acc[1] = acc[1];
+ _acc[2] = acc[2];
+}
+
+template
+void SmoothIndicatorF3D::setAcc2(Vector acc2) {
+ _acc2[0] = acc2[0];
+ _acc2[1] = acc2[1];
+ _acc2[2] = acc2[2];
+}
+
+template
+void SmoothIndicatorF3D::setForce(Vector force) {
+ _force[0] = force[0];
+ _force[1] = force[1];
+ _force[2] = force[2];
+}
+
+
+template
+void SmoothIndicatorF3D::setRotationMatrix(Vector rotMat) {
+ _rotMat[0] = rotMat[0];
+ _rotMat[1] = rotMat[1];
+ _rotMat[2] = rotMat[2];
+ _rotMat[3] = rotMat[3];
+ _rotMat[4] = rotMat[4];
+ _rotMat[5] = rotMat[5];
+ _rotMat[6] = rotMat[6];
+ _rotMat[7] = rotMat[7];
+ _rotMat[8] = rotMat[8];
+}
+
+template
+void SmoothIndicatorF3D::setTheta(Vector theta) {
+ _theta[0] = theta[0];
+ _theta[1] = theta[1];
+ _theta[2] = theta[2];
+}
+
+template
+void SmoothIndicatorF3D::setOmega(Vector omega) {
+ _omega[0] = omega[0];
+ _omega[1] = omega[1];
+ _omega[2] = omega[2];
+}
+
+template
+void SmoothIndicatorF3D::setAlpha(Vector alpha) {
+ _alpha[0] = alpha[0];
+ _alpha[1] = alpha[1];
+ _alpha[2] = alpha[2];
+}
+
+template
+void SmoothIndicatorF3D::setAlpha2(Vector alpha2) {
+ _alpha2[0] = alpha2[0];
+ _alpha2[1] = alpha2[1];
+ _alpha2[2] = alpha2[2];
+}
+
+template
+void SmoothIndicatorF3D::setMass(S mass) {
+ _mass = mass;
+}
+
+template
+void SmoothIndicatorF3D::setMofi(Vector mofi) {
+ _mofi[0] = mofi[0];
+ _mofi[1] = mofi[1];
+ _mofi[2] = mofi[2];
+}
+
+template
+void SmoothIndicatorF3D::setEpsilon(S epsilon) {
+ _epsilon = epsilon;
+}
+
+} // namespace olb
+
+
+#endif
--
cgit v1.2.3