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;
67 for (
int nPoly = 0; nPoly < nNumPolygons; nPoly++)
70 double dSeawardLength = pPolygon->
dGetLength();
71 prVPolygonLength.push_back(make_pair(nPoly, dSeawardLength));
78 for (
int n = 0; n < nNumPolygons; n++)
80 int nThisPoly = prVPolygonLength[n].first;
87 int nCoastStartPoint =
m_VCoast[nCoast].pGetProfile(nStartNormal)->nGetCoastPoint();
88 int nCoastEndPoint =
m_VCoast[nCoast].pGetProfile(nEndNormal)->nGetCoastPoint();
90 int nActiveZonePoints = 0;
92 double dAvgBreakingWaveHeight = 0;
93 double dAvgBreakingWaveAngle = 0;
94 double dAvgDeepWaterWavePeriod = 0;
95 double dAvgFluxOrientation = 0;
96 double dAvgBreakingDepth = 0;
97 double dAvgBreakingDist = 0;
100 for (
int nCoastPoint = nCoastStartPoint; nCoastPoint < nCoastEndPoint - 1; nCoastPoint++)
103 dAvgFluxOrientation +=
m_VCoast[nCoast].dGetFluxOrientation(nCoastPoint);
105 double dThisBreakingWaveHeight =
m_VCoast[nCoast].dGetBreakingWaveHeight(nCoastPoint);
111 dAvgBreakingWaveHeight += dThisBreakingWaveHeight;
113 double dThisBreakingWaveAngle =
m_VCoast[nCoast].dGetBreakingWaveAngle(nCoastPoint);
114 double dThisDeepWaterWavePeriod =
m_VCoast[nCoast].dGetCoastDeepWaterWavePeriod(nCoastPoint);
116 dAvgBreakingWaveAngle += dThisBreakingWaveAngle;
117 dAvgDeepWaterWavePeriod += dThisDeepWaterWavePeriod;
119 dAvgBreakingDepth +=
m_VCoast[nCoast].dGetDepthOfBreaking(nCoastPoint);
126 if (nCoastPoints == 0)
130 dAvgFluxOrientation /= nCoastPoints;
132 if (nActiveZonePoints > 0)
135 dAvgBreakingWaveHeight /= nActiveZonePoints;
136 dAvgBreakingWaveAngle /= nActiveZonePoints;
137 dAvgDeepWaterWavePeriod /= nActiveZonePoints;
138 dAvgBreakingDepth /= nActiveZonePoints;
139 dAvgBreakingDist /= nActiveZonePoints;
142 int nSeaHand =
m_VCoast[nCoast].nGetSeaHandedness();
143 double dNormalOrientation;
152 double dThetaBr = dNormalOrientation - dAvgBreakingWaveAngle;
155 dThetaBr = dAvgBreakingWaveAngle + 360.0 - dNormalOrientation;
157 else if (dThetaBr < -270)
158 dThetaBr = dNormalOrientation + 360.0 - dAvgBreakingWaveAngle;
160 bool bDownCoast =
true;
169 dThetaBr =
tAbs(dThetaBr);
172 dThetaBr =
tMin(dThetaBr, 90.0);
175 double dImmersedWeightTransport = 0;
203 if (dAvgBreakingDist > 0)
209 double dBeachSlope = dAvgBreakingDepth / dAvgBreakingDist;
212 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);
224 double dSedimentDepth = dSedimentVol /
m_dCellArea;