[cig-commits] r4126 - in mc/3D/CitcomS/trunk: bin lib module

tan2 at geodynamics.org tan2 at geodynamics.org
Mon Jul 31 16:04:58 PDT 2006


Author: tan2
Date: 2006-07-31 16:04:57 -0700 (Mon, 31 Jul 2006)
New Revision: 4126

Modified:
   mc/3D/CitcomS/trunk/bin/Citcom.c
   mc/3D/CitcomS/trunk/lib/Instructions.c
   mc/3D/CitcomS/trunk/lib/global_defs.h
   mc/3D/CitcomS/trunk/module/mesher.cc
Log:
Added logic to switch the E->output function pointer


Modified: mc/3D/CitcomS/trunk/bin/Citcom.c
===================================================================
--- mc/3D/CitcomS/trunk/bin/Citcom.c	2006-07-31 21:02:58 UTC (rev 4125)
+++ mc/3D/CitcomS/trunk/bin/Citcom.c	2006-07-31 23:04:57 UTC (rev 4126)
@@ -56,6 +56,7 @@
   void read_mat_from_file();
   void open_time();
   void output();
+  void output_finalize();
   void output_pseudo_surf();
 
   float dot();
@@ -160,7 +161,7 @@
 	  output_pseudo_surf(E, E->monitor.solution_cycles);
       }
       else
-	output(E, E->monitor.solution_cycles);
+	(E->output)(E, E->monitor.solution_cycles);
     }
 
     if(E->control.mat_control==1)
@@ -200,11 +201,7 @@
 	    cpu_time_on_vp_it/((float)(E->monitor.solution_cycles-E->control.restart)));
   }
 
-  fclose(E->fp);
-
-  if (E->fptime)
-    fclose(E->fptime);
-
+  output_finalize(E);
   parallel_process_termination();
 
   return(0);

Modified: mc/3D/CitcomS/trunk/lib/Instructions.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Instructions.c	2006-07-31 21:02:58 UTC (rev 4125)
+++ mc/3D/CitcomS/trunk/lib/Instructions.c	2006-07-31 23:04:57 UTC (rev 4126)
@@ -38,6 +38,7 @@
 #include "initial_temperature.h"
 #include "lith_age.h"
 #include "output.h"
+#include "output_h5.h"
 #include "parallel_related.h"
 #include "parsing.h"
 #include "phase_change.h"
@@ -75,9 +76,7 @@
 
     void setup_parser();
     void shutdown_parser();
-    void open_log();
-    void open_time();
-    void open_info();
+    void output_init();
 
     void get_initial_elapsed_time();
     void set_starting_age();
@@ -108,11 +107,7 @@
     global_default_values(E);
     read_initial_settings(E);
 
-    open_log(E);
-    open_time(E);
-    if (E->control.verbose)
-      open_info(E);
-
+    output_init(E);
     (E->problem_derived_values)(E);   /* call this before global_derived_  */
     (E->solver.global_derived_values)(E);
 
@@ -961,3 +956,41 @@
 
   return;
 }
+
+
+void output_init(struct  All_variables *E)
+{
+  open_log(E);
+  open_time(E);
+  if (E->control.verbose)
+    open_info(E);
+
+  //DEBUG
+  //strcpy(E->control.output_format, "hdf5");
+  //fprintf(stderr, "output format is %s\n", E->control.output_format);
+  if (strcmp(E->control.output_format, "ascii") == 0)
+    E->output = output;
+  else if (strcmp(E->control.output_format, "hdf5") == 0)
+    E->output = h5output;
+  else {
+    // indicate error here
+    if (E->parallel.me == 0) {
+      fprintf(stderr, "wrong output_format, must be either 'ascii' or 'hdf5'\n");
+      fprintf(E->fp, "wrong output_format, must be either 'ascii' or 'hdf5'\n");
+      parallel_process_termination(E);
+    }
+  }
+}
+
+
+
+void output_finalize(struct  All_variables *E)
+{
+  fclose(E->fp);
+
+  if (E->fptime)
+    fclose(E->fptime);
+
+  // close HDF5 output
+
+}

Modified: mc/3D/CitcomS/trunk/lib/global_defs.h
===================================================================
--- mc/3D/CitcomS/trunk/lib/global_defs.h	2006-07-31 21:02:58 UTC (rev 4125)
+++ mc/3D/CitcomS/trunk/lib/global_defs.h	2006-07-31 23:04:57 UTC (rev 4126)
@@ -657,7 +657,7 @@
     int read_slab;
     int read_slabgeoid;
 
-    int output_format;  /* 0: ascii, 1: hdf5 */
+    char  output_format[100];  /* 0: ascii, 1: hdf5 */
     int pseudo_free_surf;
     int tracer;
 

Modified: mc/3D/CitcomS/trunk/module/mesher.cc
===================================================================
--- mc/3D/CitcomS/trunk/module/mesher.cc	2006-07-31 21:02:58 UTC (rev 4125)
+++ mc/3D/CitcomS/trunk/module/mesher.cc	2006-07-31 23:04:57 UTC (rev 4126)
@@ -54,9 +54,7 @@
     int get_process_identifier();
     void lith_age_init(struct All_variables *E);
     void mass_matrix(struct All_variables*);
-    void open_info(struct All_variables*);
-    void open_log(struct All_variables*);
-    void open_time(struct All_variables*);
+    void output_init(struct All_variables*);
     void read_mat_from_file(struct All_variables*);
     void set_elapsed_time(struct All_variables*);
     void set_sphere_harmonics (struct All_variables*);
@@ -78,11 +76,7 @@
 
     E->control.PID = get_process_identifier();
 
-    open_log(E);
-    open_time(E);
-    if (E->control.verbose)
-      open_info(E);
-
+    output_init(E);
     (E->problem_derived_values)(E);   /* call this before global_derived_  */
     (E->solver.global_derived_values)(E);
 



More information about the cig-commits mailing list