Skip to content
Snippets Groups Projects
Commit ce48d05c authored by Abelin Kameni's avatar Abelin Kameni
Browse files

No commit message

No commit message
parent 63805be1
No related branches found
No related tags found
No related merge requests found
...@@ -115,11 +115,12 @@ double dgRungeKutta::diagonalRK (const dgConservationLaw *claw, ...@@ -115,11 +115,12 @@ double dgRungeKutta::diagonalRK (const dgConservationLaw *claw,
dgDofContainer K (groups, nbFields); dgDofContainer K (groups, nbFields);
dgDofContainer Unp (groups, nbFields); dgDofContainer Unp (groups, nbFields);
dgDofContainer resd(groups, nbFields); dgDofContainer resd(groups, nbFields);
Unp.scale(0.);
Unp.axpy(*sol);
if (_TransformNodalValue) _TransformNodalValue->apply(&Unp); if (_TransformNodalValue) _TransformNodalValue->apply(sol);
Unp.scale(0.);
Unp.axpy(*sol);
K.scale(0.); K.scale(0.);
K.axpy(Unp); K.axpy(Unp);
...@@ -130,8 +131,8 @@ double dgRungeKutta::diagonalRK (const dgConservationLaw *claw, ...@@ -130,8 +131,8 @@ double dgRungeKutta::diagonalRK (const dgConservationLaw *claw,
K.scale(A[j]*dt); K.scale(A[j]*dt);
K.axpy(*sol); K.axpy(*sol);
} }
if (_TransformNodalValue) _TransformNodalValue->apply_Inverse(&K); if (_limiter) _limiter->apply(&K);
if (_limiter) _limiter->apply(&K); if (_TransformNodalValue) _TransformNodalValue->apply_Inverse(&K);
residual.compute(*groups,K,resd); residual.compute(*groups,K,resd);
K.scale(0.); K.scale(0.);
for(int k=0; k < groups->getNbElementGroups(); k++) { for(int k=0; k < groups->getNbElementGroups(); k++) {
......
...@@ -8,55 +8,29 @@ static double n_supra = 20; ...@@ -8,55 +8,29 @@ static double n_supra = 20;
int dgSupraTransformNodalValue::apply ( dgDofContainer *solution) int dgSupraTransformNodalValue::apply ( dgDofContainer *solution)
{ {
dgGroupCollection *groups=solution->getGroups();
int nbFields =_claw->getNbFields();
fullVector<double> sol = (*solution).getVector();
for (int i=0;i< sol.size();i++){
for (int iGroup=0 ; iGroup<groups->getNbElementGroups() ; iGroup++) {
dgGroupOfElements &group = *groups->getElementGroup(iGroup); if ((sol)(i)<0) (sol)(i)=-pow(- (sol)(i), 1/n_supra);
fullMatrix<double> &sol = solution->getGroupProxy(iGroup); else (sol)(i)=pow( (sol)(i), 1/n_supra);
fullMatrix<double> Temp;
for (int iElement=0 ; iElement<group.getNbElements() ; ++iElement) {
Temp.setAsProxy(sol, nbFields*iElement, nbFields );
int fSize = Temp.size1();
for (int k=0; k<nbFields; ++k) {
for (int i=0; i<fSize; ++i) {
if (Temp(i,k)<0) Temp(i,k) = - pow(fabs(Temp(i,k)),1/n_supra);
else Temp(i,k) = pow(fabs(Temp(i,k)),1/n_supra);
// Temp(i,k) = Temp(i,k)*0.5;
}
}
} }
}
return 1; return 1;
} }
int dgSupraTransformNodalValue::apply_Inverse ( dgDofContainer *solution) int dgSupraTransformNodalValue::apply_Inverse ( dgDofContainer *solution)
{ {
dgGroupCollection *groups=solution->getGroups();
int nbFields =_claw->getNbFields();
for (int iGroup=0 ; iGroup<groups->getNbElementGroups() ; iGroup++) {
dgGroupOfElements &group = *groups->getElementGroup(iGroup);
fullMatrix<double> &sol = solution->getGroupProxy(iGroup);
fullMatrix<double> Temp;
for (int iElement=0 ; iElement<group.getNbElements() ; ++iElement) {
Temp.setAsProxy(sol, nbFields*iElement, nbFields );
int fSize = Temp.size1();
for (int k=0; k<nbFields; ++k) {
for (int i=0; i<fSize; ++i) {
if (Temp(i,k)<0) Temp(i,k) =- pow(fabs(Temp(i,k)),n_supra);
else Temp(i,k) = pow(fabs(Temp(i,k)),n_supra);
//Temp(i,k) = 2*Temp(i,k);
}
} fullVector<double> sol = (*solution).getVector();
for (int i=0;i< sol.size();i++){
if ((sol)(i)<0) (sol)(i)=-pow(- (sol)(i), n_supra);
else (sol)(i)=pow( (sol)(i), n_supra);
} }
}
return 1; return 1;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment