Пример #1
0
def run(dom, stream):
    constraints=VectorConstrainerOverBox()
    constraints.domain=Link(dom)
    constraints.left=[1,0,0]
    constraints.right=[1,0,0]
    constraints.top=[0,1,0]
    constraints.bottom=[0,1,0]
    constraints.front=[0,0,1]
    constraints.back=[0,0,1]

    sqe=Sequencer()
    sqe.dt_max=0.5
    sqe.t_end=1.

    source=EvaluateExpression()
    source.domain=Link(dom)
    source.t=Link(sqe)
    source.expression=["t","t"]

    flow=SteadyIncompressibleFlow()
    flow.domain=Link(dom,"domain")
    flow.internal_force=Link(source,"out")
    flow.location_prescribed_velocity=Link(constraints,"location_of_constraint")
    flow.prescribed_velocity=[0.,0.]

    ptest=Probe()
    ptest.expression="(x[0]+x[1]-1.)*t"
    ptest.t=Link(sqe)
    ptest.value=Link(flow,"pressure")

    s=Simulation([sqe,constraints,Simulation([flow],debug=True),ptest],debug=True)
    s.writeXML(stream)
    s.run()
Пример #2
0
def run(dom, stream):
    constraints=VectorConstrainerOverBox()
    constraints.domain=Link(dom)
    constraints.left=[1,0,0]
    constraints.right=[1,0,0]
    constraints.top=[0,1,0]
    constraints.bottom=[0,1,0]
    constraints.front=[0,0,1]
    constraints.back=[0,0,1]

    sqe=Sequencer()
    sqe.dt_max=0.5
    sqe.t_end=1.

    source=EvaluateExpression()
    source.domain=Link(dom)
    source.t=Link(sqe)
    source.expression=["t","t"]

    flow=SteadyIncompressibleFlow()
    flow.domain=Link(dom,"domain")
    flow.internal_force=Link(source,"out")
    flow.location_prescribed_velocity=Link(constraints,"location_of_constraint")
    flow.prescribed_velocity=[0.,0.]

    ptest=Probe()
    ptest.expression="(x[0]+x[1]-1.)*t"
    ptest.t=Link(sqe)
    ptest.value=Link(flow,"pressure")

    s=Simulation([sqe,constraints,Simulation([flow],debug=True),ptest],debug=True)
    s.writeXML(stream)
    s.run()
Пример #3
0
def run(dom, stream):
    sqe=Sequencer()
    sqe.t=0
    sqe.t_end=0.05

    constraints=ScalarConstrainerOverBox()
    constraints.domain=Link(dom)
    constraints.top=1
    constraints.bottom=1
    constraints.right=1
    constraints.left=1

    source=EvaluateExpression()
    source.domain=Link(dom)
    source.expression="(x[1]-x[0])*exp(-t)-exp(-t)*x[0]*x[1]"
    source.t=Link(sqe)
    boundaryvalue=EvaluateExpression()
    boundaryvalue.domain=Link(dom)
    boundaryvalue.expression="x[0]*x[1]*exp(-t)"
    boundaryvalue.t=Link(sqe)

    tt=TemperatureAdvection()
    tt.domain=Link(dom)
    tt.temperature=Link(boundaryvalue,"out")
    tt.velocity=numpy.array([1,-1])
    tt.thermal_source=Link(source,"out")
    tt.location_fixed_temperature=Link(constraints,"location_of_constraint")
    tt.fixed_temperature=Link(boundaryvalue,"out")
    tt.safety_factor=0.1

    probe=Probe()
    probe.expression="x[0]*x[1]*exp(-t)"
    probe.t=Link(sqe)
    probe.value=Link(tt,"temperature")


    s=Simulation([sqe,constraints,tt,probe],debug=True)
    s.writeXML(stream)
    s.run()
Пример #4
0
def run(dom, stream):
    sqe = Sequencer()
    sqe.t = 0
    sqe.t_end = 0.05

    constraints = ScalarConstrainerOverBox()
    constraints.domain = Link(dom)
    constraints.top = 1
    constraints.bottom = 1
    constraints.right = 1
    constraints.left = 1

    source = EvaluateExpression()
    source.domain = Link(dom)
    source.expression = "(x[1]-x[0])*exp(-t)-exp(-t)*x[0]*x[1]"
    source.t = Link(sqe)
    boundaryvalue = EvaluateExpression()
    boundaryvalue.domain = Link(dom)
    boundaryvalue.expression = "x[0]*x[1]*exp(-t)"
    boundaryvalue.t = Link(sqe)

    tt = TemperatureAdvection()
    tt.domain = Link(dom)
    tt.temperature = Link(boundaryvalue, "out")
    tt.velocity = numpy.array([1, -1])
    tt.thermal_source = Link(source, "out")
    tt.location_fixed_temperature = Link(constraints, "location_of_constraint")
    tt.fixed_temperature = Link(boundaryvalue, "out")
    tt.safety_factor = 0.1

    probe = Probe()
    probe.expression = "x[0]*x[1]*exp(-t)"
    probe.t = Link(sqe)
    probe.value = Link(tt, "temperature")

    s = Simulation([sqe, constraints, tt, probe], debug=True)
    s.writeXML(stream)
    s.run()
def run(dom, stream):
    temp_val = InterpolateOverBox()
    temp_val.domain = Link(dom, "domain")
    temp_val.value_left_bottom_front = 1.
    temp_val.value_right_bottom_front = 1.
    temp_val.value_left_top_front = 0.
    temp_val.value_right_top_front = 0.
    temp_val.value_left_bottom_back = 1.
    temp_val.value_right_bottom_back = 1.
    temp_val.value_left_top_back = 0.
    temp_val.value_right_top_back = 0.

    temp_constraints = ScalarConstrainerOverBox()
    temp_constraints.domain = Link(dom)
    temp_constraints.top = 1
    temp_constraints.bottom = 1

    vel_constraints = VectorConstrainerOverBox()
    vel_constraints.domain = Link(dom)
    vel_constraints.left = [1, 0, 0]
    vel_constraints.right = [1, 0, 0]
    vel_constraints.top = [0, 1, 0]
    vel_constraints.bottom = [0, 1, 0]
    vel_constraints.front = [0, 0, 1]
    vel_constraints.back = [0, 0, 1]

    mat = SimpleEarthModel()
    mat.density0 = 1.
    mat.viscocity0 = 1.
    mat.rayleigh_number = 10000.
    mat.alpha = 0.001

    temp = TemperatureAdvection(debug=True)
    temp.domain = Link(dom)
    temp.density = Link(mat, "density0")
    temp.heat_capacity = Link(mat, "heat_capacity")
    temp.location_fixed_temperature = Link(temp_constraints,
                                           "location_of_constraint")
    temp.fixed_temperature = Link(temp_val, "out")
    temp.safety_factor = 0.01
    mat.temperature = Link(temp, "temperature")
    grav = GravityForce()
    grav.domain = Link(dom, "domain")
    grav.direction = [0., -1., 0.]
    grav.density = Link(mat, "density")
    grav.gravity = Link(mat, "gravity")

    vel = SteadyIncompressibleFlow(debug=True)
    vel.domain = Link(dom)
    vel.internal_force = Link(grav, "gravity_force")
    vel.viscosity = Link(mat, "viscosity")
    vel.location_prescribed_velocity = Link(vel_constraints,
                                            "location_of_constraint")
    vel.rel_tol = 1.e-6
    temp.velocity = Link(vel, "velocity")

    sq = Sequencer()
    sq.t_end = 0.001

    vis = WriteVTK()
    vis.t = Link(sq)
    vis.data0 = Link(temp, "temperature")
    vis.data1 = Link(vel, "velocity")
    vis.dt = 0.0001
    vis.filename = os.path.join(WORKDIR, "temp.vtu")

    per = GaussianProfile()
    per.domain = Link(dom)
    per.x_c = [0.5, 0.5, 0.5]
    per.A = 0.0001
    per.width = 0.01
    per.r = 0

    lc = LinearCombination()
    lc.f0 = 1.
    lc.v0 = Link(per, "out")
    lc.f1 = 1.
    lc.v1 = Link(temp_val, "out")
    temp.temperature = Link(lc, "out")

    s = Simulation([
        sq, vel_constraints, temp_constraints,
        Simulation([vel], debug=True), temp, vis
    ],
                   debug=True)
    s.writeXML(stream)
    s.run()
try:
    WORKDIR = os.environ['MODELLIB_WORKDIR']
except KeyError:
    WORKDIR = '.'

dbg = True

dom = RectangularDomain(debug=dbg)
dom.dim = 3
dom.l = [0.5, 1., 1.]
dom.n = [30, 6, 6]
dom.order = 1
dom.integrationOrder = -1

sq = Sequencer(debug=dbg)
sq.t = 0
sq.t_end = 0.8
sq.dt_max = 100.

iob = InterpolateOverBox(debug=dbg)
iob.domain = Link(dom, "domain")
iob.value_left_bottom_front = [-1., 0., 0.]
iob.value_right_bottom_front = [0., 0., 0.]
iob.value_left_bottom_back = [-1., 0., 0.]
iob.value_right_bottom_back = [0., 0., 0.]
iob.value_left_top_front = [-1., 0., 0.]
iob.value_right_top_front = [0., 0., 0.]
iob.value_left_top_back = [-1., 0., 0.]
iob.value_right_top_back = [0., 0., 0.]
Пример #7
0
def run(dom, stream):
    temp_val=InterpolateOverBox()
    temp_val.domain=Link(dom,"domain")
    temp_val.value_left_bottom_front=1.
    temp_val.value_right_bottom_front=1.
    temp_val.value_left_top_front=0.
    temp_val.value_right_top_front=0.
    temp_val.value_left_bottom_back=1.
    temp_val.value_right_bottom_back=1.
    temp_val.value_left_top_back=0.
    temp_val.value_right_top_back=0.

    temp_constraints=ScalarConstrainerOverBox()
    temp_constraints.domain=Link(dom)
    temp_constraints.top=1
    temp_constraints.bottom=1

    vel_constraints=VectorConstrainerOverBox()
    vel_constraints.domain=Link(dom)
    vel_constraints.left=[1,0,0]
    vel_constraints.right=[1,0,0]
    vel_constraints.top=[0,1,0]
    vel_constraints.bottom=[0,1,0]
    vel_constraints.front=[0,0,1]
    vel_constraints.back=[0,0,1]

    mat=SimpleEarthModel()
    mat.density0=1.
    mat.viscocity0=1.
    mat.rayleigh_number=10000.
    mat.alpha=0.001

    temp=TemperatureAdvection(debug=True)
    temp.domain=Link(dom)
    temp.density=Link(mat,"density0")
    temp.heat_capacity=Link(mat,"heat_capacity")
    temp.location_fixed_temperature=Link(temp_constraints,"location_of_constraint")
    temp.fixed_temperature=Link(temp_val,"out")
    temp.safety_factor=0.01
    mat.temperature=Link(temp,"temperature")
    grav=GravityForce()
    grav.domain=Link(dom,"domain")
    grav.direction=[0.,-1.,0.]
    grav.density=Link(mat,"density")
    grav.gravity=Link(mat,"gravity")


    vel=SteadyIncompressibleFlow(debug=True)
    vel.domain=Link(dom)
    vel.internal_force=Link(grav,"gravity_force")
    vel.viscosity=Link(mat,"viscosity")
    vel.location_prescribed_velocity=Link(vel_constraints,"location_of_constraint")
    vel.rel_tol=1.e-6
    temp.velocity=Link(vel,"velocity")

    sq=Sequencer()
    sq.t_end=0.001

    vis=WriteVTK()
    vis.t=Link(sq)
    vis.data0=Link(temp,"temperature")
    vis.data1=Link(vel,"velocity")
    vis.dt=0.0001
    vis.filename=os.path.join(WORKDIR,"temp.vtu")

    per=GaussianProfile()
    per.domain=Link(dom)
    per.x_c=[0.5,0.5,0.5]
    per.A=0.0001
    per.width=0.01
    per.r=0

    lc=LinearCombination()
    lc.f0=1.
    lc.v0=Link(per,"out")
    lc.f1=1.
    lc.v1=Link(temp_val,"out")
    temp.temperature=Link(lc,"out")

    s=Simulation([sq,vel_constraints, temp_constraints,Simulation([vel],debug=True),temp,vis],debug=True)
    s.writeXML(stream)
    s.run()
Пример #8
0
   WORKDIR=os.environ['MODELLIB_WORKDIR']
except KeyError:
   WORKDIR='.'


dbg=True

dom=RectangularDomain(debug=dbg)
dom.dim=3
dom.l=[0.5,1.,1.]
dom.n=[30,6,6]
dom.order=1
dom.integrationOrder=-1


sq=Sequencer(debug=dbg)
sq.t=0
sq.t_end=0.8
sq.dt_max=100.

iob=InterpolateOverBox(debug=dbg)
iob.domain=Link(dom,"domain")
iob.value_left_bottom_front=[-1.,0.,0.]
iob.value_right_bottom_front=[0.,0.,0.]
iob.value_left_bottom_back=[-1.,0.,0.]
iob.value_right_bottom_back=[0.,0.,0.]
iob.value_left_top_front=[-1.,0.,0.]
iob.value_right_top_front=[0.,0.,0.]
iob.value_left_top_back=[-1.,0.,0.]
iob.value_right_top_back=[0.,0.,0.]