Skip to content
Snippets Groups Projects
Commit 57364e2f authored by Francois Henrotte's avatar Francois Henrotte
Browse files

new stuff: path (on the model of fixRelativePath), addNumberChoice,...

new stuff: path (on the model of fixRelativePath), addNumberChoice, preProcessing of ol files now blocking, etc
parent bb164f2c
No related branches found
No related tags found
No related merge requests found
...@@ -36,7 +36,12 @@ def file_exist(filename): ...@@ -36,7 +36,12 @@ def file_exist(filename):
return True return True
except IOError: except IOError:
return False return False
def path(ref,inp):
if inp[0] == '/' or inp[0] == '\\' or (len(inp) > 2 and inp[1] == '\:'):
return inp # do nothing, inp is an absolute path
else: # append inp to the path of the reference file
return os.path.dirname(ref) + os.sep + inp
class _parameter() : class _parameter() :
_membersbase = [ _membersbase = [
...@@ -145,17 +150,15 @@ class client : ...@@ -145,17 +150,15 @@ class client :
def _define_parameter(self, param) : def _define_parameter(self, param) :
if not self.socket : if not self.socket :
return return param.value
self._send(self._GMSH_PARAMETER_QUERY, param.tochar()) self._send(self._GMSH_PARAMETER_QUERY, param.tochar())
(t, msg) = self._receive() (t, msg) = self._receive()
if t == self._GMSH_PARAMETER : if t == self._GMSH_PARAMETER :
self._send(self._GMSH_PARAMETER_UPDATE, param.tochar()) #enrich a previous decl. self._send(self._GMSH_PARAMETER_UPDATE, param.tochar()) #enrich a previous decl.
value = param.fromchar(msg).value # use value from server return param.fromchar(msg).value # use value from server
elif t == self._GMSH_PARAMETER_NOT_FOUND : elif t == self._GMSH_PARAMETER_NOT_FOUND :
self._send(self._GMSH_PARAMETER, param.tochar()) #declaration self._send(self._GMSH_PARAMETER, param.tochar()) #declaration
value = param.value return param.value
return value
#print param.tochar()
def defineNumber(self, name, **param): def defineNumber(self, name, **param):
if 'labels' in param : if 'labels' in param :
...@@ -185,10 +188,7 @@ class client : ...@@ -185,10 +188,7 @@ class client :
p.fromchar(msg).modify(**param) p.fromchar(msg).modify(**param)
elif t == self._GMSH_PARAMETER_NOT_FOUND : elif t == self._GMSH_PARAMETER_NOT_FOUND :
p.modify(**param) p.modify(**param)
p.readOnly = 1
p.attributes={'Highlight':'AliceBlue'}
self._send(self._GMSH_PARAMETER, p.tochar()) self._send(self._GMSH_PARAMETER, p.tochar())
#return p.value What for?
def setString(self, name, **param): def setString(self, name, **param):
if not self.socket : if not self.socket :
...@@ -203,7 +203,19 @@ class client : ...@@ -203,7 +203,19 @@ class client :
p.readOnly = 1 p.readOnly = 1
p.attributes={'Highlight':'AliceBlue'} p.attributes={'Highlight':'AliceBlue'}
self._send(self._GMSH_PARAMETER, p.tochar()) self._send(self._GMSH_PARAMETER, p.tochar())
def addNumberChoice(self, name, value):
if not self.socket :
return
p = _parameter('number', name=name)
self._send(self._GMSH_PARAMETER_QUERY, p.tochar())
(t, msg) = self._receive()
if t == self._GMSH_PARAMETER :
p.fromchar(msg).choices.append(value)
elif t == self._GMSH_PARAMETER_NOT_FOUND :
print 'Unknown parameter %s' %(param.name)
self._send(self._GMSH_PARAMETER, p.tochar())
def _get_parameter(self, param, warn_if_not_found=True) : def _get_parameter(self, param, warn_if_not_found=True) :
if not self.socket : if not self.socket :
return return
...@@ -224,6 +236,17 @@ class client : ...@@ -224,6 +236,17 @@ class client :
self._get_parameter(param, warn_if_not_found) self._get_parameter(param, warn_if_not_found)
return param.value return param.value
def show(self, name) :
if not self.socket :
return
param = _parameter('number', name=name)
self._send(self._GMSH_PARAMETER_QUERY, param.tochar())
(t, msg) = self._receive()
if t == self._GMSH_PARAMETER :
print msg
elif t == self._GMSH_PARAMETER_NOT_FOUND :
print 'Unknown parameter %s' %(name)
def openGeometry(self, filename) : def openGeometry(self, filename) :
if not self.socket or not filename : if not self.socket or not filename :
return return
...@@ -232,8 +255,8 @@ class client : ...@@ -232,8 +255,8 @@ class client :
return return
else : else :
self.setString('Gmsh/MergedGeo', value=filename) self.setString('Gmsh/MergedGeo', value=filename)
if filename[0] != '/' : # if filename[0] != '/' :
filename = os.getcwd() + "/" + filename # filename = os.getcwd() + "/" + filename
self._send(self._GMSH_MERGE_FILE, filename) self._send(self._GMSH_MERGE_FILE, filename)
def mesh(self, filename) : def mesh(self, filename) :
...@@ -251,17 +274,17 @@ class client : ...@@ -251,17 +274,17 @@ class client :
def mergeFile(self, filename) : def mergeFile(self, filename) :
if not self.socket : if not self.socket :
return return
if filename and filename[0] != '/' : #self._send(self._GMSH_PARSE_STRING, 'Merge "' + filename + '";')
filename = os.getcwd() + "/" + filename; self._send(self._GMSH_MERGE_FILE,filename)
self._send(self._GMSH_PARSE_STRING, 'Merge "' + filename + '";')
def preProcess(self, filename) : def preProcess(self, filename) :
if not self.socket : if not self.socket :
return return
if filename and filename[0] != '/' :
filename = os.getcwd() + "/" + filename;
self._send(self._GMSH_OLPARSE, filename) self._send(self._GMSH_OLPARSE, filename)
(t, msg) = self._receive()
if t == self._GMSH_OLPARSE :
print msg
def _createSocket(self) : def _createSocket(self) :
addr = self.addr addr = self.addr
if '/' in addr or '\\' in addr or ':' not in addr : if '/' in addr or '\\' in addr or ':' not in addr :
...@@ -271,8 +294,6 @@ class client : ...@@ -271,8 +294,6 @@ class client :
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = addr.split(':') s = addr.split(':')
self.socket.connect((s[0], int(s[1]))) self.socket.connect((s[0], int(s[1])))
#self.socket.setblocking(1)
#self.socket.settimeout(5.0)
def _wait_on_subclients(self): def _wait_on_subclients(self):
if not self.socket : if not self.socket :
...@@ -310,7 +331,6 @@ class client : ...@@ -310,7 +331,6 @@ class client :
def __del__(self) : def __del__(self) :
self._wait_on_subclients() self._wait_on_subclients()
#print "Calling destructor of %s with %d subclients" %(self.name, self.NumSubClients)
if self.socket : if self.socket :
self._send(self._GMSH_STOP, 'Goodbye!') self._send(self._GMSH_STOP, 'Goodbye!')
self.socket.close() self.socket.close()
...@@ -6,6 +6,7 @@ import onelab ...@@ -6,6 +6,7 @@ import onelab
OL = onelab.client() OL = onelab.client()
A = OL.getNumber('A') A = OL.getNumber('A')
B = OL.setNumber('Group/B', 20) print 'A= %f' %(A)
OL.setNumber('Group/B', value=20)
print 'A= %f B = %f' %(A, B)
...@@ -7,8 +7,10 @@ modelName = 'coin' ...@@ -7,8 +7,10 @@ modelName = 'coin'
OL = onelab.client() OL = onelab.client()
print('\nStarting METAMODEL - Action = %s' %(OL.getString('python/Action'))) print('\nStarting METAMODEL - Action = %s' %(OL.getString('python/Action')))
A = OL.defineNumber('A', value=10) print __file__
A = OL.defineNumber('A', value=10)
B = OL.defineNumber('Group/B', value=0, min = -10, max = 10, step = 1)
C = OL.defineNumber('Group/C', value=2, choices = [0, 1, 2, 3], attributes={'Highlight':'Pink'}) C = OL.defineNumber('Group/C', value=2, choices = [0, 1, 2, 3], attributes={'Highlight':'Pink'})
D = OL.defineNumber('Group/D', value=3, labels = {0:'zero', 1:'un', 2:'deux', 3:'trois'}, attributes={'Highlight':'Blue'}) D = OL.defineNumber('Group/D', value=3, labels = {0:'zero', 1:'un', 2:'deux', 3:'trois'}, attributes={'Highlight':'Blue'})
...@@ -23,8 +25,14 @@ if OL.action == 'compute' : ...@@ -23,8 +25,14 @@ if OL.action == 'compute' :
OL.run('subclient', './sub.py','') OL.run('subclient', './sub.py','')
OL.show('A')
OL.addNumberChoice('A',1.234)
OL.addNumberChoice('A',2.345)
OL.addNumberChoice('A',3.456)
OL.show('A')
OL.setNumber('A', choices=[])
OL.show('A')
#B = oc.defineNumber('Group/B', 0, min = -10, max = 10, step = 1)
#utf-8 are allowed everywhere #utf-8 are allowed everywhere
#(should be prefixed by 'u' in python 2, not required in python 3) #(should be prefixed by 'u' in python 2, not required in python 3)
#Omega = OL.getString(u'Ω', u'∫(∂φ/∂α)³dx', help=u'ask someone@universe.org', #Omega = OL.getString(u'Ω', u'∫(∂φ/∂α)³dx', help=u'ask someone@universe.org',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment