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::*::*","*::*::*"
}