[cig-commits] r6147 - in mc/3D/CitcomS/trunk: CitcomS/Components lib module

tan2 at geodynamics.org tan2 at geodynamics.org
Thu Mar 1 13:16:48 PST 2007


Author: tan2
Date: 2007-03-01 13:16:47 -0800 (Thu, 01 Mar 2007)
New Revision: 6147

Modified:
   mc/3D/CitcomS/trunk/CitcomS/Components/Tracer.py
   mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c
   mc/3D/CitcomS/trunk/module/setProperties.c
Log:
* Create pyre inventory for tracer input
* Changed the default values of some tracer parameters to be consistent with pyre inventory


Modified: mc/3D/CitcomS/trunk/CitcomS/Components/Tracer.py
===================================================================
--- mc/3D/CitcomS/trunk/CitcomS/Components/Tracer.py	2007-03-01 21:15:21 UTC (rev 6146)
+++ mc/3D/CitcomS/trunk/CitcomS/Components/Tracer.py	2007-03-01 21:16:47 UTC (rev 6147)
@@ -55,14 +55,72 @@
     class Inventory(CitcomComponent.Inventory):
 
 
-        import pyre.inventory
+        import pyre.inventory as inv
 
 
-        tracer = pyre.inventory.bool("tracer", default=False)
-        tracer_file = pyre.inventory.str("tracer_file", default="tracer.dat")
+        tracer = inv.bool("tracer", default=False)
 
+        # tracer_restart=-1 (read from file) TODO: rename to tracer_init_method
+        # tracer_restart=0 (generate array)
+        # tracer_restart=1 (read from scratch disks)
+        tracer_restart = inv.int("tracer_restart", default=0)
 
+        # (tracer_restart == 0)
+        tracers_per_element = inv.int("tracers_per_element", default=10)
+        # TODO: remove
+        z_interface = inv.float("z_interface", default=0.5)
 
+        # (tracer_restart == -1 or 1)
+        tracer_file = inv.str("tracer_file", default="tracer.dat")
+
+        # icartesian_or_spherical=0 (cartesian coordinate input) */
+        # icartesian_or_spherical=1 (spherical coordinate input) */
+        cartesian_or_spherical_input = inv.int("cartesian_or_spherical_input",
+                                               default=1)
+
+        # Advection Scheme
+
+        # itracer_advection_scheme=1
+        #     (simple predictor corrector -uses only V(to))
+        # itracer_advection_scheme=2
+        #     (predictor-corrector - uses V(to) and V(to+dt))
+        tracer_advection_scheme = inv.int("tracer_advection_scheme", default=1)
+
+        # Interpolation Scheme
+        # itracer_interpolation_scheme=1 (gnometric projection)
+        # itracer_interpolation_scheme=2 (simple average, not implemented) TODO:remove
+        tracer_interpolation_scheme = inv.int("tracer_interpolation_scheme",
+                                              default=1)
+
+        # Regular grid parameters
+        regular_grid_deltheta = inv.float("regular_grid_deltheta", default=1.0)
+        regular_grid_delphi = inv.float("regular_grid_delphi", default=1.0)
+
+        # Analytical Test Function
+        analytical_tracer_test = inv.int("analytical_tracer_test", default=0)
+
+        # itracer_type=0 passive
+        # itracer_type=1 active
+        tracer_type = inv.int("tracer_type", default=1)
+
+        # ibuoy_type=0 (absolute method, not implemented)
+        # ibuoy_type=1 (ratio method)
+        buoy_type = inv.int("buoy_type", default=1)
+        buoyancy_ratio = inv.float("buoyancy_ratio", default=1.0)
+        reset_initial_composition = inv.bool("reset_initial_composition",
+                                             default=False)
+
+        # compositional_rheology=1 (not implemented in this version, TODO:remove)
+        compositional_rheology = inv.bool("compositional_rheology",
+                                          default=False)
+        compositional_prefactor = inv.float("compositional_prefactor",
+                                            default=1.0)
+
+        # Output frequency TODO: remove
+        write_tracers_every = inv.int("write_tracers_every", default=1000000)
+
+
+
 # version
 __id__ = "$Id$"
 

Modified: mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c	2007-03-01 21:15:21 UTC (rev 6146)
+++ mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c	2007-03-01 21:16:47 UTC (rev 6147)
@@ -112,10 +112,10 @@
     E->trace.icartesian_or_spherical_input=0;
     if (E->trace.itracer_restart==-1)
 	{
-	    sprintf(E->trace.tracer_file,"tracer.in");
-	    input_string("tracer_file",E->trace.tracer_file,"tracer.in",m);
+	    sprintf(E->trace.tracer_file,"tracer.dat");
+	    input_string("tracer_file",E->trace.tracer_file,"tracer.dat",m);
 
-	    input_int("cartesian_or_spherical_input",&(E->trace.icartesian_or_spherical_input),"10,0,nomax",m);
+	    input_int("cartesian_or_spherical_input",&(E->trace.icartesian_or_spherical_input),"1,0,nomax",m);
 
 	}
 
@@ -140,7 +140,7 @@
 
     E->trace.itracer_advection_scheme=2;
     input_int("tracer_advection_scheme",&(E->trace.itracer_advection_scheme),
-	      "100,0,nomax",m);
+	      "2,0,nomax",m);
 
     if (E->trace.itracer_advection_scheme==1)
 	{
@@ -167,7 +167,7 @@
 
     E->trace.itracer_interpolation_scheme=1;
     input_int("tracer_interpolation_scheme",&(E->trace.itracer_interpolation_scheme),
-	      "100,0,nomax",m);
+	      "1,0,nomax",m);
     if (E->trace.itracer_interpolation_scheme<1 || E->trace.itracer_interpolation_scheme>2)
 	{
 	    fprintf(stderr,"Sorry, only interpolation scheme 1 and 2 available\n");
@@ -189,7 +189,7 @@
 
     E->trace.ianalytical_tracer_test=0;
     input_int("analytical_tracer_test",&(E->trace.ianalytical_tracer_test),
-	      "100,0,nomax",m);
+	      "0,0,nomax",m);
 
     return;
 }

Modified: mc/3D/CitcomS/trunk/module/setProperties.c
===================================================================
--- mc/3D/CitcomS/trunk/module/setProperties.c	2007-03-01 21:15:21 UTC (rev 6146)
+++ mc/3D/CitcomS/trunk/module/setProperties.c	2007-03-01 21:16:47 UTC (rev 6147)
@@ -559,6 +559,7 @@
     PyObject *obj, *properties, *out;
     struct All_variables *E;
     FILE *fp;
+    double tmp;
 
     if (!PyArg_ParseTuple(args, "OOO:Tracer_set_properties",
 			  &obj, &properties, &out))
@@ -570,8 +571,39 @@
     PUTS(("[CitcomS.solver.tracer]\n"));
 
     getIntProperty(properties, "tracer", E->control.tracer, fp);
-    getStringProperty(properties, "tracer_file", E->control.tracer_file, fp);
 
+    if(E->parallel.nprocxy == 1) {
+        // TODO: change to E->tracer.tracer_file..
+        getStringProperty(properties, "tracer_file", E->control.tracer_file, fp);
+    }
+    else if(E->parallel.nprocxy == 12) {
+        getIntProperty(properties, "tracer_restart", E->trace.itracer_restart, fp);
+
+        getIntProperty(properties, "tracers_per_element", E->trace.itperel, fp);
+        getDoubleProperty(properties, "z_interface", E->trace.z_interface, fp);
+
+        getStringProperty(properties, "tracer_file", E->trace.tracer_file, fp);
+        getIntProperty(properties, "cartesian_or_spherical_input", E->trace.icartesian_or_spherical_input, fp);
+
+        getIntProperty(properties, "tracer_advection_scheme", E->trace.itracer_advection_scheme, fp);
+        getIntProperty(properties, "tracer_interpolation_scheme", E->trace.itracer_interpolation_scheme, fp);
+
+        getDoubleProperty(properties, "regular_grid_deltheta", tmp, fp);
+        E->trace.deltheta[0] = tmp;
+        getDoubleProperty(properties, "regular_grid_delphi", tmp, fp);
+        E->trace.delphi[0] = tmp;
+        getIntProperty(properties, "analytical_tracer_test", E->trace.ianalytical_tracer_test, fp);
+
+        getIntProperty(properties, "tracer_type", E->trace.itracer_type, fp);
+        getIntProperty(properties, "buoy_type", E->trace.ibuoy_type, fp);
+        getDoubleProperty(properties, "buoyancy_ratio", E->trace.buoyancy_ratio, fp);
+        getIntProperty(properties, "reset_initial_composition", E->trace.ireset_initial_composition, fp);
+        getIntProperty(properties, "compositional_rheology", E->trace.icompositional_rheology, fp);
+        getDoubleProperty(properties, "compositional_prefactor", E->trace.compositional_rheology_prefactor, fp);
+
+        getIntProperty(properties, "write_tracers_every", E->trace.iwrite_tracers_every, fp);
+
+    }
     PUTS(("\n"));
 
     Py_INCREF(Py_None);



More information about the cig-commits mailing list