/// <summary> /// Выбор конкретного коэффициента затухания акустического тракта. /// </summary> /// <returns>Интерфейс для расчета коэффициента затухания акустического тракта.</returns> private AcousticAttenuation ChoiceAcousticAttenuation() { AcousticAttenuation acousticAttenuation; var thickness = TestObject.Thickness; var fresnelDistance = Converter.CalcFresnelDistance(TestObject.Material); var fraunhoferDistance = Converter.CalcFraunhoferDistance(TestObject.Material); if (thickness <= fresnelDistance) { acousticAttenuation = new AttenuationFresnelPlane(Converter, TestObject); IsFresnelZone = true; } else if (thickness >= fraunhoferDistance) { acousticAttenuation = new AttenuationFraunhoferPlane(Converter, TestObject); IsFresnelZone = false; } else { throw new ArithmeticException("Контроль в переходной зоне не возможен. Измените входные параметры."); } return(acousticAttenuation); }
public void AttenuationFraunhoferPlaneTestInitialize() { // arrange double speedOfSound = 340; double density = 1.2; double fspl = 1.1; Material materialPEC = new Material(speedOfSound, density, fspl); double amplitude = 15; double frequency = 4000; AcousticWave acousticWave = new AcousticWave(amplitude, frequency); double radius = 0.02; RoundPEC roundPEC = new RoundPEC(radius, materialPEC, acousticWave); double speedOfSound2 = 3000; double density2 = 1.2; double fspl2 = 1.1; Material materialTO = new Material(speedOfSound2, density2, fspl2); TestObject testObject = new TestObject(materialTO, 0.2); attenuation = new AttenuationFresnelPlane(roundPEC, testObject); }