Files
solver/MbDCode/DispCompIeqcJecKeqc.cpp
2023-06-30 19:48:30 -06:00

98 lines
2.4 KiB
C++

#include "DispCompIeqcJecKeqc.h"
#include "EndFrameqc.h"
using namespace MbD;
DispCompIeqcJecKeqc::DispCompIeqcJecKeqc()
{
}
DispCompIeqcJecKeqc::DispCompIeqcJecKeqc(EndFrmcptr frmi, EndFrmcptr frmj, EndFrmcptr frmk, int axisk) : DispCompIecJecKeqc(frmi, frmj, frmk, axisk)
{
}
void DispCompIeqcJecKeqc::initialize()
{
DispCompIecJecKeqc::initialize();
priIeJeKepXI = std::make_shared<FullRow<double>>(3);
priIeJeKepEI = std::make_shared<FullRow<double>>(4);
ppriIeJeKepEIpEI = std::make_shared<FullMatrix<double>>(4, 4);
ppriIeJeKepXIpEK = std::make_shared<FullMatrix<double>>(3, 4);
ppriIeJeKepEIpEK = std::make_shared<FullMatrix<double>>(4, 4);
}
void DispCompIeqcJecKeqc::calcPostDynCorrectorIteration()
{
DispCompIecJecKeqc::calcPostDynCorrectorIteration();
auto frmIqc = std::static_pointer_cast<EndFrameqc>(frmI);
auto mprIeJeOpEIT = frmIqc->prOeOpE->transpose();
auto mpprIeJeOpEIpEI = frmIqc->pprOeOpEpE;
for (int i = 0; i < 3; i++)
{
priIeJeKepXI->at(i) = 0.0 - (aAjOKe->at(i));
}
for (int i = 0; i < 4; i++)
{
priIeJeKepEI->at(i) = 0.0 - (aAjOKe->dot(mprIeJeOpEIT->at(i)));
}
for (int i = 0; i < 3; i++)
{
auto& ppriIeJeKepXIipEK = ppriIeJeKepXIpEK->at(i);
for (int j = 0; j < 4; j++)
{
ppriIeJeKepXIipEK->at(j) = 0.0 - (pAjOKepEKT->at(j)->at(i));
}
}
for (int i = 0; i < 4; i++)
{
auto& mpprIeJeOpEIipEI = mpprIeJeOpEIpEI->at(i);
auto& ppriIeJeKepEIipEI = ppriIeJeKepEIpEI->at(i);
ppriIeJeKepEIipEI->at(i) = 0.0 - (aAjOKe->dot(mpprIeJeOpEIipEI->at(i)));
for (int j = 0; j < 4; j++)
{
auto ppriIeJeKepEIipEIj = 0.0 - (aAjOKe->dot(mpprIeJeOpEIipEI->at(j)));
ppriIeJeKepEIipEI->at(j) = ppriIeJeKepEIipEIj;
ppriIeJeKepEIpEI->at(j)->at(i) = ppriIeJeKepEIipEIj;
}
}
for (int i = 0; i < 4; i++)
{
auto& mprIeJeOpEITi = mprIeJeOpEIT->at(i);
auto& ppriIeJeKepEIipEK = ppriIeJeKepEIpEK->at(i);
for (int j = 0; j < 4; j++)
{
ppriIeJeKepEIipEK->at(j) = 0.0 - (pAjOKepEKT->at(j)->dot(mprIeJeOpEITi));
}
}
}
FRowDsptr DispCompIeqcJecKeqc::pvaluepXI()
{
return priIeJeKepXI;
}
FRowDsptr DispCompIeqcJecKeqc::pvaluepEI()
{
return priIeJeKepEI;
}
FRowDsptr DispCompIeqcJecKeqc::pvaluepEK()
{
return priIeJeKepEK;
}
FMatDsptr DispCompIeqcJecKeqc::ppvaluepXIpEK()
{
return ppriIeJeKepXIpEK;
}
FMatDsptr DispCompIeqcJecKeqc::ppvaluepEIpEK()
{
return ppriIeJeKepEIpEK;
}
FMatDsptr DispCompIeqcJecKeqc::ppvaluepEIpEI()
{
return ppriIeJeKepEIpEI;
}