SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
job.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2#pragma once
3#include "mesh.hpp"
4#include "terrainpolicy.hpp"
5#include "planning.hpp"
6#include "sizefield.hpp"
7#include <optional>
8#include <functional>
9
10namespace meshkit
11{
12enum class CellPlan : std::uint8_t { Triangles, AutomaticMixed };
13struct RegionSeed {
15 std::int32_t region = 0;
16};
32struct JobRequest {
33 std::vector<Point2> points;
34 std::vector<Path> paths;
35 std::vector<double> pointElevations;
36 std::vector<std::int64_t> pointIds;
37 std::vector<std::int32_t> pointMarkers;
38 std::vector<Label> labels;
39 std::vector<RegionSeed> regions;
40 std::vector<plan::QuadRegion> quadRegions;
41 std::vector<plan::PatchMesh> fixedPatches;
42 std::optional<plan::SizeFieldOptions> sizeField;
45};
46struct Providers {
47 // Immutable, synchronous native callbacks on the job thread. They must not
48 // reenter the job or mutate request arrays. Exceptions fail the whole job.
49 // Footprint bounds include every prescribed source, including narrow strips.
50 std::function<double(const Box2 &)> maximumSize;
51 std::function<double(double, double)> elevation;
52 std::function<double(const Point2 *, const double *, Point2 *)> terrainWitness;
53 std::function<double(const Point2 *, const double *)> terrainBound;
54 std::function<bool()> cancelled;
55 std::string identity;
56};
58 std::string code;
60 double measured = 0, allowed = 0;
61};
63 std::string algorithmVersion = "cdt-1/job-2";
65 std::string providerIdentity;
67 std::uint64_t constraintSegments = 0;
68 std::uint64_t plannedPatches = 0, sharedSides = 0, planningRetries = 0;
69 std::vector<plan::PatchDecision> planning;
70 std::uint64_t inserted = 0, removed = 0, removalAttempts = 0, queuePeak = 0;
72 std::uint64_t terrainConflicts = 0, terrainUnknown = 0;
74 std::vector<JobException> examples; // At most 64, never one object per cell.
75};
76struct JobResult {
78 std::vector<Index> inputVertexToOutput;
80};
82 bool qtFree = true, triangles = true, automaticMixed = true;
83 bool terrainProviders = true, coarsening = true, streamingIO = true;
84};
86{
87 return {};
88}
89// Borrowed immutable inputs for this synchronous call; owned result buffers.
90// No mesh is returned on infeasible/cancelled/resource/failed jobs. The native
91// backend supports triangles and jointly planned mapped/automatic mixed meshes.
92// CompleteWithExceptions is distinct from a certified result. No CRS conversion,
93// DEM access, Python callbacks, or file publication occurs inside runJob.
94JobResult runJob(const JobRequest &, const Providers & = {}, EventChannel *events = nullptr);
95}
Definition geometry.hpp:59
Definition geometry.hpp:11
Definition qtcdtstorage.h:9
JobResult runJob(const JobRequest &, const Providers &={}, EventChannel *events=nullptr)
Definition job.cpp:1151
std::uint32_t Index
Definition mesh.hpp:12
constexpr Capabilities nativeCapabilities()
Definition job.hpp:85
CoarseningOrder
Definition terrainpolicy.hpp:9
constexpr Index missingIndex
Definition mesh.hpp:13
CellPlan
Definition job.hpp:12
Definition job.hpp:81
bool streamingIO
Definition job.hpp:83
bool coarsening
Definition job.hpp:83
bool triangles
Definition job.hpp:82
bool qtFree
Definition job.hpp:82
bool terrainProviders
Definition job.hpp:83
bool automaticMixed
Definition job.hpp:82
Definition job.hpp:57
double measured
Definition job.hpp:60
std::string code
Definition job.hpp:58
Index cell
Definition job.hpp:59
double allowed
Definition job.hpp:60
Definition job.hpp:17
double maximumSize
Definition job.hpp:19
std::uint32_t repairInsertions
Definition job.hpp:22
bool requireTerrainCertification
Definition job.hpp:26
double terrainTolerance
Definition job.hpp:24
std::uint64_t maximumPatchCells
Definition job.hpp:27
int coarsenPasses
Definition job.hpp:21
int sizingRepairPasses
Definition job.hpp:21
double minimumTarget
Definition job.hpp:19
bool automaticBlocks
Definition job.hpp:28
int smoothingPasses
Definition job.hpp:21
bool retainInputMapping
Definition job.hpp:26
double minimumEdge
Definition job.hpp:19
double flatElevation
Definition job.hpp:20
bool strictSizing
Definition job.hpp:26
TerrainTolerancePolicy terrainPolicy
Definition job.hpp:25
Limits limits
Definition job.hpp:30
int maximumAutomaticBlocks
Definition job.hpp:29
double adjacentRatio
Definition job.hpp:20
CellPlan cells
Definition job.hpp:18
double coarseningReferenceSize
Definition job.hpp:24
CoarseningOrder coarseningOrder
Definition job.hpp:23
double minimumAngleDegrees
Definition job.hpp:19
Definition job.hpp:62
std::uint64_t removalAttempts
Definition job.hpp:70
double largestTerrainRatio
Definition job.hpp:73
std::string algorithmVersion
Definition job.hpp:63
JobOptions resolvedOptions
Definition job.hpp:64
std::uint64_t transitionConflicts
Definition job.hpp:71
std::uint64_t belowMinimum
Definition job.hpp:71
std::uint64_t edgeConflicts
Definition job.hpp:71
std::uint64_t constraintSegments
Definition job.hpp:67
bool constraintAuditPassed
Definition job.hpp:66
std::uint64_t queuePeak
Definition job.hpp:70
std::uint64_t terrainUnknown
Definition job.hpp:72
double largestAdjacentRatio
Definition job.hpp:73
std::uint64_t sizeConflicts
Definition job.hpp:71
std::vector< JobException > examples
Definition job.hpp:74
std::uint64_t terrainConflicts
Definition job.hpp:72
std::uint64_t sharedSides
Definition job.hpp:68
std::string providerIdentity
Definition job.hpp:65
std::uint64_t plannedPatches
Definition job.hpp:68
std::vector< plan::PatchDecision > planning
Definition job.hpp:69
std::uint64_t removed
Definition job.hpp:70
std::uint64_t planningRetries
Definition job.hpp:68
std::uint64_t inserted
Definition job.hpp:70
Definition job.hpp:32
std::vector< Label > labels
Definition job.hpp:38
std::optional< plan::SizeFieldOptions > sizeField
Definition job.hpp:42
Metadata metadata
Definition job.hpp:43
std::vector< double > pointElevations
Optional authored Z, NaN samples the provider.
Definition job.hpp:35
std::vector< std::int64_t > pointIds
Definition job.hpp:36
std::vector< Point2 > points
Definition job.hpp:33
std::vector< plan::PatchMesh > fixedPatches
Definition job.hpp:41
JobOptions options
Definition job.hpp:44
std::vector< Path > paths
Definition job.hpp:34
std::vector< plan::QuadRegion > quadRegions
Definition job.hpp:40
std::vector< RegionSeed > regions
Definition job.hpp:39
std::vector< std::int32_t > pointMarkers
Definition job.hpp:37
Definition job.hpp:76
JobReport report
Definition job.hpp:79
std::vector< Index > inputVertexToOutput
Definition job.hpp:78
Mesh mesh
Definition job.hpp:77
Definition mesh.hpp:59
Definition mesh.hpp:48
Definition mesh.hpp:40
Definition mesh.hpp:65
Definition job.hpp:46
std::function< double(const Point2 *, const double *)> terrainBound
Definition job.hpp:53
std::function< double(const Point2 *, const double *, Point2 *)> terrainWitness
Definition job.hpp:52
std::function< bool()> cancelled
Definition job.hpp:54
std::string identity
Caller supplied dataset/provider version or fingerprint.
Definition job.hpp:55
std::function< double(double, double)> elevation
Definition job.hpp:51
std::function< double(const Box2 &)> maximumSize
Definition job.hpp:50
Definition job.hpp:13
Point2 point
Definition job.hpp:14
std::int32_t region
Definition job.hpp:15
Definition terrainpolicy.hpp:15
double
Definition swmmpollutantpropertyadapter.cpp:68