[cig-commits] [commit] rajesh-petsc-schur: Corrected the signature of project_scalar, project_scalar_e, inject_scalar, inject_scalar_e (52aec23)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Wed Nov 5 19:11:07 PST 2014
Repository : https://github.com/geodynamics/citcoms
On branch : rajesh-petsc-schur
Link : https://github.com/geodynamics/citcoms/compare/464e1b32299b15819f93efd98d969cddb84dfe51...f97ae655a50bdbd6dac1923a3471ee4dae178fbd
>---------------------------------------------------------------
commit 52aec23e041c16cd46dc4e188fab8576fb98df50
Author: Rajesh Kommu <rajesh.kommu at gmail.com>
Date: Fri Sep 19 14:45:34 2014 -0700
Corrected the signature of project_scalar, project_scalar_e, inject_scalar, inject_scalar_e
>---------------------------------------------------------------
52aec23e041c16cd46dc4e188fab8576fb98df50
lib/Process_buoyancy.c | 6 +-
lib/Solver_multigrid.c | 171 ++++++++++++++++++++++++++++++-------------------
lib/prototypes.h | 8 +--
3 files changed, 112 insertions(+), 73 deletions(-)
diff --git a/lib/Process_buoyancy.c b/lib/Process_buoyancy.c
index 419c902..c0f42a3 100644
--- a/lib/Process_buoyancy.c
+++ b/lib/Process_buoyancy.c
@@ -120,12 +120,12 @@ void heat_flux(E)
if (E->parallel.me_loc[3]==E->parallel.nprocz-1)
for(i=1;i<=E->lmesh.nsf;i++)
- E->slice.shflux[CPPR][i]=2*flux[CPPR][E->surf_node[CPPR][i]]-flux[CPPR][E->surf_node[CPPR][i]-1];
+ E->slice.shflux[CPPR][i]=2*flux[E->surf_node[CPPR][i]]-flux[E->surf_node[CPPR][i]-1];
if (E->parallel.me_loc[3]==0)
for(i=1;i<=E->lmesh.nsf;i++)
- E->slice.bhflux[CPPR][i] = 2*flux[CPPR][E->surf_node[CPPR][i]-E->lmesh.noz+1]
- - flux[CPPR][E->surf_node[CPPR][i]-E->lmesh.noz+2];
+ E->slice.bhflux[CPPR][i] = 2*flux[E->surf_node[CPPR][i]-E->lmesh.noz+1]
+ - flux[E->surf_node[CPPR][i]-E->lmesh.noz+2];
for(e=1;e<=E->lmesh.snel;e++) {
uT =(E->slice.shflux[CPPR][E->sien[e].node[1]] +
diff --git a/lib/Solver_multigrid.c b/lib/Solver_multigrid.c
index d7e0bca..6a21bc2 100644
--- a/lib/Solver_multigrid.c
+++ b/lib/Solver_multigrid.c
@@ -59,7 +59,7 @@ void mg_allocate_vars(E)
void inject_scalar(E,start_lev,AU,AD)
struct All_variables *E;
int start_lev;
- float **AU,**AD; /* data on upper/lower mesh */
+ float *AU,*AD; /* data on upper/lower mesh */
{
int i,m,el,node_coarse,node_fine,sl_minus,eqn,eqn_coarse;
@@ -80,7 +80,7 @@ void inject_scalar(E,start_lev,AU,AD)
for(i=1;i<=ends;i++) {
node_coarse = E->IEN[sl_minus][CPPR][el].node[i];
node_fine=E->IEN[start_lev][CPPR][E->EL[sl_minus][CPPR][el].sub[i]].node[i];
- AD[CPPR][node_coarse] = AU[CPPR][node_fine];
+ AD[node_coarse] = AU[node_fine];
}
}
@@ -228,56 +228,101 @@ void project_viscosity(E)
const int nsd=E->mesh.nsd;
const int vpts=vpoints[nsd];
- float *viscU[NCS],*viscD[NCS];
+ float *viscU,*viscD;
lv = E->mesh.levmax;
- viscU[CPPR]=(float *)malloc((1+E->lmesh.NNO[lv])*sizeof(float));
- viscD[CPPR]=(float *)malloc((1+vpts*E->lmesh.NEL[lv-1])*sizeof(float));
+ viscU=(float *)malloc((1+E->lmesh.NNO[lv])*sizeof(float));
+ viscD=(float *)malloc((1+vpts*E->lmesh.NEL[lv-1])*sizeof(float));
#ifdef CITCOM_ALLOW_ANISOTROPIC_VISC /* allow for anisotropy */
if(E->viscosity.allow_anisotropic_viscosity){
for(lv=E->mesh.levmax;lv>E->mesh.levmin;lv--) {
sl_minus = lv -1;
if (E->viscosity.smooth_cycles==1) {
- visc_from_gint_to_nodes(E,E->EVI[lv],viscU,lv); /* isotropic */
- project_scalar(E,lv,viscU,viscD);
- visc_from_nodes_to_gint(E,viscD,E->EVI[sl_minus],sl_minus);
- /* anisotropic */
- visc_from_gint_to_nodes(E,E->EVI2[lv],viscU,lv);project_scalar(E,lv,viscU,viscD);visc_from_nodes_to_gint(E,viscD,E->EVI2[sl_minus],sl_minus);
- visc_from_gint_to_nodes(E,E->EVIn1[lv],viscU,lv);project_scalar(E,lv,viscU,viscD);visc_from_nodes_to_gint(E,viscD,E->EVIn1[sl_minus],sl_minus);
- visc_from_gint_to_nodes(E,E->EVIn2[lv],viscU,lv);project_scalar(E,lv,viscU,viscD);visc_from_nodes_to_gint(E,viscD,E->EVIn2[sl_minus],sl_minus);
- visc_from_gint_to_nodes(E,E->EVIn3[lv],viscU,lv);project_scalar(E,lv,viscU,viscD);visc_from_nodes_to_gint(E,viscD,E->EVIn3[sl_minus],sl_minus);
+
+ visc_from_gint_to_nodes(E,E->EVI[lv],viscU,lv); /* isotropic */
+ project_scalar(E,lv,viscU,viscD);
+ visc_from_nodes_to_gint(E,viscD,E->EVI[sl_minus],sl_minus);
+
+ /* anisotropic */
+ visc_from_gint_to_nodes(E,E->EVI2[lv],viscU,lv);
+ project_scalar(E,lv,viscU,viscD);
+ visc_from_nodes_to_gint(E,viscD,E->EVI2[sl_minus],sl_minus);
+
+ visc_from_gint_to_nodes(E,E->EVIn1[lv],viscU,lv);
+ project_scalar(E,lv,viscU,viscD);
+ visc_from_nodes_to_gint(E,viscD,E->EVIn1[sl_minus],sl_minus);
+
+ visc_from_gint_to_nodes(E,E->EVIn2[lv],viscU,lv);
+ project_scalar(E,lv,viscU,viscD);
+ visc_from_nodes_to_gint(E,viscD,E->EVIn2[sl_minus],sl_minus);
+
+ visc_from_gint_to_nodes(E,E->EVIn3[lv],viscU,lv);
+ project_scalar(E,lv,viscU,viscD);
+ visc_from_nodes_to_gint(E,viscD,E->EVIn3[sl_minus],sl_minus);
}
else if (E->viscosity.smooth_cycles==2) {
- visc_from_gint_to_ele(E,E->EVI[lv],viscU,lv); /* isotropic */
- inject_scalar_e(E,lv,viscU,E->EVI[sl_minus]);
- /* anisotropic */
- visc_from_gint_to_ele(E,E->EVI2[lv],viscU,lv);inject_scalar_e(E,lv,viscU,E->EVI2[sl_minus]);
- visc_from_gint_to_ele(E,E->EVIn1[lv],viscU,lv);inject_scalar_e(E,lv,viscU,E->EVIn1[sl_minus]);
- visc_from_gint_to_ele(E,E->EVIn2[lv],viscU,lv);inject_scalar_e(E,lv,viscU,E->EVIn2[sl_minus]);
- visc_from_gint_to_ele(E,E->EVIn3[lv],viscU,lv);inject_scalar_e(E,lv,viscU,E->EVIn3[sl_minus]);
+ visc_from_gint_to_ele(E,E->EVI[lv],viscU,lv); /* isotropic */
+ inject_scalar_e(E,lv,viscU,E->EVI[sl_minus]);
+
+ /* anisotropic */
+ visc_from_gint_to_ele(E,E->EVI2[lv],viscU,lv);
+ inject_scalar_e(E,lv,viscU,E->EVI2[sl_minus]);
+
+ visc_from_gint_to_ele(E,E->EVIn1[lv],viscU,lv);
+ inject_scalar_e(E,lv,viscU,E->EVIn1[sl_minus]);
+
+ visc_from_gint_to_ele(E,E->EVIn2[lv],viscU,lv);
+ inject_scalar_e(E,lv,viscU,E->EVIn2[sl_minus]);
+
+ visc_from_gint_to_ele(E,E->EVIn3[lv],viscU,lv);
+ inject_scalar_e(E,lv,viscU,E->EVIn3[sl_minus]);
}
else if (E->viscosity.smooth_cycles==3) {
- visc_from_gint_to_ele(E,E->EVI[lv],viscU,lv);/* isotropic */
- project_scalar_e(E,lv,viscU,viscD);
- visc_from_ele_to_gint(E,viscD,E->EVI[sl_minus],sl_minus);
- /* anisotropic */
- visc_from_gint_to_ele(E,E->EVI2[lv],viscU,lv);project_scalar_e(E,lv,viscU,viscD);visc_from_ele_to_gint(E,viscD,E->EVI2[sl_minus],sl_minus);
- visc_from_gint_to_ele(E,E->EVIn1[lv],viscU,lv);project_scalar_e(E,lv,viscU,viscD);visc_from_ele_to_gint(E,viscD,E->EVIn1[sl_minus],sl_minus);
- visc_from_gint_to_ele(E,E->EVIn2[lv],viscU,lv);project_scalar_e(E,lv,viscU,viscD);visc_from_ele_to_gint(E,viscD,E->EVIn2[sl_minus],sl_minus);
- visc_from_gint_to_ele(E,E->EVIn3[lv],viscU,lv);project_scalar_e(E,lv,viscU,viscD);visc_from_ele_to_gint(E,viscD,E->EVIn3[sl_minus],sl_minus);
+
+ visc_from_gint_to_ele(E,E->EVI[lv],viscU,lv);/* isotropic */
+ project_scalar_e(E,lv,viscU,viscD);
+ visc_from_ele_to_gint(E,viscD,E->EVI[sl_minus],sl_minus);
+
+ /* anisotropic */
+
+ visc_from_gint_to_ele(E,E->EVI2[lv],viscU,lv);
+ project_scalar_e(E,lv,viscU,viscD);
+ visc_from_ele_to_gint(E,viscD,E->EVI2[sl_minus],sl_minus);
+
+ visc_from_gint_to_ele(E,E->EVIn1[lv],viscU,lv);
+ project_scalar_e(E,lv,viscU,viscD);
+ visc_from_ele_to_gint(E,viscD,E->EVIn1[sl_minus],sl_minus);
+
+ visc_from_gint_to_ele(E,E->EVIn2[lv],viscU,lv);
+ project_scalar_e(E,lv,viscU,viscD);
+ visc_from_ele_to_gint(E,viscD,E->EVIn2[sl_minus],sl_minus);
+
+ visc_from_gint_to_ele(E,E->EVIn3[lv],viscU,lv);
+ project_scalar_e(E,lv,viscU,viscD);
+ visc_from_ele_to_gint(E,viscD,E->EVIn3[sl_minus],sl_minus);
}
else if (E->viscosity.smooth_cycles==0) {
- inject_scalar(E,lv,E->VI[lv],E->VI[sl_minus]);/* isotropic */
- visc_from_nodes_to_gint(E,E->VI[sl_minus],E->EVI[sl_minus],sl_minus);
- /* anisotropic */
- inject_scalar(E,lv,E->VI2[lv],E->VI2[sl_minus]);visc_from_nodes_to_gint(E,E->VI2[sl_minus],E->EVI2[sl_minus],sl_minus);
- inject_scalar(E,lv,E->VIn1[lv],E->VIn1[sl_minus]);visc_from_nodes_to_gint(E,E->VIn1[sl_minus],E->EVIn1[sl_minus],sl_minus);
- inject_scalar(E,lv,E->VIn2[lv],E->VIn2[sl_minus]);visc_from_nodes_to_gint(E,E->VIn2[sl_minus],E->EVIn2[sl_minus],sl_minus);
- inject_scalar(E,lv,E->VIn3[lv],E->VIn3[sl_minus]);visc_from_nodes_to_gint(E,E->VIn3[sl_minus],E->EVIn3[sl_minus],sl_minus);
+
+ inject_scalar(E,lv,E->VI[lv],E->VI[sl_minus]);/* isotropic */
+ visc_from_nodes_to_gint(E,E->VI[sl_minus],E->EVI[sl_minus],sl_minus);
+
+ /* anisotropic */
+ inject_scalar(E,lv,E->VI2[lv],E->VI2[sl_minus]);
+ visc_from_nodes_to_gint(E,E->VI2[sl_minus],E->EVI2[sl_minus],sl_minus);
+
+ inject_scalar(E,lv,E->VIn1[lv],E->VIn1[sl_minus]);
+ visc_from_nodes_to_gint(E,E->VIn1[sl_minus],E->EVIn1[sl_minus],sl_minus);
+
+ inject_scalar(E,lv,E->VIn2[lv],E->VIn2[sl_minus]);
+ visc_from_nodes_to_gint(E,E->VIn2[sl_minus],E->EVIn2[sl_minus],sl_minus);
+
+ inject_scalar(E,lv,E->VIn3[lv],E->VIn3[sl_minus]);
+ visc_from_nodes_to_gint(E,E->VIn3[sl_minus],E->EVIn3[sl_minus],sl_minus);
}
- normalize_director_at_gint(E,E->EVIn1[sl_minus],E->EVIn2[sl_minus],E->EVIn3[sl_minus],sl_minus);
+
+ normalize_director_at_gint(E,E->EVIn1[sl_minus],E->EVIn2[sl_minus],E->EVIn3[sl_minus],sl_minus);
}
}else{
#endif
@@ -287,35 +332,29 @@ void project_viscosity(E)
sl_minus = lv -1;
if (E->viscosity.smooth_cycles==1) {
- visc_from_gint_to_nodes(E,E->EVI[lv],viscU,lv);
- project_scalar(E,lv,viscU,viscD);
- visc_from_nodes_to_gint(E,viscD,E->EVI[sl_minus],sl_minus);
+ visc_from_gint_to_nodes(E,E->EVI[lv],viscU,lv);
+ project_scalar(E,lv,viscU,viscD);
+ visc_from_nodes_to_gint(E,viscD,E->EVI[sl_minus],sl_minus);
}
else if (E->viscosity.smooth_cycles==2) {
- visc_from_gint_to_ele(E,E->EVI[lv],viscU,lv);
- inject_scalar_e(E,lv,viscU,E->EVI[sl_minus]);
+ visc_from_gint_to_ele(E,E->EVI[lv],viscU,lv);
+ inject_scalar_e(E,lv,viscU,E->EVI[sl_minus]);
}
else if (E->viscosity.smooth_cycles==3) {
- visc_from_gint_to_ele(E,E->EVI[lv],viscU,lv);
- project_scalar_e(E,lv,viscU,viscD);
- visc_from_ele_to_gint(E,viscD,E->EVI[sl_minus],sl_minus);
+ visc_from_gint_to_ele(E,E->EVI[lv],viscU,lv);
+ project_scalar_e(E,lv,viscU,viscD);
+ visc_from_ele_to_gint(E,viscD,E->EVI[sl_minus],sl_minus);
}
else if (E->viscosity.smooth_cycles==0) {
- /* visc_from_gint_to_nodes(E,E->EVI[lv],viscU,lv);
- inject_scalar(E,lv,viscU,viscD);
- visc_from_nodes_to_gint(E,viscD,E->EVI[sl_minus],sl_minus); */
-
- inject_scalar(E,lv,E->VI[lv],E->VI[sl_minus]);
- visc_from_nodes_to_gint(E,E->VI[sl_minus],E->EVI[sl_minus],sl_minus);
+ inject_scalar(E,lv,E->VI[lv],E->VI[sl_minus]);
+ visc_from_nodes_to_gint(E,E->VI[sl_minus],E->EVI[sl_minus],sl_minus);
}
-
-
}
#ifdef CITCOM_ALLOW_ANISOTROPIC_VISC
}
#endif
- free((void *)viscU[CPPR]);
- free((void *)viscD[CPPR]);
+ free((void *)viscU);
+ free((void *)viscD);
}
/* ==================================================== */
@@ -323,7 +362,7 @@ void inject_scalar_e(E,start_lev,AU,AD)
struct All_variables *E;
int start_lev;
- float **AU,**AD; /* data on upper/lower mesh */
+ float *AU,*AD; /* data on upper/lower mesh */
{
int i,j,m;
int el,node,e;
@@ -339,12 +378,12 @@ void inject_scalar_e(E,start_lev,AU,AD)
for(i=1;i<=n_minus;i++)
- AD[CPPR][i] = 0.0;
+ AD[i] = 0.0;
for(el=1;el<=nels_minus;el++)
for(i=1;i<=ENODES3D;i++) {
e = E->EL[sl_minus][CPPR][el].sub[i];
- AD[CPPR][(el-1)*vpts+i] = AU[CPPR][e];
+ AD[(el-1)*vpts+i] = AU[e];
}
}
@@ -353,7 +392,7 @@ void project_scalar_e(E,start_lev,AU,AD)
struct All_variables *E;
int start_lev;
- float **AU,**AD; /* data on upper/lower mesh */
+ float *AU,*AD; /* data on upper/lower mesh */
{
int i,j,m;
int el,node,e;
@@ -370,17 +409,17 @@ void project_scalar_e(E,start_lev,AU,AD)
for(i=1;i<=n_minus;i++)
- AD[CPPR][i] = 0.0;
+ AD[i] = 0.0;
for(el=1;el<=nels_minus;el++) {
average=0.0;
for(i=1;i<=ENODES3D;i++) {
e = E->EL[sl_minus][CPPR][el].sub[i];
- average += AU[CPPR][e];
+ average += AU[e];
}
- AD[CPPR][el] = average*weight;
+ AD[el] = average*weight;
}
}
@@ -389,7 +428,7 @@ void project_scalar(E,start_lev,AU,AD)
struct All_variables *E;
int start_lev;
- float **AU,**AD; /* data on upper/lower mesh */
+ float *AU,*AD; /* data on upper/lower mesh */
{
int i,j,m;
int el,node,node1;
@@ -405,7 +444,7 @@ void project_scalar(E,start_lev,AU,AD)
for(i=1;i<=nno_minus;i++)
- AD[CPPR][i] = 0.0;
+ AD[i] = 0.0;
for(el=1;el<=nels_minus;el++)
for(i=1;i<=ENODES3D;i++) {
@@ -413,20 +452,20 @@ void project_scalar(E,start_lev,AU,AD)
node1 = E->EL[sl_minus][CPPR][el].sub[i];
for(j=1;j<=ENODES3D;j++) {
node=E->IEN[start_lev][CPPR][node1].node[j];
- average += AU[CPPR][node];
+ average += AU[node];
}
w=weight*average;
node= E->IEN[sl_minus][CPPR][el].node[i];
- AD[CPPR][node] += w * E->TWW[sl_minus][CPPR][el].node[i];
+ AD[node] += w * E->TWW[sl_minus][CPPR][el].node[i];
}
(E->exchange_node_f)(E,AD,sl_minus);
for(i=1;i<=nno_minus;i++) {
- AD[CPPR][i] *= E->MASS[sl_minus][CPPR][i];
+ AD[i] *= E->MASS[sl_minus][CPPR][i];
}
}
diff --git a/lib/prototypes.h b/lib/prototypes.h
index a2870f8..13c6262 100644
--- a/lib/prototypes.h
+++ b/lib/prototypes.h
@@ -464,14 +464,14 @@ 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 inject_scalar(struct All_variables *, int, float **, float **);
+void inject_scalar(struct All_variables *, int, float *, float *);
+void inject_scalar_e(struct All_variables *, int, float *, float *);
void inject_vector(struct All_variables *, int, double *, double *);
void un_inject_vector(struct All_variables *, int, double *, double *);
void interp_vector(struct All_variables *, int, double *, double *);
void project_viscosity(struct All_variables *);
-void inject_scalar_e(struct All_variables *, int, float **, float **);
-void project_scalar_e(struct All_variables *, int, float **, float **);
-void project_scalar(struct All_variables *, int, float **, float **);
+void project_scalar_e(struct All_variables *, int, float *, float *);
+void project_scalar(struct All_variables *, int, float *, float *);
void project_vector(struct All_variables *, int, double *, double *, int);
void from_xyz_to_rtf(struct All_variables *, int, double *, double *);
void from_rtf_to_xyz(struct All_variables *, int, double *, double *);
More information about the CIG-COMMITS
mailing list