3D_Integrals

Top  Previous  Next

{  3D_INTEGRALS.PDE

This problem demonstrates the specification of various integrals in 3D.

( This is a modification of problem  3D_BRICKS.PDE)

}

 

 

title '3D Integrals'

 

coordinates

   cartesian3

 

variables

   Tp

 

definitions

   long = 1

   wide = 1

   K                           { thermal conductivity -- values supplied later }

   Q = 10*max(1-x^2-y^2-z^2,0)              { Thermal source }

 

   flag22=0        { build a test function for region 2, layer 2 }

   check22 = if flag22>0 then Tp else 0

 

   flag20=0        { build a test function for region 2, all layers }

   check20 = if flag20>0 then Tp else 0

 

initial values

   Tp = 0.

 

equations

   div[k*grad(Tp)] + Q = 0        { the heat equation }

 

extrusion

surface "bottom" z = -long

layer 'bottom'

surface "middle" z=0

layer 'top'

surface 'top' z= long        { divide Z into two layers }

 

boundaries

   surface 1 value(Tp)=0        { fix bottom surface temp }

   surface 3 value(Tp)=0        { fix top surface temp }

 

   Region 1                { define full domain boundary in base plane }

      layer 1 k=1                { bottom right brick }

      layer 2 k=0.1                { top right brick }

      start "outside" (-wide,-wide)

        value(Tp) = 0                { fix all side temps }

        line to (wide,-wide)        { walk outer boundary in base plane }

          to (wide,wide)

          to (-wide,wide)

          to close

 

   Region 2 "Left"                { overlay a second region in left half }

      flag20=1

      layer 1 k=0.2                { bottom left brick }

      layer 2 k=0.4  flag22=1        { top left brick }

      start(-wide,-wide)

        line to (0,-wide)                { walk left half boundary in base plane }

          to (0,wide)

          to (-wide,wide)

          to close

 

monitors

     contour(Tp) on surface z=0  as "XY Temp"

     contour(Tp) on surface x=0  as "YZ Temp"

     contour(Tp) on surface y=0  as "ZX Temp"

     elevation(Tp) from (-wide,0,0) to (wide,0,0)  as "X-Axis Temp"

     elevation(Tp) from (0,-wide,0) to (0,wide,0)  as "Y-Axis Temp"

     elevation(Tp) from (0,0,-long) to (0,0,long)  as "Z-Axis Temp"

 

plots

     contour(Tp) on z=0  as "XY Temp"

     contour(Tp) on x=0  as "YZ Temp"

     contour(Tp) on y=0  as "ZX Temp"

     contour(k*dz(Tp)) on z=-0.001  as "Low Middle Z-Flux"

     contour(k*dz(Tp)) on z=0.001  as "High Middle Z-Flux"

 

     summary

                report(integral(Tp,2,2))                { integrals in region 2, layer 2 }

       report(integral(Tp,"Left","Top"))        

       report(integral(check22))

       report '-----'

 

                report(integral(Tp,2,0))                { integrals in region 2, all layers (selected by 0) }

                report(integral(check20))

       report '-----'

 

                report(integral(Tp,"ALL","ALL"))        { integrals over total volume }

                report(integral(Tp))

       report '-----'

 

       report(sintegral(normal(-k*grad(Tp)),2))        { surface integral on 'middle' }

       report(sintegral(normal(-k*grad(Tp)),'Middle'))        { surface integral on 'middle' }

       report(sintegral(-k*dz(Tp),2))        { surface integral on 'middle' }

       report '-----'

 

       report(sintegral(normal(-k*grad(Tp)),1))        as "Bottom Flux"

       report(sintegral(normal(-k*grad(Tp)),3))        as "Top Flux"

       report(sintegral(normal(-k*grad(Tp)),"outside")) as "Side Flux"

       report(sintegral(normal(-k*grad(Tp)),1)+sintegral(normal(-k*grad(Tp)),3)

               +sintegral(normal(-k*grad(Tp)),"outside")) as "Bottom+Top+Side Flux"

       report(sintegral(normal(-k*grad(Tp))))        { surface integral on total outer surface }

       report(integral(Q) )        as "Source Integral"

       report(sintegral(normal(-k*grad(Tp)),"outside")

               +sintegral(normal(-k*grad(Tp)),1)+sintegral(normal(-k*grad(Tp)),3)

               -integral(Q) )        as "Energy Error"

       report(integral(div(-k*grad(Tp))) )        as "Divergence Integral"

       report '-----'

 

       { surface integral over outer surface of region 2, layer 2 }

       report(sintegral(normal(-k*grad(Tp)),"Left","Top"))        

       report(integral(Q,"Left","Top"))        

       report '-----'

 

 

end