60 for (
int nCoast = 0; nCoast < static_cast<int>(
m_VCoast.size()); nCoast++)
62 int nNumPolygons =
m_VCoast[nCoast].nGetNumPolygons();
65 vector<pair<int, double>> prVPolygonLength;
66 for (
int nPoly = 0; nPoly < nNumPolygons; nPoly++)
69 double dSeawardLength = pPolygon->
dGetLength();
70 prVPolygonLength.push_back(make_pair(nPoly, dSeawardLength));
77 for (
int n = 0; n < nNumPolygons; n++)
79 int nThisPoly = prVPolygonLength[n].first;
86 int nCoastStartPoint =
m_VCoast[nCoast].pGetProfile(nStartNormal)->nGetCoastPoint();
87 int nCoastEndPoint =
m_VCoast[nCoast].pGetProfile(nEndNormal)->nGetCoastPoint();
89 int nActiveZonePoints = 0;
91 double dAvgBreakingWaveHeight = 0;
92 double dAvgBreakingWaveAngle = 0;
93 double dAvgDeepWaterWavePeriod = 0;
94 double dAvgFluxOrientation = 0;
95 double dAvgBreakingDepth = 0;
96 double dAvgBreakingDist = 0;
99 for (
int nCoastPoint = nCoastStartPoint; nCoastPoint < nCoastEndPoint - 1; nCoastPoint++)
102 dAvgFluxOrientation +=
m_VCoast[nCoast].dGetFluxOrientation(nCoastPoint);
104 double dThisBreakingWaveHeight =
m_VCoast[nCoast].dGetBreakingWaveHeight(nCoastPoint);
109 dAvgBreakingWaveHeight += dThisBreakingWaveHeight;
111 double dThisBreakingWaveAngle =
m_VCoast[nCoast].dGetBreakingWaveAngle(nCoastPoint);
112 double dThisDeepWaterWavePeriod =
m_VCoast[nCoast].dGetCoastDeepWaterWavePeriod(nCoastPoint);
114 dAvgBreakingWaveAngle += dThisBreakingWaveAngle;
115 dAvgDeepWaterWavePeriod += dThisDeepWaterWavePeriod;
117 dAvgBreakingDepth +=
m_VCoast[nCoast].dGetDepthOfBreaking(nCoastPoint);
124 if (nCoastPoints == 0)
128 dAvgFluxOrientation /= nCoastPoints;
130 if (nActiveZonePoints > 0)
133 dAvgBreakingWaveHeight /= nActiveZonePoints;
134 dAvgBreakingWaveAngle /= nActiveZonePoints;
135 dAvgDeepWaterWavePeriod /= nActiveZonePoints;
136 dAvgBreakingDepth /= nActiveZonePoints;
137 dAvgBreakingDist /= nActiveZonePoints;
140 int nSeaHand =
m_VCoast[nCoast].nGetSeaHandedness();
141 double dNormalOrientation;
148 double dThetaBr = dNormalOrientation - dAvgBreakingWaveAngle;
150 dThetaBr = dAvgBreakingWaveAngle + 360.0 - dNormalOrientation;
151 else if (dThetaBr < -270)
152 dThetaBr = dNormalOrientation + 360.0 - dAvgBreakingWaveAngle;
154 bool bDownCoast =
true;
162 dThetaBr =
tAbs(dThetaBr);
165 dThetaBr =
tMin(dThetaBr, 90.0);
168 double dImmersedWeightTransport = 0;
194 if (dAvgBreakingDist > 0)
199 double dBeachSlope = dAvgBreakingDepth / dAvgBreakingDist;
202 dImmersedWeightTransport =
m_dKamphuis * 2.33 * pow(dAvgDeepWaterWavePeriod, 1.5) * pow(dBeachSlope, 0.75) * pow(dD50, -0.25) * pow(dAvgBreakingWaveHeight, 2) * pow(sin((
PI / 180) * 2 * dThetaBr), 0.6);
214 double dSedimentDepth = dSedimentVol /
m_dCellArea;