Page 1 of 1

How to avoid an error

Posted: Wed Jul 03, 2024 7:08 am
by lina12138
Hello,

When I use svFSIplus for 3D fluid simulation (relevant settings as follows, inlet flow as shown in Fig.1), an error occurs at step 133:

terminate called after throwing an instance of 'std::runtime_error'
what(): FSILS: unexpected behavior in FSILS (likely due to the ill-conditioned LHS matrix)


I then output the pressure at outlet1 for inspection. From my results, there doesn't seem to be any issue. I checked the source code but still couldn't identify the problem, so I guessed it might be due to improper algorithm configuration. Therefore, I set NS_GM_tolerance and NS_CG_tolerance to 1e-4 to improve accuracy. There was no error at step 133, but the same error occurred at step 478 (the outlet pressure result is shown in Fig.2). Then I further reduced NS_GM_tolerance and NS_CG_tolerance to 1e-5, and this time the error occurred at step 122. In fact, the results from these runs were not unusual. Is there any way to avoid this error?

Any help will be appreciated.
Lina

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?>
<svFSIFile version="0.1">

<GeneralSimulationParameters>
  <Continue_previous_simulation> 0 </Continue_previous_simulation>
  <Number_of_spatial_dimensions> 3 </Number_of_spatial_dimensions> 
  <Number_of_time_steps> 1000 </Number_of_time_steps> 
  <Time_step_size> 0.001 </Time_step_size> 
  <Spectral_radius_of_infinite_time_step> 0.50 </Spectral_radius_of_infinite_time_step> 
  <Searched_file_name_to_trigger_stop> STOP_SIM </Searched_file_name_to_trigger_stop> 

  <Save_results_to_VTK_format> 0 </Save_results_to_VTK_format> 
  <Name_prefix_of_saved_VTK_files> branch </Name_prefix_of_saved_VTK_files> 
  <Increment_in_saving_VTK_files> 1 </Increment_in_saving_VTK_files> 
  <Start_saving_after_time_step> 1 </Start_saving_after_time_step> 

  <Increment_in_saving_restart_files> 1000 </Increment_in_saving_restart_files> 
  <Convert_BIN_to_VTK_format> 0 </Convert_BIN_to_VTK_format> 

  <Verbose> 1 </Verbose> 
  <Warning> 0 </Warning> 
  <Debug> 0 </Debug> 
</GeneralSimulationParameters>

<Add_mesh name="msh" > 

  <Mesh_file_path> 10w-mesh-complete/mesh-complete.mesh.vtu </Mesh_file_path>

  <Add_face name="inlet">
      <Face_file_path> 10w-mesh-complete/mesh-surfaces/inlet.vtp </Face_file_path>
  </Add_face>

  <Add_face name="outlet1">
      <Face_file_path> 10w-mesh-complete/mesh-surfaces/outlet1.vtp </Face_file_path>
  </Add_face>

  <Add_face name="outlet2">
      <Face_file_path> 10w-mesh-complete/mesh-surfaces/outlet2.vtp </Face_file_path>
  </Add_face>

  <Add_face name="wall">
      <Face_file_path> 10w-mesh-complete/mesh-surfaces/wall.vtp </Face_file_path>
  </Add_face>
<Mesh_scale_factor> 0.1 </Mesh_scale_factor>
    
<Add_equation type="fluid" >
   <Coupled> true </Coupled>
   <Min_iterations> 3 </Min_iterations>  
   <Max_iterations> 10 </Max_iterations> 
   <Tolerance> 1e-6 </Tolerance> 
   <Backflow_stabilization_coefficient> 0.2 </Backflow_stabilization_coefficient> 
   <Density> 1.06 </Density> 
   <Viscosity model="Constant" >
     <Value> 0.04 </Value>
   </Viscosity>

   <Output type="Spatial" >
      <Velocity> true </Velocity>
      <Pressure> true </Pressure>
      <Traction> true </Traction>
      <Vorticity> true</Vorticity>
      <Divergence> true</Divergence>
      <WSS> true </WSS>
   </Output>

   <Output type="Boundary_integral" >
     <WSS> true </WSS>
     <Velocity> true </Velocity>
     <Pressure> true </Pressure>
   </Output>

   <LS type="NS" >
      <Max_iterations> 15 </Max_iterations>
      <NS_GM_max_iterations> 20 </NS_GM_max_iterations>
      <NS_CG_max_iterations> 300 </NS_CG_max_iterations>
      <Tolerance> 1e-3 </Tolerance>
      <NS_GM_tolerance> 1e-4 </NS_GM_tolerance>
      <NS_CG_tolerance> 1e-4 </NS_CG_tolerance>
      <Absolute_tolerance> 1e-12 </Absolute_tolerance> 
      <Krylov_space_dimension> 250 </Krylov_space_dimension>
   </LS>

   <Add_BC name="inlet" > 
      <Type> Dir </Type>
      <Time_dependence> Unsteady </Time_dependence> 
      <Temporal_values_file_path> inlet.flow </Temporal_values_file_path> 
      <Profile> Parabolic </Profile> 
      <Impose_flux> true </Impose_flux> 
   </Add_BC> 

   <Add_BC name="outlet1" >
      <Type> Neu </Type>
      <Time_dependence> Resistance </Time_dependence>
      <Value> 600 </Value>
   </Add_BC>

   <Add_BC name="outlet2" >
      <Type> Neu </Type>
      <Time_dependence> Resistance </Time_dependence>
      <Value> 2000 </Value>
   </Add_BC>

   <Add_BC name="wall" >
      <Type> Dirichlet </Type>
      <Time_dependence> Steady </Time_dependence>
      <Value> 0.0 </Value>
   </Add_BC>

</Add_equation>

Re: How to avoid an error

Posted: Mon Jul 08, 2024 1:25 pm
by davep
Hi Lina,

Please post the histor.dat file for the simulation. It will provide details about the solution of the nonlinear and linear systems in the simulation.

Cheers,
Dave