[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