[cig-commits] r17911 - mc/3D/CitcomCU/trunk/src
becker at geodynamics.org
becker at geodynamics.org
Sat Feb 19 16:02:18 PST 2011
Author: becker
Date: 2011-02-19 16:02:18 -0800 (Sat, 19 Feb 2011)
New Revision: 17911
Modified:
mc/3D/CitcomCU/trunk/src/Instructions.c
mc/3D/CitcomCU/trunk/src/Nodal_mesh.c
mc/3D/CitcomCU/trunk/src/Output_gzdir.c
mc/3D/CitcomCU/trunk/src/global_defs.h
mc/3D/CitcomCU/trunk/src/prototypes.h
Log:
Added output of second strain rate invariant to gzdir version.
Modified: mc/3D/CitcomCU/trunk/src/Instructions.c
===================================================================
--- mc/3D/CitcomCU/trunk/src/Instructions.c 2011-02-19 23:45:06 UTC (rev 17910)
+++ mc/3D/CitcomCU/trunk/src/Instructions.c 2011-02-20 00:02:18 UTC (rev 17911)
@@ -778,6 +778,7 @@
#endif
/* control of VTK type of gzdir output */
input_boolean("vtk_pressure_out",&(E->control.vtk_pressure_out),"on",m);
+ input_boolean("vtk_e2_out",&(E->control.vtk_e2_out),"off",m);
input_boolean("vtk_vgm_out",&(E->control.vtk_vgm_out),"off",m);
input_boolean("vtk_viscosity_out",&(E->control.vtk_viscosity_out),"on",m);
Modified: mc/3D/CitcomCU/trunk/src/Nodal_mesh.c
===================================================================
--- mc/3D/CitcomCU/trunk/src/Nodal_mesh.c 2011-02-19 23:45:06 UTC (rev 17910)
+++ mc/3D/CitcomCU/trunk/src/Nodal_mesh.c 2011-02-20 00:02:18 UTC (rev 17911)
@@ -416,6 +416,23 @@
return;
}
+void e2_to_nodes(struct All_variables *E, float *e2, float *e2n, int lev)
+{
+ int element, node, j;
+
+ for(node = 1; node <= E->lmesh.NNO[lev]; node++)
+ e2n[node] = 0.0;
+ for(element = 1; element <= E->lmesh.NEL[lev]; element++){
+ for(j = 1; j <= enodes[E->mesh.nsd]; j++){
+ node = E->IEN[lev][element].node[j];
+ e2n[node] += e2[element] * E->TW[lev][node];
+ }
+ }
+
+ exchange_node_f20(E, e2n, lev);
+
+ return;
+}
void p_to_centres(struct All_variables *E, float *PN, double *P, int lev)
Modified: mc/3D/CitcomCU/trunk/src/Output_gzdir.c
===================================================================
--- mc/3D/CitcomCU/trunk/src/Output_gzdir.c 2011-02-19 23:45:06 UTC (rev 17910)
+++ mc/3D/CitcomCU/trunk/src/Output_gzdir.c 2011-02-20 00:02:18 UTC (rev 17911)
@@ -94,7 +94,7 @@
const int nno = E->mesh.nno;
const int lev = E->mesh.levmax;
const int ppts = ppoints[dims];
-
+ float *e2,*e2n;
gzFile gzout;
if(E->control.composition)
@@ -336,6 +336,24 @@
gzprintf(gzout,"%.6e\n",E->NP[i]);
gzclose(gzout);
}
+ if(E->control.vtk_e2_out){
+ /*
+ second invariant
+ */
+ e2n = (float *)malloc((E->lmesh.nno + 10) * sizeof(float));
+ e2 = (float *)malloc((E->lmesh.nel + 1) * sizeof(float));
+ strain_rate_2_inv(E, e2, 1); /* compute strain rate for every element */
+ e2_to_nodes(E, e2,e2n, E->mesh.levmax); /* project to nodes */
+ sprintf(output_file,"%s/%d/e2inv.%d.%d.gz",E->control.data_file2,
+ file_number, E->parallel.me,file_number);
+ gzout = safe_gzopen(output_file,"w");
+ gzprintf(gzout,"%d %d %13.6e\n",file_number,E->lmesh.nno,E->monitor.elapsed_time);
+ gzprintf(gzout,"%3d %7d\n",1,E->lmesh.nno);
+ for(i=1;i<=E->lmesh.nno;i++)
+ gzprintf(gzout,"%.6e\n",e2n[i]);
+ gzclose(gzout);
+ free(e2n);free(e2);
+ }
if(E->control.vtk_vgm_out){
/*
Modified: mc/3D/CitcomCU/trunk/src/global_defs.h
===================================================================
--- mc/3D/CitcomCU/trunk/src/global_defs.h 2011-02-19 23:45:06 UTC (rev 17910)
+++ mc/3D/CitcomCU/trunk/src/global_defs.h 2011-02-20 00:02:18 UTC (rev 17911)
@@ -821,7 +821,7 @@
int total_iteration_cycles;
int total_v_solver_calls;
- int gzdir,vtk_pressure_out,vtk_vgm_out,vtk_viscosity_out;
+ int gzdir,vtk_pressure_out,vtk_vgm_out,vtk_viscosity_out,vtk_e2_out;
int record_every;
int record_all_until;
Modified: mc/3D/CitcomCU/trunk/src/prototypes.h
===================================================================
--- mc/3D/CitcomCU/trunk/src/prototypes.h 2011-02-19 23:45:06 UTC (rev 17910)
+++ mc/3D/CitcomCU/trunk/src/prototypes.h 2011-02-20 00:02:18 UTC (rev 17911)
@@ -207,6 +207,7 @@
void flogical_mesh_to_real(struct All_variables *, float *, int);
void p_to_nodes(struct All_variables *, double *, float *, int);
void p_to_centres(struct All_variables *, float *, double *, int);
+void e2_to_nodes(struct All_variables *, float *, float *, 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);
More information about the CIG-COMMITS
mailing list