davidsblom / foam-fsi Goto Github PK
View Code? Open in Web Editor NEWFluid-Structure Interaction solvers for foam-extend
License: GNU General Public License v2.0
Fluid-Structure Interaction solvers for foam-extend
License: GNU General Public License v2.0
The predictor of SDC is only used to compute the provisional solution, so the initial solution for every sub step. The standard Euler integrator is used in the correction steps. See papers by Layton and Minion for studies on the used predictor and corrector of varying orders.
Task: implement an interpolation method between the 1d code for the tube flow FSI test case and the 3d Navier-Stokes solver.
The idea is to use the 1d solver to accelerate the convergence of the 3d FSI solver for the tube flow test case.
The development of this functionality will only be available in a separate branch tubeflow-1d-3d, and not be merged to the master branch.
To see which points are selected for RBF motion a pointZone would be ideal, since a pointZone can be opened by paraview.
The displacement of the vertices of the staticPatches are manually set to zero. Add a list of fixedPatches for which the displacement is interpolated, i.e. zero displacement on the faces is interpolated to the vertices.
Only limit the number of columns of V and W with the maxUsedIterations
variable for robustness.
Currently, the vectors are only stored for the first optimization cycle within one time step.
README
to use the --recursive
option while cloning in order to automatically initialize the git modulesSee https://git-scm.com/book/en/v2/Git-Tools-Submodules for more information on submodules
Unit displacement only on moving patches and not on static patches. Ensures a lower point selection when locally supported functions are used and static patches are outside of radius
@thijsgillebaart
idea of @thijsgillebaart:
Debugswitch is no longer an int, but a debugSwitch object. This should be updated since it does not compile anymore with newest version of nextRelease brand of foam-extend-3.1.
For robustness, memory usage and computational efficiency (SVD), add a maxUsedIterations parameter in order to limit the number of columns of DeltaC and DeltaF.
Such a big issue
in order to show summary logs when asked for with arguments on the command line.
modify each tutorial
example code of ESDIRK scheme:
volVectorField resU = -(1 / _imA[k][k]) * fvc::ddt( U ) + fvc::laplacian( nu, U ) - fvc::div( phi, U ) - fvc::grad( p ) + 1 / _imA[k][k] * sumStageResidual;
scalarField magResU = mag( resU.internalField() );
momentumResidual = ::sqrt( sum( sqr( magResU ) ) / mesh.nCells() );
bool convergence = momentumResidual <= convTol;
labelList convergenceList( Pstream::nProcs(), 0 );
convergenceList[Pstream::myProcNo()] = convergence;
reduce( convergenceList, sumOp<labelList>() );
convergence = min( convergenceList );
Info << "root mean square residual norm = " << momentumResidual << ", tolerance = " << convTol;
Info << ", convergence = ";
if ( convergence )
Info << "true";
else
Info << "false";
Info << endl;
if ( convergence )
break;
The face velocities Uf
do not necessarily satisfy the boundary conditions of the cell centered velocity. Therefore, Uf.oldTime()
can contain errors at the boundary which are not corrected. This possibly influences the time discretization.
The fluid and solid solvers are already converged up to machine tolerance, but the manifold mapping iterations are not. An excerpt of a log file of the 3dTube test case:
Time = 0.0066, iteration = 1, level = 1
Solve fluid domain
BiCGStab: Solving for Up, Initial residual = (3.29293e-17 3.94544e-17 2.31537e-16 3.74489e-17), Final residual = (1.76859e-17 1.99345e-17 1.79129e-17 2.06413e-17), No Iterations 5
BiCGStab: Solving for Up, Initial residual = (3.34161e-16 3.55892e-16 4.24103e-16 6.44722e-17), Final residual = (1.73116e-18 1.73226e-18 1.648e-18 2.06298e-18), No Iterations 5
BiCGStab: Solving for Up, Initial residual = (1.55044e-16 1.75201e-16 3.30495e-16 7.05358e-17), Final residual = (1.23175e-18 1.21964e-18 1.13944e-18 1.40031e-18), No Iterations 5
Solving for Up, Initial residual = 2.31537e-16, Final residual = 3.30495e-16, No outer iterations = 3
time step continuity errors : sum local = 1.94402e-18, global = 7.29156e-21, cumulative = -3.6381e-13
runtime = 0.17 s
average runtime = 0.318654 s
total runtime = 8233.69 s
Solve solid domain
Solving for U, Initial residual = 1.93332e-15, Final residual = 1.93332e-15, No outer iterations 0
runtime = 0.01 s
average runtime = 0.0204319 s
total runtime = 527.941 s
min iteration convergence measure: #it = 1 of 1, conv = true
relative convergence measure: two-norm diff = 0, limit = 9.5549e-09, conv = true
All converged
Time = 0.0066, iteration = 2, level = 1
Solve fluid domain
BiCGStab: Solving for Up, Initial residual = (4.91373e-17 5.3566e-17 2.72578e-16 3.99232e-17), Final residual = (9.96037e-19 9.92349e-19 1.02335e-18 1.09952e-18), No Iterations 5
BiCGStab: Solving for Up, Initial residual = (4.46073e-17 5.00284e-17 2.67466e-16 3.80326e-17), Final residual = (8.8987e-19 8.93842e-19 8.70143e-19 9.7926e-19), No Iterations 5
BiCGStab: Solving for Up, Initial residual = (4.30096e-17 4.52048e-17 2.56103e-16 3.82921e-17), Final residual = (5.5446e-19 5.78717e-19 5.26587e-19 6.53819e-19), No Iterations 5
Solving for Up, Initial residual = 2.72578e-16, Final residual = 2.56103e-16, No outer iterations = 3
time step continuity errors : sum local = 1.95636e-18, global = 9.80706e-21, cumulative = -3.6381e-13
runtime = 0.16 s
average runtime = 0.318647 s
total runtime = 8233.85 s
Solve solid domain
Solving for U, Initial residual = 1.9464e-15, Final residual = 1.9464e-15, No outer iterations 0
runtime = 0.01 s
average runtime = 0.0204315 s
total runtime = 527.951 s
Time = 0.0066, iteration = 133, level = 2
Solve fluid domain
BiCGStab: Solving for Up, Initial residual = (1.40557e-13 1.33763e-13 3.61489e-15 3.48316e-14), Final residual = (2.52696e-15 2.55136e-15 1.9036e-15 5.85339e-15), No Iterations 5
BiCGStab: Solving for Up, Initial residual = (4.75592e-14 4.69653e-14 2.23402e-15 3.96292e-14), Final residual = (9.98382e-16 1.02703e-15 7.72781e-16 2.35533e-15), No Iterations 5
BiCGStab: Solving for Up, Initial residual = (2.79412e-14 2.94418e-14 1.57002e-15 1.22542e-14), Final residual = (8.13957e-15 8.12176e-15 6.00566e-15 1.84811e-14), No Iterations 5
Solving for Up, Initial residual = 1.40557e-13, Final residual = 2.94418e-14, No outer iterations = 3
time step continuity errors : sum local = 4.63249e-16, global = 1.21308e-17, cumulative = 1.64197e-11
runtime = 1.85 s
average runtime = 4.62109 s
total runtime = 59787.7 s
Solve solid domain
Solving for U, Initial residual = 1.13374e-14, Final residual = 1.13374e-14, No outer iterations 0
runtime = 0.05 s
average runtime = 0.187119 s
total runtime = 2420.94 s
min iteration convergence measure: #it = 133 of 1, conv = true
relative convergence measure: two-norm diff = 0.00860931, limit = 1.24669e-08, conv = false
@thijsgillebaart
In case a laminar is considered, using the turbulence modules will alter the solution. Therefore, separate PIMPLE solvers should be implemented.
fsiFoam: OutputSpaceMapping.C:49: virtual void fsi::OutputSpaceMapping::finalizeTimeStep(): Assertion `solsTimeList.size() == coarseResidualsTimeList.size()' failed.
In order to be consistent with the other flow solvers, and to give the user more control over the converge measures of each PISO correction step.
@thijsgillebaart I try to be consistent with the code structure. Note whether you're familiar with it, but the tool uncrustify
is quite handy in formatting code consistently.
How to use uncrustify:
uncrustify --no-backup -c uncrustify.cfg -l CPP src/fsi/*.C src/fsi/*.H
My uncrustify.cfg configuration file:
# Uncrustify 0.59
newlines = auto
input_tab_size = 8
output_tab_size = 8
string_escape_char = 92
string_escape_char2 = 0
tok_split_gte = false
utf8_bom = ignore
utf8_byte = false
utf8_force = false
indent_columns = 2
indent_continue = 2
indent_with_tabs = 0
indent_cmt_with_tabs = false
indent_align_string = false
indent_xml_string = 0
indent_brace = 0
indent_braces = false
indent_braces_no_func = false
indent_braces_no_class = false
indent_braces_no_struct = false
indent_brace_parent = false
indent_namespace = true
indent_namespace_level = 2
indent_namespace_limit = 0
indent_extern = false
indent_class = true
indent_class_colon = false
indent_ctor_init = 0
indent_else_if = false
indent_var_def_blk = 0
indent_var_def_cont = true
indent_func_call_param = false
indent_func_def_param = false
indent_func_proto_param = false
indent_func_class_param = false
indent_func_ctor_var_param = false
indent_template_param = false
indent_func_param_double = false
indent_func_const = 0
indent_func_throw = 0
indent_member = 0
indent_sing_line_comments = 0
indent_relative_single_line_comments = false
indent_switch_case = 0
indent_case_shift = 0
indent_case_brace = 0
indent_col1_comment = true
indent_label = 1
indent_access_spec = 1
indent_access_spec_body = false
indent_paren_nl = false
indent_paren_close = 0
indent_comma_paren = false
indent_bool_paren = false
indent_first_bool_expr = false
indent_square_nl = false
indent_preserve_sql = false
indent_align_assign = true
sp_arith = force
sp_assign = force
sp_assign_default = force
sp_before_assign = force
sp_after_assign = force
sp_enum_assign = force
sp_enum_before_assign = ignore
sp_enum_after_assign = ignore
sp_pp_concat = force
sp_pp_stringify = remove
sp_bool = force
sp_compare = force
sp_inside_paren = remove
sp_paren_paren = force
sp_balance_nested_parens = true
sp_paren_brace = force
sp_before_ptr_star = force
sp_before_unnamed_ptr_star = ignore
sp_between_ptr_star = remove
sp_after_ptr_star = force
sp_after_ptr_star_func = ignore
sp_before_ptr_star_func = ignore
sp_before_byref = force
sp_before_unnamed_byref = ignore
sp_after_byref = force
sp_after_byref_func = ignore
sp_before_byref_func = ignore
sp_after_type = force
sp_template_angle = ignore
sp_before_angle = ignore
sp_inside_angle = ignore
sp_after_angle = ignore
sp_angle_paren = ignore
sp_angle_word = ignore
sp_angle_shift = force
sp_before_sparen = force
sp_inside_sparen = force
sp_inside_sparen_close = ignore
sp_after_sparen = ignore
sp_sparen_brace = ignore
sp_invariant_paren = ignore
sp_after_invariant_paren = ignore
sp_special_semi = remove
sp_before_semi = remove
sp_before_semi_for = remove
sp_before_semi_for_empty = remove
sp_after_semi = force
sp_after_semi_for = force
sp_after_semi_for_empty = ignore
sp_before_square = ignore
sp_before_squares = ignore
sp_inside_square = remove
sp_after_comma = force
sp_before_comma = remove
sp_paren_comma = force
sp_before_ellipsis = ignore
sp_after_class_colon = force
sp_before_class_colon = force
sp_before_case_colon = remove
sp_after_operator = ignore
sp_after_operator_sym = ignore
sp_after_cast = ignore
sp_inside_paren_cast = ignore
sp_cpp_cast_paren = remove
sp_sizeof_paren = remove
sp_after_tag = ignore
sp_inside_braces_enum = ignore
sp_inside_braces_struct = ignore
sp_inside_braces = ignore
sp_inside_braces_empty = ignore
sp_type_func = ignore
sp_func_proto_paren = remove
sp_func_def_paren = remove
sp_inside_fparens = remove
sp_inside_fparen = force
sp_square_fparen = remove
sp_fparen_brace = ignore
sp_func_call_paren = remove
sp_func_call_paren_empty = ignore
sp_func_call_user_paren = ignore
sp_func_class_paren = ignore
sp_return_paren = ignore
sp_attribute_paren = ignore
sp_defined_paren = ignore
sp_throw_paren = ignore
sp_catch_paren = ignore
sp_version_paren = ignore
sp_scope_paren = ignore
sp_macro = ignore
sp_macro_func = ignore
sp_else_brace = ignore
sp_brace_else = ignore
sp_brace_typedef = ignore
sp_catch_brace = ignore
sp_brace_catch = ignore
sp_finally_brace = ignore
sp_brace_finally = ignore
sp_try_brace = ignore
sp_getset_brace = ignore
sp_before_dc = remove
sp_after_dc = remove
sp_d_array_colon = ignore
sp_not = remove
sp_inv = remove
sp_addr = remove
sp_member = remove
sp_deref = remove
sp_sign = remove
sp_incdec = remove
sp_before_nl_cont = force
sp_after_oc_scope = ignore
sp_after_oc_colon = ignore
sp_before_oc_colon = ignore
sp_after_send_oc_colon = ignore
sp_before_send_oc_colon = ignore
sp_after_oc_type = ignore
sp_after_oc_return_type = ignore
sp_after_oc_at_sel = ignore
sp_after_oc_at_sel_parens = ignore
sp_inside_oc_at_sel_parens = ignore
sp_before_oc_block_caret = ignore
sp_after_oc_block_caret = ignore
sp_cond_colon = ignore
sp_cond_question = ignore
sp_case_label = ignore
sp_range = ignore
sp_cmt_cpp_start = force
sp_endif_cmt = ignore
sp_after_new = ignore
sp_before_tr_emb_cmt = ignore
sp_num_before_tr_emb_cmt = 0
align_keep_tabs = false
align_with_tabs = false
align_on_tabstop = false
align_number_left = false
align_func_params = false
align_same_func_call_params = false
align_var_def_span = 0
align_var_def_star_style = 0
align_var_def_amp_style = 0
align_var_def_thresh = 0
align_var_def_gap = 0
align_var_def_colon = false
align_var_def_attribute = false
align_var_def_inline = false
align_assign_span = 0
align_assign_thresh = 0
align_enum_equ_span = 0
align_enum_equ_thresh = 0
align_var_struct_span = 0
align_var_struct_thresh = 0
align_var_struct_gap = 0
align_struct_init_span = 0
align_typedef_gap = 0
align_typedef_span = 0
align_typedef_func = 0
align_typedef_star_style = 0
align_typedef_amp_style = 0
align_right_cmt_span = 0
align_right_cmt_mix = false
align_right_cmt_gap = 0
align_right_cmt_at_col = 0
align_func_proto_span = 0
align_func_proto_gap = 0
align_on_operator = false
align_mix_var_proto = false
align_single_line_func = false
align_single_line_brace = false
align_single_line_brace_gap = 0
align_oc_msg_spec_span = 0
align_nl_cont = false
align_pp_define_gap = 0
align_pp_define_span = 0
align_left_shift = true
align_oc_msg_colon_span = 0
align_oc_decl_colon = false
nl_collapse_empty_body = true
nl_assign_leave_one_liners = false
nl_class_leave_one_liners = false
nl_enum_leave_one_liners = false
nl_getset_leave_one_liners = false
nl_func_leave_one_liners = false
nl_if_leave_one_liners = false
nl_start_of_file = force
nl_start_of_file_min = 1
nl_end_of_file = force
nl_end_of_file_min = 1
nl_assign_brace = ignore
nl_assign_square = ignore
nl_after_square_assign = ignore
nl_func_var_def_blk = 0
nl_fcall_brace = ignore
nl_enum_brace = ignore
nl_struct_brace = ignore
nl_union_brace = ignore
nl_if_brace = force
nl_brace_else = force
nl_elseif_brace = force
nl_else_brace = force
nl_else_if = force
nl_brace_finally = force
nl_finally_brace = force
nl_try_brace = force
nl_getset_brace = ignore
nl_for_brace = force
nl_catch_brace = force
nl_brace_catch = force
nl_while_brace = force
nl_using_brace = ignore
nl_brace_brace = ignore
nl_do_brace = force
nl_brace_while = force
nl_switch_brace = force
nl_multi_line_cond = false
nl_multi_line_define = false
nl_before_case = false
nl_before_throw = ignore
nl_after_case = false
nl_case_colon_brace = ignore
nl_namespace_brace = ignore
nl_template_class = ignore
nl_class_brace = force
nl_class_init_args = ignore
nl_func_type_name = ignore
nl_func_type_name_class = ignore
nl_func_scope_name = ignore
nl_func_proto_type_name = ignore
nl_func_paren = remove
nl_func_def_paren = ignore
nl_func_decl_start = force
nl_func_def_start = force
nl_func_decl_start_single = remove
nl_func_def_start_single = remove
nl_func_decl_args = force
nl_func_def_args = force
nl_func_decl_end = force
nl_func_def_end = force
nl_func_decl_end_single = remove
nl_func_def_end_single = remove
nl_func_decl_empty = remove
nl_func_def_empty = remove
nl_fdef_brace = force
nl_after_return = false
nl_return_expr = ignore
nl_after_semicolon = true
nl_after_brace_open = true
nl_after_brace_open_cmt = false
nl_after_vbrace_open = false
nl_after_vbrace_open_empty = false
nl_after_brace_close = false
nl_after_vbrace_close = false
nl_define_macro = false
nl_squeeze_ifdef = false
nl_before_if = force
nl_after_if = force
nl_before_for = force
nl_after_for = force
nl_before_while = force
nl_after_while = force
nl_before_switch = force
nl_after_switch = force
nl_before_do = force
nl_after_do = force
nl_ds_struct_enum_cmt = false
nl_ds_struct_enum_close_brace = false
nl_class_colon = ignore
nl_create_if_one_liner = false
nl_create_for_one_liner = false
nl_create_while_one_liner = false
pos_arith = ignore
pos_assign = ignore
pos_bool = ignore
pos_compare = ignore
pos_conditional = ignore
pos_comma = ignore
pos_class_comma = ignore
pos_class_colon = ignore
code_width = 0
ls_for_split_full = false
ls_func_split_full = false
nl_max = 0
nl_after_func_proto = 2
nl_after_func_proto_group = 2
nl_after_func_body = 2
nl_after_func_body_class = 2
nl_after_func_body_one_liner = 2
nl_before_block_comment = 2
nl_before_c_comment = 2
nl_before_cpp_comment = 2
nl_after_multiline_comment = true
nl_after_struct = 0
nl_after_class = 2
nl_before_access_spec = 2
nl_after_access_spec = 2
nl_comment_func_def = 1
nl_after_try_catch_finally = 1
nl_around_cs_property = 1
nl_between_get_set = 1
nl_property_brace = ignore
eat_blanks_after_open_brace = true
eat_blanks_before_close_brace = true
mod_full_brace_do = ignore
mod_full_brace_for = ignore
mod_full_brace_function = ignore
mod_full_brace_if = ignore
mod_full_brace_if_chain = false
mod_full_brace_nl = 0
mod_full_brace_while = ignore
mod_full_brace_using = ignore
mod_paren_on_return = ignore
mod_pawn_semicolon = false
mod_full_paren_if_bool = false
mod_remove_extra_semicolon = false
mod_add_long_function_closebrace_comment = 0
mod_add_long_switch_closebrace_comment = 0
mod_add_long_ifdef_endif_comment = 0
mod_add_long_ifdef_else_comment = 0
mod_sort_import = false
mod_sort_using = false
mod_sort_include = false
mod_move_case_break = false
mod_case_brace = ignore
mod_remove_empty_return = true
cmt_width = 0
cmt_reflow_mode = 2
cmt_indent_multi = true
cmt_c_group = true
cmt_c_nl_start = true
cmt_c_nl_end = true
cmt_cpp_group = true
cmt_cpp_nl_start = true
cmt_cpp_nl_end = true
cmt_cpp_to_c = false
cmt_star_cont = true
cmt_sp_before_star_cont = 0
cmt_sp_after_star_cont = 0
cmt_multi_check_last = true
cmt_insert_file_header = ""
cmt_insert_file_footer = ""
cmt_insert_func_header = ""
cmt_insert_class_header = ""
cmt_insert_oc_msg_header = ""
cmt_insert_before_preproc = false
pp_indent = force
pp_indent_at_level = true
pp_indent_count = 1
pp_space = ignore
pp_space_count = 0
pp_indent_region = 0
pp_region_indent_code = false
pp_indent_if = 0
pp_if_indent_code = false
pp_define_at_level = false
preCICE
simulation with fsiFoam
with the 3dTube test case.moveMesh()
from foamFluidSolver::setDisplacementLocal()
to PreciceFluidSolver::run()
compute the global residual and apply a normalization factor determined by the solver
Currently, only iterations from previous time steps are reused. This is correct for a 2-level setup, but for >= 3 levels, information from previous optimization solves is not reused in case requested by the user.
PBS Job Id: 6663.hpc12.hpc
Job Name: cylinderFlap_FSI3_spaceMapping_11_typeh_nbLevels_2_fsiFoam_output-space-mapping_parallel_False_reuse_0_sync_True_order_1
Exec host: n12-14/12+n12-14/13+n12-14/14+n12-14/15
Execution terminated
Exit_status=134 resources_used.cput=24:15:38 resources_used.mem=435580kb resources_used.vmem=2250744kb resources_used.walltime=06:03:59
Error_Path: hpc12:/home/davidblom/Research/OpenFOAM/testcases/cylinderFlap_FSI3_spaceMapping_11/cylinderFlap_FSI3_spaceMapping_11_typeh_nbLevels_2_fsiFoam_output-space-mapping_parallel_False_reuse_0_sync_True_order_1/qsub.${PBS_JOBID}.log
Output_Path: hpc12:/home/davidblom/Research/OpenFOAM/testcases/cylinderFlap_FSI3_spaceMapping_11/cylinderFlap_FSI3_spaceMapping_11_typeh_nbLevels_2_fsiFoam_output-space-mapping_parallel_False_reuse_0_sync_True_order_1/qsub.${PBS_JOBID}.log
Solve solid domain
fsiFoam: OutputSpaceMapping.C:162: virtual void fsi::OutputSpaceMapping::performPostProcessing(const vector&, const vector&, fsi::vector&, bool): Assertion `sols.size() == fineResiduals.size()' failed.
[n12-14:13419] *** Process received signal ***
[n12-14:13419] Signal: Aborted (6)
[n12-14:13419] Signal code: (-6)
fsiFoam: OutputSpaceMapping.C:162: virtual void fsi::OutputSpaceMapping::performPostProcessing(const vector&, const vector&, fsi::vector&, bool): Assertion `sols.size() == fineResiduals.size()' failed.
[n12-14:13421] *** Process received signal ***
[n12-14:13421] Signal: Aborted (6)
[n12-14:13421] Signal code: (-6)
fsiFoam: OutputSpaceMapping.C:162: virtual void fsi::OutputSpaceMapping::performPostProcessing(const vector&, const vector&, fsi::vector&, bool): Assertion `sols.size() == fineResiduals.size()' failed.
[n12-14:13410] *** Process received signal ***
[n12-14:13410] Signal: Aborted (6)
[n12-14:13410] Signal code: (-6)
fsiFoam: OutputSpaceMapping.C:162: virtual void fsi::OutputSpaceMapping::performPostProcessing(const vector&, const vector&, fsi::vector&, bool): Assertion `sols.size() == fineResiduals.size()' failed.
[n12-14:13414] *** Process received signal ***
[n12-14:13414] Signal: Aborted (6)
[n12-14:13414] Signal code: (-6)
Solving for U, Initial residual = 0.85349366, Final residual = 9.3724422e-12, No outer iterations 415
runtime = 0.47999999 s
average runtime = 0.66628706 s
total runtime = 134.58998 s
min iteration convergence measure: #it = 2 of 1, conv = true
relative convergence measure: two-norm diff = 6.815587e-09, limit = 5.9845209e-13, conv = false
[n12-14:13410] [ 0] /lib64/libc.so.6(+0x326a0) [0x2b71fd23e6a0]
see paper of Philipp Birken: Termination criteria for inexact fixed point schemes
The matrix inversion step is the most expensive step of the greedy algorithm for the RBF mesh motion solver. Current implementations only allow for a serial execution of the RBF interpolation.
PETSc has the ability to create distributed matrices and vectors, and provides interfaces to parallel LU decomposition implementations.
The best approach would be to reimplement the radial basis function interpolation class with PETSc, and use it thereafter for the RBF mesh motion solver. The RBFCoarsening class needs to be reimplemented as well.
Manual of PETSc: http://www.mcs.anl.gov/petsc/petsc-current/docs/manual.pdf
@thijsgillebaart The solvers cannot find the include files right now in case the repository is checked out in a random directory.
Bashrc file of foam must be reloaded before compiling the consistent solvers. Kinda hard to make this work well. At the beginning a warning is given that you must reload foam extend 3.1 again before compiling, but script continues and does not compile everything correctly. Make a install script and compile script? Install needs to be run ones and compile is for compilation. A bit like configure and make with normal programs?
Use the cylinder flap benchmark as a test case. Currently, the flap consists of one patch, split it into three patches in order to test the functionality.
@thijsgillebaart
cannot find -lmySchemes
cannot find -lmyBoundaries
Create a mapMesh utility which reads the displacement of the solid domain, and applies this displacement to the fluid mesh. Thereafter, save this displacement to disk in order to read this displacement at the start of the simulation.
save the residual from one timestep to the next, since the Uf function cannot be evaluated with standard OpenFOAM operators
email from verena:
For explicit timestepping, where you need to exchange in every timestep, the correct boundary condition at the interface is important! If you don't write data to precice in the init, the solver reads 0 from precice and the results of the first timestep is wrong ( for me, sometimes it also crashes since p=0 where actually p=10000 yield NAN calculation)
The values are added at each call to rbf->interpolate(). In order to be able to reuse the realtime selection functionality, the addition should be optionally. The goal is to reuse the live selection for the interpolation between the fluid and the structure.
Early tests showed the computational efficiency of the selection based on the actual values.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.