From 1a28d740e0fff5b0476527e5fa0aee63e1ef3c1f Mon Sep 17 00:00:00 2001 From: gaobhub Date: Wed, 6 May 2026 10:58:28 -0400 Subject: [PATCH 1/2] avoid to force zero Dirichlet --- src/pks/transport/transport_ats_pk.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pks/transport/transport_ats_pk.cc b/src/pks/transport/transport_ats_pk.cc index ed270b8e8..f521dfdb4 100644 --- a/src/pks/transport/transport_ats_pk.cc +++ b/src/pks/transport/transport_ats_pk.cc @@ -1400,6 +1400,8 @@ Transport_ATS::PopulateBoundaryData_(int component, Operators::BCs& bc) for (int i = 0; i < ncomp; i++) { int k = tcc_index[i]; if (k == component) { + if (bc_model[f] == Operators::OPERATOR_BC_DIRICHLET) continue; + if (values[i] == 0.0 && bc_model[f] == Operators::OPERATOR_BC_NEUMANN) continue; bc_model[f] = Operators::OPERATOR_BC_DIRICHLET; bc_value[f] = values[i]; flag = true; From b6b828347225a88a837e9d6c52dfbc59dfeaf450 Mon Sep 17 00:00:00 2001 From: gaobhub Date: Thu, 7 May 2026 02:22:16 -0400 Subject: [PATCH 2/2] use location name to distinguish bcs_ at surface --- src/pks/transport/transport_ats_pk.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pks/transport/transport_ats_pk.cc b/src/pks/transport/transport_ats_pk.cc index f521dfdb4..fdb27fd34 100644 --- a/src/pks/transport/transport_ats_pk.cc +++ b/src/pks/transport/transport_ats_pk.cc @@ -492,6 +492,7 @@ Transport_ATS::SetupTransport_() bc->tcc_names().push_back(component_names_[i]); bc->tcc_index().push_back(i); } + bc->set_location("coupling boundary"); bc->set_state(S_); bcs_.push_back(bc); } else if (bc_type == "subgrid") { @@ -1392,6 +1393,8 @@ Transport_ATS::PopulateBoundaryData_(int component, Operators::BCs& bc) if (component >= 0) { for (int m = 0; m < bcs_.size(); m++) { + bool is_coupling = (bcs_[m]->get_location() == "coupling boundary"); + if (is_coupling) continue; std::vector& tcc_index = bcs_[m]->tcc_index(); int ncomp = tcc_index.size(); for (auto it = bcs_[m]->begin(); it != bcs_[m]->end(); ++it) { @@ -1400,8 +1403,6 @@ Transport_ATS::PopulateBoundaryData_(int component, Operators::BCs& bc) for (int i = 0; i < ncomp; i++) { int k = tcc_index[i]; if (k == component) { - if (bc_model[f] == Operators::OPERATOR_BC_DIRICHLET) continue; - if (values[i] == 0.0 && bc_model[f] == Operators::OPERATOR_BC_NEUMANN) continue; bc_model[f] = Operators::OPERATOR_BC_DIRICHLET; bc_value[f] = values[i]; flag = true;