From 81f4796eeb6945338f7ae8002b8d0fba1505f4f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20L=C3=BCders?= Date: Mon, 25 Oct 2021 12:54:19 +0200 Subject: [PATCH] Anmerkung! Jacob mach mal! --- src/Integratoren2d_forceless.cpp | 36 +++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/Integratoren2d_forceless.cpp b/src/Integratoren2d_forceless.cpp index b77a215..cbd4dbc 100644 --- a/src/Integratoren2d_forceless.cpp +++ b/src/Integratoren2d_forceless.cpp @@ -20,7 +20,12 @@ void Integratoren2d_forceless::Set1_Euler(Rod2d &rod2D, Simulation &sim) { //translation Eigen::Vector2d rand = {sim.getNorm(std), sim.getNorm(std)}; //gaussian noise Eigen::Vector2d trans_part = rod2D.getDiff_Sqrt() * rand; //translation vector in Particle System - Eigen::Vector2d trans_lab = rod2D.getE_Base_matrix() * trans_part; + Eigen::Vector2d trans_lab = rod2D.getE_Base_matrix() * trans_part; + /* TODO + + Statt Zeile 22 und 23 kannst du trans_lab = paralleler_matrix_eintrag * e plus senkrechter_matrix_eintrag * ortho(e); + + */ //rotation double rot = sim.getNorm(std) * rod2D.getDRot_Sqrt();// rotationsmatrix verwenden. @@ -41,6 +46,15 @@ void Integratoren2d_forceless::Set2_Heun(Rod2d &rod2D, Simulation &sim) { Eigen::Vector2d trans_part = rod2D.getDiff_Sqrt() * rand; //translation vector in Particle System Eigen::Vector2d trans_lab = rod2D.getE_Base_matrix() * trans_part; Eigen::Vector2d pos_predictor = rod2D.getPos() + trans_lab; + +/* + + TODO + + Siehe Set_1: Hier auch über e und orth(e) + +*/ + //rotation double rot_predict = sim.getNorm(std) * rod2D.getDRot_Sqrt();// rotationsmatrix verwenden. Eigen::Vector2d e = rod2D.getE(); @@ -67,6 +81,12 @@ void Integratoren2d_forceless::Set3_Exact(Rod2d &rod2D, Simulation &sim) { Eigen::Vector2d trans_part = rod2D.getDiff_Sqrt() * rand; //translation vector in Particle System Eigen::Vector2d trans_lab = rod2D.getE_Base_matrix() * trans_part; + /* + + TODO: Siehe Set1 + + */ + //rotation double rot = sim.getNorm(std) * rod2D.getDRot_Sqrt(); Eigen::Vector2d e = rod2D.getE(); @@ -74,6 +94,10 @@ void Integratoren2d_forceless::Set3_Exact(Rod2d &rod2D, Simulation &sim) { Eigen::Vector2d delta_e = correction * e + rot * ortho(e); + /* + TODO Warum hier kBT definiert? + */ + //apply rod2D.setPos(rod2D.getPos() + trans_lab); rod2D.setE((e + delta_e).normalized()); @@ -91,10 +115,20 @@ void Integratoren2d_forceless::Set4_BDAS(Rod2d &rod2D, Simulation &sim) { Eigen::Rotation2D rotMat(acos(unitVec.dot(rod2D.getE()))); auto trans_lab = rotMat * trans_part; + /* + TODO: Warum hier nicht die Matrix von oben? + + */ + auto rot = Eigen::Rotation2D(sim.getNorm(std) * rod2D.getDRot_Sqrt()); Eigen::Rotation2Dd rotation(rot); auto e_new = (rotation.toRotationMatrix() * rod2D.getE()).normalized(); + /* + TODO Warum Normierung? Ist der Fehler so gros? Wie siehts mit einer Winkelvariable aus, + dann musst du den Winkel nicht jedesmal berechnen? + */ + // Normalisation should not be necessary if a proper angular representation is used. // But with vector e it is done in case of numerical errors