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)
}
double defineNumber(onelab::client *c, const std::string &name, double value,
const std::string &label,
const std::map<std::string, std::string> &attributes)
{
std::vector<onelab::number> ns;
c->get(ns, name);
if(ns.empty()){ // define new parameter
onelab::number n(name, value, label);
onelab::number n(name, value);
if(attributes.size()) n.setAttributes(attributes);
c->set(n);
return value;
......@@ -101,14 +100,14 @@ int main(int argc, char **argv)
std::map<std::string, std::string> attr;
double l = defineNumber(c, "Geom/Length", 1.0, "Arm length [m]", attr);
double time = defineNumber(c, "Dyna/time", 0., "time [s]", attr);
double dt = defineNumber(c, "Dyna/dt", 0.001, "time step [s]", attr);
double tmax = defineNumber(c, "Dyna/tmax", 20, "max time [s]", attr);
double refresh = defineNumber(c, "Dyna/refresh", 0.05, "refresh interval [s]", attr);
double l = defineNumber(c, "Geom/arm length [m]", 1.0, attr);
double time = defineNumber(c, "Dyna/time [s]", 0., attr);
double dt = defineNumber(c, "Dyna/time step [s]", 0.001, attr);
double tmax = defineNumber(c, "Dyna/max time [s]", 20, attr);
double refresh = defineNumber(c, "Dyna/refresh interval [s]", 0.05, attr);
attr["Highlight"] = "Pink";
double theta0 = defineNumber(c, "Init/theta", 10, "Initial theta angle [deg]", attr);
double phi0 = defineNumber(c, "Init/phi", 180, "Initial phi angle [deg]", attr);
double theta0 = defineNumber(c, "Init/initial theta angle [deg]", 10, attr);
double phi0 = defineNumber(c, "Init/initial phi angle [deg]", 180, attr);
// we're done if we are not in the compute phase
if(action != "compute"){
......@@ -163,15 +162,15 @@ int main(int argc, char **argv)
if(refr >= refresh){
refr = 0;
setNumber(c, name + "/Progress", time, 0, tmax, false);
setNumber(c, "Dyna/time", time);
setNumber(c, "Dyna/time [s]", time);
setNumber(c, "Solu/phi", phi);
addNumberChoice(c, "Solu/phi", phi);
setNumber(c, "Solu/theta", theta);
addNumberChoice(c, "Solu/theta", theta);
setNumber(c, "Solu/phi_dot", phi_dot);
addNumberChoice(c, "Solu/phi_dot", phi_dot);
setNumber(c, "Solu/theta_dot", theta_dot);
addNumberChoice(c, "Solu/theta_dot", theta_dot);
setNumber(c, "Solu/phi dot", phi_dot);
addNumberChoice(c, "Solu/phi dot", phi_dot);
setNumber(c, "Solu/theta dot", theta_dot);
addNumberChoice(c, "Solu/theta dot", theta_dot);
// ask Gmsh to refresh
onelab::string s("Gmsh/Action", "refresh");
......
......@@ -7,9 +7,6 @@
import onelab
import math, os
# import sys
# sys.stderr = open('ErrorLog.txt', 'wt')
def exportMsh(le1,le2):
mshFile = open(onelab.path(__file__, "pend.msh"),'w')
mshFile.write('$MeshFormat\n2.2 0 8\n$EndMeshFormat\n')
......@@ -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.close()
OL = onelab.client()
c = onelab.client()
g = 9.8 # acceleration of gravity
m = 0.3 # mass of pendulum balls
l = OL.defineNumber('Geom/Length', value=1.0, label='Arm length [m]')
time = OL.defineNumber('Dyna/time', value=0.0, label='time [s]')
dt = OL.defineNumber('Dyna/dt', value=0.001, label='time step [s]')
tmax = OL.defineNumber('Dyna/tmax', value=20, label='max time [s]')
refresh = OL.defineNumber('Dyna/refresh', value=0.05, label='refresh interval [s]')
theta0 = OL.defineNumber('Init/theta', value=10, label='Initial theta angle [deg]',
l = c.defineNumber('Geom/arm length [m]', value=1.0)
time = c.defineNumber('Dyna/time [s]', value=0.0)
dt = c.defineNumber('Dyna/time step [s]', value=0.001)
tmax = c.defineNumber('Dyna/max time [s]', value=20)
refresh = c.defineNumber('Dyna/refresh interval [s]', value=0.05)
theta0 = c.defineNumber('Init/initial theta angle [deg]', value=10,
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'})
# we're done if we are in the "check" phase
if OL.action == 'check' :
if c.action == 'check' :
exit(0)
l1 = l;
......@@ -97,46 +94,27 @@ while (time < tmax):
if refr >= refresh:
refr = 0
OL.setNumber(OL.name + '/Progress', value=time, min=0, max=tmax, visible=0)
OL.setNumber('Dyna/time', value=time)
OL.setNumber('Solu/phi', value=phi)
OL.addNumberChoice('Solu/phi', phi)
OL.setNumber('Solu/theta', value=theta)
OL.addNumberChoice('Solu/theta', theta)
OL.setNumber('Solu/phi_dot', value=phi_dot)
OL.addNumberChoice('Solu/phi_dot', phi_dot)
OL.setNumber('Solu/theta_dot', value=theta_dot)
OL.addNumberChoice('Solu/theta_dot', theta_dot)
c.setNumber(c.name + '/Progress', value=time, min=0, max=tmax, visible=0)
c.setNumber('Dyna/time [s]', value=time)
c.setNumber('Solu/phi', value=phi)
c.addNumberChoice('Solu/phi', phi)
c.setNumber('Solu/theta', value=theta)
c.addNumberChoice('Solu/theta', theta)
c.setNumber('Solu/phi dot', value=phi_dot)
c.addNumberChoice('Solu/phi dot', phi_dot)
c.setNumber('Solu/theta dot', value=theta_dot)
c.addNumberChoice('Solu/theta dot', theta_dot)
# ask Gmsh to refresh
OL.setString('Gmsh/Action', value='refresh')
c.setString('Gmsh/Action', value='refresh')
# stop if we are asked to (by Gmsh)
if(OL.getString(OL.name + '/Action') == 'stop'):
if(c.getString(c.name + '/Action') == 'stop'):
break;
exportMsh(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
OL.setNumber(OL.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'])
c.setNumber(c.name + '/Progress', value=0)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment