Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions Code/Source/solver/ComMod.h
Original file line number Diff line number Diff line change
Expand Up @@ -1553,6 +1553,15 @@ class urisType
// IB meshes
std::vector<mshType> msh;

// Scaffold mesh flag
bool scaffold_flag = false;
// Scaffold mesh data
mshType scaffold_msh;
// Unsigned distance function (UDF) for scaffold mesh
Vector<double> scaffold_udf;
// Flag to indicate if the UDF for scaffold mesh is computed
bool scaffold_udf_computed = false;

};

/// @brief The ComMod class duplicates the data structures in the Fortran COMMOD module
Expand Down
1 change: 1 addition & 0 deletions Code/Source/solver/Parameters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2990,6 +2990,7 @@ URISMeshParameters::URISMeshParameters()
set_parameter("Valve_starts_as_closed", true, !required, valve_starts_as_closed);
set_parameter("Invert_normal", false, !required, invert_normal);
set_parameter("Positive_flow_normal_file_path", "", !required, positive_flow_normal_file_path);
set_parameter("Scaffold_file_path", "", !required, scaffold_file_path);
set_parameter("Include_URIS_velocity", false, !required, include_uris_velocity);
}

Expand Down
1 change: 1 addition & 0 deletions Code/Source/solver/Parameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -1786,6 +1786,7 @@ class URISMeshParameters : public ParameterLists
Parameter<bool> valve_starts_as_closed; // Whether the valve starts as closed
Parameter<bool> invert_normal; // Whether to invert the valve surface normal vector
Parameter<std::string> positive_flow_normal_file_path; // File path for the positive flow normal
Parameter<std::string> scaffold_file_path; // File path for the valve scaffold mesh
Parameter<bool> include_uris_velocity; // Whether to include the RIS velocity
};

Expand Down
27 changes: 27 additions & 0 deletions Code/Source/solver/distribute.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1180,10 +1180,37 @@ void dist_uris(ComMod& com_mod, const CmMod& cm_mod, const cmType& cm) {
cm.bcast(cm_mod, &uris[iUris].clsFlg);
cm.bcast(cm_mod, &uris[iUris].invert_normal);
cm.bcast(cm_mod, &uris[iUris].sdf_computed);
cm.bcast(cm_mod, &uris[iUris].scaffold_udf_computed);
cm.bcast(cm_mod, &uris[iUris].include_uris_velocity);
cm.bcast(cm_mod, &uris[iUris].cnt);
cm.bcast(cm_mod, &uris[iUris].scF);
cm.bcast(cm_mod, uris[iUris].nrm);

cm.bcast(cm_mod, &uris[iUris].scaffold_flag);
if (uris[iUris].scaffold_flag) {
cm.bcast(cm_mod, &uris[iUris].scaffold_msh.lShl);
cm.bcast(cm_mod, &uris[iUris].scaffold_msh.nEl);
cm.bcast(cm_mod, &uris[iUris].scaffold_msh.gnEl);
cm.bcast(cm_mod, &uris[iUris].scaffold_msh.eNoN);
cm.bcast(cm_mod, &uris[iUris].scaffold_msh.nNo);
cm.bcast(cm_mod, &uris[iUris].scaffold_msh.gnNo);
}
}

if (cm.slv(cm_mod)) {
for (int iUris = 0; iUris < com_mod.nUris; iUris++) {
if (uris[iUris].scaffold_flag) {
uris[iUris].scaffold_msh.x.resize(com_mod.nsd, uris[iUris].scaffold_msh.gnNo);
uris[iUris].scaffold_msh.IEN.resize(uris[iUris].scaffold_msh.eNoN, uris[iUris].scaffold_msh.gnEl);
}
}
}

for (int iUris = 0; iUris < com_mod.nUris; iUris++) {
if (uris[iUris].scaffold_flag) {
cm.bcast(cm_mod, uris[iUris].scaffold_msh.x);
cm.bcast(cm_mod, uris[iUris].scaffold_msh.IEN);
}
}

std::vector<Vector<int>> lM_gN_flat(com_mod.nUris);
Expand Down
5 changes: 5 additions & 0 deletions Code/Source/solver/initialize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -888,6 +888,11 @@ void initialize(Simulation* simulation, Vector<double>& timeP)
uris_obj.sdf.resize(com_mod.tnNo);
uris_obj.sdf = uris_obj.sdf_default;
uris_obj.sdf_computed = false;
if (uris_obj.scaffold_flag && !uris_obj.scaffold_udf.allocated()) {
uris_obj.scaffold_udf.resize(com_mod.tnNo);
uris_obj.scaffold_udf = uris_obj.sdf_default;
uris_obj.scaffold_udf_computed = false;
}
if (uris_obj.include_uris_velocity && !uris_obj.valve_velocity_fluid.allocated()) {
uris_obj.valve_velocity_fluid.resize(nsd, com_mod.tnNo);
uris_obj.valve_velocity_fluid = 0.0;
Expand Down
5 changes: 4 additions & 1 deletion Code/Source/solver/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -523,9 +523,12 @@ void iterate_solution(Simulation* simulation)
} else {
uris::uris_meanv(com_mod, cm_mod, iUris, solutions);
}
# ifdef debug_iterate_solution
if (cm.mas(cm_mod)) {
std::cout << " URIS surface: " << com_mod.uris[iUris].name << ", count: " << com_mod.uris[iUris].cnt << std::endl;
dmsg << " URIS surface: " + com_mod.uris[iUris].name + ", count: "
+ std::to_string(com_mod.uris[iUris].cnt) << std::endl;
}
# endif
}

if (com_mod.mvMsh) {
Expand Down
Loading
Loading