diff --git a/dart/src/wBLRegion.cpp b/dart/src/wBLRegion.cpp index 2caf52a4c3c78e502ee26ff1c27ed61d0a00a75b..3b394a79bea12ee2a20daa9e97b5e270543f670c 100644 --- a/dart/src/wBLRegion.cpp +++ b/dart/src/wBLRegion.cpp @@ -96,7 +96,6 @@ void BLRegion::SetStagBC(double Re) std::vector<double> ClosParam = closSolver->LaminarClosures(U[0], U[1], Ret[0], Me[0], name); - std::cout << ClosParam[3] << std::endl; Hstar[0] = ClosParam[0]; Hstar2[0] = ClosParam[1]; Hk[0] = ClosParam[2]; @@ -168,7 +167,7 @@ double BLRegion::GetDeltaStarExt(size_t iPoint){return DeltaStarExt[iPoint];} void BLRegion::PrintSolution(size_t iPoint) { - std::cout << "Point " << iPoint << std::scientific; + std::cout << "\nPoint " << iPoint << " \n" << std::scientific; std::cout << "Theta " << U[iPoint * nVar + 0] << " \n" << std::scientific; std::cout << "H " << U[iPoint * nVar + 1] << " \n" << std::scientific; std::cout << "N " << U[iPoint * nVar + 2] << " \n" << std::scientific; diff --git a/dart/src/wTimeSolver.cpp b/dart/src/wTimeSolver.cpp index 66402b83734a2f42ed021d62ae7dc65e5eed8fe3..e314c7285521f7b3c0f05d72bff983d4c11e96d3 100644 --- a/dart/src/wTimeSolver.cpp +++ b/dart/src/wTimeSolver.cpp @@ -56,9 +56,9 @@ void TimeSolver::InitialCondition(size_t iPoint, BLRegion *bl) if (bl->Regime[iPoint] == 1 && bl->U[iPoint * nVar + 4] == 0){ bl->U[iPoint * nVar + 4] = 0.03; } // End if - else if (bl->Regime[iPoint] == 0){ - bl->U[iPoint*nVar+4] = 0; - } // End else if + //else if (bl->Regime[iPoint] == 0){ + // bl->U[iPoint*nVar+4] = 0; + //} // End else if } // End InitialCondition int TimeSolver::Integration(size_t iPoint, BLRegion *bl) @@ -97,6 +97,13 @@ int TimeSolver::Integration(size_t iPoint, BLRegion *bl) while (innerIters < maxIt){ + if (bl->name == "lower" && iPoint == 425) + { + std::cout << "iter " << innerIters << std::endl; + bl->PrintSolution(iPoint-1); + std::cout << (normSysRes/normSysRes0) << " CFL" << CFL << std::endl; + } + if(innerIters % itFrozenJac == 0) { if (nErrors >= 5) @@ -104,6 +111,10 @@ int TimeSolver::Integration(size_t iPoint, BLRegion *bl) ResetSolution(iPoint, bl, Sln0); return -1; // Convergence failed } + if (std::isnan(CFL)) + { + CFL = 0.5; + } CFL = ControlIntegration(iPoint, bl, Sln0, CFL); itFrozenJac = itFrozenJac0; JacMatrix = SysMatrix->ComputeJacobian(iPoint, bl, SysRes, 1e-8); @@ -127,7 +138,7 @@ int TimeSolver::Integration(size_t iPoint, BLRegion *bl) // CFL adaptation. CFL = CFL0* pow(normSysRes0/normSysRes, 0.7); - CFL = std::max(CFL, 1.0); + CFL = std::max(CFL, 0.3); timeStep = SetTimeStep(CFL, dx, bl->GetVtExt(iPoint)); IMatrix = Matrix<double, 5, 5>::Identity() / timeStep; @@ -148,6 +159,7 @@ int TimeSolver::Integration(size_t iPoint, BLRegion *bl) } else { + ResetSolution(iPoint, bl, Sln0, true); return innerIters; } @@ -181,15 +193,23 @@ double TimeSolver::ControlIntegration(size_t iPoint, BLRegion *bl, std::vector<d /* Check for eventual errors */ - bl->U[iPoint*nVar + 0] = std::max(bl->U[iPoint*nVar + 0], 1e-7); + bl->U[iPoint*nVar + 0] = std::max(bl->U[iPoint*nVar + 0], 1e-6); bl->U[iPoint*nVar + 1] = std::max(bl->U[iPoint*nVar + 1], 1.0005); + if (bl->U[iPoint*nVar + 3] <= 0) + { + std::cout << "Negative Ue detected at point " << iPoint << std::endl; + ResetSolution(iPoint, bl, Sln0, true); + nErrors+=1; + return 0.2; + } + for (size_t k=0; k<nVar; ++k) { if (std::isnan(bl->U[iPoint*nVar + k])) { ResetSolution(iPoint, bl, Sln0, true); - itFrozenJac0 = 1; // Impose continuous Jacobian evaluation. + //itFrozenJac0 = 1; // Impose continuous Jacobian evaluation. nErrors+=1; return 0.1; // New CFL. } @@ -244,6 +264,12 @@ void TimeSolver::ResetSolution(size_t iPoint, BLRegion *bl, std::vector<double> bl->Us[iPoint] = turbParam[7]; } // End else if + if (bl->name=="lower" && iPoint == 425) + { + std::cout << "end Reset" << std::endl; + bl->PrintSolution(iPoint); + } + } // End ResetSolution diff --git a/dart/src/wViscFluxes.cpp b/dart/src/wViscFluxes.cpp index 83cd1a78b97b418758552ba0c14c7cebf45e19d1..a22bc6e2c101b643dec131a578ede7e460821267 100644 --- a/dart/src/wViscFluxes.cpp +++ b/dart/src/wViscFluxes.cpp @@ -78,15 +78,15 @@ Vector<double, 5> ViscFluxes::BLlaws(size_t iPoint, BLRegion *bl, std::vector<do if (bl->Regime[iPoint] == 0){ std::vector<double> lamParam = bl->closSolver->LaminarClosures(u[0], u[1], bl->Ret[iPoint], bl->GetMe(iPoint), bl->name); - bl->Hstar[iPoint] = lamParam[0]; - bl->Hstar2[iPoint] = lamParam[1]; - bl->Hk[iPoint] = lamParam[2]; - bl->Cf[iPoint] = lamParam[3]; - bl->Cd[iPoint] = lamParam[4]; - bl->Delta[iPoint] = lamParam[5]; - bl->Cteq[iPoint] = lamParam[6]; - bl->Us[iPoint] = lamParam[7]; - } // End if + bl->Hstar[iPoint] = lamParam[0]; + bl->Hstar2[iPoint] = lamParam[1]; + bl->Hk[iPoint] = lamParam[2]; + bl->Cf[iPoint] = lamParam[3]; + bl->Cd[iPoint] = lamParam[4]; + bl->Delta[iPoint] = lamParam[5]; + bl->Cteq[iPoint] = lamParam[6]; + bl->Us[iPoint] = lamParam[7]; + } // End if else if (bl->Regime[iPoint] == 1){ std::vector<double> turbParam = bl->closSolver->TurbulentClosures(u[0], u[1], u[4], bl->Ret[iPoint], bl->GetMe(iPoint), bl->name); bl->Hstar[iPoint] = turbParam[0]; @@ -143,8 +143,8 @@ Vector<double, 5> ViscFluxes::BLlaws(size_t iPoint, BLRegion *bl, std::vector<do double Cteqa = bl->Cteq[iPoint]; double Usa = bl->Us[iPoint]; - /*if (bl->name=="upper" && iPoint == 1){ - std::cout << "Reta" << Reta << std::endl; + /*if (bl->name=="lower" && iPoint == 2){ + std::cout << "Reta" << bl->Ret[iPoint] << std::endl; std::cout << "Hstara" << Hstara << std::endl; std::cout << "Hstar2a" << Hstar2a << std::endl; std::cout << "Hka" << Hka << std::endl; @@ -156,7 +156,7 @@ Vector<double, 5> ViscFluxes::BLlaws(size_t iPoint, BLRegion *bl, std::vector<do /* Space part */ - /*if(bl->name=="lower" && iPoint==1){ + /*if(bl->name=="lower" && iPoint==2){ std::cout << "due_dx" << due_dx << std::endl; std::cout << "c" << c << std::endl; std::cout << "u[1]" << u[1] << std::endl; diff --git a/dart/src/wViscSolver.cpp b/dart/src/wViscSolver.cpp index f4b16a9061054fa71f437cbe7cfbb9e365f1518f..5ffef5261bb69d22b908e74f76a21194480fc778 100644 --- a/dart/src/wViscSolver.cpp +++ b/dart/src/wViscSolver.cpp @@ -169,7 +169,7 @@ int ViscSolver::Run(unsigned int couplIter){ /* Prepare time integration */ if ((couplIter == 0) || (nbElmUpper != bl[0]->GetnMarkers()) || (stagPtMvmt)){ - tSolver->SetCFL0(0.5); + tSolver->SetCFL0(1); tSolver->SetitFrozenJac(1); tSolver->SetinitSln(true); if (couplIter != 0 && (nbElmUpper != bl[0]->GetnMarkers())){ diff --git a/dart/tests/blicpp.py b/dart/tests/blicpp.py index 3437e134e9f0719faaacb757a7f18c888c7bd3fd..3b756977788a3a050226708880c302a04bb748dc 100644 --- a/dart/tests/blicpp.py +++ b/dart/tests/blicpp.py @@ -62,7 +62,7 @@ def main(): meshFactor = 2 CFL0 = 1 - plotVar = 'Hk' + plotVar = 'Cf' # ======================================================================================== diff --git a/dart/vCoupler.py b/dart/vCoupler.py index 4d218f2b211e425cfd4de04d3024b10681f6844e..a93f9ece5f9cf530d8ad0f3c90820a3cdac1db59 100644 --- a/dart/vCoupler.py +++ b/dart/vCoupler.py @@ -35,7 +35,7 @@ class Coupler: self.iSolver=iSolver self.vSolver=vSolver - self.maxCouplIter = 100 + self.maxCouplIter = 150 self.couplTol = 1e-4 self.tms=fwk.Timers() @@ -81,7 +81,9 @@ class Coupler: self.group[n].connectListNodes, self.group[n].connectListElems, dataIn[n] = self.group[n].connectList() fMeshDict, cMeshDict, data = GroupConstructor().mergeVectors(dataIn, 0, 1) - if ((len(fMeshDict['locCoord'][:fMeshDict['bNodes'][1]])) != (nElmUpperPrev or couplIter==0)): + if ((len(fMeshDict['locCoord'][:fMeshDict['bNodes'][1]]) != nElmUpperPrev) or couplIter==0): + + print('STAG POINT MOVED') # Initialize mesh self.vSolver.InitMeshes(0, fMeshDict['locCoord'][:fMeshDict['bNodes'][1]], fMeshDict['globCoord'][:fMeshDict['bNodes'][1]]) @@ -113,11 +115,12 @@ class Coupler: error = abs((self.vSolver.Cdt - cdPrev)/self.vSolver.Cdt) if self.vSolver.Cdt != 0 else 1 """# Plot State. - plotVar = 'H' - blScalars, blVectors = viscU.ExtractVars(self.vSolver) - xtr=self.vSolver.Getxtr() - wData = viscU.Dictionary(blScalars, blVectors, xtr) - viscU.PlotVars(wData, plotVar)""" + if couplIter >= 12: + plotVar = 'H' + blScalars, blVectors = viscU.ExtractVars(self.vSolver) + xtr=self.vSolver.Getxtr() + wData = viscU.Dictionary(blScalars, blVectors, xtr) + viscU.PlotVars(wData, plotVar)""" if error <= self.couplTol and exitCode==0: diff --git a/dart/viscous/Master/DCoupler.py b/dart/viscous/Master/DCoupler.py index b64b9ee563b5a3fce91e4e06209f117c35c3ac1b..295cfc5be8c0fd36f36b82748101a09511ea06ce 100755 --- a/dart/viscous/Master/DCoupler.py +++ b/dart/viscous/Master/DCoupler.py @@ -62,7 +62,7 @@ class Coupler: # Run inviscid solver print('+----------------------------- Inviscid solver --------------------------------+') self.tms['inv'].start() - self.isolver.reset() + #self.isolver.reset() self.isolver.run() self.tms['inv'].stop() @@ -97,6 +97,10 @@ class Coupler: # Check convergence and output coupling iteration. + print('tms @ it', it, self.tms) + if it == 84: + converged = 1 + if error <= self.tol: print(self.tms) print('')