69
Research Collection Master Thesis Fluid-dynamic study of sound-induced vertigo Author(s): Benner, Carl-Friedrich Publication Date: 2014 Permanent Link: https://doi.org/10.3929/ethz-a-010395756 Rights / License: In Copyright - Non-Commercial Use Permitted This page was generated automatically upon download from the ETH Zurich Research Collection . For more information please consult the Terms of use . ETH Library

In Copyright - Non-Commercial Use Permitted Rights ...47433/... · Fluid-Dynamic Study of Sound-Induced Vertigo Carl-FriedrichBenner MechnicalEngineeringMaster MasterThesisHS2014

Embed Size (px)

Citation preview

Research Collection

Master Thesis

Fluid-dynamic study of sound-induced vertigo

Author(s): Benner, Carl-Friedrich

Publication Date: 2014

Permanent Link: https://doi.org/10.3929/ethz-a-010395756

Rights / License: In Copyright - Non-Commercial Use Permitted

This page was generated automatically upon download from the ETH Zurich Research Collection. For moreinformation please consult the Terms of use.

ETH Library

Fluid-Dynamic Study of Sound-Induced

Vertigo

Carl-Friedrich Benner

Mechnical Engineering Master

Master Thesis HS 2014

Institute of Fluid Dynamics

ETH Zurich

Supervisor: Bernhard Grieser

Professor: Thomas Rosgen

Abstract

Sound- and/or pressure-induced vertigo (Tullio phenomenon) was discovered already in 1929by P. Tullio. Later, the Tullio phenomenon was related to a dehiscence of bone overlaying thesuperior semicircular canal. Loud sounds or changes in middle ear or cranial pressure lead to afluid flow in the endolymph, enabled by the dehiscence acting as a third mobile window.

In this thesis, the steady streaming induced by sound is simulated using a fluid-structure in-teraction model implemented in OpenFOAM by B. Grieser. The goal of the simulations is toimprove the mechanistic understanding of the phenomenon and to analyze the influence of thefrequency and stapes velocity as well as the position of the dehiscence.

The comprehension of the underlying dynamics might facilitate new methods to cure the dis-ease.

v

Acknowledgements

The work on this thesis would not have been possible without the support of several people. Firstof all I would like to thank my supervisor Bernhard Grieser for his great support throughoutthe course of this thesis. He gave me the great opportunity to work on his project and sharedhis experience in the topics of computational fluid dynamics with me. Also I would like to thankhis supervisors, Prof. Rosgen and Prof. Kleiser. I would also like to express my thanks to Prof.Obrist, who shared some of his ideas with me.

For reading and correction a huge thanks goes to Matthias Naf and Suma Wittwer. Finally Iwould like to thank my friends and my family for their great support throughout my studies atthe ETH Zurich.

Zurich, January 2015

vi

Contents

Contents

Nomenclature vi

1. Introduction 1

2. Medical Background 2

2.1. Anatomy of the Vestibular System . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2. Dehiscence of the Superior Semicircular Canal . . . . . . . . . . . . . . . . . . . . 4

3. Mathematical Modeing 8

3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2. Analytical Derivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2.1. Perilymph Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2.2. Elastic Membrane Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.3. Endolymph Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3. Numerical Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.4. Dimensional Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4. Results 18

4.1. Fluid Mechanic Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.2. Steady Endolymph Streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.2.1. Eulerian Streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.2.2. Lagrangian Streaming and Stokes Drift . . . . . . . . . . . . . . . . . . . 244.2.3. Momentum Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.3. Influence of Youngs Modulus and Frequency . . . . . . . . . . . . . . . . . . . . . 304.4. Influence of Active and Passive Domain Length . . . . . . . . . . . . . . . . . . . 324.5. Numerical Convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5. Discussion 38

6. Outlook 39

References 40

List of Figures 43

A. Postprocessing C++: Calculate Eulerian and Lagrangian Flow Profiles 44

B. Postprocessing C++: Calculate Complete Flow Field 53

vii

Nomenclature

Nomenclature

Roman letters

Ae Cross-sectional area of the endolymph

Ap Cross-sectional area of the perilymph

Cm Mass coefficient

Cd Damping coefficient

Cs Spring coefficient

E Young’s modulus

f Stapes frequency

Fj Net force per unit volume

hs Membrane thickness

Ko Korteweg number

L1 Position of the dehiscence

L2 Length of the semicircular canal

L Fluid loading

ue Velocity of the endolymph

ue Steady streaming velocity of the endolymph

Ue Bulk velocity of the endolymph

U e Mean steady streaming velocity of the endolymph

ug Grid velocity of the endolymph

up Velocity of the perilymph

Up Bulk velocity of the perilymph

pe Pressure of the endolymph

viii

Nomenclature

pp Pressure of the perilymph

pe,Γ Pressure of the endolymph at the membrane

∆pe Pressure gradient over the membrane

r Radial coordinate

r0 Radius of membranous pipe

Rij Reynolds stresses

W0 Reference stapes velocity

x Axial coordinate

Greek letters

α Womersley Number

β Perilymph dominance

ǫ Pseudo-viscous damping

ǫAI Aitken iteration error

ǫBV Beat volume error

η Membrane displacement

γ Membrane weight

κ1 Dimensionless location of dehiscence

κ2 Dimensionless length of SCC

νs Poisson’s ratio of membrane

ω Stapes frequency

ρe Density of endolymph

ρp Density of perilymph

ρs Density of elastic membrane

θ Blending factor of generalized Euler method

ix

Chapter 1. Introduction

1. Introduction

In 1929, Tullio has performed experiments on pigeons proving that reactions of the vestibularsystem could be evoked by the means of sound [1]. In cases where a small opening was made intothe bony labyrinth near the semicircular canals, the pigeons showed a typical head movementin response to loud sound. For his groundbreaking work, vertigo or other abnormal vestibularsensations with resulting head and/or eye movement are named after the Italian scientist PietroTullio. These findings have been proven in other studies several years later [2]. In 1998, Minorstudied eight patients suffering from vertigo and nystagmus induced by sound and/or changesin middle ear or intracranial pressure. In computed tomography scans a dehiscence of boneoverlaying one of the semicircular canals was found in every patient [3]. This pathology relatedto sound- and/or pressure-induced vertigo was also studied by others [4, 5].

Vertigo and nystagmus are the consequences of a fluid flow in the endolymph of the semicircularcanal inside the vestibular system, induced by sound or pressure change and facilitated by thedehiscence. This dehiscence acts besides the round and oval window in the internal ear as anadditional third window and allows an abnormal pressure transmission [6, 7]. Steady streamingmay be a result of nonlinear fluid-structure interaction [8, 9, 10]. First attempts to model thepathology with a network of impedances were done by Songer [11, 12].

In this thesis, the sound-induced steady streaming is simulated using a fluid-structure systemof the semicircular canal as provided in the work of Grieser [13]. The goal is to improve theunderstanding of the streaming effect, using parameter studies and analyzing the momentumflow in the domain. Especially the effect of the frequency and the stapes velocity onto thestreaming amplitude is studied. The decoupling of the stapes velocity from the frequency in theparameter studies allows a better understanding of the non-linear fluid-structure interaction.Furthermore the influence of the position of the bone dehiscence was studied.

1

Chapter 2. Medical Background

2. Medical Background

2.1. Anatomy of the Vestibular System

The human ear is the organ of hearing and balance. It consists of three parts (see figure 2.1):

• External ear: Consists of the auricle, the external acoustic meatus and the tympanicmembrane.

• Middle ear: Comprises the three auditory ossicles, malleus, incus and stapes, which con-duct and amplify sound waves from the external to the internal ear.

• Internal ear: Contains the organ of hearing (cochlea) and balance (vestibular system).

Elastic cartilages

Auditory ossicles

Semicircular canals

Vestibule

Vestibulocochlear nerve

Cochlea

Round windos

Auditory tube

Oval window

Tympanic cavityTympanic membraneExternal acoustic

meatus

Auricle

Figure 2.1.: The human ear [14].

The internal ear embodies a series of bony cavities, the bony labyrinth (see figure 2.2) [15]. Thebony labyrinth contains the vestibule, the three semicircular canals (SCC) and the cochlea whichare filled with a water-like fluid, the perilymph. Within the bony labyrinth and surrounded by

2

2.1. Anatomy of the Vestibular System

perilymph is the membranous labyrinth. It is separated by a membrane and filled with anotherwater-like fluid, the endolymph. The membranous labyrinth consists of the cochlear duct, theutricle, the saccule and the slender ducts of the SCCs. The cochlear duct is the organ of hear-ing while the three semicircular canals, the utricle and the saccule belong to the sense of balance.

Cristae within ampullae

Utricle

Saccule

Vestibulocochlear nerve

Cochlea

Tympanic duct

Cochlear duct

Vestibular duct

Posterior

Lateral

Anterior

Bony labyrinth

Membranous labyrinth

Figure 2.2.: The inner ear containing the cochlea and the sense of balance [16].

The utricle and the smaller saccule detect linear accelerations. The three semicircular canals(lateral, anterior/superior and posterior) are responsible for the sense of angular acceleration.They form each 2/3 of a circle and end on both sides in the utricle. The alignment of the SCCsis roughly orthogonal and allows the detection of rotations in any direction. One end of eachcanal forms a small enlargement, the ampulla. Inside the ampulla is the cupula, a deformablemembrane, which works as a transducer. The movement of the membrane is detected by attachedhair cells.

A rotation of the head leads to a fluid flow of the endolymph relative to the bony labyrinth, dueto the fluids inertia. The fluid flow leads to a deformation of the cupula, which is then sensedby the hair cells. The plane of the stimulated semicircular canal aligns with the plane of headrotation [17, 18].

During rest of vestibular system the hair cells fire signals at about 200 Hz. In the superior canal,an ampullofugal fluid flow of the endolymph, i.e. a flow away from the ampulla, results in anincreasing, excitatory firing rate of the hair cells. A flow in the counter direction, ampullopetal,inhibits the firing rate. The sensation of angular motion is roughly proportional to the deflectionof the cupula [19].

3

2.2. Dehiscence of the Superior Semicircular Canal

During the perception of sound, the acoustic waves are transmitted via the middle ear to thestapes. The stapes transduces the sound vibrations through the oval window to the perilymph-filled vestibule in order to stimulate the cochlea (see figure 2.1). As the sense of balance iswithin the same perilymph, the oscillation of the stapes also affects a motion of the endolymphof the vestibular system. The human ear is capable of perceiving frequencies in between 20 and20000 Hz. The sensitivity of perception of angular acceleration is restricted to low-frequencymovements below one Hz [19], so that under normal circumstances a high frequency motion ofthe stapes has no influence on the sense of balance.

2.2. Dehiscence of the Superior Semicircular Canal

Canal dehiscence describes an incidence where the overlaying bone of one of the semicirularcanals is very thin (see figure 2.3). In most cases the superior semicircular canal is affected [5]and is found to be the underlying pathology in patients suffering from the Tullio phenomenon[3].A dehiscence not necessarily results in vertigo and nsytagmus [20, 5], but in about 90 % of thepatients these symptoms show up [21].

Figure 2.3.: Computed tomography images of the superior semicircular canal. Picture (a) shows asuperior SCC where the overlaying bone is dehiscent. In Picture (c) the superior SCCis intact. Taken from [5].

4

2.2. Dehiscence of the Superior Semicircular Canal

In these cases the vertigo and nystagmus is sound- and/or pressure-induced [3, 4]. It is triggeredat low frequencies (0.5 - 2 kHz) [6] or by a change in cranial or middle ear pressure, which canbe achieved by Valsalva maneuvers against pinched nostrils or closed glottis [5].

The Tullio effect is related to a change of pressure boundary condition. The opening at theperilymph of the SCC acts as a third window besides the oval and round window (see figure2.4) [6, 7]. At the dehiscence, the pressure in the perilymph is equalized to the intracranialpressure.

s

s

dehiscence

stapes

ampulla

utricle

saccule

pressure b.c.

perilymph

path

way

perily

mph

pathway

Figure 2.4.: Schematic overview of the superior semicircular canal with bone dehiscence. Themovement of the stapes induces an ampullofugal endolymph flow (colored blue). Takenfrom [19].

The new boundary condition has several side effects. During the perception of sound, apart fromthe cochlea also an oscillation in the perilymph of the semicircular canals is induced throughthe stapes, as described above. Normally, this has no influence on the vestibular system, asthe perception of acceleration is at much lower frequencies than the perception of sound inthe cochlea. But patients with a dehiscence possibly experience a net flow, a streaming, indirection to the dehiscence (ampullofugal). This acoustic streaming could be invoked by thenonlinear fluid - structure interaction. The dissipation of acoustic energy flux permits gradientsin the momentum flux to force acoustic streaming motions [8]. The sound-induced streamingin the superior semicircular canal leads to a deflection of the cupula until a new equilibrium isestablished or the stimulus has stopped. The deflection of the cupula in ampullofugal directionhas an excitatory effect on the firing rate of the hair cells. The vestibular system assumes thata head maneuver is being performed. Enhanced by the vestibulo-occular reflex unvoluntary eyemovements occur. These eye movements have been observed in clinical studies [3, 6].

Similar eye movements can be observed: performing a Valsalva maneuver against pinched nostrilsincreases middle ear pressure [3]. Through the dehiscence a pressure gradient between the middleear and cranial pressure induces an ampullofugal flow. On the other side, a Valsalva maneuveragainst closed glottis increases the cranial pressure and induces an ampullopetal flow.

5

2.2. Dehiscence of the Superior Semicircular Canal

For a sound- or pressure-induced ampullofugal flow, the eye movements are typically upwardsand rightwards if the left ear is affected. If the right ear is affected these eye movements aretypically upwards and leftwards from the patients point of view.

An induced ampullopetal flow evokes upward eye movements in the opposite horizontal direction.The typical ocular tilt reaction (OTR) of a patient with dehiscence of the superior semicircularcanal in the right ear can be seen in figure 2.5. The eye movement in this particular case areupward and counter-clockwise. Thus, the right ear is affected.

Figure 2.5.: Vertical-torsional eye movements recorded from the right eye in response to a 3 kHztone at 110 dB in the affected right ear. Taken from [18].

The plane of the eye movement aligns with the plane of the affected semicircular canal [4, 22].Therefore, a dehiscence of the superior semicircular canal evokes eye movements with verticaland horizontal components. The intensity of these symptoms increases with larger size of thesuperior canal dehiscence [23].

Measurements of vestibular evoked myogenic potentials (VEMP) come in useful in clinical iden-tification of vertigo [24]. The sound-intensity threshold of VEMP is often decreased in patientswith semicircular dehiscence (SCD) [25]. Additionally, patients with SCD can have an apparentconductive hearing loss due to energy dissipation at the third window [26].

A reason for dehiscence might be a failure of postnatal bone development [27]. Patients affectedby this deficit are predisposed to disruption by trauma [27]. Another cause of dehiscence couldbe bone erosion by chronic infection and inflammation leading to resorption of the osteotis [28].

6

2.2. Dehiscence of the Superior Semicircular Canal

Most people gain control of their symptoms by avoidance of sound and pressure stimuli [29]. Insevere incidences the dehiscence can be artificially resurfaced in a surgical procedure. Alterna-tively, the dehiscent semicircular canal can be totally plugged, resulting in the loss of sense ofthe affected canal [30, 5].

7

Chapter 3. Mathematical Modeing

3. Mathematical Modeing

3.1. Overview

The mathematical model of the vestibular system used for the following studies was derived andimplemented in OpenFOAM by Grieser [13, 31]. The simulations were implemented as serialalgorithms and performed on scientific linux, using a quad core 3.2 GHz processor.

The superior semicircular canal of the vestibular system is modeled as an unbowed pipe (seefigure 3.1) to simplify the computation. The fluid annulus is filled with the perilymph, which isexcited at one side by the stapes. The inner core is filled with endolymph. These two fluids areseparated by a thin membrane of the membranous labyrinth (see figure 3.1).

The computational domain is devided into two parts. The first part ranges from the stapes atx = 0 to the dehiscence, x = L1. In this part of the domain the major streaming effects occur,therefore called active part. The section between dehiscence, x = L1, and utricle, x = L2, isthe passive part of the system. In the following, the stapes side of the domain, x = 0 , will bereferred as inlet. The utricle side, x = L2, will be referred as outlet. The positive axial axispoints in direction from the stapes to the dehiscence. The positive radial axis points from centerof the endolymph outwards to the membrane and perilymph.

transl

ational

sensor

affere

nts

x=L2

x=L1

dehiscenceof bone

x=0

utricle

middleear

amp.

cranialcavity

stapes

rotational

sensor

afferents

dura mater

temporalbone

ampulla

x=0

r0

active

part

perilymph

ue

r

dehiscence

endolymph

x=L1

2-dim.

1-dim.

η=r−r0

peril.

passive

part

x

up

pp

ue

∆pe

displacedcupulavolume

x=L2

utricle

pe

Vc

Ae

Ap

x

Figure 3.1.: Numerical model of the vestibular system. Taken from Grieser [13].

8

3.2. Analytical Derivation

As the vestibular system with its fluid-structure interaction is quite complex, numerous assump-tions have been made. A short overview over the governing assumptions and equations is givenin the following sections to give an impression of the non-linear fluid-structure interaction. Adetailed derivation and implementation of the model can be governed from [13].

3.2. Analytical Derivation

3.2.1. Perilymph Flow

The perilymph of the annulus is treated as one-dimensional, incompressible flow in axial direc-tion. It is modeled as viscous fluid using a pseudo damping. The mass conservation can bewritten as:

∂(Apup)

∂x= −

∂Ap

∂t, (3.1)

where Ap is the cross-sectional area of the perilymph and up the axial velocity. As the flow istreated one-dimensional, the perilymph velocity in radial direction is zero.

Using a pseudo damping model where the viscous stress is linear to the absolute velocity, themomentum conversation of the perilymph reads:

∂(Apup)

∂t+ ǫApup = −

Ap

ρp

∂pp∂x

, (3.2)

where pp is the perilymph pressure, ρp the fluid density and ǫ the pseudo-viscous dampingparameter. For high Womersley numbers Wo, i.e. Wo >> 1, this damping becomes [13]

ǫ ≈ ω. (3.3)

Due to the fixed embedding of the system into the bone, the total cross-section of annulus andcore need to be constant. The change of area of the annulus and the core can be related to theradial velocity of the membrane, η:

∂Ap

∂t= −

∂Ae

∂t= −2πrη. (3.4)

Grieser [13] has shown that these equations can be combined and linearized to the followingexpression,

∂2pp∂x2

≈ −2πρpr0Ap,0

(η + ǫη). (3.5)

9

3.2. Analytical Derivation

The following boundary conditions are set for the perilymph. At the stapes, the predefinedstapes velocity is applied:

up|x=0(t) = u0 cos(ωt) (3.6)

The resulting pressure at the inlet can be calculated using equation 3.2:

∂pp∂x

|x=0

≡ Π0(t) = ρpu0(ω sinωt− ǫ cosωt). (3.7)

At the dehiscence, x = L1, and the utricle, x = L2, the following boundary conditions are set:

pp|x=L1= 0, (3.8)

∂pp∂x

|x=L1

= 0. (3.9)

The pressure distribution can be calculated by integrating equation 3.5 with the specified bound-ary conditions. Depending on the part of domain, active or passive, for which the pressure iscalulated, the boundary conditions need to be adopted. The following pressure distribution canbe gained for the active part,

pp = pp|x=L−

∫ x=x

x=0

∂pp∂x

|x=0

dx−

∫ x=L1

x=x

∫ ˜x=x

˜x=0

∂2pp∂x2

(˜x)d˜x. (3.10)

This can be similarly done for the passive part of the domain [13].

3.2.2. Elastic Membrane Motion

The elastic membrane which couples the perilymph and the endolymph is modeled as one-dimensional mass-spring system [13]. The membrane excitation is restricted to radial directionsand structural damping is neglected.

The driving force for the membrane movement is the pressure difference between perilymph, pp,and endolymph, pe,Γ, evaluated at the membrane wall. Introducing the membrane’s density, ρs,membrane radius, r0, membrane thickness, hs, Young’s modulus, E, and Poisson’s ratio, ν, theresulting differential equation for the membrane displacement, η, reads [13]:

ρshsη +Ehs

r20(1− ν2s )η = pe,Γ − pp. (3.11)

10

3.2. Analytical Derivation

Substituting the perilymph pressure, pp, by equation 3.10 as done in [13] results in a partialintegro-differential equation for the coupled perilymph-membrane system:

(

ρshs + ρp2πr0Ap,0

∫ L

x

∫ x

0(·)d˜xdx

)

η +

(

ǫρp2πr0Ap,0

∫ L

x

∫ x

0(·)d˜xdx

)

η

+

(Ehs

r20(1− ν2s )

)

η = pe,ω(x, t) + ρpu0(ω sin(ωt)− ǫ cos(ωt))x (3.12)

With definition of mass coefficient,

Cm ≡ ρshs + ρp2πr0Ap,0

∫ L1

x

∫ x

0(·)d˜xdx, (3.13)

damping coefficient,

Cd ≡ ρp2πr0Ap,0

∫ L

x

∫ x

0(·)d˜xdx, (3.14)

spring coefficient,

Cs ≡Ehs

r20(1− ν2s ), (3.15)

and a variable for the right-hand side,

d(x, t) ≡ pe,ω(x, t) + ρpu0(ω sin(ωt)− ǫ cos(ωt))x, (3.16)

equation 3.12 can be rewritten as a system of first-order equations,[Cm Cd

0 1

]

︸ ︷︷ ︸

=:M

[ηη

]•

︸︷︷︸

=:e

=

[0 −Cs

1 0

]

︸ ︷︷ ︸

=:N

[ηη

]

+

[d(x, t)

0

]

︸ ︷︷ ︸

=:q

. (3.17)

Using the matrices M , N and vectors e, q as defined in equation 3.17, the system of differentialequations can be simplified to

Me = Ne+ q. (3.18)

Note, that this system describes the coupling of the active part of the domain. The system ofdifferential equations defining the passive part of the domain looks similar with the differencethat for the definition of the perilymph pressure, pp, other pressure boundary conditions havebeen used. Those equations can be found in [13].

11

3.3. Numerical Implementation

3.2.3. Endolymph Flow

The endolymph flow is treated as an incompressible flow and is described by the full Navier-Stokes equation.

∇ · ue = 0, (3.19)

and

∂ue∂t

+ (ue · ∇)ue = −1

ρe∇p+ ν∇2ue, (3.20)

where ue is the endolymph velocity, ρe the density and ν the dynamic viscosity of the en-dolymph.

At the inlet, x = 0, and the outlet, x = L2, the pressures are set to zero, as the endolymph endson both sides in the relatively large utricle:

pe|x=0= 0, (3.21)

pe|x=L2= 0. (3.22)

The pressure over the cross-section of the endolymph is assumed to be constant. At the movingmembrane, a no-slip boundary condition is defined. In the center of the core flow a symmetricboundary condition is used, as we perform the simulations in an axisymmetric domain.

3.3. Numerical Implementation

All equations are implemented in OpenFoam 1.6-ext using the finite volume method. Due to thetangential symmetry of the problem, the domain is discretized only in axial and radial direction.In tangential direction only a single wedge of 5◦ is resolved.

The coupled perilymph-membrane equation is discretized in axial direction. The integrals for themass coefficients and damping coefficients in equation 3.13, 3.14 respectively, are represented by

12

3.3. Numerical Implementation

discretized operators A and B. Discretization of these integrals is performed in axial directionfor the active and the passive domain, using the trapezoidal rule

∫ x=b

x=a

(·)dx =b−1∑

i=a

(·)i + (·)i+1

2∆x. (3.23)

Rearrangement of the membrane equation 3.18 yields,

e = M−1Ne+M−1q. (3.24)

The time integration is performed using the generalized Euler method of blending factor θ ∈ [0, 1]

en+1 − en

∆t= θ · en+1 + (1− θ)en. (3.25)

Using the specified time disretization 3.25, the system of differential equation 3.24 can be formedinto

∆en+1 = K(N en + θqn+1 + (1− θ)qn

), (3.26)

where K is a coefficient matrix [13].

The endolymph is computed with the full Navier-Stokes equation as described in the previ-ous section. Due to fluid-structure interaction between the endolymph flow and the coupledperilymph-membrane system, an iteration process is needed each time step. Therefore an Aitkeniteration cycle has been implemented according to Kuttler [32].

The computation of the whole fluid-structure system proceeds as in figure 3.2. After evaluationof the stapes boundary condition of the perilymph, a first estimation of the perilymph pressuredistribution is done.

The Aitken iteration starts with the calculation of a suitable membrane displacement. After anunderrelaxation of the membrane displacement the mesh of the endolymph domain is moved.Using finite volume methods (FVM) the fluid flow of the endolymph can be estimated. Evaluat-ing the endolymph pressure at the membrane an updated right hand side q used in equation 3.26can be calculated. Entering the next Aitken iteration step, an updated membrane displacementcan be computed.

If the change between the last updated membrane displacement compared to the one calculatedin the previous Aitken iteration is sufficiently small the postprocessing of the actual time stepis performed. The convergence of the Aitken iteration is shown in figure 4.17.

13

3.3. Numerical Implementation

Initial

Conditions

Solve

displacement

Underrelax

motion

Move meshSolve fluid of

endolymph

Check for

convergence

Calculate stapes

boundary

Estimate first

iteration right

hand side d

Postprocessing

Write Output Time

step

Aitken -

iteration

Figure 3.2.: Overview of time iterations with Aitken subiteration

Initially, when the total system is at rest, the stimulation is applied by the stapes. To avoidnumerical instabilities during the first steps, the motion amplitude of the stapes is smoothlyincreased. A rapid stimulation of the stapes would yield in high pressure and velocity gradients.Therefore, a window function is implemented as in [13] in form of

f (t) =1

2

(

1 + tanh

(

τ

(

t−t992

)))

(3.27)

with a constant τ = loge(99)t99

. The modified stapes amplitude can be calculated by:

ηs (t) = f(t)W

ωsin (ωt) (3.28)

14

3.3. Numerical Implementation

The shape of the window function and the effect on the stapes displacement can be seen in figure3.3a and 3.3b.

f(t)

Time [s] ×10−3

0 1 2 3 4 5

0

0.2

0.4

0.6

0.8

1

(a) Window function, f(t)

Filtered

Unfiltered

Stapes

Displacement[m

]

Time [s]

0 0.005 0.01

−1

−0.5

0

0.5

1

(b) Resulting stapes displacement, η

Figure 3.3.: Window function and stapes displacement [13].

As the streaming effect is a steady state phenomenon it is necessary to simulate the systemuntil the beat volume is sufficiently small. The beat is induced by the transient oscillation. Thebeat volume is calculated by the change of the endolymph total pipe volume, V , over the lastoscillation, T.

ǫBV = V (t)− V (t− T ) (3.29)

The solver simulates the flow until the beat volume is below a specific threshold [13]. The decayof this beat volume is shown in figure 4.16.

15

3.4. Dimensional Analysis

3.4. Dimensional Analysis

The results in chapter 4 will be compared to the results of Grieser [13]. In the work of Grieseran empirical formula for the steady endolymph streaming, Re, was derived in dependence ofof the stapes velocity, Ws, the stapes frequency, f and the Young’s modulus of the membrane,E.

The following 8 dimensionless parameters were defined for the empirical relationship [13].

Location of dehiscence κ1 ≡L1

r0(3.30)

Length of SCC κ2 ≡L2

r0(3.31)

Perilymph dominance β ≡Ap,0

r20π(3.32)

Membrane weight γ ≡ρsρf

(3.33)

Fluid loading L ≡ρf2r0ρshs

(3.34)

Reynolds number Re ≡Upr0νf

(3.35)

Womersley number Wo ≡ r0

√ω

νf(3.36)

Korteweg number Ko ≡

√Eh

ρf2r0r0

νf(3.37)

The steady endolymph streaming, Re, can be expressed by an empirical relationship in depen-dence of the dimensionless parameters [13]:

Re =U e2r0νf

=K1Re2

(WoKo2)K2

log10

(K3Wo2

Ko

)

log10

(K4Ko2

Wo3

)

(3.38)

16

3.4. Dimensional Analysis

The fitting parameters, K1, K2, K3 and K4 used in equation 3.38 are shown in table 3.1

K1 0.6309442114158

K2 0.1910392050910

K3 15.5597293553919

K4 104.0120839876870

Table 3.1.: Fitting parameters for the steady streaming Reynolds number, Re, at perilymph dom-inance β = 10, membrane weight, γ = 1.2, and arm’s length, Taken from [13].

Note that in equation 3.38 the position of the dehiscence is held constant at κ = 31.25 .

17

Chapter 4. Results

4. Results

4.1. Fluid Mechanic Behavior

The following section provides an overview of the fluid mechanical behavior of the coupledsystem. For the presented figures and results, the vestibular system was simulated with a stapesvelocity, W = 2.5mm/s, a stapes frequency, f = 1000Hz, a Young’s modulus of the membrane,E = 40kPa and a membrane thickness of hs = 20µm. These properties were taken from [13].

The stapes stimulation of the perilymph at x = 0 leads to high pressure fluctuation, pp, inthe perilymph domain at the inlet. The pressure amplitude decreases towards the dehiscenceat x = L1, where the perilymph pressure reaches zero due to the defined boundary conditionas defined in chapter 3. Beyond the dehiscence in the passive domain, x > L1, the pressurefluctuations are significantly lower as seen in figure 4.1a.

Also the displacement of the membrane, η, reaches its maximum excitation at the stapes. Al-though the pressure fluctuation of the perilymph (see figure 4.1a) is very small beyond thedehicence, x > L1, the membrane is still excited (see figure 4.1b). At the dehiscence, themembrane displacement shows an unsteadiness.

The pressure distribution in the endolymph, pe, is constant in radial direction due to the bound-ary condition as specified in chapter 3. The pressure of the endolymph is zero at the ampullaside, x = 0, and the utricle side, x = L2, due to the boundary condition. In between it forms akind of standing wave with nodes and antinodes (see figure 4.1c).

A snapshot of the velocity field of the endolymph flow can be seen in figures 4.2a and 4.2b.The waves propagate from the stapes side towards the dehiscence, x = L1. As for the pressure,also the velocity amplitude decreases towards the dehiscence. The axial velocity (see figure4.2a) is relatively constant over the cross-section, what could be expected for a flow with highWomersley number. The radial velocity component has its maxima at the membrane side dueto the velocity coupling. The order of magnitude of the radial velocity is significantly lower asfor the axial component.

18

4.1. Fluid Mechanic Behavior

pp[P

a]

x [mm]

0 1 2 3 4 5 6 7 8 9−40

−20

0

20

40

(a) Pressure of the perilymph at different time steps (solid lines)and the referring envelope (red dashed line). The dehiscenceis at x = 5mm (black dashed line).

η[µm]

x [mm]

0 1 2 3 4 5 6 7 8 9−1

−0.5

0

0.5

1

(b) Membrane excitation at different time steps (solid lines) andthe referring envelope (red dashed line). The dehiscence is atx = 5mm (black dashed line).

pe[P

a]

x [mm]

0 1 2 3 4 5 6 7 8 9

−50

0

50

(c) Pressure field of the endolymph at different time steps (solidlines) and the referring envelope (red dashed line). The de-hiscence is at x = 5mm (black dashed line).

Figure 4.1.: Pressure distribution in the endolymph and the perilymph and membrane excitation.The simulation was performed with f = 1000Hz, E = 40kPa and stapes velocityW = 2.5mm/s.

19

4.1. Fluid Mechanic Behavior

ue,x[m

m/s]

r[µm]

x [mm]

0 1 2 3 4 5 6 7 8 9−20

−10

0

10

20

0

20

40

60

80

100

120

140

160

(a) Axial velocity component, ue,x, of endolymph.

ue,r[m

m/s]

r[µm]

x [mm]

0 1 2 3 4 5 6 7 8 9

−4

−2

0

2

4

0

20

40

60

80

100

120

140

160

(b) Radial velocity component, ue,r, of endolymph.

Figure 4.2.: Snapshot of the endolymph velocity field. The simulation was performed with f =1000Hz, E = 40kPa and stapes velocity W = 2.5mm/s. The dehiscence is located atx = 5mm (dashed line).

20

4.1. Fluid Mechanic Behavior

Comparing the Eulerian flow profile of the endolymph at different time steps at the stapes side,x = 0, and the utricle side, x = L2, it is apparent that the velocity fluctuations near the stapesare higher than near the utricle side (see figure 4.3). At the stapes the flow magnitude is about25mm/s and decreases down to 0.5mm/s at the utricle.

r[µm]

u[mms

]−20 −10 0 10 20

0

40

80

120

160

(a) Axial velocity profile at the inlet at different timesteps (dashed lines). Resulting mean flow profile(red solid line).

r[µm]

u[mms

]−2 −1 0 1 20

40

80

120

160

(b) Axial velocity profile at the outlet at differenttime steps (dashed lines). Resulting mean flowprofile (red solid line).

Figure 4.3.: Comparison of the axial velocity profile at the inlet and outlet of the the endolymph.The simulation was performed with f = 1000Hz, E = 40kPa and stapes velocityW = 2.5mm/s.

21

4.2. Steady Endolymph Streaming

4.2. Steady Endolymph Streaming

In this section the steady streaming in the endolymph will be studied. This steady streamingis caused by the non-linear fluid structure interaction [8]. A detailed description of this effect isgiven in subsection 4.2.3.

4.2.1. Eulerian Streaming

The steady streaming velocity, ue(r, x), is computed by averaging the velocity, une (r, x, t), overthe last time period.

ue =1

N

N∑

n=1

une (r, x, t), (4.1)

where N are the number of time steps of the last period. The velocity field of the endolymph iscomputed and evaluated using a post-processing C++ algorithm (see appendix A). The steadystreaming velocity in axial direction can be seen in figure 4.5.

Ue[m

m/s]

r[µm]

x [mm]

0 1 2 3 4 5 6 7 8 9−0.5

−0.25

0

0.25

0.5

0

20

40

60

80

100

120

140

160

Figure 4.4.: Mean streaming velocity, ue, in the endolymph (Eulerian formulation). Simulationwith f = 1000Hz, E = 40kPa and W = 2.5mm/s. The dehiscence is located atx = 5mm (dashed line).

The major steady streaming at the stapes side of the endolymph is in the region near themembrane. There, the highest steady streaming velocities of about ue = 0.55mm/s occur. In

22

4.2. Steady Endolymph Streaming

the center near the stapes a reverse flow can be observed. The average steady streaming velocityin this case is U e ≈ 0.4mm/s.

The steady streaming flow profile at different cross-sections in axial direction is shown in figure4.5. As already seen in figure 4.4, it is notable that the main streaming effect is near the stapesdirectly beneath the membrane. Towards the dehiscence, the mean streaming velocity profilebecomes smoother and gets the shape of a Poiseuille flow profile where

ue(r) = ue,max

(

1−r2

r20

)

(4.2)

Note, that the steady streaming mass flux through different cross-sections is constant due to theconservation of mass.

L2L1x = 0 mm

r=

−r 0

r=

0mm

r=

r 0

Figure 4.5.: Eulerian velocity flow profiles of the endolymph at different cross-sections. Simulationwith f = 1000Hz, E = 40kPa and W = 2.5mm/s. The dehiscence is located atx = 5mm (dashed line).

23

4.2. Steady Endolymph Streaming

4.2.2. Lagrangian Streaming and Stokes Drift

The trajectory, ξ(t, ξ0, t0), of a passive particle injected into the flow at time t = t0 and initialposition ξ(t0) = ξ

0is analytically described by

dt= u(ξ(t), t) (4.3)

Due to the numerical implementation, the velocity field of the endolymph, une (x), is only knownat specific time steps, tn. Thus, the time integration for the trajectory is implemented usingthe Heun method which refers to a modified Euler method [33]. In a first step an intermediate

particle position, ξn+1

(ξ0, t0), is calculated

ξn+1

(ξ0, t0) = ξn(ξ0, t0) + une (ξn(ξ0, t0))∆t. (4.4)

The new position of the particle is calculated, using the averaged velocity of the actual particleposition and the intermediate particle position.

ξn+1 = ξn +1

2

(

une (ξn) + une (ξ

n+1))

∆t (4.5)

During the course of a single stapes oscillation the particles are describing an elliptical trajectory.One semi-axis of the trajectory aligns in radial direction and its length increases from the centerof the endolymph towards the membrane. Thus, the motion of particles in the center of the flowtake place only in axial direction. Near the membrane the particle movement in radial directionreaches its maximum. The other semi-axis aligns in axial direction, its length decreases inpositive axial direction. Thus, the axial particle movement reaches its maximum at the stapesside (see figure 4.6).

24

4.2. Steady Endolymph Streaming

Due to the steady streaming in the endolymph the particles have a small net axial displacementafter one stapes oscillation, N time steps. The magnitude of this net displacement is at least oneorder smaller than the magnitude of the elliptical trajectory. From the net axial displacement thesteady streaming velocity of the particle in Lagrangian formulation, ue,L, can be calculated.

ue,L =dξ

dt(r, x) = f ·

(ξn+N (r, x)− ξn(r, x)

), (4.6)

where f is the frequency. Inserting a field of particles and calculating their displacement, thesteady streaming velocity field in Lagrangian formulation of the endolymph can be computed(see figure 4.7).

x [mm]

r [μm]

Δx [μm]

Δr [μm]

160

80

0

x = 0 x = L2x = L1

Figure 4.6.: Trajectories of several passive particles over one stapes oscillaton. The particles areinjected in a 3x4 matrix pattern into the endolymph. In radial direction they areinjected in the center of the flow, r = 0µm, at r = 80µm and near the membrane,r = 160µm. In axial direction the particles are injected at the inlet, x = 0mm,x = 3mm, x = 6mm, and the outlet x = 9mm. Simulation with f = 1000Hz,E = 40kPa and W = 2.5mm/s. The dehiscence is located at x = 5mm.

25

4.2. Steady Endolymph Streaming

The maximum steady streaming velocity of the particles is in the near wall region at the stapes.It is not directly at the membrane as for the Eulerian steady streaming velocity. In the center ofthe endolymph the particle flow at the stapes is reversed. Towards the dehiscence the maximumLagrangian steady streaming shifts to the center.

ξ[mm/s]

r[µm]

x [mm]

0 1 2 3 4 5 6 7 8 9−0.5

−0.25

0

0.25

0.5

0

20

40

60

80

100

120

140

160

Figure 4.7.: Mean streaming particle velocity in the endolymph (Lagrangian formulation). Simu-lation with f = 1000Hz, E = 40kPa and W = 2.5mm/s. The dehiscence is locatedat x = 5mm (dashed line).

26

4.2. Steady Endolymph Streaming

A comparison of the Eulerian and Lagrangian steady streaming velocity profiles and resultingStokes drift at different cross sections can be seen in figure 4.8. The Stokes drift, ue,S , is thedifference between the Eulerian, ue,E , and Lagrangian, ue,S , streaming.

ue,S = ue,E − ue,L (4.7)

L2L1x = 0 mm

r=

−r 0

r=

0mm

r=

r 0

Figure 4.8.: Comparison of the Eulerian and Lagrangian steady streaming velocity profiles and theresulting Stokes drift. The Eulerian velocity profile is colored blue, the Lagrangianvelocity profile red and the Stokes drift profile green. Simulation with f = 1000Hz,E = 40kPa and W = 2.5mm/s. The dehiscence is located at x = 5mm (dashed line).

27

4.2. Steady Endolymph Streaming

4.2.3. Momentum Transport

As already mentioned in the previous section, the steady streaming in the endolymph is a resultof the momentum transport in the fluid. One important mechanism of this acoustic streamingis the forcing of the flow by Reynolds stresses [8].

To analyze the Reynolds stresses, a Reynolds decomposition of the velocity field is necessary.Thereby, the velocity is split into an average velocity component, ui, and a fluctuating compo-nent, u′i.

ui = ui + u′i (4.8)

The index ’i’ specifies the axial (i = 1) and radial (i = 2) velocities. The Reynolds stresses Rij ,are the components of the stress tensor, which is frequently used in the theory of turbulence,

Rij = ρu′iu′

j . (4.9)

The Reynolds stresses can be seen as a quantity for the momentum flux [8]. The spatial variationof the Reynolds stresses causes a net force per unit volume, Fj , acting on the fluid [8], whichreads in index notation,

Fj = −∂(ρu′iu

j)

∂xi. (4.10)

This net force acting on the fluid in axial and radial direction can be seen in figure 4.9 and 4.10,respectively. The net force in axial direction has its maximum directly below the membranenear the stapes (see figure 4.9). In the same region high axial velocities occur as seen in theprevious section (see figure 4.4). In the center of the endolymph at the stapes side, the negativenet force evokes a reverse flow which is also seen in the axial velocity field.

The net force in radial direction is negative in the region near the stapes (see figure 4.10).Thereby, the steady streaming is shifted from the membrane region into the center. This supportsthe emerging of the quasi Poiseuille flow profile of axial velocity.

Beyond the dehiscence no significant forcing onto the fluid occurs. The acoustic streaming effectmostly occurs between the stapes and the dehiscence.

28

4.2. Steady Endolymph Streaming

Fx[µN/m

m3]

r[µm]

x [mm]

0 1 2 3 4 5 6 7 8 9−4

−2

0

2

4

0

20

40

60

80

100

120

140

160

Figure 4.9.: Net force, Fx, acting on the fluid in axial direction. Simulation with f = 1000Hz,E = 40kPa and W = 2.5mm/s. The dehiscence is located at x = 5mm (dashed line).

Fr[µN/m

m3]

r[µm]

x [mm]

0 1 2 3 4 5 6 7 8 9−0.4

−0.2

0

0.2

0.4

0

20

40

60

80

100

120

140

160

Figure 4.10.: Net force, Fr, acting on the fluid in axial direction. Simulation with f = 1000Hz,E = 40kPa and W = 2.5mm/s. The dehiscence is located at x = 5mm (dashedline).

29

4.3. Influence of Youngs Modulus and Frequency

4.3. Influence of Youngs Modulus and Frequency

This section deals with the dependency of the steady streaming velocity, U e, on the frequencyand the stapes velocity. One major issue is to find out why the strongest evoked symptomsoccur at a frequency about f = 1000Hz [3]. Therefore, the stapes velocity was decoupled fromthe frequency.

Using in a first study a Young’s modulus of, E = 40kPa, the frequency was varied in range off ∈ [200, 5000]Hz and the stapes velocity in W/W0 ∈ [0.1, 1], see figure 4.11. The referencestapes velocity, W0 = 2.5mm/s, refers to a stimulation at 1000Hz.

Ue[m

m/s]

Ue[m

m/s]

f [Hz] W/W0

0.1

1

10−4

10−2

100

102

103

10410−4

10−2

100

Figure 4.11.: Mean streaming velocity, Ue, with varying frequencies, f ∈ [200, 5000]Hz,and varyingstapes velocities, W/W0 ∈ [0.1, 1], W0 = 2.5mm/s, at constant Young’s modulus,E = 40kPa. Simulation results are marked with dots, the underlying surface is anempiric relation from [13].

Using logarithmic axis of the frequency, the stapes velocity and the steady streaming velocityit is notable that the amplitude of the steady streaming velocity increases two decades peran increase of one decade of the stapes velocity (see figure 4.11). This suggests the followingcorrelation

U e ∝ W 2. (4.11)

30

4.3. Influence of Youngs Modulus and Frequency

Considering the frequency dependence, the mean streaming velocity, U e, seems to be propor-tional to the logarithm of the frequency, f [Hz].

U e ∝ log(k · f) (4.12)

The same parameter variations of the frequency and the stapes velocity have been done for aYoung’s modulus of E = 80kPa (see figure 4.12). Comparing the mean streaming velocity usinga Young’s modulus of E = 40kPa and E = 80kPa it is observable that for a stiffer membranethe streaming effect gets weaker. On the other hand, a softer membrane allows at same forcingpressure difference between the endolymph, pe,Γ, and the perilymph, pp, an increased maximummembrane displacement which enhances the mean streaming.

Ue[m

m/s]

Ue[m

m/s]

f [Hz] W/W0

0.1

1

10−4

10−2

100

102

103

10410−4

10−2

100

Figure 4.12.: Mean streaming velocity, Ue, with varying frequencies, f ∈ [200, 5000]Hz,and varyingstapes velocities, W/W0 ∈ [0.1, 1], W0 = 2.5mm/s, at constant Young’s modulus,E = 80kPa. Simulation results are marked with dots, the underlying surface is anempiric relation from [13].

Due to the simulated steady streaming velocity (see figure 4.11 and 4.12) the strongest stream-ing is expected using higher frequencies than 1000 Hz. Nevertheless, most patients show themost intense evoked eye movements stimulating the affected ear with tones of about 1000 Hz.This is affected by the transfer function of the middle ear, that tones of 1000 Hz evoke thestrongest stapes motion. The non-linear behavior of the system itself shows not such an optimalfrequency.

31

4.4. Influence of Active and Passive Domain Length

4.4. Influence of Active and Passive Domain Length

The following section reports on the influence of the location of the dehiscence and the domainlength.

In a first study, the distance between stapes and dehiscence, L1, was varied. Thereby thecombinations of different frequencies and different Young’s moduli were simulated (see figure4.13). Note that the total domain length stays constant, L2 = 9mm.

It can be seen, that the larger domain between stapes and dehiscence the greater the regionwhere the streaming effect causes a net force onto the fluid. Therefore, the steady streamingvelocity increases.

In a second study, the influence of the total domain, L2, was examined (see figure 4.14). Thelength of the active part, L1 = 5mm, is constant. Again, a combination of two frequencies andtwo different Young’s moduli were used. The steady streaming velocity decreases with longertotal pipe length.

32

4.4. Influence of Active and Passive Domain Length

1000 Hz, 80 kPa

1000 Hz, 40 kPa

400 Hz, 80 kPa

400 Hz, 40 kPa

Ue[m

m/s]

L1[mm]

3 4 5 6 70

0.05

0.1

Figure 4.13.: Mean streaming velocity, Ue, for various positions of the dehiscence, L1. Simulationwith several frequencies, f = [400, 1000]Hz and Young’s moduli, E = [40, 80]kPawith stapes velocity, W = 2mm/s. The total domain length stays constant, L2 =9mm

1000 Hz, 80 kPa

1000 Hz, 40 kPa

400 Hz, 80 kPa

400 Hz, 40 kPa

Ue[m

m/s]

L2[mm]

8 9 10 110

0.05

0.1

Figure 4.14.: Mean streaming velocity, Ue, for different lengths of the SCC, L2. Simulation withseveral frequencies, f = [400, 1000]Hz and Young’s moduli, E = [40, 80]kPa withstapes velocity, W = 2mm/s. The position of the dehiscence, L1 = 5mm, is constant.

33

4.4. Influence of Active and Passive Domain Length

In figure 4.15 the dependence of both lengths on the steady streaming velocity is shown. Simu-lation is performed at stimulation frequency f = 1000Hz and a young’s modulus E = 40kPa.Note that L2 = 9mm is the total domain length and not the length of the passive membrane.So the maximum streaming velocity is reached, when the passive domain is very short.

Ue[m

m/s]

Ue[m

m/s]

L2 [mm] L1 [mm]3

45

67

0.01

0.1

78

910

11

0.01

0.1

Figure 4.15.: Mean streaming velocity for various positions of the dehiscence, L1, and various totallengths of the SCC, L2.

Analysis of the data show, that the streaming velocity, u, is proportional to the logarithm ofthe location of the dehiscence, L1. The constant k is found to be, k ≈ 1.9883 1/mm.

u ∝ log(k · L1) (4.13)

In other words, the fraction of active to total length defines the driving force of the streaming.Same observations were found in the models of [12]

The streaming velocity, u, is inverse proportional to the total domain length, L2.

u ∝ L−0.982 ≈

1

L2(4.14)

Thus, the total domain length causes systems friction. The resistance increases linearly withthe length as known from Poiseuille’s law.

34

4.5. Numerical Convergence

4.5. Numerical Convergence

In the following section, the convergence of the simulation is studied. Apart from the decay ofthe beat volume and the convergence of the Aitken residual also the influence of the integrationscheme blending factor will be discussed.

The decrease of the transient flow error, the beat volume, can be seen in figure 4.16. At thebeginning of the simulation high fluctations occur, which is caused by the steadily increasingstapes amplitude by the window function. After a while, the error decreases exponentially untilthe beat volume limit is reached. It is required that during the last period the beat volume wassmaller than the threshold, ǫBV < 10−17.

ǫ BV

[m

3]

T ime [s]

0 0.005 0.01 0.015 0.02 0.025 0.03 0.03510−22

10−20

10−18

10−16

10−14

10−12

Figure 4.16.: Decay of the beat volume during the transient phase.

35

4.5. Numerical Convergence

The Aitken iteration takes in average 35 steps, until the Aitken residual is sufficiently small,using an integration blending factor θ = 0.6 for the standard case with a stapes frequency off = 1000Hz, a stapes velocity of W = 2.5mm/s and a Young’s modulus of E = 40kPa. Forlower stapes velocity the Aitken residual converges faster. The average convergence of the Aitkenresidual in a single time step can be seen in figure 4.17. Depending on the phase of the oscillationthe number of Aitken iterations can take between 10 up to 60 steps for the specified case. Notethat using a too high Aitken tolerance might cause the simulation not to converge.

ǫ AI[m

]

Iteration Step

0 5 10 15 20 25 30

10−14

10−12

10−10

10−8

Figure 4.17.: Convergence of the Aitken residual during the Aitken subiteration.

36

4.5. Numerical Convergence

Initially for the integration scheme a blending factor of θ = 0.6 was used. Here, a blending factorof θ = 0 corresponds to an explicit Euler scheme, θ = 0.5 to the Crank-Nicolson scheme andθ = 1 to and implicit Euler scheme. Figure 4.18 shows the duration of simulation in dependanceof the used blending factor θ. A polynomical fitting curve is plotted in red.

T[hrs]

θ

0.5 0.6 0.7 0.8 0.9 115

20

25

30

35

40

45

50

Figure 4.18.: Duration of the simulation using various θ.

Fastest convergence is achieved, using θ ≈ 0.5 . . . 0.6. For θ > 0.55 about 3.5 full oscillationperiods were needed until the transient oscillation error (beat volume) was sufficiently small.The larger θ the higher was the number of needed Aitken iterations in each timestep resultingin longer calculation times.For θ < 0.55 the number of Aitken iterations in each time step decreased but more oscillationperiods were needed to reach steady state. The case θ = 0.5 corresponds to the Crank Nicholsonscheme which is known to be problematic for oscillating problems. Integration schemes usingθ < 0.5 tend to be unstable.

37

Chapter 5. Discussion

5. Discussion

The simulations performed in the course of this thesis showed that the dehiscence enables asound-induced streaming. The streaming effect is partly based on the fluctuation of Reynoldsstresses generating a net force in axial direction as described in[8]. This forcing occurs mostlybetween stapes and dehiscence.

An analysis of the Eulerian and Langrangian based steady streaming flow field showed in whichpart of the endolymph the major streaming occurs. It was shown that the steady streamingflow profile has its highest velocity near the membrane at the inlet and takes the shape of aPoiseuille flow profile towards the outlet of the semicircular canal.

The variation of stapes velocity and frequency at constant Young’s modulus gave an overview oftheir influence on the steady streaming velocity. The same streaming flow results as predictedin [13] were achieved.

The streaming effect was measured in patients to be strongest for frequencies at f ≈ 1000Hz.Decoupling the stapes velocity of the frequency shows that the streaming effect increases forhigher frequencies. Therefore, the reason for the measurements must be the properties of thestapes transfer function which has its maximum at a frequencies about 1000Hz.

Variations of the position of the distance between stapes and dehiscence, L1, showed a slightincrease in the streaming for larger distances, enhanced by the longer streaming length. Thiseffect was also seen in studies by[11].

Variations of the total length of the modeled semicircular canal, L2, suggest that the flowresistance to steady streaming increases linearly with the total length similar to the Poiseuilletheory.

38

Chapter 6. Outlook

6. Outlook

The model taken from [13] allows simulations of the sound-induced streaming and facilitates afurther understanding. The influence of dehiscence and several parameters have been studied.The following studies and implementations might be topics for further work.

Influence of other parameter: Studies on several other parameters could be done. Especially theinfluence of size of the dehiscence could be implemented and analyzed.

Simulation of the cupula: The effect of the cupula could be integrated into the model, simplifiedas linear elastic membrane. It would induce a counter pressure acting at the inlet, leading to asteady state.

Implementation of second excitation: In this model it was assumed that only on one side of theSCC the perilymph is stimulated by the stapes. In theory, both sides of the perilymph could bestimulated by the stapes.

39

Bibliography

Bibliography

[1] P. Tullio and A. Jellinek, “Das Ohr und die Entstehung der Sprache,” Urban & Schwarezn-

berg, 1929.

[2] E. Huizinga, “On the sound reactions of Tullio,” Acta Oto-Laryngologica, vol. 22, no. 3,pp. 359–370, 1935.

[3] L. B. Minor, D. Solomon, S. J. Zinreich, and D. S. Zee, “Sound-and/or pressure-induced ver-tigo due to bone dehiscence of the superior semicircular canal,” Archives of Otolaryngology

- Head & Neck Surgery, vol. 124, no. 3, pp. 249–258, 1998.

[4] C. J. Belden, N. Weg, L. B. Minor, and S. J. Zinreich, “Ct evaluation of bone dehiscenceof the superior semicircular canal as a cause of sound- and/or pressure-induced vertigo,”Radiology, vol. 226, no. 2, pp. 337–343, 2003.

[5] W. W. Chien, J. P. Carey, and L. B. Minor, “Canal dehiscence,” Current opinion in neu-

rology, vol. 24, pp. 25–31, Feb. 2011.

[6] D. Kaski, R. Davies, L. Luxon, a. M. Bronstein, and P. Rudge, “The Tullio Phenomenon: aneurologically neglected presentation,” Journal of Neurology, vol. 259, pp. 4–21, Jan. 2012.

[7] N. Kim, C. R. Steele, and S. Puria, “Superior-semicircular-canal dehiscence: effects oflocation, shape, and size on sound conduction,” Hearing research, vol. 301, pp. 72–84, July2013.

[8] J. Lighthill, “Acoustic streaming,” Journal of Sound and Vibration, vol. 61, pp. 391–418,Dec. 1978.

[9] H. Thomann, “A simple pumping mechanism in a valveless tube,” Zeitschrift fur ange-

wandte Mathematik und Physik ZAMP, vol. 29, no. 2, pp. 169–177, 1978.

[10] I. Avrahami and M. Gharib, “Computational studies of resonance wave pumping in com-pliant tubes,” Journal of Fluid Mechanics, vol. 608, pp. 139–160, 2008.

[11] J. E. Songer and J. J. Rosowski, “The effect of superior-canal opening on middle-ear inputadmittance and air-conducted stapes velocity in chinchilla.,” The Journal of the Acoustical

Society of America, vol. 120, pp. 258–269, 2006.

40

Bibliography

[12] J. E. Songer and J. J. Rosowski, “A mechano-acoustic model of the effect of superior canaldehiscence on hearing in chinchilla.,” The Journal of the Acoustical Society of America,vol. 122, no. August 2007, pp. 943–951, 2007.

[13] B. Grieser, Fluid-mechanical model for vestibular responses to sound in presence of a supe-

rior canal dehiscence. Phd thesis, ETH Zurich, 2015.

[14] Blausen.com staff. ”Blausen gallery 2014”, “Wikiversity journal of medicine.”https://upload.wikimedia.org/wikipedia/commons/0/0d/Blausen 0328 EarAnatomy.png,Retrieved on January 15, 2015.

[15] R. Drake, A. W. Vogl, and A. W. Mitchel, Gray’s anatomy for students. Elsevier HealthSciences, 2009.

[16] Blausen.com staff. ”Blausen gallery 2014”, “Wikiversity journal of medicine.”http://upload.wikimedia.org/wikipedia/commons/1/14/Blausen 0329 EarAnatomy InternalEar.png,Retrieved on January 15, 2015.

[17] R. H. I. Blanks, I. S. Curthoys, and C. H. Markham, “Planar relationships of the semicirularcanals in man,” Acta Oto-Laryngologica, vol. 80, pp. 185–196, 1974.

[18] L. B. Minor, P. D. Cremer, J. P. Carey, C. C. Della Santina, S.-O. Streubel, and N. Weg,“Symptoms and signs in superior canal dehiscence syndrome,” Annals of the New York

Academy of Sciences, vol. 942, pp. 259–273, Oct. 2001.

[19] D. Obrist, Fluid Mechanics of the Inner Ear. PhD thesis, ETH Zurich, 2011.

[20] G. M. Halmagyi, I. S. Curthoys, J. G. Colebatch, and S. T. Aw, “Vestibular responses tosound,” Annals of the New York Academy of Sciences, vol. 1039, pp. 54–67, Apr. 2005.

[21] L. B. Minor, “Clinical manifestations of superior semicircular canal dehiscence,” The Laryn-

goscope, vol. 115, pp. 1717–1727, Oct. 2005.

[22] P. Cremer, L. Minor, J. Carey, and C. Della Santina, “Eye movements in patients withsuperior canal dehiscence syndrome align with the abnormal canal,” Neurology, vol. 55,pp. 1833–1841, Dec. 2000.

[23] M. Pfammatter, Alain; Darrouzet, Vincent; Gartner, “A superior semicircular canal dehis-cence syndrome multicenter study: is there an association between size and symptoms?,”Otology & Neurotology, vol. 31, no. 3, pp. 447–454, 2010.

[24] K. Brantberg, J. Bergenius, and A. Tribukait, “Vestibular-evoked myogenic potentials in pa-tients with dehiscence of the superior semicircular canal,” Acta Oto-Laryngologica, vol. 119,no. 12, pp. 633–640, 1999.

41

Bibliography

[25] W. W. Chien, K. Janky, L. B. Minor, and J. P. Carey, “Superior canal dehiscence size:multivariate assessment of clinical impact.,” Otology & neurotology, vol. 33, pp. 810–815,July 2012.

[26] W. Chien, M. E. Ravicz, and J. J. Rosowski, “Measurements of human middle- and inner-ear mechanics with dehiscence of the superior semicircular canal,” Otology & Neurotology,vol. 28, no. 2, pp. 250–257, 2007.

[27] J. P. Carey, L. B. Minor, and G. T. Nager, “Dehiscence or thinning of bone overlying thesuperior semicircular canal in a temporal bone survey,” Archives of Otolaryngology - Head

& Neck Surgery, vol. 126, pp. 137–147, Feb. 2000.

[28] C. H. Jang and S. N. Merchant, “Histopathology of labyrinthine fistulae in chronic otitismedia with clinical implications.,” American Journal of Otology, vol. 18, no. 1, pp. 15–25,1997.

[29] A. Banerjee, A. Whyte, and M. D. Atlas, “Superior canal dehiscence: review of a newcondition,” Clinical Otolaryngology, vol. 30, pp. 9–15, Feb. 2005.

[30] A. Mikulec, D. Poe, and M. McKenna, “Operative management of superior semicircularcanal dehiscence.,” The Laryngoscope, vol. 115, pp. 501–7, Mar. 2005.

[31] B. Grieser, L. Kleiser, and D. Obrist, “Fluid-structure interaction of an elastic pipe im-mersed in a coaxial rigid pipe: a model for the Tullio Phenomenon,” PAMM, vol. 14,pp. 491–492, Dec. 2014.

[32] U. Kuettler and W. Wall, “Fixed-point fluid–structure interaction solvers with dynamicrelaxation,” Computational Mechanics, vol. 43, pp. 61–72, Feb. 2008.

[33] E. Suli and D. F. Mayers, An introduction to numerical analysis. Cambridge UniversityPress, 2003.

42

List of Figures

List of Figures

2.1. The human ear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2. The inner ear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.3. CT images of SSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.4. Schematic overview of dehiscence . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.5. Vertical-torsional eye movements . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.1. Numerical model of the vestibular system. Taken from Grieser [13]. . . . . . . . . 83.2. Overview of time iterations with Aitken subiteration . . . . . . . . . . . . . . . . 143.3. Window function and stapes displacement . . . . . . . . . . . . . . . . . . . . . . 15

4.1. Pressure of the endolymph and perilymph, membrane excitation . . . . . . . . . 194.2. Snapshot of the endolymph velocity field . . . . . . . . . . . . . . . . . . . . . . . 204.3. Axial velocity at inlet and outlet . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.4. Eulerian mean streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.5. Eulerian velocity flow profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.6. Particle trajectories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.7. Lagrangian mean streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.8. Eulerian and Lagrangian flow profile . . . . . . . . . . . . . . . . . . . . . . . . . 274.9. Axial net force on the fluid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.10. Radial net force on the fluid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.11. Mean streaming velocity for varying f and W, E = 40kpa . . . . . . . . . . . . . 304.12. Mean streaming velocity for varying f and W, E = 80kpa . . . . . . . . . . . . . 314.13. Mean streaming velocity for various L1 . . . . . . . . . . . . . . . . . . . . . . . . 334.14. Mean streaming velocity for various L2 . . . . . . . . . . . . . . . . . . . . . . . . 334.15. Mean streaming velocity for various L1 and L2 . . . . . . . . . . . . . . . . . . . 344.16. Decay of beat volume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.17. Aitken residual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.18. Duration of simulation for various θ . . . . . . . . . . . . . . . . . . . . . . . . . 37

43

Appendix A. Postprocessing C++: Calculate Eulerian and Lagrangian Flow Profiles

A. Postprocessing C++: Calculate Eulerian and Lagrangian Flow

Profiles

/*---------------------------------------------------------------------------*\

========= |

\\ / F ield | OpenFOAM: The Open Source CFD Toolbox

\\ / O peration |

\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation

\\/ M anipulation |

-------------------------------------------------------------------------------

License

This file is part of OpenFOAM.

OpenFOAM is free software: you can redistribute it and/or modify it

under the terms of the GNU General Public License as published by

the Free Software Foundation, either version 3 of the License, or

(at your option) any later version.

OpenFOAM is distributed in the hope that it will be useful, but WITHOUT

ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or

FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License

for more details.

You should have received a copy of the GNU General Public License

along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.

Application

EulerLagrange

Description

Sample field data at predefined points in order to generate Euler flow

profiles, Lagrange flow profiles and particle tracks

Input

eulerLagrangeDict - needs to be copied into casefolder/system

Output

EulerProfile-# - Euler time dependant flow profile (z-direction) at

defined cross-section #

LagrangeProfile-# - Lagrange mean flow profile (r,z direction) at defined

cross-section #

ParticleTrack-#1-#2 - Particle track (x_pos y_pos x_vel y_vel) at defined

cross-section #1 and radial position #2

44

sampleDictMatlab - File with plotting information for Matlab

flux-in/out - Fluxes

Author: Carl-F. Benner

Update: 15.12.2014

Version: 1.0

\*---------------------------------------------------------------------------*/

// Headers

#include "fvCFD.H"

#include "argList.H"

#include "timeSelector.H"

#include "OFstream.H"

#include "interpolationCellPoint.H"

#include "surfaceInterpolation.H"

#include "surfaceInterpolate.H"

#include "surfaceInterpolationScheme.H"

#include "cubic.H"

#include <time.h>

// Headers for mkdir

#include <sys/types.h>

#include <sys/stat.h>

using namespace Foam;

using namespace fvc;

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

int main(int argc, char *argv[])

{

// Headers

timeSelector::addOptions();

#include "addRegionOption.H"

#include "setRootCase.H"

#include "createTime.H"

instantList timeDirs = timeSelector::select0(runTime, args);

#include "createNamedMesh.H"

// Read Properties

printf("Initialize...\n\n\n");

IOdictionary tullioProperties

(

IOobject

(

"tullioProperties",

runTime.constant(),

mesh,

IOobject::MUST_READ,

45

IOobject::NO_WRITE

)

);

scalar f = readScalar(tullioProperties.lookup("frequency"));

scalar NT = readScalar(tullioProperties.lookup("NT"));

// Load Dictionary & Data

IOdictionary sampleDict

(

IOobject

(

"eulerLagrangeDict",

runTime.system(),

mesh,

IOobject::MUST_READ,

IOobject::AUTO_WRITE

)

);

List<scalar> axialLagrangeSpan

(sampleDict.lookup("axialLagrangeSpan"));

List<scalar> radialLagrangeSpan

(sampleDict.lookup("radialLagrangeSpan"));

List<scalar> axialEulerSpan

(sampleDict.lookup("axialEulerSpan"));

List<scalar> radialEulerSpan

(sampleDict.lookup("radialEulerSpan"));

bool writeTrack = readScalar(sampleDict.lookup("writeTrack"));

bool writeFlowProfile = readScalar(sampleDict.lookup("writeEulerProfile"));

bool writeSampleDict = readScalar(sampleDict.lookup("writeSampleDict"));

bool writePartDispl = readScalar(sampleDict.lookup("writeLagrangeProfile"));

// Initialize file stream

std::fstream lagrangePoints;

lagrangePoints.precision(100);

std::fstream sampleDictMatlab;

sampleDictMatlab.precision(10);

std::fstream particleDispl;

particleDispl.precision(10);

char fileName[40];

mkdir("EulerLagrangeProfiles",0700);

// Create Lagrange Point Field

46

List<vector> lagrangeField(axialLagrangeSpan.size()*radialLagrangeSpan.size());

List<vector> lagrangeField_t(axialLagrangeSpan.size()*radialLagrangeSpan.size());

for(int i=0;i<axialLagrangeSpan.size();i++)

{

for(int j=0;j<radialLagrangeSpan.size();j++)

{

lagrangeField[radialLagrangeSpan.size()*i+j].x() = axialLagrangeSpan[i];

lagrangeField[radialLagrangeSpan.size()*i+j].y() = radialLagrangeSpan[j];

lagrangeField[radialLagrangeSpan.size()*i+j].z() = 0;

};

};

if(writeTrack){

//Write Initial Particle Position to File

forAll(lagrangeField, posI)

{

//x_pos y_pos x_vel y_vel

char fileName[30];

int pos(posI);

sprintf(fileName, "EulerLagrangeProfiles/particleTrack-%d-%d.txt",

pos/radialLagrangeSpan.size() + 1 ,pos % radialLagrangeSpan.size() + 1);

lagrangePoints.open(fileName,std::ios::out | std::ios::app);

lagrangePoints<< lagrangeField[posI].x() << "\t" << lagrangeField[posI].y() <<

"0" << "0"<<std::endl;

lagrangePoints.close();

};

};

// Create Euler Point Field

List<vector> eulerField(axialEulerSpan.size()*radialEulerSpan.size());

for(int i=0;i<axialEulerSpan.size();i++)

{

for(int j=0;j<radialEulerSpan.size();j++)

{

eulerField[radialEulerSpan.size()*i+j].x() = axialEulerSpan[i];

eulerField[radialEulerSpan.size()*i+j].y() = radialEulerSpan[j];

eulerField[radialEulerSpan.size()*i+j].z() = 0;

};

};

// Create Interpolation & Label List for Euler and Lagrange Field

List<vector> UintPart(lagrangeField.size());

List<vector> UintVel(lagrangeField.size());

labelList CellLagrange(lagrangeField.size());

labelList CellLagrange_t(lagrangeField.size());

labelList CellEuler(eulerField.size());

47

// Set Time

time_t time0;

time_t timeNow;

time(&time0);

// Start Time Loop

forAll(timeDirs, timeI)

{

runTime.setTime(timeDirs[timeI], timeI);

// Process Bar

float ratio = float(timeI)/200;

int c = ratio * 50;

printf("\033[A\033[2K\033[A\033[2K");

printf("Postprocessing: %d%%\n", int (ratio*100) );

time(&timeNow);

if(timeI>1){printf("Time remaining: %d min\n", int

((199-timeI)*difftime(timeNow,time0)/(timeI-1)/60));}

else{printf("Time remaining: calculating...\n");};

if(runTime.timeName()!="0"){

// Load Velocities from Time Dicts

volVectorField U

(

IOobject

(

"U",

runTime.timeName(),

mesh,

IOobject::MUST_READ,

IOobject::NO_WRITE

),

mesh

);

// Load Fluxes from Time Dicts

surfaceScalarField phi

(

IOobject

(

"phi",

runTime.timeName(),

mesh,

IOobject::MUST_READ,

IOobject::NO_WRITE

),

48

mesh

);

mesh.readUpdate();

// Read Velocity Vector Field

dictionary interpolationDict =

mesh.schemesDict().subDict("interpolationSchemes");

autoPtr<interpolation<vector> > Uinterp =

interpolation<vector>::New(interpolationDict, U);

// Move Particles and Store Data

forAll(lagrangeField, posI)

{

// Get Current Cell of Particle

CellLagrange[posI] = mesh.findCell(lagrangeField[posI]);

// Euler Forward

lagrangeField_t[posI] = lagrangeField[posI] +

Uinterp->interpolate(lagrangeField[posI], CellLagrange[posI])/(NT*f);

CellLagrange_t[posI] = mesh.findCell(lagrangeField_t[posI]);

// Heun’s Method

lagrangeField[posI] = lagrangeField[posI] +

(0.5*Uinterp->interpolate(lagrangeField[posI], CellLagrange[posI]) +

0.5*Uinterp->interpolate(lagrangeField_t[posI],

CellLagrange_t[posI]))/(NT*f);

//Write Output to File

//x_pos y_pos x_vel y_vel

if(writeTrack){

sprintf(fileName, "EulerLagrangeProfiles/particleTrack-%d-%d.txt",

posI/radialLagrangeSpan.size() + 1 ,int(posI) %

radialLagrangeSpan.size() + 1);

lagrangePoints.open("test",std::ios::out | std::ios::app);

lagrangePoints<< lagrangeField[posI].x() << "\t" <<

lagrangeField[posI].y();

lagrangePoints<< 0.5*Uinterp->interpolate(lagrangeField[posI],

CellLagrange[posI]).x() +

0.5*Uinterp->interpolate(lagrangeField_t[posI],

CellLagrange_t[posI]).x();

lagrangePoints<< 0.5*Uinterp->interpolate(lagrangeField[posI],

CellLagrange[posI]).y() +

0.5*Uinterp->interpolate(lagrangeField_t[posI],

CellLagrange_t[posI]).y()<< std::endl;

lagrangePoints.close();

49

};

};

// Interpolate Euler Flow Profile and Store Data

forAll(eulerField, posI)

{

// Update Euler Point Field

CellEuler[posI] = mesh.findCell(eulerField[posI]);

// Write Output to File

if(writeFlowProfile){

sprintf(fileName, "EulerLagrangeProfiles/eulerProfile-%d.txt",

int(posI)/radialEulerSpan.size() + 1 );

lagrangePoints.open(fileName,std::ios::out | std::ios::app);

lagrangePoints<< Uinterp->interpolate(eulerField[posI],

CellEuler[posI]).x()<< "\t";

if((posI+1) % radialEulerSpan.size() == 0)

{lagrangePoints<<std::endl;}

lagrangePoints.close();

};

};

// Euler Flow Profile at Inlet and Outlet

label patchi = mesh.boundaryMesh().findPatchID("inlet");

lagrangePoints.open("EulerLagrangeProfiles/eulerProfile-in.txt",std::ios::out |

std::ios::app);

for (int i=0; i<U.boundaryField()[patchi].size(); i++)

{lagrangePoints<< U.boundaryField()[patchi][i][0]<<"\t";};

lagrangePoints << std::endl;

lagrangePoints.close();

label patcho = mesh.boundaryMesh().findPatchID("outlet");

lagrangePoints.open("EulerLagrangeProfiles/eulerProfile-out.txt",std::ios::out |

std::ios::app);

for (int i=0; i<U.boundaryField()[patcho].size(); i++)

{lagrangePoints<< U.boundaryField()[patcho][i][0]<<"\t";};

lagrangePoints << std::endl;

lagrangePoints.close();

// Flux at Inlet and Outlet

lagrangePoints.open("EulerLagrangeProfiles/flux-in.txt",std::ios::out |

std::ios::app);

for (int i=0; i<phi.boundaryField()[patchi].size(); i++)

{lagrangePoints<< phi.boundaryField()[patchi][i]<<"\t";};

lagrangePoints << std::endl;

50

lagrangePoints.close();

lagrangePoints.open("EulerLagrangeProfiles/flux-out.txt",std::ios::out |

std::ios::app);

for (int i=0; i<phi.boundaryField()[patcho].size(); i++)

{lagrangePoints<< phi.boundaryField()[patcho][i]<<"\t";};

lagrangePoints << std::endl;

lagrangePoints.close();

}; //End if

}; //End Time loop

// Write sampleDictMatlab

if(writeSampleDict){

sampleDictMatlab.open("EulerLagrangeProfiles/sampleDictMatlab.txt",std::ios::out

| std::ios::app);

sampleDictMatlab<<"axialLagrangeSpan = [\t" ;

forAll(axialLagrangeSpan, posI)

{ sampleDictMatlab<<axialLagrangeSpan[posI]<< "\t";}

sampleDictMatlab<<"]"<<std::endl;

sampleDictMatlab<<"radialLagrangeSpan = [\t" ;

forAll(radialLagrangeSpan, posI)

{ sampleDictMatlab<<radialLagrangeSpan[posI]<< "\t";}

sampleDictMatlab<<"]"<<std::endl;

sampleDictMatlab<<"axialEulerSpan = [\t" ;

forAll(axialEulerSpan, posI)

{ sampleDictMatlab<<axialEulerSpan[posI]<< "\t";}

sampleDictMatlab<<"]"<<std::endl;

sampleDictMatlab<<"radialLagrangeSpan = [\t" ;

forAll(radialEulerSpan, posI)

{ sampleDictMatlab<<radialEulerSpan[posI]<< "\t";}

sampleDictMatlab<<"]"<<std::endl;

sampleDictMatlab<<"f = "<<f<< " [Hz]"<<std::endl;

sampleDictMatlab<<"NT = "<<NT<<std::endl;

sampleDictMatlab.close();

};

// Write Lagrangian Flow Profiles

if(writePartDispl){

51

for(int i=0;i<axialLagrangeSpan.size();i++)

{

sprintf(fileName, "EulerLagrangeProfiles/lagrangeProfile-%d.txt", i + 1 );

particleDispl.open(fileName,std::ios::out | std::ios::app);

for(int j=0;j<radialLagrangeSpan.size();j++)

{particleDispl<<lagrangeField[radialLagrangeSpan.size()*i+j].x() -

axialLagrangeSpan[i]<<"\t"<<lagrangeField[radialLagrangeSpan.size()*i+j].y()

- radialLagrangeSpan[j]<<std::endl;};

particleDispl.close();

};

};

Info<< "\nPostprocessing Finished\n" << endl;

return 0;

}

// ************************************************************************* //

52

Appendix B. Postprocessing C++: Calculate Complete Flow Field

B. Postprocessing C++: Calculate Complete Flow Field

/*---------------------------------------------------------------------------*\

========= |

\\ / F ield | OpenFOAM: The Open Source CFD Toolbox

\\ / O peration |

\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation

\\/ M anipulation |

-------------------------------------------------------------------------------

License

This file is part of OpenFOAM.

OpenFOAM is free software: you can redistribute it and/or modify it

under the terms of the GNU General Public License as published by

the Free Software Foundation, either version 3 of the License, or

(at your option) any later version.

OpenFOAM is distributed in the hope that it will be useful, but WITHOUT

ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or

FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License

for more details.

You should have received a copy of the GNU General Public License

along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.

Application

EulerLagrange

Description

Sample field data at predefined points in order to generate Euler flow

profiles, Lagrange flow profiles and particle tracks

Input

eulerLagrangeDict - needs to be copied into casefolder/system

Output

VelocityX-# - Velocity field in axial direction at time step #

VelocityY-# - Velocity field in radial direction at time step #

Pressure-# - Pressure field at time step #

sampleDictMatlab - File with plotting information for Matlab

Author: Carl-F. Benner

Update: 15.12.2014

Version: 1.0

53

\*---------------------------------------------------------------------------*/

// Headers

#include "fvCFD.H"

#include "argList.H"

#include "timeSelector.H"

#include "OFstream.H"

#include "interpolationCellPoint.H"

#include "surfaceInterpolation.H"

#include "surfaceInterpolate.H"

#include "surfaceInterpolationScheme.H"

#include "cubic.H"

#include <time.h>

// Headers for mkdir

#include <sys/types.h>

#include <sys/stat.h>

using namespace Foam;

using namespace fvc;

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

int main(int argc, char *argv[])

{

// Headers

timeSelector::addOptions();

#include "addRegionOption.H"

#include "setRootCase.H"

#include "createTime.H"

instantList timeDirs = timeSelector::select0(runTime, args);

#include "createNamedMesh.H"

// Read Properties

printf("Initialize...\n\n\n");

IOdictionary tullioProperties

(

IOobject

(

"tullioProperties",

runTime.constant(),

mesh,

IOobject::MUST_READ,

IOobject::NO_WRITE

)

);

scalar f = readScalar(tullioProperties.lookup("frequency"));

scalar NT = readScalar(tullioProperties.lookup("NT"));

54

// Load Dictionary & Data

IOdictionary sampleDict

(

IOobject

(

"cmplFlowFieldDict",

runTime.system(),

mesh,

IOobject::MUST_READ,

IOobject::AUTO_WRITE

)

);

List<scalar> axialFieldSpan

(sampleDict.lookup("axialFieldSpan"));

List<scalar> radialFieldSpan

(sampleDict.lookup("radialFieldSpan"));

bool writeVelocity = readScalar(sampleDict.lookup("writeVelocity"));

bool writePressure = readScalar(sampleDict.lookup("writePressure"));

bool writeSampleDict = readScalar(sampleDict.lookup("writeSampleDict"));

// Initialize file stream

std::fstream lagrangePoints;

lagrangePoints.precision(100);

std::fstream sampleDictMatlab;

sampleDictMatlab.precision(10);

std::fstream particleDispl;

particleDispl.precision(10);

char fileName[40];

mkdir("CmplFlowField",0700);

// Create Point Field

List<vector> eulerField(axialFieldSpan.size()*radialFieldSpan.size());

for(int i=0;i<axialFieldSpan.size();i++)

{

for(int j=0;j<radialFieldSpan.size();j++)

{

eulerField[radialFieldSpan.size()*i+j].x() = axialFieldSpan[i];

eulerField[radialFieldSpan.size()*i+j].y() = radialFieldSpan[j];

eulerField[radialFieldSpan.size()*i+j].z() = 0;

};

};

55

// Create Interpolation & Label List for Euler and Lagrange Field

labelList CellEuler(eulerField.size());

// Set Time

time_t time0;

time_t timeNow;

time(&time0);

// Start Time Loop

forAll(timeDirs, timeI)

{

runTime.setTime(timeDirs[timeI], timeI);

// Process Bar

float ratio = float(timeI)/200;

printf("\033[A\033[2K\033[A\033[2K");

printf("Postprocessing: %d%%\n", int (ratio*100) );

time(&timeNow);

if(timeI>1){printf("Time remaining: %d min\n", int

((199-timeI)*difftime(timeNow,time0)/(timeI-1)/60));}

else{printf("Time remaining: calculating...\n");};

if(runTime.timeName()!="0"){

// Load Velocities from Time Dicts

volVectorField U

(

IOobject

(

"U",

runTime.timeName(),

mesh,

IOobject::MUST_READ,

IOobject::NO_WRITE

),

mesh

);

// Load Fluxes from Time Dicts

volScalarField p

(

IOobject

(

"p",

runTime.timeName(),

mesh,

IOobject::MUST_READ,

56

IOobject::NO_WRITE

),

mesh

);

mesh.readUpdate();

// Read Velocity Vector Field

dictionary interpolationDict =

mesh.schemesDict().subDict("interpolationSchemes");

autoPtr<interpolation<vector> > Uinterp =

interpolation<vector>::New(interpolationDict, U);

// Read Pressure Scalar Field

autoPtr<interpolation<scalar> > pinterp =

interpolation<scalar>::New(interpolationDict, p);

// Interpolate Euler Flow Profile and Store Data

forAll(eulerField, posI)

{

// Update Euler Point Field

CellEuler[posI] = mesh.findCell(eulerField[posI]);

// Write Velocity Output to File

if(writeVelocity){

sprintf(fileName, "CmplFlowField/VelocityX-%d.txt",

int(posI)/radialFieldSpan.size() + 1 );

lagrangePoints.open(fileName,std::ios::out | std::ios::app);

lagrangePoints<< Uinterp->interpolate(eulerField[posI],

CellEuler[posI]).x()<< "\t";

if((posI+1) % radialFieldSpan.size() == 0)

{lagrangePoints<<std::endl;}

lagrangePoints.close();

sprintf(fileName, "CmplFlowField/VelocityR-%d.txt",

int(posI)/radialFieldSpan.size() + 1 );

lagrangePoints.open(fileName,std::ios::out | std::ios::app);

lagrangePoints<< Uinterp->interpolate(eulerField[posI],

CellEuler[posI]).y()<< "\t";

if((posI+1) % radialFieldSpan.size() == 0)

{lagrangePoints<<std::endl;}

lagrangePoints.close();

};

// Write Pressure to File

57

if(writePressure){

sprintf(fileName, "CmplFlowField/Pressure-%d.txt",

int(posI)/radialFieldSpan.size() + 1 );

lagrangePoints.open(fileName,std::ios::out | std::ios::app);

lagrangePoints<< pinterp->interpolate(eulerField[posI], CellEuler[posI])<<

"\t";

if((posI+1) % radialFieldSpan.size() == 0)

{lagrangePoints<<std::endl;}

lagrangePoints.close();

};

};

}; //End if

}; //End Time loop

// Write sampleDictMatlab

if(writeSampleDict){

sampleDictMatlab.open("cmplFlowField/sampleDictMatlab.txt",std::ios::out |

std::ios::app);

sampleDictMatlab<<"axialFieldSpan = [\t" ;

forAll(axialFieldSpan, posI)

{ sampleDictMatlab<<axialFieldSpan[posI]<< "\t";}

sampleDictMatlab<<"]"<<std::endl;

sampleDictMatlab<<"radialLagrangeSpan = [\t" ;

forAll(radialFieldSpan, posI)

{ sampleDictMatlab<<radialFieldSpan[posI]<< "\t";}

sampleDictMatlab<<"]"<<std::endl;

sampleDictMatlab<<"f = "<<f<< " [Hz]"<<std::endl;

sampleDictMatlab<<"NT = "<<NT<<std::endl;

sampleDictMatlab.close();

};

Info<< "\nPostprocessing Finished\n" << endl;

return 0;

}

// ************************************************************************* //

58