[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