internal override double BerechneAuftriebsdrehmoment(Punkte punkte, double v, double alpha, double beta, Integration integrator) { Func <double, double> integrand1 = l => Parameter.rhoL / 2 * cA(l, alpha, beta) * Math.Pow(vW(l, v), 2) * profil(l); Func <double, double> integrand2 = l => Parameter.rhoL / 2 * Math.Cos(Punkte.Phi1(beta)) * l * cA(l, alpha, beta) * Math.Pow(vW(l, v), 2) * profil(l); return(punkte.P4.x * integrator.Integriere(integrand1, 0.0, Parameter.l5b) + integrator.Integriere(integrand2, 0.0, Parameter.l5b)); }
internal override double BerechneWiderstandsdrehmoment(Punkte punkte, double v, double alpha, double beta, Integration integrator) { Func <double, double> integrand1 = l => Parameter.rhoL / 2 * cW(l, alpha, beta) * Math.Pow(vW(l, v), 2) * profil(l); Func <double, double> integrand2 = l => Parameter.rhoL / 2 * Math.Sin(Punkte.Phi3(beta)) * l * cW(l, alpha, beta) * Math.Pow(vW(l, v), 2) * profil(l); return(-punkte.P12.y * integrator.Integriere(integrand1, -Parameter.l4, Parameter.l6b) - integrator.Integriere(integrand2, -Parameter.l4, Parameter.l6b)); }
protected void AktualisiereBauteile(Punkte punkte, double alpha, double beta) { foreach (Bauteil bauteil in bauteile) { bauteil.Aktualisiere(punkte, alpha, beta); } }
internal override void Aktualisiere(Punkte punkte, double alpha, double beta) { l4 = BerechneWindschattenLaenge(punkte.P4.y, K4, alpha); l5c = BerechneWindschattenLaenge(punkte.P5c.y, K5c, alpha); l8 = BerechneWindschattenLaenge(punkte.P8.y, K8, alpha); l11 = BerechneWindschattenLaenge(punkte.P11.y, K11, alpha); lR1 = BerechneWindschattenLaenge(punkte.PR1.y, KR1, alpha); }
internal override void Aktualisiere(Punkte punkte, double alpha, double beta) { l8 = BerechneWindschattenLaenge(punkte.P8.y, punkte.P12.y, K8, beta); l9 = BerechneWindschattenLaenge(punkte.P9.y, punkte.P12.y, K9, beta); l11 = BerechneWindschattenLaenge(punkte.P11.y, punkte.P12.y, K11, beta); lR1 = BerechneWindschattenLaenge(punkte.PR1.y, punkte.P12.y, KR1, beta); lR2 = BerechneWindschattenLaenge(punkte.PR2.y, punkte.P12.y, KR2, beta); }
protected override Vektor2 BestimmeVerschiebung(double beta) { Vektor2 verschiebung = new Vektor2(); verschiebungUrsprung.x = -Parameter.l3 * Math.Cos(Punkte.Phi2(beta)); verschiebungUrsprung.y = -Parameter.l3 * Math.Sin(Punkte.Phi2(beta)); return(verschiebung); }
protected override double cA(double l, double alpha, double beta) { if (l < 0.0) { throw new ValueOutOfRangeException("Das Argument von cA_T2 liegt außerhalb des erlaubten Bereichs."); } else if (l <= Parameter.l5c) { return(cA_Basis(Punkte.Phi5(beta))); } else { throw new ValueOutOfRangeException("Das Argument von cA_T2 liegt außerhalb des erlaubten Bereichs."); } }
internal abstract double BerechneAuftriebsdrehmoment(Punkte punkte, double v, double alpha, double beta, Integration integrator);
internal abstract double BerechneWiderstandsdrehmoment(Punkte punkte, double v, double alpha, double beta, Integration integrator);
internal abstract void Aktualisiere(Punkte modellpunkte, double alpha, double beta);
double BerechneWindschattenLaenge(double y1, double y2, double K, double beta) { return((y1 + K - y2) / Math.Sin(Punkte.Phi1(beta))); }
internal override void Aktualisiere(Punkte punkte, double alpha, double beta) { lR1 = BerechneWindschattenLaenge(punkte.PR1.y, punkte.P4.y, KR1, beta); }
internal override double BerechneAuftriebsdrehmoment(Punkte punkte, double v, double alpha, double beta, Integration integrator) { Func <double, double> integrand = l => Parameter.rhoL / 2 * Math.Cos(alpha) * l * cA(l, alpha, beta) * Math.Pow(vW(l, v), 2) * profil(l); return(-integrator.Integriere(integrand, 0.0, Parameter.l1b)); }