27
Modelação Numérica 2017 Aula 13, 29/Mar Advecção 2D Projecto #2 h2p://modnum.ucs.ciencias.ulisboa.pt

ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

Modelação  Numérica  2017  

Aula  13,  29/Mar

•  Advecção  2D  

•  Projecto  #2  

 h2p://modnum.ucs.ciencias.ulisboa.pt  

 

Page 2: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

!"#$%&'()*+,"- ."#$%&/!0 1"#$%&/!0 2"#$%&34!! 2"#$%&34!1 2"#$%&34!. 5"#$%&34!2 5"#$%&34!0!"#$%& !'#$%& !(#$%& !(#$%& !(#$%& !)#$%& !)#$%&*! *+ ,-./01! ,-./01! ,-./01! ,-./01! ,-./01!+!#$%& ++#$%& +2#$%& +2#$%& +2#$%& +"#$%& +"#$%&*2 *" ,-./01+ ,-./01+ ,-./01+ ,-./01+ ,-./01++3#$%& !#45/60 +#45/60 +#45/60 +#45/60 2#45/60 2#45/6075/-5&58 *'9:;/0.0<= >?!1! >?!1! >?!1! >?!1! >?!1!)#45/60 3#45/60 @#45/60 @#45/60 @#45/60 !A#45/60 !A#45/60*( *) >?!1+ >?!1+ >?!1+ >?!1+ >?!1+!"#45/60 !'#45/60 !(#45/60 !(#45/60 !(#45/60 !)#45/60 !)#45/60*3 *@ >?!12 >?!12 >?!12 >?!12 >?!12

+A#45/609:!)BAA +!#45/60 ++#45/60 +2#45/60 +2#45/60 +2#45/60 +"#45/60 +"#45/60 CD/%E%-.56F%E>-./%G5:>?! *!A *!! >?!1" >?!1" >?!1" >?!1" >?!1"

+3#45/60 +@#45/60 2A#45/60 2A#45/60 2A#45/60 2!#45/60 2!#45/60*!+ *!29:;/0.0<=: >?+1! >?+1! >?+1! >?+1! >?+1!"#CH/ '#CH/ (#CH/ (#CH/ (#CH/ )#CH/ )#CH/*!" *!' >?+1+ >?+1+ >?+1+ >?+1+ >?+1+!!#CH/ !+#CH/ !2#CH/ !2#CH/ !2#CH/ !"#CH/ !"#CH/*!( ;IE<05 ;IE<05 ;IE<05 ;IE<05 ;IE<05 ;IE<05!3#CH/ !@#CH/ +A#CH/ +A#CH/ +A#CH/ +!#CH/ +!#CH/;IE<05 JK5:7KL-<K5E >?+12 >?+12 >?+12 >?+12 >?+12

+"#CH/9:!)BAA +'#CH/ +(#CH/ +)#CH/ +)#CH/ +)#CH/ +3#CH/ +3#CH/ CD/%E%-.56F%E>-./%G5:>?+ $%/K5M0 *!3 >?+1" >?+1" >?+1" >?+1" >?+1"

+#45K 2#45K "#45K "#45K "#45K '#45K '#45K*!@ *+A9:;/0.0<= >?21! >?21! >?21! >?21! >?21!@#45K !A#45K !!#45K !!#45K !!#45K !+#45K !+#45K*+! *++ >?21+ >?21+ >?21+ >?21+ >?21+!(#45K !)#45K !3#45K !3#45K !3#45K !@#45K !@#45K*+2 *+" >?212 >?212 >?212 >?212 >?212

++#45K9:!)BAA +2#45K +"#45K +'#45K +'#45K +'#45K +(#45K +(#45K CD/%E%-.56F%E>-./%G5:>?2 *+' *+( >?21" >?21" >?21" >?21" >?21"

2A#45K*+)

Page 3: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

Diferenças  finitas

•  Diferenças  avançadas:  

•  Diferenças  retardadas:  

•  Diferenças  centradas:  

f(x0 +∆x)− f(x0 −∆x) = 2

�∂f

∂x

x=x0

∆x+2

3!

�∂3f

∂x3

x=x0

∆x3 + ...

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)− 2

3!

�∂3f∂x3

x=x0

∆x3 + ...

2∆x

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

23!

�∂3f∂x3

x=x0

∆x3

2∆x+ ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

1

3!

�∂3f

∂x3

x=x0

∆x2 + ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

(3)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0)− f(x0 −∆x)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

2

f(x0 +∆x)− f(x0 −∆x) = 2

�∂f

∂x

x=x0

∆x+2

3!

�∂3f

∂x3

x=x0

∆x3 + ...

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)− 2

3!

�∂3f∂x3

x=x0

∆x3 + ...

2∆x

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

23!

�∂3f∂x3

x=x0

∆x3

2∆x+ ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

1

3!

�∂3f

∂x3

x=x0

∆x2 + ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

(3)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0)− f(x0 −∆x)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

2

f(x0 +∆x)− f(x0 −∆x) = 2

�∂f

∂x

x=x0

∆x+2

3!

�∂3f

∂x3

x=x0

∆x3 + ...

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)− 2

3!

�∂3f∂x3

x=x0

∆x3 + ...

2∆x

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

23!

�∂3f∂x3

x=x0

∆x3

2∆x+ ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

1

3!

�∂3f

∂x3

x=x0

∆x2 + ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

(3)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0)− f(x0 −∆x)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

2

!"#$%&'(")*+,-./0&)12332) ) ) )

4)

)

)

)*$56$) 0&5") .$7.$5$86&,95$) &5) #/:$.$8'&5) :/8/6&5) !"!#$!%!&;) *"6&.) <+$) $56&)$=7.$55(") 0"..$57"8#$) &") #$0%/>$) #&) .$06&) 6&8?$86$) &") 7"86") '(!)@) 6&%) 0",")&0/,&)#$50./6";)))A) $50"%B&) #$) +,) #$6$.,/8&#"),-6"#") 8+,-./0") $=/?$) &%?+,&5) 0"85/#$.&'C$5)7.->/&5D))

&E F.$0/5(") ).$%&0/"8&#&)0",)")$..")#$)&7."=/,&'("))GE 256&G/%/#&#$) )")$..")-)$56H>$%I)0E J"8>$.?K80/&) )&)5"%+'(")8+,-./0&)0"8>$.?$)7&.&)&)5"%+'(")&8&%L6/0&)

<+&8#") I))1$):".,&)?$8-./0&@)7"#$,)&/8#&)#$:/8/.95$)6.K5)6/7"5)#$)#/:$.$8'&5):/8/6&5D))!"#$%#&#'))

))()*#+&#&#')

)),)$*+#&#'-

))

))-

Aula  passada  

A  aproximação  é  melhor  quando  Δx  -­‐>  0  

As  diferenças  centradas  dão  uma  aproximação  mais  exacta  

Page 4: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�vh), �vh é o fluxo de h

3

Advecção  2D

1D:  

2D:  Outra  notação:  

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�vh), �vh é o fluxo de h

3

Aula  passada  

Page 5: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

Advecção  2D

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�vh), �vh é o fluxo de h

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

3

Esta  forma  é  usável  em  duas  condições:  

•  u,  v  =  constante  (advecção  linear)  •                                             (fluído  incompressível)  

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

3

Aula  passada  

Page 6: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

Advecção  2D

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�vh), �vh é o fluxo de h

3

Diferença  avançada  no  

tempo  

Diferença  centrada  no  espaço  em  x  

Diferença  centrada  no  espaço  em  y  

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

DiscreSzação  no  esquema  de  Lax:  

Aula  passada  

Page 7: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

Advecção  2D

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�vh), �vh é o fluxo de h

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

DiscreSzação  no  esquema  de  Lax:  

t=n:  

y  

x  

k,j   k+1,j  k-­‐1,j  

k,j+1  

k,j-­‐1  

Δx  Δy  

Aula  passada  

Page 8: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

Advecção  2D

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�vh), �vh é o fluxo de h

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

DiscreSzação  no  esquema  de  Lax:  

t=n+1:  

y  

x  

k,j   k+1,j  k-­‐1,j  

k,j+1  

k,j-­‐1  

Δx  Δy  

Aula  passada  

Page 9: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

Advecção  2D

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�vh), �vh é o fluxo de h

3

DiscreSzação  no  esquema  de  Lax:  

Aula  passada  

Page 10: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

10  

Advecção  2D

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

# -*- coding: utf-8 -*-"""Created on Tue Feb 14 12:17:30 2017

@author: susana"""

import matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cm

plt.rcParams['figure.figsize'] = 10, 6

#%% Parâmetros

# discretizaçãont=2000; nx=101; ny=101 # número de pontos no tempo e espaço (x e y)passo=10; # intervalo ebtre figurasdx=1000.; dy=1000.; # espaçamento dos pontos no espaço (x e y)x = np.arange(0,nx)*dx # vector de pontos no espaço (x)y = np.arange(0,ny)*dy # vector de pontos no espaço (y)

xmin=min(x); xmax=max(x) # valor mínimo e máximo do vector xymin=min(y); ymax=max(y) # valor mínimo e máximo do vector y

xx=np.zeros([nx,ny]) # matriz 2D de valores x (posição em x)yy=np.zeros([nx,ny]) # matriz 2D de valores y (posição em y)for ix in range(nx): for iy in range(ny): xx[ix,iy] = x[ix] yy[ix,iy] = y[iy]

1# estaçãoixStation = nx-2 # posição da estação, coordenada xiyStation = ny/2 # posição da estação, coordenada yhStation = np.zeros(nt) # valores da variável h na estação

# velocidadesuspeed=10 # velocidade de propagação da direcção x vspeed=0 # velocidade de propagação da direcção y ws = np.sqrt(uspeed**2 + vspeed**2) # velocidade de propagação total

dt = 0.68 * dx / ws # espaçamento entre pontos no tempodt2dx = dt/(2*dx) # dt/(2 dx)dt2dy = dt/(2*dy) # dt/(2 dy)

courant = ws*dt/dx # número de courant

u = uspeed * np.ones([nx,ny]) # matriz de velocidades (x)uP = np.zeros([nx,ny]) # matriz de velocidades futuras (x)uP[:] = u[:] # inicialização da matriz de velocidades futuras (x)

v = vspeed * np.ones([nx,ny]) # matriz de velocidades (y)vP = np.zeros([nx,ny]) # matriz de velocidades futuras (y)vP[:] = v[:] # inicialização da matriz de velocidades futuras (y)

#%% Definição de h inicial (perturbação/sinal a propagar/advectar)

hJUMP=10 # amplitude inicial do sinalxJUMP=(xmax+xmin)/2. # localização inicial (em x) do sinal (= valor médio/central do vector x)LxJUMP=10.*dx # largura inicial do sinal (x)yJUMP=(ymax+ymin)/2. # localização inicial (em y) do sinal (= valor médio/central do vector y)LyJUMP=1000.*dy # largura inicial do sinal (y)

2

Aula  passada  

Page 11: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

# estaçãoixStation = nx-2 # posição da estação, coordenada xiyStation = ny/2 # posição da estação, coordenada yhStation = np.zeros(nt) # valores da variável h na estação

# velocidadesuspeed=10 # velocidade de propagação da direcção x vspeed=0 # velocidade de propagação da direcção y ws = np.sqrt(uspeed**2 + vspeed**2) # velocidade de propagação total

dt = 0.68 * dx / ws # espaçamento entre pontos no tempodt2dx = dt/(2*dx) # dt/(2 dx)dt2dy = dt/(2*dy) # dt/(2 dy)

courant = ws*dt/dx # número de courant

u = uspeed * np.ones([nx,ny]) # matriz de velocidades (x)uP = np.zeros([nx,ny]) # matriz de velocidades futuras (x)uP[:] = u[:] # inicialização da matriz de velocidades futuras (x)

v = vspeed * np.ones([nx,ny]) # matriz de velocidades (y)vP = np.zeros([nx,ny]) # matriz de velocidades futuras (y)vP[:] = v[:] # inicialização da matriz de velocidades futuras (y)

#%% Definição de h inicial (perturbação/sinal a propagar/advectar)

hJUMP=10 # amplitude inicial do sinalxJUMP=(xmax+xmin)/2. # localização inicial (em x) do sinal (= valor médio/central do vector x)LxJUMP=10.*dx # largura inicial do sinal (x)yJUMP=(ymax+ymin)/2. # localização inicial (em y) do sinal (= valor médio/central do vector y)LyJUMP=1000.*dy # largura inicial do sinal (y)

2

# -*- coding: utf-8 -*-"""Created on Tue Feb 14 12:17:30 2017

@author: susana"""

import matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cm

plt.rcParams['figure.figsize'] = 10, 6

#%% Parâmetros

# discretizaçãont=2000; nx=101; ny=101 # número de pontos no tempo e espaço (x e y)passo=10; # intervalo ebtre figurasdx=1000.; dy=1000.; # espaçamento dos pontos no espaço (x e y)x = np.arange(0,nx)*dx # vector de pontos no espaço (x)y = np.arange(0,ny)*dy # vector de pontos no espaço (y)

xmin=min(x); xmax=max(x) # valor mínimo e máximo do vector xymin=min(y); ymax=max(y) # valor mínimo e máximo do vector y

xx=np.zeros([nx,ny]) # matriz 2D de valores x (posição em x)yy=np.zeros([nx,ny]) # matriz 2D de valores y (posição em y)for ix in range(nx): for iy in range(ny): xx[ix,iy] = x[ix] yy[ix,iy] = y[iy]

1

11  

Advecção  2D

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

Estação  

Sinal  na  estação  

Aula  passada  

Page 12: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

Advecção  2D

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

iyStation = ny/2 # posição da estação, coordenada yhStation = np.zeros(nt) # valores da variável h na estação

# velocidadesuspeed=10 # velocidade de propagação da direcção x vspeed=0 # velocidade de propagação da direcção y ws = np.sqrt(uspeed**2 + vspeed**2) # velocidade de propagação total

dt = 0.68 * dx / ws # espaçamento entre pontos no tempodt2dx = dt/(2*dx) # dt/(2 dx)dt2dy = dt/(2*dy) # dt/(2 dy)

courant = ws*dt/dx # número de courant

u = uspeed * np.ones([nx,ny]) # matriz de velocidades (x)uP = np.zeros([nx,ny]) # matriz de velocidades futuras (x)uP[:] = u[:] # inicialização da matriz de velocidades futuras (x)

v = vspeed * np.ones([nx,ny]) # matriz de velocidades (y)vP = np.zeros([nx,ny]) # matriz de velocidades futuras (y)vP[:] = v[:] # inicialização da matriz de velocidades futuras (y)

#%% Definição de h inicial (perturbação/sinal a propagar/advectar)

hJUMP=10 # amplitude inicial do sinalxJUMP=(xmax+xmin)/2. # localização inicial (em x) do sinal (= valor médio/central do vector x)LxJUMP=10.*dx # largura inicial do sinal (x)yJUMP=(ymax+ymin)/2. # localização inicial (em y) do sinal (= valor médio/central do vector y)LyJUMP=2000.*dy # largura inicial do sinal (y)

# perturbação/sinal inicial:h = hJUMP*np.exp(-((xx-xJUMP)/LxJUMP)**2 - ((yy-yJUMP)/LyJUMP)**2)hP = np.zeros([nx,ny]) # sinal no passo temporal seguinte

2

Aula  passada  

Page 13: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

hStation[0] = h[ixStation, iyStation] # localização da estação (x,y)

# plotplt.close()plt.rcParams['figure.figsize'] = 8, 6

# plt.contourf(xx,yy,h)plt.pcolor(xx,yy,h) # figura 2D do sinal inicialplt.clim(0,10) # limites da barra de corescb=plt.colorbar()cb.set_label(u'Amplitude da perturbação') # legenda da barra de cores

# marcar a estação com um ponto brancoplt.scatter(xx[ixStation, iyStation], yy[ixStation, iyStation], c='w', edgecolors='w')

plt.xlabel(u'Posição x (m)')plt.ylabel(u'Posição y (m)')plt.title(u'Perturbação t=0 s')

plt.savefig('fig/advection2d-lax-t0.png')

#%% Implementação do método LAX, propagar o sinal no tempo

for it in range(1,nt): hu = h*u hv = h*v # Avançar o sinal em todo o domínio excepto nas fronteiras for ix in range(1,nx-1): for iy in range(1,ny-1): hP[ix,iy] = (h[ix-1,iy] + h[ix+1,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[ix+1,iy] - hu[ix-1,iy]) \

3

Advecção  2D

iyStation = ny/2 # posição da estação, coordenada yhStation = np.zeros(nt) # valores da variável h na estação

# velocidadesuspeed=10 # velocidade de propagação da direcção x vspeed=0 # velocidade de propagação da direcção y ws = np.sqrt(uspeed**2 + vspeed**2) # velocidade de propagação total

dt = 0.68 * dx / ws # espaçamento entre pontos no tempodt2dx = dt/(2*dx) # dt/(2 dx)dt2dy = dt/(2*dy) # dt/(2 dy)

courant = ws*dt/dx # número de courant

u = uspeed * np.ones([nx,ny]) # matriz de velocidades (x)uP = np.zeros([nx,ny]) # matriz de velocidades futuras (x)uP[:] = u[:] # inicialização da matriz de velocidades futuras (x)

v = vspeed * np.ones([nx,ny]) # matriz de velocidades (y)vP = np.zeros([nx,ny]) # matriz de velocidades futuras (y)vP[:] = v[:] # inicialização da matriz de velocidades futuras (y)

#%% Definição de h inicial (perturbação/sinal a propagar/advectar)

hJUMP=10 # amplitude inicial do sinalxJUMP=(xmax+xmin)/2. # localização inicial (em x) do sinal (= valor médio/central do vector x)LxJUMP=10.*dx # largura inicial do sinal (x)yJUMP=(ymax+ymin)/2. # localização inicial (em y) do sinal (= valor médio/central do vector y)LyJUMP=2000.*dy # largura inicial do sinal (y)

# perturbação/sinal inicial:h = hJUMP*np.exp(-((xx-xJUMP)/LxJUMP)**2 - ((yy-yJUMP)/LyJUMP)**2)hP = np.zeros([nx,ny]) # sinal no passo temporal seguinte

2

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

h = h0e−�

x−x0Lx

�2−�

y−y0Ly

�2

3

Page 14: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

Advecção  2D

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

h = h0e−�

x−x0Lx

�2−�

y−y0Ly

�2

3

Lx=10,  Ly=10   Lx=10,  Ly=20  

Lx=10,  Ly=100   Lx=10,  Ly=1000  

Page 15: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

Advecção  2D

# perturbação/sinal inicial:h = hJUMP*np.exp(-((xx-xJUMP)/LxJUMP)**2 - ((yy-yJUMP)/LyJUMP)**2)hP = np.zeros([nx,ny]) # sinal no passo temporal seguintehStation[0] = h[ixStation, iyStation] # localização da estação (x,y)

# plotplt.close()plt.rcParams['figure.figsize'] = 8, 6

# plt.contourf(xx,yy,h)plt.pcolor(xx,yy,h) # figura 2D do sinal inicialplt.clim(0,10) # limites da barra de corescb=plt.colorbar()cb.set_label(u'Amplitude da perturbação') # legenda da barra de cores

# marcar a estação com um ponto brancoplt.scatter(xx[ixStation, iyStation], yy[ixStation, iyStation], c='w', edgecolors='w')

plt.xlabel(u'Posição x (m)')plt.ylabel(u'Posição y (m)')plt.title(u'Perturbação t=0 s')

plt.savefig('fig/advection2d-lax-t0.png')

#%% plot3D

fig = plt.figure()ax = plt.axes(projection='3d')

surf=ax.plot_surface(xx,yy,h, rstride=2, cstride=10, cmap=cm.jet) # figura 2D do sinal inicialax.set_zlim(0,10)

3fig.colorbar(surf, shrink=0.5)

ax.set_xlabel(u'Posição x (m)')ax.set_ylabel(u'Posição y (m)')ax.set_zlabel(u'Amplitude')ax.set_title(u'Perturbação t=0 s')

plt.savefig('fig3d/advection2d-lax-t0.png')

#%% Implementação do método LAX, propagar o sinal no tempo

for it in range(1,nt): hu = h*u hv = h*v # Avançar o sinal em todo o domínio excepto nas fronteiras for ix in range(1,nx-1): for iy in range(1,ny-1): hP[ix,iy] = (h[ix-1,iy] + h[ix+1,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[ix+1,iy] - hu[ix-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,iy-1])

# Condições fronteira cíclicas em x for iy in range(1,ny-1): ix=0 hP[ix,iy] = (h[nx-1,iy] + h[ix+1,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[ix+1,iy] - hu[nx-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,iy-1]) ix=nx-1 hP[ix,iy] = (h[ix-1,iy] + h[0,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[0,iy] - hu[ix-1,iy]) \

4

Page 16: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

hStation[0] = h[ixStation, iyStation] # localização da estação (x,y)

# plotplt.close()plt.rcParams['figure.figsize'] = 8, 6

# plt.contourf(xx,yy,h)plt.pcolor(xx,yy,h) # figura 2D do sinal inicialplt.clim(0,10) # limites da barra de corescb=plt.colorbar()cb.set_label(u'Amplitude da perturbação') # legenda da barra de cores

# marcar a estação com um ponto brancoplt.scatter(xx[ixStation, iyStation], yy[ixStation, iyStation], c='w', edgecolors='w')

plt.xlabel(u'Posição x (m)')plt.ylabel(u'Posição y (m)')plt.title(u'Perturbação t=0 s')

plt.savefig('fig/advection2d-lax-t0.png')

#%% Implementação do método LAX, propagar o sinal no tempo

for it in range(1,nt): hu = h*u hv = h*v # Avançar o sinal em todo o domínio excepto nas fronteiras for ix in range(1,nx-1): for iy in range(1,ny-1): hP[ix,iy] = (h[ix-1,iy] + h[ix+1,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[ix+1,iy] - hu[ix-1,iy]) \

3 - dt2dy * (hv[ix,iy+1] - hv[ix,iy-1])

# Condições fronteira cíclicas em x for iy in range(1,ny-1): ix=0 hP[ix,iy] = (h[nx-1,iy] + h[ix+1,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[ix+1,iy] - hu[nx-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,iy-1]) ix=nx-1 hP[ix,iy] = (h[ix-1,iy] + h[0,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[0,iy] - hu[ix-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,iy-1])

# # Condições fronteira abertas em x # hP[0,iy]=hP[1,iy] # hP[nx-1,iy]=hP[nx-2,iy]

# Condições fronteira cíclicas em y for ix in range(1,nx-1): iy=0 hP[ix,iy] = (h[ix-1,iy] + h[ix+1,iy] + h[ix,ny-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[ix+1,iy] - hu[ix-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,ny-1]) iy=ny-1 hP[ix,iy] = (h[ix-1,iy] + h[ix+1,iy] + h[ix,iy-1] + h[ix,0])/4. \ - dt2dx * (hu[ix+1,iy] - hu[ix-1,iy]) \ - dt2dy * (hv[ix,0] - hv[ix,iy-1])

# # Condições fronteira abertas em y # hP[ix,0]=hP[ix,1] # hP[ix,ny-1]=hP[ix,ny-2]

4

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�vh), �vh é o fluxo de h

3

Page 17: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

Advecção  2D

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�vh), �vh é o fluxo de h

3

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

DiscreSzação  no  esquema  de  Lax:  

t=n:  

y  

x  

k,j   k+1,j  k-­‐1,j  

k,j+1  

k,j-­‐1  

Δx  Δy  

Page 18: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

- dt2dy * (hv[ix,iy+1] - hv[ix,iy-1])

# Condições fronteira cíclicas em x for iy in range(1,ny-1): ix=0 hP[ix,iy] = (h[nx-1,iy] + h[ix+1,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[ix+1,iy] - hu[nx-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,iy-1]) ix=nx-1 hP[ix,iy] = (h[ix-1,iy] + h[0,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[0,iy] - hu[ix-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,iy-1])

# # Condições fronteira abertas em x # hP[0,iy]=hP[1,iy] # hP[nx-1,iy]=hP[nx-2,iy]

# Condições fronteira cíclicas em y for ix in range(1,nx-1): iy=0 hP[ix,iy] = (h[ix-1,iy] + h[ix+1,iy] + h[ix,ny-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[ix+1,iy] - hu[ix-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,ny-1]) iy=ny-1 hP[ix,iy] = (h[ix-1,iy] + h[ix+1,iy] + h[ix,iy-1] + h[ix,0])/4. \ - dt2dx * (hu[ix+1,iy] - hu[ix-1,iy]) \ - dt2dy * (hv[ix,0] - hv[ix,iy-1])

# # Condições fronteira abertas em y # hP[ix,0]=hP[ix,1] # hP[ix,ny-1]=hP[ix,ny-2]

4

Page 19: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

# Condições fronteira nos cantos ix=0; ixm=nx-1; ixp=1 iy=0; iym=ny-1; iyp=1 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

ix=nx-1; ixm=nx-2; ixp=0 iy=0; iym=ny-1; iyp=1 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

ix=0; ixm=nx-1; ixp=1 iy=ny-1; iym=ny-2; iyp=0 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

ix=nx-1; ixm=nx-2; ixp=0 iy=ny-1; iym=ny-2; iyp=0 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

# # Condições fronteira abertas nos cantos # hP[0,0]=hP[1,1] # hP[0,ny-1]=hP[1,ny-2] # hP[nx-1,0]=hP[nx-2,1] # hP[nx-1,ny-1]=hP[nx-2,ny-2] # actualizar o sinal

5

Page 20: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

# Condições fronteira nos cantos ix=0; ixm=nx-1; ixp=1 iy=0; iym=ny-1; iyp=1 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

ix=nx-1; ixm=nx-2; ixp=0 iy=0; iym=ny-1; iyp=1 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

ix=0; ixm=nx-1; ixp=1 iy=ny-1; iym=ny-2; iyp=0 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

ix=nx-1; ixm=nx-2; ixp=0 iy=ny-1; iym=ny-2; iyp=0 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

# # Condições fronteira abertas nos cantos # hP[0,0]=hP[1,1] # hP[0,ny-1]=hP[1,ny-2] # hP[nx-1,0]=hP[nx-2,1] # hP[nx-1,ny-1]=hP[nx-2,ny-2] # actualizar o sinal

5 h[:]=hP[:] # Fazer figuras com as soluções, de 10 em 10 passos no tempo if (it+1)%passo==0:# if it<3*passo: plt.close() plt.rcParams['figure.figsize'] = 8, 6 # plt.contourf(xx,yy,h) plt.pcolor(xx,yy,h) plt.clim(0,10) cb=plt.colorbar() cb.set_label(u'Amplitude da perturbação') plt.scatter(xx[ixStation, iyStation], yy[ixStation, iyStation], c='w', edgecolors='w') plt.xlabel(u'Posição x (m)') plt.ylabel(u'Posição y (m)') plt.title(u'Perturbação t='+ str(it*dt) +' s') plt.savefig('fig/advection2d-lax-t'+ str(it) +'.png') # guardar o sinal na estação hStation[it] = h[ixStation, iyStation]

# figura com a evolução do sinal na estação plt.close()plt.rcParams['figure.figsize'] = 8, 6plt.plot(np.arange(0,nt)*dt/60., hStation)

plt.ylabel(u'Amplitude')plt.xlabel(u'Tempo (min)')plt.title(u'Estação ix='+ str(ixStation) +', iy='+ str(iyStation) +', courant='+ str(courant))plt.savefig('advection2d-lax-station-courant'+ str(courant) +'.png')

6

Page 21: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

Advecção  2D,  Lax

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

Page 22: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

Advecção  2D,  Lax

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

Page 23: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

Advecção  2D,  Lax

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

Page 24: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

Advecção  2D,  Lax

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= −ux

∂T

∂x− uy

∂T

∂y

∂T

∂t= −u

∂T

∂x− v

∂T

∂y

3

Page 25: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

Equação  de  advecção  (linear,  1D)

•  Trata-­‐se  de  um  método  de  1a  ordem  no  tempo  e  2a  ordem  no  espaço.  

•  A  solução  depende  de  condições  fronteira  espaciais.  Vamos  definir  a  solução  num  domínio  espacial  finito:  

•  Vamos  considerar  dois  casos:    

•  Condições  cíclicas  (periódicas):  •  Condições  “abertas”:  

∂T

∂t= −u

∂T

∂x, u = const

∂T

∂t= K

∂2T

∂x2, K = const

∂2V

∂x2+

∂2V

∂y2= f(x, y)

∂2T

∂x2+

∂2T

∂y2= 0

∂2u

∂t2= c2

�∂2u

∂x2+

∂2u

∂y2

1

f(x0 +∆x)− f(x0 −∆x) = 2

�∂f

∂x

x=x0

∆x+2

3!

�∂3f

∂x3

x=x0

∆x3 + ...

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)− 2

3!

�∂3f∂x3

x=x0

∆x3 + ...

2∆x

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

23!

�∂3f∂x3

x=x0

∆x3

2∆x+ ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

1

3!

�∂3f

∂x3

x=x0

∆x2 + ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

(3)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0)− f(x0 −∆x)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

Tn+1k − Tn

k

∆t= −u

Tnk+1 − Tn

k−1

2∆x⇒ Tn+1

k = Tnk − u∆t

Tnk+1 − Tn

k−1

2∆x

2

f(x0 +∆x)− f(x0 −∆x) = 2

�∂f

∂x

x=x0

∆x+2

3!

�∂3f

∂x3

x=x0

∆x3 + ...

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)− 2

3!

�∂3f∂x3

x=x0

∆x3 + ...

2∆x

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

23!

�∂3f∂x3

x=x0

∆x3

2∆x+ ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

1

3!

�∂3f

∂x3

x=x0

∆x2 + ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

(3)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0)− f(x0 −∆x)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

Tn+1k − Tn

k

∆t= −u

Tnk+1 − Tn

k−1

2∆x⇒ Tn+1

k = Tnk − u∆t

Tnk+1 − Tn

k−1

2∆x

x ∈ [0, Lx] =⇒ xk = (k − 1)∆x, k = 1, ..., N

x0 = xN , xN+1 = x

∂T

∂x= 0, emx = x1, x = xN

2

f(x0 +∆x)− f(x0 −∆x) = 2

�∂f

∂x

x=x0

∆x+2

3!

�∂3f

∂x3

x=x0

∆x3 + ...

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)− 2

3!

�∂3f∂x3

x=x0

∆x3 + ...

2∆x

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

23!

�∂3f∂x3

x=x0

∆x3

2∆x+ ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

1

3!

�∂3f

∂x3

x=x0

∆x2 + ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

(3)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0)− f(x0 −∆x)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

Tn+1k − Tn

k

∆t= −u

Tnk+1 − Tn

k−1

2∆x⇒ Tn+1

k = Tnk − u∆t

Tnk+1 − Tn

k−1

2∆x

x ∈ [0, Lx] =⇒ xk = (k − 1)∆x, k = 1, ..., N

x0 = xN , xN+1 = x1

∂T

∂x= 0, emx = x1, x = xN

2

f(x0 +∆x)− f(x0 −∆x) = 2

�∂f

∂x

x=x0

∆x+2

3!

�∂3f

∂x3

x=x0

∆x3 + ...

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)− 2

3!

�∂3f∂x3

x=x0

∆x3 + ...

2∆x

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

23!

�∂3f∂x3

x=x0

∆x3

2∆x+ ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x−

1

3!

�∂3f

∂x3

x=x0

∆x2 + ...

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

(3)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0)− f(x0 −∆x)

∆x+O(∆x)

�∂f

∂x

x=x0

=f(x0 +∆x)− f(x0 −∆x)

2∆x+O(∆x2)

Tn+1k − Tn

k

∆t= −u

Tnk+1 − Tn

k−1

2∆x⇒ Tn+1

k = Tnk − u∆t

Tnk+1 − Tn

k−1

2∆x

x ∈ [0, Lx] =⇒ xk = (k − 1)∆x, k = 1, ..., N

x0 = xN , xN+1 = x1

∂T

∂x= 0, emx = x1, x = xN

2

Page 26: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

- dt2dy * (hv[ix,iy+1] - hv[ix,iy-1])

# Condições fronteira cíclicas em x for iy in range(1,ny-1): ix=0 hP[ix,iy] = (h[nx-1,iy] + h[ix+1,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[ix+1,iy] - hu[nx-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,iy-1]) ix=nx-1 hP[ix,iy] = (h[ix-1,iy] + h[0,iy] + h[ix,iy-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[0,iy] - hu[ix-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,iy-1])

# # Condições fronteira abertas em x # hP[0,iy]=hP[1,iy] # hP[nx-1,iy]=hP[nx-2,iy]

# Condições fronteira cíclicas em y for ix in range(1,nx-1): iy=0 hP[ix,iy] = (h[ix-1,iy] + h[ix+1,iy] + h[ix,ny-1] + h[ix,iy+1])/4. \ - dt2dx * (hu[ix+1,iy] - hu[ix-1,iy]) \ - dt2dy * (hv[ix,iy+1] - hv[ix,ny-1]) iy=ny-1 hP[ix,iy] = (h[ix-1,iy] + h[ix+1,iy] + h[ix,iy-1] + h[ix,0])/4. \ - dt2dx * (hu[ix+1,iy] - hu[ix-1,iy]) \ - dt2dy * (hv[ix,0] - hv[ix,iy-1])

# # Condições fronteira abertas em y # hP[ix,0]=hP[ix,1] # hP[ix,ny-1]=hP[ix,ny-2]

4

Page 27: ModNum aula13 29Mar...Modelação)Numérica2017 Aula13,29/Mar • Advecção2D • Projecto)#2)) h2p://modnum.ucs.ciencias.ulisboa.pt))

yn+1 = yn +∆t

6(k1 + 2k2 + 2k3 + k4)

tn+1 = tn +∆t(4)

k1 = f (tn, yn)

k2 = f

�tn +

∆t

2, yn +

∆t

2k1

k3 = f

�tn +

∆t

2, yn +

∆t

2k2

k4 = f (tn +∆t, yn +∆t k3)

(5)

∂h

∂t= −u

∂h

∂x

∂h

∂t= −ux

∂h

∂x− uy

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y

∂h

∂t= −u

∂h

∂x− v

∂h

∂y=⇒

∂h

∂t= −

∂uh

∂x−

∂vh

∂y

∂h

∂t= −∇(�uh), �vh é o fluxo de h

∂u

∂x+

∂u

∂y= 0

hn+1k,j − hnk,j

∆t= −

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j − hnk,j = −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j = hnk,j −∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

hn+1k,j =

1

4(hnk−1,j+hnk+1,j+hnk,j−1+hnk,j+1)−∆t

unk+1,jhnk+1,j − unk−1,jh

nk−1,j

2∆x−∆t

vnk,j+1hnk,j+1 − vnk,j−1h

nk,j−1

2∆y

3

# Condições fronteira nos cantos ix=0; ixm=nx-1; ixp=1 iy=0; iym=ny-1; iyp=1 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

ix=nx-1; ixm=nx-2; ixp=0 iy=0; iym=ny-1; iyp=1 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

ix=0; ixm=nx-1; ixp=1 iy=ny-1; iym=ny-2; iyp=0 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

ix=nx-1; ixm=nx-2; ixp=0 iy=ny-1; iym=ny-2; iyp=0 hP[ix,iy] = 1./4. * (h[ixm,iy] + h[ixp,iy] + h[ix,iym] + h[ix,iyp]) \ - dt2dx * (hu[ixp,iy] - hu[ixm,iy]) \ - dt2dy * (hv[ix,iyp] - hv[ix,iym])

# # Condições fronteira abertas nos cantos # hP[0,0]=hP[1,1] # hP[0,ny-1]=hP[1,ny-2] # hP[nx-1,0]=hP[nx-2,1] # hP[nx-1,ny-1]=hP[nx-2,ny-2] # actualizar o sinal

5