[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203
Stephane Popinet
popinet at users.sf.net
Fri May 15 02:53:28 UTC 2009
The following commit has been merged in the upstream branch:
commit 6c188ca21d4f7cc617771556e2442406e1f7809b
Author: Stephane Popinet <popinet at users.sf.net>
Date: Mon Feb 19 08:25:24 2007 +1100
Parameter files in docs now link to "Object Hierarchy" wiki
darcs-hash:20070218212524-d4795-ca1d80401975e2143289ef1f40d33115309bc4d2.gz
diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am
index 0069802..432f56a 100644
--- a/doc/examples/Makefile.am
+++ b/doc/examples/Makefile.am
@@ -26,11 +26,14 @@ bin_SCRIPTS = \
gfs2doc
BUILT_SOURCES= \
- gfs2doc
+ gfs2doc gfsclasses.py
CLEANFILES = $(BUILT_SOURCES) Makefile.deps
-dist_pkglib_DATA = gfs2tex.py
+dist_pkglib_DATA = gfs2tex.py gfsclasses.py
+
+gfsclasses.py: classes
+ $(srcdir)/classes > gfsclasses.py
gfs2doc: gfs2doc.in
@@ -76,3 +79,12 @@ Makefile.deps: Makefile depend.py
examples.tar.gz: examples.ps.gz examples.pdf examples $(DOCS)
tar czf examples.tar.gz examples.ps.gz examples.pdf examples $(DOCS)
+
+INCLUDES = -I$(top_srcdir)/src -I$(includedir) -DG_LOG_DOMAIN=\"Gfs-tools\"\
+ $(GTS_CFLAGS)
+
+noinst_PROGRAMS = classes
+
+classes_CFLAGS = $(AM_CFLAGS) -DFTT_2D=1
+classes_LDADD = $(GFS2D_LIBS)
+
diff --git a/doc/examples/classes.c b/doc/examples/classes.c
new file mode 100644
index 0000000..38fbbc1
--- /dev/null
+++ b/doc/examples/classes.c
@@ -0,0 +1,13 @@
+#include "init.h"
+
+int main (int argc, char * argv[])
+{
+ GtsObjectClass ** klass = gfs_classes ();
+ printf ("klass = {\\\n");
+ while (*klass) {
+ printf ("'%s' : 'http://gfs.sf.net/wiki/index.php/%s',\\\n", (*klass)->info.name, (*klass)->info.name);
+ klass++;
+ }
+ printf ("}\n");
+ return 0;
+}
diff --git a/doc/examples/gfs2doc.in b/doc/examples/gfs2doc.in
index 673dc09..7638d4c 100755
--- a/doc/examples/gfs2doc.in
+++ b/doc/examples/gfs2doc.in
@@ -8,22 +8,19 @@ import tempfile
sys.path.append("@prefix@/lib/gerris")
import gfs2tex
+import gfsclasses
if len(sys.argv) < 2:
print "usage: gfs2doc DIR1 DIR2..."
sys.exit(1)
-dico = {}
-for f in glob.glob("@abs_top_srcdir@/doc/reference/*.html"):
- gfs2tex.dictionary(dico,open(f))
-
def myexit(s):
os.system("rm -r -f " + wdname)
sys.exit(s)
for d in sys.argv[1:]:
example = gfs2tex.Example(d)
- example.write(dico)
+ example.write(gfsclasses.klass)
wdname = tempfile.mkdtemp()
tex = open(wdname + "/" + example.name + ".tex", "w")
tex.write(r"""
diff --git a/doc/examples/gfs2tex b/doc/examples/gfs2tex
index 3ef9e3d..10f22c6 100755
--- a/doc/examples/gfs2tex
+++ b/doc/examples/gfs2tex
@@ -5,18 +5,15 @@ import os
import os.path
import glob
import gfs2tex
+import gfsclasses
if not os.access("examples",os.F_OK):
os.mkdir("examples")
-dico = {}
-for f in glob.glob("../html/*.html"):
- gfs2tex.dictionary(dico,open(f))
-
for start in sys.argv[1:]:
for root, dirs, files in os.walk(start,topdown=True):
if not ".xvpics" in root:
example = gfs2tex.Example(root)
if not os.access("examples/" + example.path,os.F_OK):
os.symlink("../" + example.path, "examples/" + example.path)
- example.write(dico)
+ example.write(gfsclasses.klass)
diff --git a/doc/examples/gfs2tex.py b/doc/examples/gfs2tex.py
index 6798fce..efab920 100644
--- a/doc/examples/gfs2tex.py
+++ b/doc/examples/gfs2tex.py
@@ -12,37 +12,6 @@ def generated(lines):
return record[3:]
return []
-def dictionary(d,file):
- p = re.compile(r">\w*_class</A\n")
- instruct = 0
- for line in file:
- record = line.split()
- if re.match(p,line) != None:
- klass = ""
- cap = 1
- for c in line[1:-9]:
- if c == "_":
- cap = 1
- elif cap:
- klass += c.capitalize()
- cap = 0
- else:
- klass += c
- if klass == "GfsOutputPpm":
- klass = "GfsOutputPPM"
- d[klass] = href
- elif len(record) == 2 and record[0] == "struct" and record[1] == "<A":
- instruct = 1
- elif len(record) == 1 and record[0] == ">;":
- instruct = 0
- elif instruct:
- if line[0:5] == "HREF=":
- val = line[6:-2]
- elif line[0] == ">" and line[-4:] == "</A\n":
- d[line[1:-4]] = val
- elif line[0:5] == "HREF=":
- href = line[6:line.find("#")]
-
class Example:
def __init__(self,path):
if path[0:2] == "./":
@@ -199,7 +168,7 @@ class Example:
elif dico.has_key("Gfs" + r):
key = "Gfs" + r
if key != None:
- out.write("<a href=\"" + path + dico[key] + "\">" + r + "</a> ")
+ out.write("<a href=\"" + dico[key] + "\">" + r + "</a> ")
else:
out.write(r + " ")
out.write("<br>\n")
diff --git a/src/init.c b/src/init.c
index 1ca0c7e..8a7f828 100644
--- a/src/init.c
+++ b/src/init.c
@@ -81,6 +81,126 @@ static void gfs_log (const gchar * log_domain,
}
/**
+ * gfs_classes:
+ *
+ * Returns: a pointer to a NULL-terminated array of all the classes
+ * used in Gerris parameter files.
+ */
+GtsObjectClass ** gfs_classes (void)
+{
+ static GtsObjectClass ** classes = NULL;
+ if (classes == NULL) { gpointer klass[] = {
+
+ gfs_global_class (),
+ gfs_simulation_class (),
+ gfs_ocean_class (),
+ gfs_advection_class (),
+ gfs_poisson_class (),
+
+ gfs_variable_class (),
+ gfs_variable_tracer_class (),
+ gfs_variable_residual_class (),
+ gfs_variable_filtered_class (),
+ gfs_variable_curvature_class (),
+
+ gfs_surface_bc_class (),
+
+ gfs_box_class (),
+ gfs_box_not_adapt_class (),
+ gfs_gedge_class (),
+
+ gfs_bc_dirichlet_class (),
+ gfs_bc_neumann_class (),
+ gfs_bc_flather_class (),
+
+ gfs_boundary_class (),
+ gfs_boundary_inflow_constant_class (),
+ gfs_boundary_outflow_class (),
+#ifdef HAVE_MPI
+ gfs_boundary_mpi_class (),
+#endif /* HAVE_MPI */
+
+ gfs_refine_class (),
+ gfs_refine_solid_class (),
+ gfs_refine_surface_class (),
+ gfs_refine_distance_class (),
+ gfs_refine_height_class (),
+
+ gfs_event_class (),
+ gfs_init_class (),
+ gfs_init_flow_constant_class (),
+ gfs_init_fraction_class (),
+#if FTT_2D
+ gfs_init_vorticity_class (),
+#endif /* FTT_2D */
+ gfs_adapt_class (),
+ gfs_adapt_vorticity_class (),
+ gfs_adapt_streamline_curvature_class (),
+ gfs_adapt_function_class (),
+ gfs_adapt_gradient_class (),
+ gfs_adapt_curvature_class (),
+ gfs_adapt_not_box_class (),
+ gfs_event_sum_class (),
+ gfs_event_harmonic_class (),
+ gfs_event_stop_class (),
+ gfs_event_script_class (),
+ gfs_source_generic_class (),
+ gfs_source_scalar_class (),
+ gfs_source_class (),
+ gfs_source_control_class (),
+ gfs_source_diffusion_class (),
+ gfs_source_diffusion_explicit_class (),
+ gfs_source_velocity_class (),
+ gfs_source_viscosity_class (),
+ gfs_source_friction_class (),
+ gfs_source_coriolis_class (),
+ gfs_source_tension_class (),
+#if !FTT_2D
+ gfs_source_hydrostatic_class (),
+#endif /* 2D3 or 3D */
+ gfs_remove_droplets_class (),
+ gfs_remove_ponds_class (),
+ gfs_event_filter_class (),
+
+ gfs_output_class (),
+ gfs_output_time_class (),
+ gfs_output_progress_class (),
+ gfs_output_projection_stats_class (),
+ gfs_output_diffusion_stats_class (),
+ gfs_output_solid_stats_class (),
+ gfs_output_adapt_stats_class (),
+ gfs_output_timing_class (),
+ gfs_output_balance_class (),
+ gfs_output_solid_force_class (),
+ gfs_output_location_class (),
+ gfs_output_simulation_class (),
+ gfs_output_boundaries_class (),
+ gfs_output_particle_class (),
+
+ gfs_output_scalar_class (),
+ gfs_output_scalar_norm_class (),
+ gfs_output_scalar_stats_class (),
+ gfs_output_scalar_sum_class (),
+ gfs_output_scalar_maxima_class (),
+ gfs_output_scalar_histogram_class (),
+ gfs_output_error_norm_class (),
+ gfs_output_correlation_class (),
+ gfs_output_squares_class (),
+ gfs_output_streamline_class (),
+ gfs_output_ppm_class (),
+
+ NULL};
+
+ guint n = 0;
+ gpointer * c = klass;
+ while (*(c++)) n++;
+ classes = g_malloc ((n + 1)*sizeof (gpointer));
+ memcpy (classes, klass, (n + 1)*sizeof (gpointer));
+ }
+ return classes;
+}
+
+/**
* gfs_init:
* @argc: a pointer on the number of command line arguments passed to
* the program.
@@ -135,103 +255,7 @@ void gfs_init (int * argc, char *** argv)
(GLogFunc) gfs_log, NULL);
/* Instantiates classes before reading any domain or simulation file */
- gfs_global_class ();
- gfs_simulation_class ();
- gfs_ocean_class ();
- gfs_advection_class ();
- gfs_poisson_class ();
-
- gfs_variable_class ();
- gfs_variable_tracer_class ();
- gfs_variable_residual_class ();
- gfs_variable_filtered_class ();
- gfs_variable_curvature_class ();
-
- gfs_surface_bc_class ();
-
- gfs_box_class ();
- gfs_box_not_adapt_class ();
- gfs_gedge_class ();
-
- gfs_bc_dirichlet_class ();
- gfs_bc_neumann_class ();
- gfs_bc_flather_class ();
-
- gfs_boundary_class ();
- gfs_boundary_inflow_constant_class ();
- gfs_boundary_outflow_class ();
-#ifdef HAVE_MPI
- gfs_boundary_mpi_class ();
-#endif /* HAVE_MPI */
-
- gfs_refine_class ();
- gfs_refine_solid_class ();
- gfs_refine_surface_class ();
- gfs_refine_distance_class ();
- gfs_refine_height_class ();
-
- gfs_event_class ();
- gfs_init_class ();
- gfs_init_flow_constant_class ();
- gfs_init_fraction_class ();
-#if FTT_2D
- gfs_init_vorticity_class ();
-#endif /* FTT_2D */
- gfs_adapt_class ();
- gfs_adapt_vorticity_class ();
- gfs_adapt_streamline_curvature_class ();
- gfs_adapt_function_class ();
- gfs_adapt_gradient_class ();
- gfs_adapt_curvature_class ();
- gfs_adapt_not_box_class ();
- gfs_event_sum_class ();
- gfs_event_harmonic_class ();
- gfs_event_stop_class ();
- gfs_event_script_class ();
- gfs_source_generic_class ();
- gfs_source_scalar_class ();
- gfs_source_class ();
- gfs_source_control_class ();
- gfs_source_diffusion_class ();
- gfs_source_diffusion_explicit_class ();
- gfs_source_velocity_class ();
- gfs_source_viscosity_class ();
- gfs_source_friction_class ();
- gfs_source_coriolis_class ();
- gfs_source_tension_class ();
-#if !FTT_2D
- gfs_source_hydrostatic_class ();
-#endif /* 2D3 or 3D */
- gfs_remove_droplets_class ();
- gfs_remove_ponds_class ();
- gfs_event_filter_class ();
-
- gfs_output_class ();
- gfs_output_time_class ();
- gfs_output_progress_class ();
- gfs_output_projection_stats_class ();
- gfs_output_diffusion_stats_class ();
- gfs_output_solid_stats_class ();
- gfs_output_adapt_stats_class ();
- gfs_output_timing_class ();
- gfs_output_balance_class ();
- gfs_output_solid_force_class ();
- gfs_output_location_class ();
- gfs_output_simulation_class ();
- gfs_output_boundaries_class ();
- gfs_output_particle_class ();
-
- gfs_output_scalar_class ();
- gfs_output_scalar_norm_class ();
- gfs_output_scalar_stats_class ();
- gfs_output_scalar_sum_class ();
- gfs_output_scalar_maxima_class ();
- gfs_output_scalar_histogram_class ();
- gfs_output_error_norm_class ();
- gfs_output_correlation_class ();
- gfs_output_squares_class ();
- gfs_output_streamline_class ();
- gfs_output_ppm_class ();
+ gfs_classes ();
/* If modules are not supported, calls modules init functions */
#include "modules.c"
diff --git a/src/init.h b/src/init.h
index 9009ebe..425b2a2 100644
--- a/src/init.h
+++ b/src/init.h
@@ -20,10 +20,13 @@
#ifndef __INIT_H__
#define __INIT_H__
+#include <gts.h>
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
+GtsObjectClass ** gfs_classes (void);
void gfs_init (int * argc,
char *** argv);
diff --git a/test/gfs2tex b/test/gfs2tex
index a859e4d..e1bf87b 100755
--- a/test/gfs2tex
+++ b/test/gfs2tex
@@ -6,18 +6,15 @@ import os.path
import glob
sys.path.append("../doc/examples")
import gfs2tex
+import gfsclasses
if not os.access("tests",os.F_OK):
os.mkdir("tests")
-dico = {}
-for f in glob.glob("../doc/html/*.html"):
- gfs2tex.dictionary(dico,open(f))
-
for start in sys.argv[1:]:
for root, dirs, files in os.walk(start,topdown=True):
if not ".xvpics" in root:
example = gfs2tex.Example(root)
if not os.access("tests/" + example.path,os.F_OK):
os.symlink("../" + example.path, "tests/" + example.path)
- example.write(dico)
+ example.write(gfsclasses.klass)
--
Gerris Flow Solver
More information about the debian-science-commits
mailing list