[cig-commits] r19333 - mc/3D/CitcomCU/trunk/src

becker at geodynamics.org becker at geodynamics.org
Sat Jan 7 12:46:21 PST 2012


Author: becker
Date: 2012-01-07 12:46:21 -0800 (Sat, 07 Jan 2012)
New Revision: 19333

Added:
   mc/3D/CitcomCU/trunk/src/Makefile.gzdir_ani_low
   mc/3D/CitcomCU/trunk/src/prototypes_low.h
Modified:
   mc/3D/CitcomCU/trunk/src/Composition_adv.c
   mc/3D/CitcomCU/trunk/src/Convection.c
   mc/3D/CitcomCU/trunk/src/Ggrd_handling.c
   mc/3D/CitcomCU/trunk/src/Makefile.gzdir_ani
   mc/3D/CitcomCU/trunk/src/Output_gzdir.c
   mc/3D/CitcomCU/trunk/src/Pan_problem_misc_functions.c
   mc/3D/CitcomCU/trunk/src/advection.h
   mc/3D/CitcomCU/trunk/src/global_defs.h
   mc/3D/CitcomCU/trunk/src/prototypes.h
Log:
Added option to have tracer coordinates be dealt with in single
precision. This is probably not a good idea, but I added it as a test
to save some memory for otherwise high resolution high resolution
models.

Makefile.gzdir_ani_low

has an example for how to compile. If compiled regularly, all should
be same.




Modified: mc/3D/CitcomCU/trunk/src/Composition_adv.c
===================================================================
--- mc/3D/CitcomCU/trunk/src/Composition_adv.c	2012-01-07 20:05:13 UTC (rev 19332)
+++ mc/3D/CitcomCU/trunk/src/Composition_adv.c	2012-01-07 20:46:21 UTC (rev 19333)
@@ -175,10 +175,10 @@
 	    {
 	      E->parallel.traces_transfer_index[neighbor] = (int *)safe_malloc((markers + 1) * sizeof(int));
 	      E->RVV[neighbor] = (float *)safe_malloc(asize * sizeof(int));
-	      E->RXX[neighbor] = (double *)safe_malloc(asize * sizeof(double));
+	      E->RXX[neighbor] = (CITCOM_XMC_PREC *)safe_malloc(asize * sizeof(CITCOM_XMC_PREC));
 	      E->RINS[neighbor] = (int *)safe_malloc((markers + 1) * (2 + E->tracers_add_flavors) * sizeof(int));
 	      E->PVV[neighbor] = (float *)safe_malloc(asize  * sizeof(int));
-	      E->PXX[neighbor] = (double *)safe_malloc(asize * sizeof(double));
+	      E->PXX[neighbor] = (CITCOM_XMC_PREC *)safe_malloc(asize * sizeof(CITCOM_XMC_PREC));
 	      E->PINS[neighbor] = (int *)safe_malloc((markers + 1) * (2 + E->tracers_add_flavors) * sizeof(int));
 	      
 	    }
@@ -472,7 +472,7 @@
 
 // like get_element, assuming uniform mesh in x and y
 
-int locate_processor(struct All_variables *E, double XMC1, double XMC2, double XMC3)
+int locate_processor(struct All_variables *E, CITCOM_XMC_PREC XMC1, CITCOM_XMC_PREC XMC2, CITCOM_XMC_PREC XMC3)
 {
 	int proc, m1, m2, m3;
 	const int npx = E->parallel.nprocx - 1;
@@ -823,7 +823,7 @@
   works for uniform mesh in x and y, but unlimited in z
  ================================================ */
 
-int get_element(struct All_variables *E, double XMC1, double XMC2, double XMC3, double dX[4])
+int get_element(struct All_variables *E, CITCOM_XMC_PREC XMC1, CITCOM_XMC_PREC XMC2, CITCOM_XMC_PREC XMC3, double dX[4])
 {
 	int el;
 	int i, i1, j1;

Modified: mc/3D/CitcomCU/trunk/src/Convection.c
===================================================================
--- mc/3D/CitcomCU/trunk/src/Convection.c	2012-01-07 20:05:13 UTC (rev 19332)
+++ mc/3D/CitcomCU/trunk/src/Convection.c	2012-01-07 20:46:21 UTC (rev 19333)
@@ -55,6 +55,10 @@
   input_int("tracers_add_flavors", &(E->tracers_add_flavors), "0", E->parallel.me);
 
   input_float("tracers_assign_dense_fraction",&(E->tracers_assign_dense_fraction),"1.0",E->parallel.me);
+
+  /* how many tracers maximum upon advection, was 2 */
+  input_float("marker_max_factor",&(E->advection.marker_max_factor),"2.0",E->parallel.me);
+  
   if(E->tracers_assign_dense_fraction < 1.0){
     force_report(E,"WARNING: only assigning tracers to elements which are predominantly dense");
     if(E->parallel.me == 0)fprintf(stderr,"assuming a fraction of %g%%\n",E->tracers_assign_dense_fraction * 100.0);
@@ -195,7 +199,7 @@
 		E->advection.markers = E->advection.markers_per_ele * E->mesh.nel;
 	  }
 		E->advection.markers = E->advection.markers * E->lmesh.volume / E->mesh.volume;
-		E->advection.markers_uplimit = E->advection.markers * 2;
+		E->advection.markers_uplimit = (int)((float)E->advection.markers * E->advection.marker_max_factor);
 		if(E->parallel.me == 0)fprintf(stderr, "amarkers: %d lmesh.volume %g volume %g\n", E->advection.markers, E->lmesh.volume, E->mesh.volume);
 		for(i = 1; i <= E->mesh.nsd; i++)
 		{
@@ -205,10 +209,10 @@
 			E->Vpred[i] = (float *)malloc((E->advection.markers_uplimit + 1) * sizeof(float));
 			if(!(E->Vpred[i]))myerror("Convection: mem error: E->Vpred",E);
 
-			E->XMCpred[i] = (double *)malloc((E->advection.markers_uplimit + 1) * sizeof(double));
+			E->XMCpred[i] = (CITCOM_XMC_PREC *)malloc((E->advection.markers_uplimit + 1) * sizeof(CITCOM_XMC_PREC));
 			if(!(E->XMCpred[i]))myerror("Convection: mem error: E->XMCpred",E);
 
-			E->XMC[i] = (double *)malloc((E->advection.markers_uplimit + 1) * sizeof(double));
+			E->XMC[i] = (CITCOM_XMC_PREC *)malloc((E->advection.markers_uplimit + 1) * sizeof(CITCOM_XMC_PREC));
 			if(!(E->XMC[i]))myerror("Convection: mem error: E->XMC",E);
 
 			if(i==1){ /* those should only get allocated once */

Modified: mc/3D/CitcomCU/trunk/src/Ggrd_handling.c
===================================================================
--- mc/3D/CitcomCU/trunk/src/Ggrd_handling.c	2012-01-07 20:05:13 UTC (rev 19332)
+++ mc/3D/CitcomCU/trunk/src/Ggrd_handling.c	2012-01-07 20:46:21 UTC (rev 19333)
@@ -43,8 +43,8 @@
 #include <string.h>
 #include <mpi.h>
 #include "hc.h"
-#include "prototypes.h"
 
+
 /* ===============================
    Initialization of fields .....
    =============================== */

Modified: mc/3D/CitcomCU/trunk/src/Makefile.gzdir_ani
===================================================================
--- mc/3D/CitcomCU/trunk/src/Makefile.gzdir_ani	2012-01-07 20:05:13 UTC (rev 19332)
+++ mc/3D/CitcomCU/trunk/src/Makefile.gzdir_ani	2012-01-07 20:46:21 UTC (rev 19333)
@@ -34,7 +34,8 @@
 
 LIB= $(LIB_PATH) $(LIB_LIST) $(EXPO_LIBS)  -lm
 
-DEFINES = -DUSE_GZDIR -DUSE_GGRD -DCITCOM_ALLOW_ANISOTROPIC_VISC \
+DEFINES =  \
+	-DUSE_GZDIR -DUSE_GGRD -DCITCOM_ALLOW_ANISOTROPIC_VISC \
 	-I$(HC_DIR)/  $(EXPO_DEFINE) \
 	 -I$(GMT_DIR)/include/ -I$(NETCDF_DIR)/include/\
 	-DPREM_MODEL_FILE=\"$(PWD)/prem/prem.dat\"

Added: mc/3D/CitcomCU/trunk/src/Makefile.gzdir_ani_low
===================================================================
--- mc/3D/CitcomCU/trunk/src/Makefile.gzdir_ani_low	                        (rev 0)
+++ mc/3D/CitcomCU/trunk/src/Makefile.gzdir_ani_low	2012-01-07 20:46:21 UTC (rev 19333)
@@ -0,0 +1,271 @@
+#
+#  Makefile for "CitcomCU" allowing considerable variations
+#
+
+#
+#  NOTES:
+#  1) Macro substitution is different for different version of make, for SGI,
+#     CRAY, HP, etc. It seems necessary to go through and replace the
+#     CEXT ... FOBJFLAG macros manually.
+#
+#  2) Put FLAGS=$(YOUR_MACHINE_FLAGS) chosen from the list that follows, add
+#     machines, where necessary, try and find a better way than just defining
+#     "const" to be null. 
+#
+##############################################################################
+#	Individual Machine Variations
+##############################################################################
+
+#COMPRESS=/usr/bin/compress
+COMPRESS=/bin/gzip
+GMT_DIR = $(GMTHOME)
+NETCDF_DIR = $(NETCDFHOME)
+HC_DIR = ../../../hc-svn/
+LIB_PATH= -L$(HC_DIR)/objects/x86_64/ -L$(GMT_DIR)/lib/ -L$(NETCDF_DIR)/lib/
+LIB_LIST= -lz -lggrd -lhc -lgmt -lnetcdf
+
+
+
+# use the expokit stuff?
+EXPO_DEFINE = -DCITCOM_USE_EXPOKIT
+EXPO_FILES = expokit/dgpadm.f
+EXPO_LIBS = $(EXPO_OBJS) -llapack -lblas 
+
+
+LIB= $(LIB_PATH) $(LIB_LIST) $(EXPO_LIBS)  -lm
+
+DEFINES = -DCITCOM_XMC_LOW_PREC \
+	-DUSE_GZDIR -DUSE_GGRD -DCITCOM_ALLOW_ANISOTROPIC_VISC \
+	-I$(HC_DIR)/  $(EXPO_DEFINE) \
+	 -I$(GMT_DIR)/include/ -I$(NETCDF_DIR)/include/\
+	-DPREM_MODEL_FILE=\"$(PWD)/prem/prem.dat\"
+
+###################################################################
+#	Operating System Variables
+###################################################################
+
+CC=mpicc
+F77=mpif77
+CPP=
+
+
+CEXT=c
+FEXT=F   # which implies further action of cpp
+OBJEXT=o
+FOBJEXT=o
+OBJFLAG=-c
+FOBJFLAG=-c
+
+
+LinuxFLAGS=
+LinuxLDFLAGS=
+#LinuxOPTIM=-g -O0 -Werror $(DEFINES)
+#LinuxOPTIM=-O3 -mtune=core2 -Werror $(DEFINES)
+LinuxOPTIM=-O2 -Werror $(DEFINES)
+
+####################################
+#PARAGON 
+PARAGONFLAGS=-nx
+PARAGONLDFLAGS=
+PARAGONOPTIM=-O4
+####################################
+
+####################################################################
+#	Choose the actual flags for your machine here ...
+####################################################################
+
+FLAGS= $(LinuxFLAGS) -DCOMPRESS_BINARY=\"$(COMPRESS)\"
+LDFLAGS= $(LinuxLDFLAGS)
+OPTIM= $(LinuxOPTIM)
+
+#FLAGS= $(SOLARISFLAGS) -DCOMPRESS_BINARY=\"$(COMPRESS)\"
+#LDFLAGS= $(SOLARISLDFLAGS)
+#OPTIM= $(SOLARISOPTIM)
+
+####################################################################
+#	CitcomCU's files .....
+####################################################################
+
+CFILES= Advection_diffusion.c\
+	Anisotropic_viscosity.c\
+	Boundary_conditions.c\
+	Citcom.c\
+	Composition_adv.c\
+	Construct_arrays.c\
+	Convection.c\
+	Drive_solvers.c\
+	Element_calculations.c\
+	Geometry_cartesian.c\
+	General_matrix_functions.c\
+	Global_operations.c\
+	Stokes_flow_Incomp.c\
+	Instructions.c\
+	Nodal_mesh.c\
+	Output.c\
+	Pan_problem_misc_functions.c\
+	Parallel_related.c\
+	Parsing.c\
+	Phase_change.c\
+	Process_buoyancy.c\
+	Process_velocity.c\
+	Profiling.c\
+	Shape_functions.c\
+	Size_does_matter.c\
+	Solver_multigrid.c\
+	Solver_conj_grad.c\
+	Sphere_harmonics.c\
+	Topo_gravity.c\
+	Viscosity_structures.c\
+	Output_gzdir.c\
+	Ggrd_handling.c
+
+
+
+HEADER = element_definitions.h \
+	 global_defs.h \
+	 viscosity_descriptions.h \
+	 anisotropic_viscosity.h \
+	 advection.h \
+	 prototypes.h
+
+
+
+FFILES=$(EXPO_FILES) #Blas_lapack_interfaces.F
+
+OBJFILES=$(CFILES:.c=.o) $(FFILES:.f=.o) 
+
+
+####################################################################
+# Makefile rules follow
+####################################################################
+
+default: citcom_low.mpi 
+
+citcom_low.mpi: $(OBJFILES) $(HEADER) Makefile
+	$(F77) $(OPTIM) $(FLAGS) $(LDFLAGS) -o citcom_low.mpi -nofor_main \
+	$(OBJFILES)  $(FFTLIB)  $(LIB)
+
+clean:
+	rm -f $(OBJFILES)
+
+clean-all:
+	rm -f *.o citcom_low.mpi
+
+smaller: 
+	compress $(CFILES)
+
+larger:
+	uncompress $(CFILES)
+
+
+####################################################################
+# File dependencies follow
+####################################################################
+
+global_defs.h: viscosity_descriptions.h advection.h Convection_variables.h
+		
+# The following entries can probably be automated from $CFILES etc
+
+Advection_diffusion.o: $(HEADER) Advection_diffusion.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Advection_diffusion.c
+
+Anisotropic_viscosity.o: $(HEADER) Anisotropic_viscosity.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Anisotropic_viscosity.c
+#
+Boundary_conditions.o: $(HEADER) Boundary_conditions.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Boundary_conditions.c
+#	
+Citcom.o: $(HEADER) Citcom.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Citcom.c
+#	
+Composition_adv.o: $(HEADER) Composition_adv.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Composition_adv.c
+#	
+Construct_arrays.o: $(HEADER) Construct_arrays.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Construct_arrays.c
+#	
+Convection.o: $(HEADER) Convection.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Convection.c
+#	
+Drive_solvers.o: $(HEADER) Drive_solvers.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Drive_solvers.c
+#	
+Element_calculations.o: $(HEADER) Element_calculations.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Element_calculations.c
+
+General_matrix_functions.o: $(HEADER) General_matrix_functions.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  General_matrix_functions.c
+		
+Geometry_cartesian.o: $(HEADER) Geometry_cartesian.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Geometry_cartesian.c
+	
+Global_operations.o: $(HEADER) Global_operations.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Global_operations.c
+	
+Instructions.o: $(HEADER) Instructions.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Instructions.c
+	
+Nodal_mesh.o: $(HEADER) Nodal_mesh.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Nodal_mesh.c
+
+Output.o: $(HEADER) Output.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Output.c
+	
+Pan_problem_misc_functions.o: $(HEADER)  Pan_problem_misc_functions.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Pan_problem_misc_functions.c
+		
+Parallel_related.o: $(HEADER) Parallel_related.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Parallel_related.c
+
+Parsing.o: $(HEADER) Parsing.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Parsing.c
+
+Phase_change.o: $(HEADER) Phase_change.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Phase_change.c
+
+Process_velocity.o: $(HEADER) Process_velocity.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Process_velocity.c
+
+Process_buoyancy.o: $(HEADER) Process_buoyancy.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Process_buoyancy.c
+			
+Profiling.o: $(HEADER) Profiling.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Profiling.c
+	
+Shape_functions.o: $(HEADER) Shape_functions.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Shape_functions.c
+	
+Size_does_matter.o: $(HEADER) Size_does_matter.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Size_does_matter.c
+	
+Solver_conj_grad.o: $(HEADER) Solver_conj_grad.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Solver_conj_grad.c
+	
+Solver_multigrid.o: $(HEADER) Solver_multigrid.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Solver_multigrid.c
+
+Sphere_harmonics.o: $(HEADER) Sphere_harmonics.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Sphere_harmonics.c
+
+Stokes_flow_Incomp.o: $(HEADER) Stokes_flow_Incomp.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Stokes_flow_Incomp.c
+	
+Topo_gravity.o: $(HEADER) Topo_gravity.c 
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Topo_gravity.c
+
+Viscosity_structures.o: $(HEADER) Viscosity_structures.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Viscosity_structures.c
+
+Blas_lapack_interfaces.f: Blas_lapack_interfaces.F
+	$(CPP) $(OPTIM) -P Blas_lapack_interfaces.F Blas_lapack_interfaces.f
+	$(F77) $(OPTIM) $(FOPTIM) -c Blas_lapack_interfaces.f
+
+Output_gzdir.o: $(HEADER) Output_gzdir.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Output_gzdir.c
+
+
+Ggrd_handling.o: $(HEADER) Ggrd_handling.c
+	$(CC) $(OPTIM) $(FLAGS)  $(OBJFLAG)  Ggrd_handling.c
+
+expokit/dgpadm.o: expokit/dgpadm.f $(HEADER)
+	$(F77) $(OPTIM) $(FOPTIM) -c expokit/dgpadm.f -o expokit/dgpadm.o

Modified: mc/3D/CitcomCU/trunk/src/Output_gzdir.c
===================================================================
--- mc/3D/CitcomCU/trunk/src/Output_gzdir.c	2012-01-07 20:05:13 UTC (rev 19332)
+++ mc/3D/CitcomCU/trunk/src/Output_gzdir.c	2012-01-07 20:46:21 UTC (rev 19333)
@@ -55,7 +55,7 @@
 
 #include "element_definitions.h"
 #include "global_defs.h"
-#include "prototypes.h"
+
 #ifdef CITCOM_ALLOW_ANISOTROPIC_VISC
 #include "anisotropic_viscosity.h"
 #endif

Modified: mc/3D/CitcomCU/trunk/src/Pan_problem_misc_functions.c
===================================================================
--- mc/3D/CitcomCU/trunk/src/Pan_problem_misc_functions.c	2012-01-07 20:05:13 UTC (rev 19332)
+++ mc/3D/CitcomCU/trunk/src/Pan_problem_misc_functions.c	2012-01-07 20:46:21 UTC (rev 19333)
@@ -1023,7 +1023,7 @@
    still need to test this properly
 
 */
-double distance_to_node(double x1, double x2, double x3,struct All_variables *E, int lnode)
+double distance_to_node(CITCOM_XMC_PREC x1, CITCOM_XMC_PREC x2, CITCOM_XMC_PREC x3,struct All_variables *E, int lnode)
 {
   double tmp1,tmp2,tmp3,dr;
   if(E->control.Rsphere){

Modified: mc/3D/CitcomCU/trunk/src/advection.h
===================================================================
--- mc/3D/CitcomCU/trunk/src/advection.h	2012-01-07 20:05:13 UTC (rev 19332)
+++ mc/3D/CitcomCU/trunk/src/advection.h	2012-01-07 20:46:21 UTC (rev 19333)
@@ -46,6 +46,7 @@
 
 	int markers_g, markers, markers1, markers_uplimit, markers_per_ele;
 	float marker_maxdist, marker_mindist;
+  float marker_max_factor;
 	int markerIX, markerIY, markerIZ;
 
 

Modified: mc/3D/CitcomCU/trunk/src/global_defs.h
===================================================================
--- mc/3D/CitcomCU/trunk/src/global_defs.h	2012-01-07 20:05:13 UTC (rev 19332)
+++ mc/3D/CitcomCU/trunk/src/global_defs.h	2012-01-07 20:46:21 UTC (rev 19333)
@@ -43,7 +43,6 @@
 
 #ifdef USE_GGRD
 #include "hc.h"
-
 #endif
 
 #if defined(__osf__)
@@ -52,8 +51,12 @@
 
 #define Malloc0(a) Malloc1((a),__FILE__,__LINE__)
 
+#ifdef CITCOM_XMC_LOW_PREC
+#define CITCOM_XMC_PREC float
+#else
+#define CITCOM_XMC_PREC double
+#endif
 
-
 /* #define Malloc0 malloc */
 
 #define LIDN 0x1
@@ -885,10 +888,11 @@
 
 struct TRACES
 {
+
 	float VO[4];
 	float Vpred[4];
-	double XMC[4];
-	double XMCpred[4];
+  CITCOM_XMC_PREC XMC[4];
+  CITCOM_XMC_PREC XMCpred[4];
 	int C12;
 	int leave;
 	int CElement;
@@ -944,13 +948,13 @@
 
   
 	float *RVV[MAX_NEIGHBORS], *PVV[MAX_NEIGHBORS];
-	double *RXX[MAX_NEIGHBORS], *PXX[MAX_NEIGHBORS];
+	CITCOM_XMC_PREC  *RXX[MAX_NEIGHBORS], *PXX[MAX_NEIGHBORS];
 	int *RINS[MAX_NEIGHBORS], *PINS[MAX_NEIGHBORS];
 
 	float *VO[4];
 	float *Vpred[4];
-	double *XMC[4];
-	double *XMCpred[4];
+  CITCOM_XMC_PREC  *XMC[4];
+  CITCOM_XMC_PREC *XMCpred[4];
 	int *C12;		/* this shold be unsigned short */
 	int *traces_leave;
 	int *traces_leave_index;
@@ -1083,4 +1087,8 @@
 void output_velo_related_gzdir(struct All_variables *, int);
 void output_velo_related(struct All_variables *, int);
 
+#ifdef CITCOM_XMC_LOW_PREC 
+#include "prototypes_low.h"
+#else
 #include "prototypes.h"
+#endif

Modified: mc/3D/CitcomCU/trunk/src/prototypes.h
===================================================================
--- mc/3D/CitcomCU/trunk/src/prototypes.h	2012-01-07 20:05:13 UTC (rev 19332)
+++ mc/3D/CitcomCU/trunk/src/prototypes.h	2012-01-07 20:46:21 UTC (rev 19333)
@@ -164,19 +164,20 @@
 double plgndr_a(int, int, double);
 double sphere_h(int, int, double, double, int);
 /* Geometry_cartesian.c */
+void set_2dc_defaults(struct All_variables *);
 void set_2pt5dc_defaults(struct All_variables *);
 void set_3ds_defaults(struct All_variables *);
 void set_3dc_defaults(struct All_variables *);
 /* Ggrd_handling.c */
 void convection_initial_temperature_and_comp_ggrd(struct All_variables *);
-void assign_flavor_to_tracer_from_grd(struct All_variables *);
 void ggrd_deal_with_composition_input(struct All_variables *, int);
 void assign_flavor_to_tracer_from_grd(struct All_variables *);
-int in_slab_slice(float, int, struct All_variables *,float *,int);
+int in_slab_slice(float, int, struct All_variables *, float *, int);
 void ggrd_read_mat_from_file(struct All_variables *);
 void ggrd_solve_eigen3x3(double [3][3], double [3], double [3][3], struct All_variables *);
 void ggrd_read_anivisc_from_file(struct All_variables *);
 /* Global_operations.c */
+void remove_horiz_ave(struct All_variables *, float *, float *, int);
 void return_horiz_sum(struct All_variables *, float *, float *, int);
 void return_horiz_ave(struct All_variables *, float *, float *);
 float return_bulk_value(struct All_variables *, float *, float, int);
@@ -202,8 +203,8 @@
 void read_initial_settings(struct All_variables *);
 void check_bc_consistency(struct All_variables *);
 void set_up_nonmg_aliases(struct All_variables *);
+void report(struct All_variables *, char *);
 void force_report(struct All_variables *, char *);
-void report(struct All_variables *, char *);
 void record(struct All_variables *, char *);
 void common_initial_fields(struct All_variables *);
 void initial_pressure(struct All_variables *);
@@ -233,6 +234,7 @@
 /* output_ascii.c */
 _Bool output_ascii(struct All_variables *);
 /* Output.c */
+void output_velo_related(struct All_variables *, int);
 void output_velo_related_binary(struct All_variables *, int);
 void output_temp(struct All_variables *, int);
 void process_restart(struct All_variables *);
@@ -278,6 +280,7 @@
 void remove_trace_3x3(double [3][3]);
 double distance_to_node(double, double, double, struct All_variables *, int);
 /* Parallel_related.c */
+void parallel_process_initilization(struct All_variables *, int, char **);
 void parallel_process_termination(void);
 void parallel_domain_decomp1(struct All_variables *);
 void parallel_shuffle_ele_and_id(struct All_variables *);
@@ -311,11 +314,14 @@
 int input_double_vector(char *, int, double *, int);
 int interpret_control_string(char *, int *, double *, double *, double *);
 /* Phase_change.c */
+void phase_change(struct All_variables *, float *, float *, float *, float *);
 /* Process_buoyancy.c */
+void process_temp_field(struct All_variables *, int);
 void heat_flux(struct All_variables *);
 void heat_flux1(struct All_variables *);
 void plume_buoyancy_flux(struct All_variables *);
 /* Process_velocity.c */
+void process_new_velocity(struct All_variables *, int);
 void get_surface_velo(struct All_variables *, float *);
 void get_ele_visc(struct All_variables *, float *);
 void get_surf_stress(struct All_variables *, float *, float *, float *, float *, float *, float *);
@@ -323,9 +329,11 @@
 /* Profiling.c */
 float CPU_time(void);
 /* Shape_functions.c */
+void construct_shape_functions(struct All_variables *);
 double lpoly(int, double);
 double lpolydash(int, double);
 /* Size_does_matter.c */
+void twiddle_thumbs(struct All_variables *, int);
 void get_global_shape_fn(struct All_variables *, int, int, double [4][9], int, int);
 void form_rtf_bc(int, double [4], double [4][9], double [4][4]);
 void get_rtf(struct All_variables *, int, int, double [4][9], int);
@@ -334,6 +342,7 @@
 void get_global_1d_shape_fn1(struct All_variables *, int, struct Shape_function1 *, struct Shape_function1_dA *, int);
 void mass_matrix(struct All_variables *);
 /* Solver_conj_grad.c */
+void set_cg_defaults(struct All_variables *);
 void cg_allocate_vars(struct All_variables *);
 void assemble_forces_iterative(struct All_variables *);
 /* Solver_multigrid.c */
@@ -350,6 +359,7 @@
 void inject_scalar(struct All_variables *, int, float *, float *);
 void inject_scalar_e(struct All_variables *, int, float *, float *);
 /* Sphere_harmonics.c */
+void set_sphere_harmonics(struct All_variables *);
 void sphere_harmonics_layer(struct All_variables *, float **, float *, float *, int, char *);
 void sphere_interpolate(struct All_variables *, float **, float *);
 void sphere_expansion(struct All_variables *, float *, float *, float *);

Added: mc/3D/CitcomCU/trunk/src/prototypes_low.h
===================================================================
--- mc/3D/CitcomCU/trunk/src/prototypes_low.h	                        (rev 0)
+++ mc/3D/CitcomCU/trunk/src/prototypes_low.h	2012-01-07 20:46:21 UTC (rev 19333)
@@ -0,0 +1,397 @@
+/* Advection_diffusion.c */
+void advection_diffusion_parameters(struct All_variables *);
+void advection_diffusion_allocate_memory(struct All_variables *);
+void PG_timestep_particle(struct All_variables *);
+void PG_timestep(struct All_variables *);
+void predictor(struct All_variables *, float *, float *);
+void corrector(struct All_variables *, float *, float *, float *);
+void pg_solver(struct All_variables *, float *, float *, float *, float **, struct SOURCES, float, int, float **, unsigned int *);
+void pg_shape_fn(struct All_variables *, int, struct Shape_function *, float **, double [4][9], float);
+void element_residual(struct All_variables *, int, struct Shape_function, float **, float *, float *, struct SOURCES, double [9], double [4][9], float, float **, unsigned int *);
+void std_timestep(struct All_variables *);
+void process_heating(struct All_variables *);
+/* Anisotropic_viscosity.c */
+void get_constitutive(double [6][6], double, double, int, float, float, float, float, int, struct All_variables *);
+void get_constitutive_ti_viscosity(double [6][6], double, double, double [3], int, double, double);
+void get_constitutive_orthotropic_viscosity(double [6][6], double, double [3], int, double, double);
+void get_constitutive_isotropic(double [6][6]);
+void set_anisotropic_viscosity_at_element_level(struct All_variables *, int);
+void normalize_director_at_nodes(struct All_variables *, float *, float *, float *, int);
+void normalize_director_at_gint(struct All_variables *, float *, float *, float *, int);
+void conv_cart4x4_to_spherical(double [3][3][3][3], double, double, double [3][3][3][3]);
+void conv_cart6x6_to_spherical(double [6][6], double, double, double [6][6]);
+void rotate_ti6x6_to_director(double [6][6], double [3]);
+void get_citcom_spherical_rot(double, double, double [3][3]);
+void get_orth_delta(double [3][3][3][3], double [3]);
+void align_director_with_ISA_for_element(struct All_variables *, int);
+unsigned char calc_isa_from_vgm(double [3][3], double [3], int, double [3], struct All_variables *, int);
+int is_pure_shear(double [3][3], double [3][3], double [3][3]);
+void rot_4x4(double [3][3][3][3], double [3][3], double [3][3][3][3]);
+void zero_6x6(double [6][6]);
+void zero_4x4(double [3][3][3][3]);
+void copy_4x4(double [3][3][3][3], double [3][3][3][3]);
+void copy_6x6(double [6][6], double [6][6]);
+void print_6x6_mat(FILE *, double [6][6]);
+void print_3x3_mat(FILE *, double [3][3]);
+void c4fromc6(double [3][3][3][3], double [6][6]);
+void c6fromc4(double [6][6], double [3][3][3][3]);
+void isacalc(double [3][3], double *, double [3], struct All_variables *, int *);
+void f_times_ft(double [3][3], double [3][3]);
+void drex_eigen(double [3][3], double [3][3], int *);
+void malmul_scaled_id(double [3][3], double [3][3], double, double);
+void myerror_s(char *, struct All_variables *);
+/* Boundary_conditions.c */
+void velocity_boundary_conditions(struct All_variables *);
+void freeze_surface(struct All_variables *);
+void temperature_boundary_conditions(struct All_variables *);
+void velocity_refl_vert_bc(struct All_variables *);
+void temperature_refl_vert_bc(struct All_variables *);
+void temperature_imposed_botm_bcs(struct All_variables *, float *[], int);
+void horizontal_bc(struct All_variables *, float *[], int, int, float, unsigned int, char, int);
+void velocity_apply_periodic_bcs(struct All_variables *);
+void temperature_apply_periodic_bcs(struct All_variables *);
+void strip_bcs_from_residual(struct All_variables *, double *, int);
+void temperatures_conform_bcs(struct All_variables *);
+void velocities_conform_bcs(struct All_variables *, double *);
+void equalize_id_ien_lm(struct All_variables *);
+/* Citcom.c */
+int main(int, char **);
+/* Composition_adv.c */
+void Runge_Kutta(struct All_variables *, float *, float *[4], int);
+void Euler(struct All_variables *, float *, float *[4], int);
+void transfer_markers_processors(struct All_variables *, int);
+void unify_markers_array(struct All_variables *, int, int);
+void prepare_transfer_arrays(struct All_variables *);
+int locate_processor(struct All_variables *, float, float, float);
+void get_C_from_markers(struct All_variables *, float *);
+void get_CF_from_markers(struct All_variables *, int **);
+void element_markers(struct All_variables *, int);
+void velocity_markers(struct All_variables *, float *[4], int);
+int get_element(struct All_variables *, float, float, float, double [4]);
+int in_the_domain(struct All_variables *, double, double, double);
+float area_of_4node1(float, float, float, float, float, float, float, float);
+float area_of_3node(float, float, float, float, float, float);
+float mean_of_3node(int, float, float, float, float, float, float);
+float mean_of_4node(int, float, float, float, float, float, float, float, float);
+float mean_of_5node(int, float, float, float, float, float, float, float, float, float, float);
+float dist1(float [4], float [4]);
+/* Construct_arrays.c */
+void construct_ien(struct All_variables *);
+void construct_id(struct All_variables *);
+void construct_lm(struct All_variables *);
+void construct_node_maps(struct All_variables *);
+void construct_node_ks(struct All_variables *);
+void construct_masks(struct All_variables *);
+void construct_sub_element(struct All_variables *);
+void construct_elt_ks(struct All_variables *);
+void construct_elt_gs(struct All_variables *);
+void construct_mat_group(struct All_variables *);
+void construct_stiffness_B_matrix(struct All_variables *);
+void rebuild_BI_on_boundary(struct All_variables *);
+/* Convection.c */
+void set_convection_defaults(struct All_variables *);
+void read_convection_settings(struct All_variables *);
+void convection_derived_values(struct All_variables *);
+void convection_allocate_memory(struct All_variables *);
+void convection_initial_fields(struct All_variables *);
+void convection_boundary_conditions(struct All_variables *);
+void convection_initial_temperature(struct All_variables *);
+void process_restart_tc(struct All_variables *);
+void convection_initial_markers1(struct All_variables *);
+void convection_initial_markers(struct All_variables *, int);
+void assign_flavor_to_tracer_based_on_node(struct All_variables *, int, int);
+void setup_plume_problem(struct All_variables *);
+void PG_process(struct All_variables *, int);
+/* Drive_solvers.c */
+void general_stokes_solver(struct All_variables *);
+int need_to_iterate(struct All_variables *);
+/* Element_calculations.c */
+void assemble_forces(struct All_variables *, int);
+void get_elt_k(struct All_variables *, int, double [24 * 24], int, int);
+void get_ba(struct Shape_function *, struct Shape_function_dx *, struct CC *, struct CCX *, double [4][9], int, int, int, int, double [9][4][9][7]);
+void get_ba_p(struct Shape_function *, struct Shape_function_dx *, struct CC *, struct CCX *, double [4][9], int, int, int, int, double [9][4][9][7]);
+void assemble_del2_u(struct All_variables *, double *, double *, int, int);
+void e_assemble_del2_u(struct All_variables *, double *, double *, int, int);
+void n_assemble_del2_u(struct All_variables *, double *, double *, int, int);
+void build_diagonal_of_K(struct All_variables *, int, double [24 * 24], int);
+void build_diagonal_of_Ahat(struct All_variables *);
+void assemble_div_u(struct All_variables *, double *, double *, int);
+void assemble_grad_p(struct All_variables *, double *, double *, int);
+double assemble_dAhatp_entry(struct All_variables *, int, int);
+void get_elt_g(struct All_variables *, int, higher_precision [24][1], int);
+void get_elt_h(struct All_variables *, int, double [1], int);
+void get_elt_f(struct All_variables *, int, double [24], int, int);
+void get_aug_k(struct All_variables *, int, double [24 * 24], int);
+/* General_matrix_functions.c */
+double **dmatrix(int, int, int, int);
+float **fmatrix(int, int, int, int);
+void dfree_matrix(double **, int, int, int, int);
+void ffree_matrix(float **, int, int, int, int);
+double *dvector(int, int);
+float *fvector(int, int);
+void dfree_vector(double *, int, int);
+void ffree_vector(float *, int, int);
+int *sivector(int, int);
+void sifree_vector(int *, int, int);
+double pdot(struct All_variables *, double *, double *, int);
+double pselfdot(struct All_variables *, double *);
+double vdot(struct All_variables *, double *, double *, int);
+double vselfdot(struct All_variables *, double *, int);
+double vfselfdot(struct All_variables *, float *, int);
+float fdot(float *, float *, int, int);
+float fselfdot(float *, int, int);
+float dot(struct All_variables *, float *, float *);
+float selfdot(struct All_variables *, float *);
+void dvcopy(double *, double *, int, int);
+void vcopy(float *, float *, int, int);
+void vprod(double *, double *, double *, int, int);
+float fnmax(struct All_variables *, float *, int, int);
+int solve_del2_u(struct All_variables *, double *, double *, double, int);
+double multi_grid(struct All_variables *, double *, double *, double *, double, int);
+double conj_grad(struct All_variables *, double *, double *, double *, double, int *, int);
+void jacobi(struct All_variables *, double *, double *, double *, double, int *, int, int);
+void element_gauss_seidel(struct All_variables *, double *, double *, double *, double, int *, int, int);
+void gauss_seidel1(struct All_variables *, double *, double *, double *, double, int *, int, int);
+void gauss_seidel(struct All_variables *, double *, double *, double *, double, int *, int, int);
+void print_elt_k(struct All_variables *, double [24 * 24]);
+double cofactor(double [4][4], int, int, int);
+double determinant(double [4][4], int);
+float area_of_4node(float, float, float, float, float, float, float, float);
+double modified_plgndr_a(int, int, double);
+double sqrt_multis(int, int);
+double multis(int);
+int int_multis(int);
+double plgndr_a(int, int, double);
+double sphere_h(int, int, double, double, int);
+/* Geometry_cartesian.c */
+void set_2dc_defaults(struct All_variables *);
+void set_2pt5dc_defaults(struct All_variables *);
+void set_3ds_defaults(struct All_variables *);
+void set_3dc_defaults(struct All_variables *);
+/* Ggrd_handling.c */
+void convection_initial_temperature_and_comp_ggrd(struct All_variables *);
+void ggrd_deal_with_composition_input(struct All_variables *, int);
+void assign_flavor_to_tracer_from_grd(struct All_variables *);
+int in_slab_slice(float, int, struct All_variables *, float *, int);
+void ggrd_read_mat_from_file(struct All_variables *);
+void ggrd_solve_eigen3x3(double [3][3], double [3], double [3][3], struct All_variables *);
+void ggrd_read_anivisc_from_file(struct All_variables *);
+/* Global_operations.c */
+void remove_horiz_ave(struct All_variables *, float *, float *, int);
+void return_horiz_sum(struct All_variables *, float *, float *, int);
+void return_horiz_ave(struct All_variables *, float *, float *);
+float return_bulk_value(struct All_variables *, float *, float, int);
+double global_div_norm2(struct All_variables *, double *);
+double global_vdot(struct All_variables *, double *, double *, int);
+double global_pdot(struct All_variables *, double *, double *, int);
+float global_tdot(struct All_variables *, float *, float *, int);
+float Tmax(struct All_variables *, float *);
+float global_fmin(struct All_variables *, float);
+float global_fmax(struct All_variables *, float);
+void sum_across_depth_sph1(struct All_variables *, float *, float *);
+void sum_across_surface(struct All_variables *, float *, int);
+void sum_across_surf_sph1(struct All_variables *, float *, float *);
+void gather_TG_to_me0(struct All_variables *, float *);
+void propogator_down_process(struct All_variables *, float *);
+double sum_across_depth(struct All_variables *, double);
+/* Instructions.c */
+void read_instructions(struct All_variables *, int, char **);
+void allocate_common_vars(struct All_variables *);
+void interruption(int);
+void global_default_values(struct All_variables *);
+void global_derived_values(struct All_variables *);
+void read_initial_settings(struct All_variables *);
+void check_bc_consistency(struct All_variables *);
+void set_up_nonmg_aliases(struct All_variables *);
+void report(struct All_variables *, char *);
+void force_report(struct All_variables *, char *);
+void record(struct All_variables *, char *);
+void common_initial_fields(struct All_variables *);
+void initial_pressure(struct All_variables *);
+void initial_velocity(struct All_variables *);
+/* io.c */
+_Bool io_directory_create(const char *);
+_Bool io_directory_exists(const char *);
+void io_error(void);
+_Bool io_results(struct All_variables *);
+_Bool io_setup_path(struct All_variables *);
+/* Nodal_mesh.c */
+void node_locations(struct All_variables *);
+void pre_interpolation(struct All_variables *);
+void dlogical_mesh_to_real(struct All_variables *, double *, int);
+void flogical_mesh_to_real(struct All_variables *, float *, int);
+void p_to_nodes(struct All_variables *, double *, float *, int);
+void e2_to_nodes(struct All_variables *, float *, float *, int);
+void p_to_centres(struct All_variables *, float *, double *, int);
+void v_to_intpts(struct All_variables *, float *, float *, int);
+void v_to_nodes(struct All_variables *, float *, float *, int);
+void visc_to_intpts(struct All_variables *, float *, float *, int);
+void visc_to_nodes(struct All_variables *, float *, float *, int);
+void visc_from_ele_to_gint(struct All_variables *, float *, float *, int);
+void visc_from_gint_to_ele(struct All_variables *, float *, float *, int);
+void visc_from_gint_to_nodes(struct All_variables *, float *, float *, int);
+void visc_from_nodes_to_gint(struct All_variables *, float *, float *, int);
+/* output_ascii.c */
+_Bool output_ascii(struct All_variables *);
+/* Output.c */
+void output_velo_related(struct All_variables *, int);
+void output_velo_related_binary(struct All_variables *, int);
+void output_temp(struct All_variables *, int);
+void process_restart(struct All_variables *);
+void print_field_spectral_regular(struct All_variables *, float *, float *, float *, int, char *);
+/* Output_gzdir.c */
+void output_velo_related_gzdir(struct All_variables *, int);
+void process_restart_tc_gzdir(struct All_variables *);
+/* output_vtk.c */
+_Bool output_vtk(struct All_variables *);
+/* Pan_problem_misc_functions.c */
+int get_process_identifier(void);
+void unique_copy_file(struct All_variables *, char *, char *);
+void thermal_buoyancy(struct All_variables *);
+double SIN_D(double);
+double COT_D(double);
+void *Malloc1(int, char *, int);
+int read_previous_field(struct All_variables *, float *, char *, char *);
+void fcopy_interpolating(struct All_variables *, float *, float *, float *, int, int, int, float *, float *);
+float cross2d(float, float, float, float, int);
+void field_arbitrary_rectangle_file(struct All_variables *, int, struct Rect *, char *, float *, int, unsigned int *, unsigned int, unsigned int);
+void field_arbitrary_rectangle(struct All_variables *, struct Rect *, float *, int, unsigned int *, unsigned int, unsigned int);
+void field_arbitrary_circle_file(struct All_variables *, int, struct Circ *, char *, float *, int, unsigned int *, unsigned int, unsigned int);
+void field_arbitrary_circle(struct All_variables *, struct Circ *, float *, int, unsigned int *, unsigned int, unsigned int);
+void field_arbitrary_harmonic_file(struct All_variables *, int, struct Harm *, char *, float *, int, unsigned int *, unsigned int, unsigned int);
+void field_arbitrary_harmonic(struct All_variables *, struct Harm *, float *, int, unsigned int *, unsigned int, unsigned int);
+double myatan(double, double);
+FILE *safe_fopen(char *, char *);
+void *safe_malloc(size_t);
+void calc_cbase_at_tp(float, float, float *);
+void convert_pvec_to_cvec(float, float, float, float *, float *);
+void rtp2xyz(float, float, float, float *);
+void xyz2rtp(float, float, float, float *);
+void myerror(char *, struct All_variables *);
+void get_9vec_from_3x3(double *, double [3][3]);
+void get_3x3_from_9vec(double [3][3], double *);
+void get_3x3_from_6vec(double [3][3], double *);
+void mat_mult_vec_3x3(double [3][3], double [3], double [3]);
+void normalize_vec3(float *, float *, float *);
+void normalize_vec3d(double *, double *, double *);
+void cross_product(double [3], double [3], double [3]);
+void matmul_3x3(double [3][3], double [3][3], double [3][3]);
+void assign_to_3x3(double [3][3], double);
+void remove_trace_3x3(double [3][3]);
+double distance_to_node(float, float, float, struct All_variables *, int);
+/* Parallel_related.c */
+void parallel_process_initilization(struct All_variables *, int, char **);
+void parallel_process_termination(void);
+void parallel_domain_decomp1(struct All_variables *);
+void parallel_shuffle_ele_and_id(struct All_variables *);
+void parallel_shuffle_ele_and_id_bc1(struct All_variables *);
+void parallel_shuffle_ele_and_id_bc2(struct All_variables *);
+void parallel_communication_routs(struct All_variables *);
+void parallel_communication_routs1(struct All_variables *);
+void parallel_communication_routs2(struct All_variables *);
+void parallel_communication_routs3(struct All_variables *);
+void parallel_communication_routs4(struct All_variables *);
+void exchange_number_rec_markers(struct All_variables *);
+void exchange_markers(struct All_variables *);
+void exchange_id_d20(struct All_variables *, double *, int);
+void exchange_node_f20(struct All_variables *, float *, int);
+void exchange_node_int(struct All_variables *, int *, int);
+double CPU_time0(void);
+void parallel_process_sync(void);
+/* Parsing.c */
+void setup_parser(struct All_variables *, char *);
+void shutdown_parser(struct All_variables *);
+void add_to_parameter_list(char *, char *);
+int compute_parameter_hash_table(char *);
+int input_int(char *, int *, char *, int);
+int input_string(char *, char *, char *, int);
+int input_boolean(char *, int *, char *, int);
+int input_float(char *, float *, char *, int);
+int input_double(char *, double *, char *, int);
+int input_int_vector(char *, int, int *, int);
+int input_char_vector(char *, int, char *, int);
+int input_float_vector(char *, int, float *, int);
+int input_double_vector(char *, int, double *, int);
+int interpret_control_string(char *, int *, double *, double *, double *);
+/* Phase_change.c */
+void phase_change(struct All_variables *, float *, float *, float *, float *);
+/* Process_buoyancy.c */
+void process_temp_field(struct All_variables *, int);
+void heat_flux(struct All_variables *);
+void heat_flux1(struct All_variables *);
+void plume_buoyancy_flux(struct All_variables *);
+/* Process_velocity.c */
+void process_new_velocity(struct All_variables *, int);
+void get_surface_velo(struct All_variables *, float *);
+void get_ele_visc(struct All_variables *, float *);
+void get_surf_stress(struct All_variables *, float *, float *, float *, float *, float *, float *);
+void averages(struct All_variables *);
+/* Profiling.c */
+float CPU_time(void);
+/* Shape_functions.c */
+void construct_shape_functions(struct All_variables *);
+double lpoly(int, double);
+double lpolydash(int, double);
+/* Size_does_matter.c */
+void twiddle_thumbs(struct All_variables *, int);
+void get_global_shape_fn(struct All_variables *, int, int, double [4][9], int, int);
+void form_rtf_bc(int, double [4], double [4][9], double [4][4]);
+void get_rtf(struct All_variables *, int, int, double [4][9], int);
+void construct_c3x3matrix_el(struct All_variables *, int, struct CC *, struct CCX *, int, int);
+void get_global_1d_shape_fn(struct All_variables *, int, struct Shape_function1 *, struct Shape_function1_dA *, int);
+void get_global_1d_shape_fn1(struct All_variables *, int, struct Shape_function1 *, struct Shape_function1_dA *, int);
+void mass_matrix(struct All_variables *);
+/* Solver_conj_grad.c */
+void set_cg_defaults(struct All_variables *);
+void cg_allocate_vars(struct All_variables *);
+void assemble_forces_iterative(struct All_variables *);
+/* Solver_multigrid.c */
+void set_mg_defaults(struct All_variables *);
+void mg_allocate_vars(struct All_variables *);
+void project_vector(struct All_variables *, int, double *, double *, int);
+void interp_vector(struct All_variables *, int, double *, double *);
+void project_scalar_e(struct All_variables *, int, float *, float *);
+void project_scalar(struct All_variables *, int, float *, float *);
+void project_viscosity(struct All_variables *);
+void inject_node_fvector(struct All_variables *, int, float **, float **);
+void inject(struct All_variables *, int, double *, double *);
+void un_inject_vector(struct All_variables *, int, double *, double *);
+void inject_scalar(struct All_variables *, int, float *, float *);
+void inject_scalar_e(struct All_variables *, int, float *, float *);
+/* Sphere_harmonics.c */
+void set_sphere_harmonics(struct All_variables *);
+void sphere_harmonics_layer(struct All_variables *, float **, float *, float *, int, char *);
+void sphere_interpolate(struct All_variables *, float **, float *);
+void sphere_expansion(struct All_variables *, float *, float *, float *);
+void inv_sphere_harmonics(struct All_variables *, float *, float *, float *, int);
+void compute_sphereh_table(struct All_variables *);
+/* Stokes_flow_Incomp.c */
+void solve_constrained_flow_iterative(struct All_variables *);
+float solve_Ahat_p_fhat_new(struct All_variables *, double *, double *, double *, double, int *);
+void initial_vel_residual(struct All_variables *, double *, double *, double *, double *, double);
+float solve_Ahat_p_fhat(struct All_variables *, double *, double *, double *, double, int *);
+void generate_log_message(int, double, double, double, double, struct All_variables *);
+void v_from_vector(struct All_variables *, float **, double *);
+/* Topo_gravity.c */
+void get_CBF_topo(struct All_variables *, float *, float *);
+void get_STD_topo(struct All_variables *, float *, float *, int);
+/* Viscosity_structures.c */
+void viscosity_parameters(struct All_variables *);
+void get_viscosity_option(struct All_variables *);
+void viscosity_for_system(struct All_variables *);
+void get_system_viscosity(struct All_variables *, int, float *, float *);
+void apply_viscosity_smoother(struct All_variables *, float *, float *);
+void visc_from_mat(struct All_variables *, float *, float *);
+void visc_from_T(struct All_variables *, float *, float *, int);
+void visc_from_S(struct All_variables *, float *, float *, int);
+void strain_rate_2_inv(struct All_variables *, float *, int);
+double second_invariant_from_3x3(double [3][3]);
+void calc_vgm_matrix(struct All_variables *, double *, double *);
+void get_vgm_p(double [4][9], struct Shape_function *, struct Shape_function_dx *, struct CC *, struct CCX *, double [4][9], int, int, int, int, double [3][3], double [3]);
+void calc_strain_from_vgm(double [3][3], double [3][3]);
+void calc_strain_from_vgm9(double *, double [3][3]);
+void calc_rot_from_vgm(double [3][3], double [3][3]);
+void calc_strain_rate_matrix(struct All_variables *, double *);
+int layers(struct All_variables *, float);
+int weak_zones(struct All_variables *, int, float);
+float boundary_thickness(struct All_variables *, float *);



More information about the CIG-COMMITS mailing list