23#include <ql/methods/finitedifferences/operators/fdmlinearoplayout.hpp>
24#include <ql/methods/finitedifferences/utilities/fdmindicesonboundary.hpp>
28 const ext::shared_ptr<FdmLinearOpLayout>& layout,
31 std::vector<Size> newDim(layout->dim());
32 newDim[direction] = 1;
34 = std::accumulate(newDim.begin(), newDim.end(),
Size(1), std::multiplies<>());
38 for (
const auto& iter : *layout) {
40 && iter.coordinates()[direction] == 0)
42 && iter.coordinates()[direction]
43 == layout->dim()[direction]-1)) {
44 QL_REQUIRE(hyperSize > i,
"index missmatch");
BoundaryCondition< FdmLinearOp >::Side Side
const std::vector< Size > & getIndices() const
std::vector< Size > indices_
FdmIndicesOnBoundary(const ext::shared_ptr< FdmLinearOpLayout > &l, Size direction, FdmDirichletBoundary::Side side)
std::size_t Size
size of a container