artsim - acoustic real- time simulation package a european collaboration based on the open source...
TRANSCRIPT
ARTSIM - Acoustic ARTSIM - Acoustic Real-Time Real-Time Simulation Simulation
PackagePackageA European Collaboration A European Collaboration based on the Open Source based on the Open Source
ConceptConcept
ADSLib – Acoustic Duct Simulation Library ASPack – Acoustic Simulation Package
ARTSPAC – Acoustic Real-Time Simulation Package
EMAS – European Musical Acoustics Simulation Library
EADS.Lib – European Acoustic Duct Simulation Library
ADSS – Acoustic Duct Simulation Software
Goal of the projectGoal of the project
Simulation package for arbitrary topologies of Simulation package for arbitrary topologies of acoustical ducts with realistic termination conditionsacoustical ducts with realistic termination conditions..
ApplicationsApplications
Computer Optimization of Wind InstrumentsComputer Optimization of Wind Instruments Interactive Design of Wind InstrumentsInteractive Design of Wind Instruments Accurate Modeling of arbitrary topologies Accurate Modeling of arbitrary topologies
(e.g. ventilation duct systems, exhaust (e.g. ventilation duct systems, exhaust systems)systems)
Bore reconstructionBore reconstruction Surface condition related loss Surface condition related loss
reconstructionreconstruction Determination of true termination Determination of true termination
impedance impedance
Final StageFinal Stage
Single Mode, Multi Mode, 2D+3D CFDSingle Mode, Multi Mode, 2D+3D CFD Frequency Domain, Time DomainFrequency Domain, Time Domain Basic building blocksBasic building blocks
straight and bent tubes and conesstraight and bent tubes and cones various kinds of side holes, bellsvarious kinds of side holes, bells various realistic (measured) termination conditionsvarious realistic (measured) termination conditions loss coefficients related to certain surface loss coefficients related to certain surface
conditionsconditions Easy interactive I/O, numerical & semi-Easy interactive I/O, numerical & semi-
graphicalgraphical
Primary ConceptsPrimary Concepts EfficiencyEfficiency – never calculate something – never calculate something
twicetwice FlexibilityFlexibility – allow any shape with shunt – allow any shape with shunt
impedances (tone holes)impedances (tone holes) ExtendibilityExtendibility – add new models at any – add new models at any
time without invalidating application time without invalidating application softwaresoftware
GeneralityGenerality – don’t restrict future models in – don’t restrict future models in any way, allow mixed mode simulationany way, allow mixed mode simulation
PortabilityPortability – generate code from abstract – generate code from abstract descriptions, don’t rely on specific descriptions, don’t rely on specific compiler/OScompiler/OS
Team Development Team Development – strict interfaces – strict interfaces
EfficiencyEfficiency Hierarchical representation with pre-Hierarchical representation with pre-
calculated propagation matrices of calculated propagation matrices of whole sections which are rarely whole sections which are rarely modified.modified.
Impedance cache for each section to Impedance cache for each section to avoid recalculation in case of constant avoid recalculation in case of constant upstream conditions.upstream conditions.
Notification mechanism invalidates only Notification mechanism invalidates only those cache entries which are affected those cache entries which are affected by the change of a geometric or by the change of a geometric or acoustical property value.acoustical property value.
Example: Pressing a keyExample: Pressing a key
Input Impedance known by CFD (e.g. Lattice-Boltzmann)
ZBell
ZOpen
Key up/down switches termination conditions
ZTerm= const !
ZUp
A 1 A 2
ZIn
A 3
Example: Pressing a keyExample: Pressing a key
Input Impedance known by CFD (e.g. Lattice-Boltzmann)
ZBell
ZOpen
Key up/down switches termination conditions
ZTerm= const !
ZDown
A 1 A 2
ZIn
A 3
Extendibility, GeneralityExtendibility, Generality
Object oriented approach Object oriented approach (inheritance of functionality, partial (inheritance of functionality, partial overload, new properties)overload, new properties)
Generic application interfaceGeneric application interface Enumeration of model capabilitiesEnumeration of model capabilities Model communicates its properties by Model communicates its properties by
name, type and descriptionname, type and description Application can register any property Application can register any property
for subsequent modificationsfor subsequent modifications Generic model and wave datatypesGeneric model and wave datatypes
PortabilityPortability
ANSI C++ANSI C++ No OS dependent librariesNo OS dependent libraries Generic graphical outputGeneric graphical output Simple application interface Simple application interface
compatible with VB, C++, Java, compatible with VB, C++, Java, Delphi… Delphi…
Open Source policy allows everybody Open Source policy allows everybody to create its own applications from to create its own applications from tested and proven technologies.tested and proven technologies.
Team DevelopmentTeam Development
UML DesignUML Design Abstract description of class Abstract description of class
dependencies enforces interface dependencies enforces interface disciplinediscipline
Documentation already on abstract Documentation already on abstract levellevel
Skeleton code generation for C++ Skeleton code generation for C++ includes all commentsincludes all comments
Version control systemVersion control system
UML RepresentationUML RepresentationCListNode
Succ : CListNodePred : CListNode
Create()Destroy()Replace()Pick()InsertBefore()InsertAfter()FindRoot()
CLinkedListHere : CListNodeHead : CListNodeTail : CListNode
Create()Destroy()Count()Empty()First()Last()Prev()Next()Goto()Find()
CAcousticElementName : stringUnits : doubleInstances : CLinkedListValidModel : BoolpProperties : CLinkedListpTerminals : int
CAcousticElement()~CAcousticElement()Terminals()Terminate()<<virtual>> RequestModel()<<virtual>> Evaluate()
CAcousticPropagation
<<virtual>> RequestModel()<<virtual>> Evaluate()
CConicalSliceLength : CRelValLeftDiameter : CRelValRightDiameter : CRelVal
RequestModel()Evaluate()
CContainer
<<virtual>> RequestModel()<<virtual>> Evaluate()
CCircularElement
RequestModel()Evaluate()
CHyperbolicElementInitialDiameter : CRelValInitialSlope : CRelValLength : CRelValOrder : CRelValRelativeError : CRelVal
RequestModel()Evaluate()
CAcousticTermination
RequestModel()<<virtual>> Evaluate()
COpenAirTemperature : double
Evaluate()
CPerfectReflection
Evaluate()
CComplexTerminationTerminationImpedance : CImpedance
Evaluate()CAcousticBranch
RequestModel()Evaluate()
CExponentialSlice
RequestModel()Evaluate()
CCylindricalSlice
RequestModel()Evaluate()
CToneholeElelement
RequestModel()Evaluate()