/[escript]/trunk/modellib/test/python/run_convection.py
ViewVC logotype

Annotation of /trunk/modellib/test/python/run_convection.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 912 - (hide annotations)
Wed Dec 6 03:29:49 2006 UTC (16 years, 3 months ago) by gross
File MIME type: text/x-python
File size: 3052 byte(s)
modellib.WriteVTK has been rewritten. Instead of only three data objects scalar,
vector, tensor it takes now up to 20 data objects data0 ... data19 and writes it into a 
single VTK file. There is also the possibilty to define individiual name tags name0,..., name19.
If no name is given the corresponding attribute name of the Link target is used. 
This simplifies the usage and increases efficiency.



1 jgs 147 # $Id$
2    
3     #
4     #
5     # a very simple convection model in model frame:
6     #
7    
8 elspeth 628 __copyright__=""" Copyright (c) 2006 by ACcESS MNRF
9     http://www.access.edu.au
10     Primary Business: Queensland, Australia"""
11     __license__="""Licensed under the Open Software License version 3.0
12     http://www.opensource.org/licenses/osl-3.0.php"""
13    
14 gross 706 import os
15 jgs 149 from esys.escript.modelframe import Link,Simulation
16 gross 911 from esys.modellib.geometry import RectangularDomain,ScalarConstrainerOverBox,VectorConstrainerOverBox
17 jgs 149 from esys.modellib.input import Sequencer,InterpolateOverBox,GaussianProfile,LinearCombination
18     from esys.modellib.flow import SteadyIncompressibleFlow
19     from esys.modellib.temperature import TemperatureAdvection
20     from esys.modellib.materials import SimpleEarthModel,GravityForce
21     from esys.modellib.visualization import WriteVTK
22 jgs 147
23 gross 728 try:
24     WORKDIR=os.environ['MODELLIB_WORKDIR']
25     except KeyError:
26     WORKDIR='.'
27    
28    
29 jgs 147 dom=RectangularDomain()
30     dom.order=2
31    
32 gross 820 temp_val=InterpolateOverBox()
33     temp_val.domain=Link(dom,"domain")
34     temp_val.value_left_bottom_front=1.
35     temp_val.value_right_bottom_front=1.
36     temp_val.value_left_top_front=0.
37     temp_val.value_right_top_front=0.
38     temp_val.value_left_bottom_back=1.
39     temp_val.value_right_bottom_back=1.
40     temp_val.value_left_top_back=0.
41     temp_val.value_right_top_back=0.
42    
43 gross 911 temp_constraints=ScalarConstrainerOverBox()
44 jgs 147 temp_constraints.domain=Link(dom)
45     temp_constraints.top=1
46     temp_constraints.bottom=1
47    
48 gross 911 vel_constraints=VectorConstrainerOverBox()
49 jgs 147 vel_constraints.domain=Link(dom)
50     vel_constraints.left=[1,0,0]
51     vel_constraints.right=[1,0,0]
52     vel_constraints.top=[0,1,0]
53     vel_constraints.bottom=[0,1,0]
54     vel_constraints.front=[0,0,1]
55     vel_constraints.back=[0,0,1]
56    
57     mat=SimpleEarthModel()
58     mat.density0=1.
59     mat.viscocity0=1.
60     mat.rayleigh_number=10000.
61     mat.alpha=0.001
62    
63     temp=TemperatureAdvection(debug=True)
64     temp.domain=Link(dom)
65     temp.density=Link(mat,"density0")
66     temp.heat_capacity=Link(mat,"heat_capacity")
67     temp.location_fixed_temperature=Link(temp_constraints,"location_of_constraint")
68     temp.fixed_temperature=Link(temp_val,"out")
69     temp.safety_factor=0.01
70     mat.temperature=Link(temp,"temperature")
71    
72    
73     grav=GravityForce()
74     grav.domain=Link(dom,"domain")
75     grav.direction=[0.,-1.,0.]
76     grav.density=Link(mat,"density")
77     grav.gravity=Link(mat,"gravity")
78    
79    
80     vel=SteadyIncompressibleFlow(debug=True)
81     vel.domain=Link(dom)
82     vel.internal_force=Link(grav,"gravity_force")
83     vel.viscosity=Link(mat,"viscosity")
84     vel.location_prescribed_velocity=Link(vel_constraints,"location_of_constraint")
85     vel.rel_tol=1.e-6
86     temp.velocity=Link(vel,"velocity")
87    
88     sq=Sequencer()
89 gross 820 sq.t_end=0.001
90 jgs 147
91     vis=WriteVTK()
92     vis.t=Link(sq)
93 gross 912 vis.data0=Link(temp,"temperature")
94     vis.data1=Link(vel,"velocity")
95 gross 820 vis.dt=0.0001
96 gross 728 vis.filename=WORKDIR+"/temp.xml"
97 jgs 147
98 jgs 148 per=GaussianProfile()
99 jgs 147 per.domain=Link(dom)
100     per.x_c=[0.5,0.5,0.5]
101     per.A=0.0001
102     per.width=0.01
103     per.r=0
104    
105     lc=LinearCombination()
106     lc.f0=1.
107     lc.v0=Link(per,"out")
108     lc.f1=1.
109     lc.v1=Link(temp_val,"out")
110     temp.temperature=Link(lc,"out")
111    
112 gross 823 s=Simulation([sq,temp_constraints,Simulation([vel],debug=True),temp,vis],debug=True)
113 jgs 147 s.writeXML()
114     s.run()

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26