[Tutor] (no subject)

Alun Griffiths alun.griffiths at dsl.pipex.com
Thu Jul 5 08:30:27 CEST 2007


Hi

I am trying to build a simple model of a gas field.  At the moment I have 
these objects:
GasWell	represents the behaviour of a gas well
GasFluid	represents the thermodynamic behaviour of the gas
GasField	represents the field itself

The GasField object defines properties such as pressure and volume.  The 
fluid within it is represented by the GasFluid object which also defines 
the properties of the fluid flowing through GasWell objects associated with 
a particular GasField.  GasWell can be moved from one GasField object to 
another, so take the appropriate fluid behaviour from the GasFluid 
associated with the GasField to which it belongs.

At the moment, the GasField definition looks something like this

Class GasField(Object):
	def __init__(name, pres, vol, fluid, wells):
		self.name=name
		self.pres=pres
		self.vol=vol
		self.fluid=fluid		# GasFluid object
		self.wells=wells		# List of GasWell objects

No problems with creating the WELL list since I just append a bunch of 
GasWell objects to a new list.

The problem I have is how a particular GasWell knows which field it belongs 
to.  The only way I can think of so far involves some form of cross 
referencing where we define the GasField with an empty WELL list, define 
the GasWells by setting the field it belongs to explicitly then updating 
the WELL list "externally".  For example

wells = []
stuff = GasFluid( params )
field = GasField("My field", p, V, stuff, wells)
well1 = GasWell(params,  field)
well2 = GasWell(params,  field)
well3 = GasWell(params,  field)

wells.append(well1)
wells.append(well2)
wells.append(well2)
new_field.wells = wells

This cross-referencing of GasField and GasWells doesn't seem right to me - 
if we move a well from one field to another we have to update the GasWell 
object and the GasField.wells list.  Is there a more pythonic (or more 
sensible) way of doing this?

Thanks in advance

Alun Griffiths



More information about the Tutor mailing list