Skip to content
Snippets Groups Projects
Commit 750df131 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

don't use label if not necessary

parent 648b1e4e
No related branches found
No related tags found
No related merge requests found
...@@ -40,13 +40,12 @@ void exportIter(int iter, double t, double x1, double y1, double x2, double y2) ...@@ -40,13 +40,12 @@ void exportIter(int iter, double t, double x1, double y1, double x2, double y2)
} }
double defineNumber(onelab::client *c, const std::string &name, double value, double defineNumber(onelab::client *c, const std::string &name, double value,
const std::string &label,
const std::map<std::string, std::string> &attributes) const std::map<std::string, std::string> &attributes)
{ {
std::vector<onelab::number> ns; std::vector<onelab::number> ns;
c->get(ns, name); c->get(ns, name);
if(ns.empty()){ // define new parameter if(ns.empty()){ // define new parameter
onelab::number n(name, value, label); onelab::number n(name, value);
if(attributes.size()) n.setAttributes(attributes); if(attributes.size()) n.setAttributes(attributes);
c->set(n); c->set(n);
return value; return value;
...@@ -101,14 +100,14 @@ int main(int argc, char **argv) ...@@ -101,14 +100,14 @@ int main(int argc, char **argv)
std::map<std::string, std::string> attr; std::map<std::string, std::string> attr;
double l = defineNumber(c, "Geom/Length", 1.0, "Arm length [m]", attr); double l = defineNumber(c, "Geom/arm length [m]", 1.0, attr);
double time = defineNumber(c, "Dyna/time", 0., "time [s]", attr); double time = defineNumber(c, "Dyna/time [s]", 0., attr);
double dt = defineNumber(c, "Dyna/dt", 0.001, "time step [s]", attr); double dt = defineNumber(c, "Dyna/time step [s]", 0.001, attr);
double tmax = defineNumber(c, "Dyna/tmax", 20, "max time [s]", attr); double tmax = defineNumber(c, "Dyna/max time [s]", 20, attr);
double refresh = defineNumber(c, "Dyna/refresh", 0.05, "refresh interval [s]", attr); double refresh = defineNumber(c, "Dyna/refresh interval [s]", 0.05, attr);
attr["Highlight"] = "Pink"; attr["Highlight"] = "Pink";
double theta0 = defineNumber(c, "Init/theta", 10, "Initial theta angle [deg]", attr); double theta0 = defineNumber(c, "Init/initial theta angle [deg]", 10, attr);
double phi0 = defineNumber(c, "Init/phi", 180, "Initial phi angle [deg]", attr); double phi0 = defineNumber(c, "Init/initial phi angle [deg]", 180, attr);
// we're done if we are not in the compute phase // we're done if we are not in the compute phase
if(action != "compute"){ if(action != "compute"){
...@@ -163,15 +162,15 @@ int main(int argc, char **argv) ...@@ -163,15 +162,15 @@ int main(int argc, char **argv)
if(refr >= refresh){ if(refr >= refresh){
refr = 0; refr = 0;
setNumber(c, name + "/Progress", time, 0, tmax, false); setNumber(c, name + "/Progress", time, 0, tmax, false);
setNumber(c, "Dyna/time", time); setNumber(c, "Dyna/time [s]", time);
setNumber(c, "Solu/phi", phi); setNumber(c, "Solu/phi", phi);
addNumberChoice(c, "Solu/phi", phi); addNumberChoice(c, "Solu/phi", phi);
setNumber(c, "Solu/theta", theta); setNumber(c, "Solu/theta", theta);
addNumberChoice(c, "Solu/theta", theta); addNumberChoice(c, "Solu/theta", theta);
setNumber(c, "Solu/phi_dot", phi_dot); setNumber(c, "Solu/phi dot", phi_dot);
addNumberChoice(c, "Solu/phi_dot", phi_dot); addNumberChoice(c, "Solu/phi dot", phi_dot);
setNumber(c, "Solu/theta_dot", theta_dot); setNumber(c, "Solu/theta dot", theta_dot);
addNumberChoice(c, "Solu/theta_dot", theta_dot); addNumberChoice(c, "Solu/theta dot", theta_dot);
// ask Gmsh to refresh // ask Gmsh to refresh
onelab::string s("Gmsh/Action", "refresh"); onelab::string s("Gmsh/Action", "refresh");
......
...@@ -7,9 +7,6 @@ ...@@ -7,9 +7,6 @@
import onelab import onelab
import math, os import math, os
# import sys
# sys.stderr = open('ErrorLog.txt', 'wt')
def exportMsh(le1,le2): def exportMsh(le1,le2):
mshFile = open(onelab.path(__file__, "pend.msh"),'w') mshFile = open(onelab.path(__file__, "pend.msh"),'w')
mshFile.write('$MeshFormat\n2.2 0 8\n$EndMeshFormat\n') mshFile.write('$MeshFormat\n2.2 0 8\n$EndMeshFormat\n')
...@@ -32,23 +29,23 @@ def exportIter(iter,t,x1,y1,x2,y2): ...@@ -32,23 +29,23 @@ def exportIter(iter,t,x1,y1,x2,y2):
mshFile.write('\t3\n\t1 0 0 0\n\t2 %f %f 0\n\t3 %f %f 0\n$EndNodeData\n' %(x1,y1,x2,y2)) mshFile.write('\t3\n\t1 0 0 0\n\t2 %f %f 0\n\t3 %f %f 0\n$EndNodeData\n' %(x1,y1,x2,y2))
mshFile.close() mshFile.close()
OL = onelab.client() c = onelab.client()
g = 9.8 # acceleration of gravity g = 9.8 # acceleration of gravity
m = 0.3 # mass of pendulum balls m = 0.3 # mass of pendulum balls
l = OL.defineNumber('Geom/Length', value=1.0, label='Arm length [m]') l = c.defineNumber('Geom/arm length [m]', value=1.0)
time = OL.defineNumber('Dyna/time', value=0.0, label='time [s]') time = c.defineNumber('Dyna/time [s]', value=0.0)
dt = OL.defineNumber('Dyna/dt', value=0.001, label='time step [s]') dt = c.defineNumber('Dyna/time step [s]', value=0.001)
tmax = OL.defineNumber('Dyna/tmax', value=20, label='max time [s]') tmax = c.defineNumber('Dyna/max time [s]', value=20)
refresh = OL.defineNumber('Dyna/refresh', value=0.05, label='refresh interval [s]') refresh = c.defineNumber('Dyna/refresh interval [s]', value=0.05)
theta0 = OL.defineNumber('Init/theta', value=10, label='Initial theta angle [deg]', theta0 = c.defineNumber('Init/initial theta angle [deg]', value=10,
attributes={'Highlight':'Pink'}) attributes={'Highlight':'Pink'})
phi0 = OL.defineNumber('Init/phi', value=180, label='Initial phi angle [deg]', phi0 = c.defineNumber('Init/initial phi angle [deg]', value=180,
attributes={'Highlight':'Pink'}) attributes={'Highlight':'Pink'})
# we're done if we are in the "check" phase # we're done if we are in the "check" phase
if OL.action == 'check' : if c.action == 'check' :
exit(0) exit(0)
l1 = l; l1 = l;
...@@ -97,46 +94,27 @@ while (time < tmax): ...@@ -97,46 +94,27 @@ while (time < tmax):
if refr >= refresh: if refr >= refresh:
refr = 0 refr = 0
OL.setNumber(OL.name + '/Progress', value=time, min=0, max=tmax, visible=0) c.setNumber(c.name + '/Progress', value=time, min=0, max=tmax, visible=0)
OL.setNumber('Dyna/time', value=time) c.setNumber('Dyna/time [s]', value=time)
OL.setNumber('Solu/phi', value=phi) c.setNumber('Solu/phi', value=phi)
OL.addNumberChoice('Solu/phi', phi) c.addNumberChoice('Solu/phi', phi)
OL.setNumber('Solu/theta', value=theta) c.setNumber('Solu/theta', value=theta)
OL.addNumberChoice('Solu/theta', theta) c.addNumberChoice('Solu/theta', theta)
OL.setNumber('Solu/phi_dot', value=phi_dot) c.setNumber('Solu/phi dot', value=phi_dot)
OL.addNumberChoice('Solu/phi_dot', phi_dot) c.addNumberChoice('Solu/phi dot', phi_dot)
OL.setNumber('Solu/theta_dot', value=theta_dot) c.setNumber('Solu/theta dot', value=theta_dot)
OL.addNumberChoice('Solu/theta_dot', theta_dot) c.addNumberChoice('Solu/theta dot', theta_dot)
# ask Gmsh to refresh # ask Gmsh to refresh
OL.setString('Gmsh/Action', value='refresh') c.setString('Gmsh/Action', value='refresh')
# stop if we are asked to (by Gmsh) # stop if we are asked to (by Gmsh)
if(OL.getString(OL.name + '/Action') == 'stop'): if(c.getString(c.name + '/Action') == 'stop'):
break; break;
exportMsh(l1, l2) exportMsh(l1, l2)
exportIter(iter, time, x1, y1+l1, x2, y2+l1+l2) exportIter(iter, time, x1, y1+l1, x2, y2+l1+l2)
OL.mergeFile(onelab.path(__file__, 'pend.msh')) c.mergeFile(onelab.path(__file__, 'pend.msh'))
iter += 1 iter += 1
OL.setNumber(OL.name + '/Progress', value=0) c.setNumber(c.name + '/Progress', value=0)
# comment the following lines out if you do not have gnuplot on your system
# OL.preProcess(onelab.path(__file__,'pend.plt.ol'))
# os.system('gnuplot pend.plt')
# run a subclient
# OL.run('subclient', './sub.py','')
# 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'})
# D = OL.defineNumber('Group/D', value=3, labels = {0:'zero', 1:'un', 2:'deux',
# 3:'trois'}, attributes={'Highlight':'Blue'})
# UTF-8 is allowed everywhere (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',
# choices = ['oui', 'non', u'peut-être'])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment