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

becker at geodynamics.org becker at geodynamics.org
Fri Mar 27 19:29:00 PDT 2009


Author: becker
Date: 2009-03-27 19:29:00 -0700 (Fri, 27 Mar 2009)
New Revision: 14511

Modified:
   mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c
   mc/3D/CitcomS/trunk/lib/Ggrd_handling.c
   mc/3D/CitcomS/trunk/lib/Tracer_setup.c
Log:
Modified the way the compositional init with ggrd tracer can now
select either a range of layers (>0) or a specific layer (<0).



Modified: mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c	2009-03-28 01:56:16 UTC (rev 14510)
+++ mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c	2009-03-28 02:29:00 UTC (rev 14511)
@@ -1933,8 +1933,13 @@
 	else if((E->trace.ic_method_for_flavors == 1)||(E->trace.ic_method_for_flavors == 99)) {
 	  /* ggrd modes 1 and 99 (99  is override for restart) */
             fprintf(E->trace.fpt,"netcdf grd assigned tracer flavors\n");
-            fprintf(E->trace.fpt,"file: %s top %i layeres\n",E->trace.ggrd_file,
-		    E->trace.ggrd_layers);
+	    if( E->trace.ggrd_layers > 0)
+	      fprintf(E->trace.fpt,"file: %s top %i layers\n",E->trace.ggrd_file,
+		      E->trace.ggrd_layers);
+	    else
+	      fprintf(E->trace.fpt,"file: %s only layer %i\n",E->trace.ggrd_file,
+		      -E->trace.ggrd_layers);
+ 
 	}
 #endif
         else {

Modified: mc/3D/CitcomS/trunk/lib/Ggrd_handling.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Ggrd_handling.c	2009-03-28 01:56:16 UTC (rev 14510)
+++ mc/3D/CitcomS/trunk/lib/Ggrd_handling.c	2009-03-28 02:29:00 UTC (rev 14511)
@@ -74,7 +74,7 @@
   int mpi_inmsg, mpi_success_message = 1;
   static ggrd_boolean shift_to_pos_lon = FALSE;	/* this should not be needed anymore */
   report(E,"ggrd_init_tracer_flavors: ggrd mat init");
-
+  int only_one_layer,this_layer;
   /* 
      are we global?
   */
@@ -84,7 +84,8 @@
   }else{			/* regional */
     sprintf(gmt_bc,"");
   }
-    
+  only_one_layer = ((E->trace.ggrd_layers > 0)?(0):(1));
+
   /* 
      initialize the ggrd control 
   */
@@ -114,8 +115,9 @@
     for (kk=1;kk <= number_of_tracers;kk++) {
       rad = E->trace.basicq[j][2][kk]; /* tracer radius */
 
-
-      if(layers_r(E,rad) <= E->trace.ggrd_layers){
+      this_layer = layers_r(E,rad);
+      if((only_one_layer && (this_layer == -E->trace.ggrd_layers)) ||
+	 ((!only_one_layer)&&(this_layer <= E->trace.ggrd_layers))){
 	/*
 	   in top layers
 	*/

Modified: mc/3D/CitcomS/trunk/lib/Tracer_setup.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Tracer_setup.c	2009-03-28 01:56:16 UTC (rev 14510)
+++ mc/3D/CitcomS/trunk/lib/Tracer_setup.c	2009-03-28 02:29:00 UTC (rev 14511)
@@ -187,7 +187,12 @@
 	      /* from grid in top n materials, this will override
 		 the checkpoint input */
 	      input_string("ictracer_grd_file",E->trace.ggrd_file,"",m); /* file from which to read */
-	      input_int("ictracer_grd_layers",&(E->trace.ggrd_layers),"2",m); /* which top layers to use */
+	      input_int("ictracer_grd_layers",&(E->trace.ggrd_layers),"2",m); /* 
+
+									      >0 : which top layers to use, layer <= ictracer_grd_layers
+									      <0 : only use one layer layer == -ictracer_grd_layers
+
+									      */
 	      break;
 	      
 #endif



More information about the CIG-COMMITS mailing list