]> SALOME platform Git repositories - tools/solverlab.git/commitdiff
Salome HOME
ProblemCoreFlows::run no longer divides time step by two in case of failure of soleTi...
authormichael <michael@localhost.localdomain>
Mon, 17 May 2021 12:44:57 +0000 (14:44 +0200)
committermichael <michael@localhost.localdomain>
Mon, 17 May 2021 12:44:57 +0000 (14:44 +0200)
CoreFlows/Models/src/ProblemCoreFlows.cxx

index d9f1c6432f15cd6836bca1cd6a3483ff2c43856e..bb98c7e6cd616c9e7afcdb2d47b67fc3f928d983 100755 (executable)
@@ -126,6 +126,7 @@ void ProblemCoreFlows::setInitialField(const Field &VV)
        }
 
        _VV=VV;
+       _VV.setName("SOLVERLAB results");
        _time=_VV.getTime();
        _mesh=_VV.getMesh();
        _Nmailles = _mesh.getNumberOfCells();
@@ -428,7 +429,7 @@ bool ProblemCoreFlows::run()
        bool ok; // Is the time interval successfully solved ?
        _isStationary=false;//in case of a second run with a different physics or cfl
 
-       cout<< "Running test case "<< _fileName<<endl;
+       cout<< "Running test case "<< _fileName<<endl<<endl;
 
        _runLogFile->open((_fileName+".log").c_str(), ios::out | ios::trunc);;//for creation of a log file to save the history of the simulation
        *_runLogFile<< "Running test case "<< _fileName<<endl;
@@ -460,7 +461,7 @@ bool ProblemCoreFlows::run()
 
                        if (!ok)   // The resolution failed, try with a new time interval.
                        {
-                               if(_dt>_precision){
+                               /* if(_dt>_precision){
                                        cout<<"ComputeTimeStep returned _dt="<<_dt<<endl;
                                        cout << "Failed solving time step "<<_nbTimeStep<<", time = " << _time <<" _dt= "<<_dt<<", cfl= "<<_cfl<<", trying again with dt/2"<< endl;
                                        *_runLogFile << "Failed solving time step "<<_nbTimeStep<<", time = " << _time <<" _dt= "<<_dt<<", cfl= "<<_cfl<<", trying again with dt/2"<< endl;
@@ -470,19 +471,19 @@ bool ProblemCoreFlows::run()
                                        //_cfl*=0.5;//If we change the cfl, we must compute the new time step with computeTimeStep
                                        //_dt=computeTimeStep(stop);
                                }
-                               else{
+                               else{*/
                                        cout << "Failed solving time step "<<_nbTimeStep<<", _time = " << _time<<" _dt= "<<_dt<<", cfl= "<<_cfl <<", stopping calculation"<< endl;
                                        *_runLogFile << "Failed solving time step "<<_nbTimeStep<<", _time = " << _time<<" _dt= "<<_dt<<", cfl= "<<_cfl <<", stopping calculation"<< endl;
                                        stop=true; // Impossible to solve the next time step, the Problem has given up
                                        break;
-                               }
+                               //}
                        }
                        else // The resolution was successful, validate and go to the next time step.
                        {
                                validateTimeStep();
-                               if (_nbTimeStep%_freqSave ==0){
-                                       cout << "Time step = "<< _nbTimeStep << ", dt = "<< _dt <<", time = "<<_time << ", ||Un+1-Un||= "<<_erreur_rel<<endl;
-                                       *_runLogFile << "Time step = "<< _nbTimeStep << ", dt = "<< _dt <<", time = "<<_time << ", ||Un+1-Un||= "<<_erreur_rel<<endl;
+                               if ((_nbTimeStep-1)%_freqSave ==0){
+                                       cout << "Time step = "<< _nbTimeStep << ", dt = "<< _dt <<", time = "<<_time << ", ||Un+1-Un||= "<<_erreur_rel<<endl<<endl;
+                                       *_runLogFile << "Time step = "<< _nbTimeStep << ", dt = "<< _dt <<", time = "<<_time << ", ||Un+1-Un||= "<<_erreur_rel<<endl<<endl;
                                }
                        }
                }
@@ -551,15 +552,15 @@ bool ProblemCoreFlows::solveTimeStep(){
 
                if(_timeScheme == Implicit && _nbTimeStep%_freqSave ==0)//To monitor the convergence of the newton scheme
                {
-                       cout << "\n Newton iteration " << _NEWTON_its<< ", "<< _ksptype << " iterations : " << " : " << _PetscIts<< " maximum variation ||Uk+1-Uk||: " << _erreur_rel << endl;
-                       *_runLogFile<< "\n Newton iteration " << _NEWTON_its<< ", "<< _ksptype << " iterations : " << " : " << _PetscIts<< " maximum variation ||Uk+1-Uk||: " << _erreur_rel << endl;
+                       cout << " Newton iteration " << _NEWTON_its<< ", "<< _ksptype << " iterations : " << _PetscIts<< " maximum variation ||Uk+1-Uk||: " << _erreur_rel << endl;
+                       *_runLogFile<< " Newton iteration " << _NEWTON_its<< ", "<< _ksptype << " iterations : " << _PetscIts<< " maximum variation ||Uk+1-Uk||: " << _erreur_rel << endl;
 
                        if(_conditionNumber)
                        {
                                PetscReal sv_max, sv_min;
                                KSPComputeExtremeSingularValues(_ksp, &sv_max, &sv_min);
-                               cout<<" singular value max = " << sv_max <<" singular value min = " << sv_min <<" condition number = " << sv_max/sv_min <<endl;
-                               *_runLogFile<<" singular value max = " << sv_max <<" singular value min = " << sv_min <<" condition number = " << sv_max/sv_min <<endl;
+                               cout<<" Singular value max = " << sv_max <<", singular value min = " << sv_min <<", condition number = " << sv_max/sv_min <<endl;
+                               *_runLogFile<<" Singular value max = " << sv_max <<", singular value min = " << sv_min <<", condition number = " << sv_max/sv_min <<endl;
                        }
                }
                _NEWTON_its++;
@@ -576,11 +577,9 @@ bool ProblemCoreFlows::solveTimeStep(){
        }
        else if(_timeScheme == Implicit && _nbTimeStep%_freqSave ==0)
        {
-               cout<<endl;
-               cout << "Nombre d'iterations de Newton "<< _NEWTON_its << ", Nombre max d'iterations "<< _ksptype << " : " << _MaxIterLinearSolver << endl;
+               cout << "Nombre d'iterations de Newton "<< _NEWTON_its << ", Nombre max d'iterations "<< _ksptype << " : " << _MaxIterLinearSolver << endl << endl;
                *_runLogFile <<endl;
-               *_runLogFile << "Nombre d'iterations de Newton "<< _NEWTON_its << " Variation ||Un+1-Un||= "<< _erreur_rel<<endl;
-               *_runLogFile << "Nombre max d'iterations "<< _ksptype << " : " << _MaxIterLinearSolver << endl;
+               *_runLogFile << "Nombre d'iterations de Newton "<< _NEWTON_its << "Nombre max d'iterations "<< _ksptype << " : " << _MaxIterLinearSolver << endl << endl;
                _MaxIterLinearSolver = 0;
        }