[cig-commits] r11214 - mc/3D/CitcomS/trunk/lib

tan2 at geodynamics.org tan2 at geodynamics.org
Wed Feb 20 16:53:35 PST 2008


Author: tan2
Date: 2008-02-20 16:53:35 -0800 (Wed, 20 Feb 2008)
New Revision: 11214

Modified:
   mc/3D/CitcomS/trunk/lib/Instructions.c
   mc/3D/CitcomS/trunk/lib/Process_buoyancy.c
   mc/3D/CitcomS/trunk/lib/global_defs.h
Log:
Compute horizontal average for composition fields


Modified: mc/3D/CitcomS/trunk/lib/Instructions.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Instructions.c	2008-02-20 21:12:30 UTC (rev 11213)
+++ mc/3D/CitcomS/trunk/lib/Instructions.c	2008-02-21 00:53:35 UTC (rev 11214)
@@ -652,7 +652,11 @@
   E->Have.T         = (float *)malloc((E->lmesh.noz+2)*sizeof(float));
   E->Have.V[1]      = (float *)malloc((E->lmesh.noz+2)*sizeof(float));
   E->Have.V[2]      = (float *)malloc((E->lmesh.noz+2)*sizeof(float));
-
+  if (E->composition.on) {
+      E->Have.C = (float **)malloc((E->composition.ncomp)*sizeof(float*));
+      for(i=0; i<E->composition.ncomp; i++)
+          E->Have.C[i] = (float *)malloc((E->lmesh.noz+2)*sizeof(float));
+  }
  for(i=E->mesh.levmin;i<=E->mesh.levmax;i++) {
   E->sphere.R[i] = (double *)  malloc((E->lmesh.NOZ[i]+1)*sizeof(double));
   for (j=1;j<=E->sphere.caps_per_proc;j++)  {

Modified: mc/3D/CitcomS/trunk/lib/Process_buoyancy.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Process_buoyancy.c	2008-02-20 21:12:30 UTC (rev 11213)
+++ mc/3D/CitcomS/trunk/lib/Process_buoyancy.c	2008-02-21 00:53:35 UTC (rev 11214)
@@ -337,7 +337,7 @@
 {
     void return_horiz_ave_f();
 
-    int m, i;
+    int m, n, i;
     float *S1[NCS],*S2[NCS],*S3[NCS];
 
     for(m=1;m<=E->sphere.caps_per_proc;m++)      {
@@ -359,6 +359,16 @@
     return_horiz_ave_f(E,S2,E->Have.V[1]);
     return_horiz_ave_f(E,S3,E->Have.V[2]);
 
+    if (E->composition.on) {
+        for(n=0; n<E->composition.ncomp; n++) {
+            for(m=1;m<=E->sphere.caps_per_proc;m++) {
+                for(i=1;i<=E->lmesh.nno;i++)
+                    S1[m][i] = E->composition.comp_node[m][n][i];
+            }
+            return_horiz_ave_f(E,S1,E->Have.C[n]);
+        }
+    }
+
     for(m=1;m<=E->sphere.caps_per_proc;m++) {
 	free((void *)S1[m]);
 	free((void *)S2[m]);
@@ -370,4 +380,5 @@
 	E->Have.V[2][i] = sqrt(E->Have.V[2][i]);
     }
 
+    return;
 }

Modified: mc/3D/CitcomS/trunk/lib/global_defs.h
===================================================================
--- mc/3D/CitcomS/trunk/lib/global_defs.h	2008-02-20 21:12:30 UTC (rev 11213)
+++ mc/3D/CitcomS/trunk/lib/global_defs.h	2008-02-21 00:53:35 UTC (rev 11214)
@@ -348,12 +348,8 @@
 
 struct HAVE {    /* horizontal averages */
     float *T;
-    float *Vi;
-    float *Rho;
-    float *f;
-    float *F;
-    float *vrms;
     float *V[4];
+    float **C;
 };
 
 struct SLICE {    /* horizontally sliced data, including topography */



More information about the cig-commits mailing list