How to avoid an error

Provides a system for patient-specific cardiovascular modeling and simulation.
POST REPLY
User avatar
Li Xia
Posts: 11
Joined: Sun Sep 03, 2023 12:14 am

How to avoid an error

Post by Li Xia » Wed Jul 03, 2024 7:08 am

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>
Attachments
Pressure_of_outlet1.PNG
Pressure_of_outlet1.PNG (17.73 KiB) Viewed 720 times
Flow.PNG
Flow.PNG (64.38 KiB) Viewed 720 times

User avatar
David Parker
Posts: 1730
Joined: Tue Aug 23, 2005 2:43 pm

Re: How to avoid an error

Post by David Parker » Mon Jul 08, 2024 1:25 pm

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

POST REPLY