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

tan2 at geodynamics.org tan2 at geodynamics.org
Mon Mar 12 15:07:19 PDT 2007


Author: tan2
Date: 2007-03-12 15:07:19 -0700 (Mon, 12 Mar 2007)
New Revision: 6232

Modified:
   mc/3D/CitcomS/trunk/lib/Composition_related.c
   mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c
   mc/3D/CitcomS/trunk/lib/composition_related.h
Log:
Initial bulk composition

Modified: mc/3D/CitcomS/trunk/lib/Composition_related.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Composition_related.c	2007-03-12 22:06:37 UTC (rev 6231)
+++ mc/3D/CitcomS/trunk/lib/Composition_related.c	2007-03-12 22:07:19 UTC (rev 6232)
@@ -234,6 +234,7 @@
     if (E->composition.ichemical_buoyancy==1 && E->composition.ibuoy_type==1) {
         initialize_old_composition(E);
         fill_composition(E);
+        init_bulk_composition(E);
     }
     return;
 }
@@ -425,9 +426,7 @@
 
 /*********** GET BULK COMPOSITION *******************************/
 
-void get_bulk_composition(E)
-     struct All_variables *E;
-
+void init_bulk_composition(struct All_variables *E)
 {
 
     char output_file[200];
@@ -446,63 +445,53 @@
 
     FILE *fp;
 
-    static int been_here=0;
 
-
     /* ival=0 returns integral not average */
 
-    volume=return_bulk_value_d(E,E->composition.comp_node,ival);
+    volume = return_bulk_value_d(E,E->composition.comp_node,ival);
 
-    E->composition.bulk_composition=volume;
+    E->composition.bulk_composition = volume;
+    E->composition.initial_bulk_composition = volume;
 
-    /* Here we assume if restart = 1 or 0 tracers are reset          */
-    /*                if restart = 2 tracers may or may not be reset  */
-    /*                   (read initial composition from file)         */
 
-    //TODO: figure out how to remove been_here
-    if (been_here==0)
-        {
-            if (E->composition.ireset_initial_composition==1)
-                {
-                    E->composition.initial_bulk_composition=volume;
-                }
-            else
-                {
+    /* If retarting tracers, the initital bulk composition is read from file */
+    if (E->trace.ic_method == 2 &&
+        !E->composition.ireset_initial_composition) {
 
-                    if (E->trace.ic_method!=2)
-                        {
-                            fprintf(E->trace.fpt,"ERROR(bulk composition)-wrong reset,restart combo\n");
-                            fflush(E->trace.fpt);
-                            exit(10);
-                        }
+        sprintf(output_file,"%s.comp_el.%d.%d",E->control.old_P_file,
+                E->parallel.me, E->monitor.solution_cycles);
 
-                    sprintf(output_file,"%s.comp.%d.%d",E->control.old_P_file,
-                            E->parallel.me,E->monitor.solution_cycles);
+        fp=fopen(output_file,"r");
+        fgets(input_s,200,fp);
+        sscanf(input_s,"%d %d %lf %lf %lf",
+               &istep,&idum1,&rdum1,&rdum2,&rdum3);
 
-                    fp=fopen(output_file,"r");
-                    fgets(input_s,200,fp);
-                    sscanf(input_s,"%d %d %lf %lf %lf",
-                           &istep,&idum1,&rdum1,&rdum2,&rdum3);
+        E->composition.initial_bulk_composition = rdum2;
+        fclose(fp);
 
-                    E->composition.initial_bulk_composition=rdum2;
-                    fclose(fp);
+    }
 
-                    if (istep!=E->monitor.solution_cycles)
-                        {
-                            fprintf(E->trace.fpt,"ERROR(get_bulk_composition) %d %d\n",
-                                    istep,E->monitor.solution_cycles);
-                            fflush(E->trace.fpt);
-                            exit(10);
-                        }
-                }
-        }
+    return;
+}
 
+
+void get_bulk_composition(E)
+     struct All_variables *E;
+
+{
+
+    double return_bulk_value_d();
+    double volume;
+    const ival = 0;
+
+    /* ival=0 returns integral not average */
+    volume=return_bulk_value_d(E,E->composition.comp_node,ival);
+
+    E->composition.bulk_composition=volume;
+
     E->composition.error_fraction=((volume-E->composition.initial_bulk_composition)/
                              E->composition.initial_bulk_composition);
 
-    parallel_process_sync(E);
-
-    been_here++;
     return;
 }
 

Modified: mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c	2007-03-12 22:06:37 UTC (rev 6231)
+++ mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c	2007-03-12 22:07:19 UTC (rev 6232)
@@ -276,7 +276,6 @@
             exit(10);
         }
 
-
     /* total number of tracers  */
 
     E->trace.ilast_tracer_count = isum_tracers(E);
@@ -367,8 +366,6 @@
 
     static int been_here=0;
 
-    //TODO: fix this function
-    if (E->composition.ichemical_buoyancy==1) get_bulk_composition(E);
 
 
     fprintf(E->trace.fpt,"Number of times for all element search  %d\n",E->trace.istat1);
@@ -3194,6 +3191,7 @@
         fflush(E->trace.fpt);
 
     }
+    fclose(fp1);
 
 
     return;

Modified: mc/3D/CitcomS/trunk/lib/composition_related.h
===================================================================
--- mc/3D/CitcomS/trunk/lib/composition_related.h	2007-03-12 22:06:37 UTC (rev 6231)
+++ mc/3D/CitcomS/trunk/lib/composition_related.h	2007-03-12 22:07:19 UTC (rev 6232)
@@ -28,6 +28,7 @@
 void composition_input(struct All_variables *E);
 void composition_setup(struct All_variables *E);
 void write_composition_instructions(struct All_variables *E);
+void init_bulk_composition(struct All_variables *E);
 void init_tracer_composition(struct All_variables *E);
 void fill_composition(struct All_variables *E);
 



More information about the cig-commits mailing list