[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