﻿ Sample Problems > Usage > Constraints > 3d_surf_constraint

# 3d_surf_constraint

Navigation:  Sample Problems > Usage > Constraints >

# 3d_surf_constraint

{ 3D_SURF_CONSTRAINT.PDE

This problem demonstrates the use of CONSTRAINTS on surface integrals in 3D.

This is a modification of problem 3D_BRICKS.PDE.

We apply the constraint that the total flux leaving the figure must be 1.0.

The constraint acts as an auxilliary energy sink, so we report the amount

of energy lost to the constraint.

See the problems in the  APPLICATIONS | CONTROL folder for methods

that control the input power to achieve the same kind of goal.

}

title '3D Surface Constraint'

select

regrid=off { use fixed grid to speed up demonstration }

coordinates

cartesian3

variables

Tp

definitions

long = 1

wide = 1

K                   { thermal conductivity -- values supplied later }

Q = 10*exp(-x^2-y^2-z^2)       { Thermal source }

initial values

Tp = 0.

equations

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

constraints

sintegral(normal(k*grad(Tp))) = 1   { force  total surface integral to 1 }

extrusion

surface "bottom" z = -long

layer 'lower'

surface "middle" z=0

layer 'upper'

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(-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 }

layer 1 k=0.2       { bottom left brick }

layer 2 k=0.4       { 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 surface z=0 as "XY Temp"

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

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

summary

report("Constraint Validation:")

report(sintegral(normal(k*grad(Tp)))) as "Constrained surface integral on total outer surface"

report(integral(Q))   as "Total interior source"

report(integral(Q) - sintegral(normal(k*grad(Tp)))) as "Energy lost to constraint"

end