载入中...
搜索中...
未找到
CaveFractureChannelization.cpp
浏览该文件的文档.
2
3#include <algorithm>
4#include <cmath>
5
6namespace eve::procgen {
7namespace {
8
9float smoothstep(float lo, float hi, float value) {
10 const float t = std::clamp((value - lo) / std::max(hi - lo, 1e-6f), 0.f, 1.f);
11 return t * t * (3.f - 2.f * t);
12}
13
14} // namespace
15
18 if (input.primaryMask <= 0.f || input.primaryApertureMultiplier <= 1.f) return result;
19
20 // Parallel-plate fracture conductance scales with aperture cubed. Expressing
21 // only the excess above the uniform aperture preserves the legacy field when
22 // aperture variability is disabled.
23 const float conductance = std::pow(std::max(input.primaryApertureMultiplier, 0.f), 3.f);
24 result.flowConcentration = smoothstep(1.f, 4.6f, conductance);
25
26 // A second open fracture supplies another advective face and creates the
27 // intersection-centred windows predicted by reactive fracture-network models.
28 const float secondaryConductance = std::pow(std::max(input.secondaryApertureMultiplier, 0.f), 3.f);
29 result.intersectionAmplification = std::sqrt(std::clamp(input.primaryMask * input.secondaryMask, 0.f, 1.f)) *
30 smoothstep(0.9f, 3.8f, secondaryConductance);
31
32 const float penetration = std::max(input.reactantPenetration, 0.02f);
33 const float downstreamSupply = 0.25f + 0.75f * std::exp(-std::max(input.distanceFromInlet, 0.f) / penetration);
34 result.reactantAccess = std::clamp(downstreamSupply * (0.45f + 0.55f * input.hydraulicIntensity), 0.f, 1.4f);
35 result.erosion = input.primaryMask * result.flowConcentration * result.reactantAccess *
36 (0.58f + 0.42f * result.intersectionAmplification);
37 return result;
38}
39
40} // namespace eve::procgen
double value
EvpackChunkInput input
Definition Evpack.cpp:170
float t
CaveFractureChannelizationSample sampleCaveFractureChannelization(const CaveFractureChannelizationInput &input)
Approximate fracture aperture-flow-dissolution feedback at one cave-wall sample.
Inputs for aperture-driven reactive channelization within a cave fracture network.
Observable local state of aperture-flow-dissolution feedback.