Question on Jellyfish Self-Propulsion Simulation

5 views
Skip to first unread message

ZM Z

unread,
Jun 9, 2026, 8:11:54 AM (yesterday) Jun 9
to IBAMR Users
Dear all, 

I am currently working on a two-dimensional jellyfish self-propulsion simulation using the IBFE-based swimming framework in IBAMR. 

However, I have encountered an issue in my simulations. Under certain combinations of Young’s modulus, driving frequency, and motion amplitude, the jellyfish motion remains symmetric. After changing these parameters, however, the motion becomes asymmetric, and vortex leakage occurs.

I would greatly appreciate any suggestions or insights from the community on  how to address the asymmetry issue under other parameter settings.

I have attached my simulation results, the input file, and the code responsible for the prescribed motion.  

Thank you very much for your time and help.

Best,

Qiao
 
LOOG_AXIS = 0.075                        
SHORT_AXIS = 0.05                        
FU_AXIS = 0.025                            
L = 10 * LOOG_AXIS                        
RHO = 1000                                
MU = 0.5                                  

MAX_LEVELS = 3                            
REF_RATIO  = 4                            
N = 16                                    
NFINEST = (REF_RATIO^(MAX_LEVELS - 1))*N  
DX0 = L/N                          
DX  = L/NFINEST                      
MFAC = 1.0                                
PK1_DEV_QUAD_ORDER = "SEVENTH"
PK1_DIL_QUAD_ORDER = "FIFTH"
MESH_FILENAME = "jellyfish_hoover_01.e"

NU= 0.3                                          
E_STEM= 5.0e8                                  
MU_STEM = E_STEM/(2.0*(1.0+NU))                  
BETA_STEM = E_STEM*NU/((1.0 + NU)*(1.0 - 2.0*NU))

KAPPA_S = 1.0e11
FREQUENCY = 7.89                                
AMPLITUDE = 0.1 * (LOOG_AXIS + FU_AXIS)          
PHASE_SHIFT = 0.0                              

USE_IB_DELTA_FUNCTIONS     = TRUE              
IB_DELTA_FUNCTION          = "IB_4"            
SPLIT_FORCES               = TRUE              
USE_JUMP_CONDITIONS        = FALSE            
USE_CONSISTENT_MASS_MATRIX = TRUE              
IB_USE_NODAL_QUADRATURE    = FALSE            
IB_POINT_DENSITY           = 2.0              
SOLVER_TYPE                = "STAGGERED"      
START_TIME                 = 0.0e0            
END_TIME                   = 5.0              
GROW_DT                    = 2.0              
NUM_CYCLES                 = 1                
CONVECTIVE_TS_TYPE         = "ADAMS_BASHFORTH"
CONVECTIVE_OP_TYPE         = "PPM"            
CONVECTIVE_FORM            = "ADVECTIVE"      
NORMALIZE_PRESSURE         = TRUE            
CFL_MAX                    = 0.2              
DT                         = 1.0e-5              
ERROR_ON_DT_CHANGE         = TRUE              
VORTICITY_TAGGING          = TRUE              
TAG_BUFFER                 = 1                
REGRID_CFL_INTERVAL        = 0.5              
OUTPUT_U                   = TRUE
OUTPUT_P                   = TRUE
OUTPUT_F                   = TRUE
OUTPUT_OMEGA               = TRUE
OUTPUT_DIV_U               = TRUE
ENABLE_LOGGING             = TRUE

// KAPPA = 7.5*DX/DT^2
// ETA_S = 0*DX/DT

PROJECTION_METHOD_TYPE = "PRESSURE_UPDATE"
SECOND_ORDER_PRESSURE_UPDATE = TRUE

VelocityBcCoefs_0 {
   acoef_function_0 = "1.0"
   acoef_function_1 = "1.0"
   acoef_function_2 = "1.0"
   acoef_function_3 = "1.0"

   bcoef_function_0 = "0.0"
   bcoef_function_1 = "0.0"
   bcoef_function_2 = "0.0"
   bcoef_function_3 = "0.0"

   gcoef_function_0 = "0.0"
   gcoef_function_1 = "0.0"
   gcoef_function_2 = "0.0"
   gcoef_function_3 = "0.0"
}

VelocityBcCoefs_1 {
   acoef_function_0 = "1.0"
   acoef_function_1 = "1.0"
   acoef_function_2 = "1.0"
   acoef_function_3 = "1.0"

   bcoef_function_0 = "0.0"
   bcoef_function_1 = "0.0"
   bcoef_function_2 = "0.0"
   bcoef_function_3 = "0.0"

   gcoef_function_0 = "0.0"
   gcoef_function_1 = "0.0"
   gcoef_function_2 = "0.0"
   gcoef_function_3 = "0.0"
}

IBHierarchyIntegrator {
   start_time          = START_TIME
   end_time            = END_TIME
   grow_dt             = GROW_DT
   num_cycles          = NUM_CYCLES
   regrid_cfl_interval = REGRID_CFL_INTERVAL
   dt_max              = DT
   error_on_dt_change  = ERROR_ON_DT_CHANGE
   enable_logging      = ENABLE_LOGGING
}

IBFEMethod {
   use_IB_spread_operator     = USE_IB_DELTA_FUNCTIONS
   use_IB_interp_operator     = USE_IB_DELTA_FUNCTIONS
   IB_use_nodal_quadrature    = IB_USE_NODAL_QUADRATURE
   IB_delta_fcn               = IB_DELTA_FUNCTION
   split_forces               = SPLIT_FORCES
   use_jump_conditions        = USE_JUMP_CONDITIONS
   use_consistent_mass_matrix = USE_CONSISTENT_MASS_MATRIX
   IB_point_density           = IB_POINT_DENSITY
   // IB_quad_type               = "QGAUSS"
}

INSCollocatedHierarchyIntegrator {
   mu                            = MU
   rho                           = RHO
   start_time                    = START_TIME
   end_time                      = END_TIME
   grow_dt                       = GROW_DT
   convective_time_stepping_type = CONVECTIVE_TS_TYPE
   convective_op_type            = CONVECTIVE_OP_TYPE
   convective_difference_form    = CONVECTIVE_FORM
   normalize_pressure            = NORMALIZE_PRESSURE
   cfl                           = CFL_MAX
   dt_max                        = DT
   using_vorticity_tagging       = VORTICITY_TAGGING
   vorticity_abs_thresh          = 0.5, 1.0, 2.0, 4.0, 8.0
   tag_buffer                    = TAG_BUFFER
   output_U                      = OUTPUT_U
   output_P                      = OUTPUT_P
   output_F                      = OUTPUT_F
   output_Omega                  = OUTPUT_OMEGA
   output_Div_U                  = OUTPUT_DIV_U
   enable_logging                = ENABLE_LOGGING
   projection_method_type        = PROJECTION_METHOD_TYPE
   use_2nd_order_pressure_update = SECOND_ORDER_PRESSURE_UPDATE
}

INSStaggeredHierarchyIntegrator {
   mu                            = MU
   rho                           = RHO
   start_time                    = START_TIME
   end_time                      = END_TIME
   grow_dt                       = GROW_DT
   convective_time_stepping_type = CONVECTIVE_TS_TYPE
   convective_op_type            = CONVECTIVE_OP_TYPE
   convective_difference_form    = CONVECTIVE_FORM
   normalize_pressure            = NORMALIZE_PRESSURE
   cfl                           = CFL_MAX
   dt_max                        = DT
   using_vorticity_tagging       = VORTICITY_TAGGING
   vorticity_abs_thresh          = 0.5, 1.0, 2.0, 4.0, 8.0
   tag_buffer                    = TAG_BUFFER
   output_U                      = OUTPUT_U
   output_P                      = OUTPUT_P
   output_F                      = OUTPUT_F
   output_Omega                  = OUTPUT_OMEGA
   output_Div_U                  = OUTPUT_DIV_U
   enable_logging                = ENABLE_LOGGING

   // regrid_projection_solver_type  = "PETSC_KRYLOV_SOLVER"
   // regrid_projection_precond_type = "POINT_RELAXATION_FAC_PRECONDITIONER"
   // regrid_projection_solver_db {
   //    ksp_type = "fgmres"
   // }
}

Main {
   solver_type = SOLVER_TYPE

   log_file_name               = "IB2d.log"
   log_all_nodes               = FALSE

   viz_writer                  = "VisIt","ExodusII"
   viz_dump_interval           = 2000
   viz_dump_dirname            = "viz_IB2d"
   visit_number_procs_per_file = 1

   restart_dump_interval       = 20000
   restart_dump_dirname        = "restart_IB2d"

   data_dump_interval          = 1              
   data_dump_dirname           = "data_IB2d"

   timer_dump_interval         = 0
}

CartesianGeometry {
   domain_boxes = [ (0,0),(2 * N - 1, 18 * N - 1) ]
   x_lo = -0.5 * L, -5.5 * L
   x_up = 0.5 * L, 3.5 * L
   periodic_dimension = 1,1
}

GriddingAlgorithm {
   max_levels = MAX_LEVELS
   ratio_to_coarser {
      level_1 = REF_RATIO,REF_RATIO
      level_2 = REF_RATIO,REF_RATIO
      level_3 = REF_RATIO,REF_RATIO
      level_4 = REF_RATIO,REF_RATIO
      level_5 = REF_RATIO,REF_RATIO
      level_6 = REF_RATIO,REF_RATIO
   }
   largest_patch_size {
      level_0 = 256, 256   // all finer levels will use same values as level_0
   }
   smallest_patch_size {
      level_0 = 8, 8    // all finer levels will use same values as level_0
   }
   efficiency_tolerance = 0.70e0  // min % of tag cells in new patch level
   combine_efficiency   = 0.70e0  // chop box if sum of volumes of smaller boxes < efficiency * vol of large box
}

StandardTagAndInitialize {
   tagging_method = "GRADIENT_DETECTOR"
}

LoadBalancer {
   bin_pack_method     = "SPATIAL"
   max_workload_factor = 1
}

TimerManager{
   print_exclusive = FALSE
   print_total = TRUE
   print_threshold = 0.1

   timer_list = "IBAMR::*::*","IBTK::*::*","*::*::*"
}

0f8828dffaa3928dc0f80f09d8871cf9.png9c6c621a076cd512715f9fcc754de961.png屏幕截图 2026-06-09 172209.png屏幕截图 2026-06-09 172320.png


Reply all
Reply to author
Forward
0 new messages