[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