[cig-commits] r6234 - mc/3D/CitcomS/trunk/lib
tan2 at geodynamics.org
tan2 at geodynamics.org
Mon Mar 12 16:11:49 PDT 2007
Author: tan2
Date: 2007-03-12 16:11:49 -0700 (Mon, 12 Mar 2007)
New Revision: 6234
Modified:
mc/3D/CitcomS/trunk/lib/Composition_related.c
mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c
Log:
Removed static variables, added some code documentation
Modified: mc/3D/CitcomS/trunk/lib/Composition_related.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Composition_related.c 2007-03-12 22:14:36 UTC (rev 6233)
+++ mc/3D/CitcomS/trunk/lib/Composition_related.c 2007-03-12 23:11:49 UTC (rev 6234)
@@ -155,9 +155,6 @@
/* XXX: Currently, only the ratio method works here. */
/* Will have to come back here to include the absolute method. */
- //count_tracers_of_flavors(E);
-
-
/* ratio method */
if (E->composition.ibuoy_type==1) {
Modified: mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c 2007-03-12 22:14:36 UTC (rev 6233)
+++ mc/3D/CitcomS/trunk/lib/Full_tracer_advection.c 2007-03-12 23:11:49 UTC (rev 6234)
@@ -363,28 +363,19 @@
double convection_time,tracer_time;
double trace_fraction,total_time;
- void get_bulk_composition();
- static int been_here=0;
-
-
-
fprintf(E->trace.fpt,"Number of times for all element search %d\n",E->trace.istat1);
- if (been_here!=0)
- {
- fprintf(E->trace.fpt,"Number of tracers sent to other processors: %d\n",E->trace.istat_isend);
- fprintf(E->trace.fpt,"Number of times element columns are checked: %d \n",E->trace.istat_elements_checked);
- if (E->composition.ichemical_buoyancy==1)
- {
- fprintf(E->trace.fpt,"Empty elements filled with old compositional values: %d (%f percent)\n",
- E->trace.istat_iempty,(100.0*E->trace.istat_iempty/E->lmesh.nel));
- }
- }
-/* fprintf(E->trace.fpt,"Error fraction: %f (composition: %f)\n",E->trace.error_fraction,E->trace.bulk_composition); */
+ fprintf(E->trace.fpt,"Number of tracers sent to other processors: %d\n",E->trace.istat_isend);
+ fprintf(E->trace.fpt,"Number of times element columns are checked: %d \n",E->trace.istat_elements_checked);
+ if (E->composition.ichemical_buoyancy==1) {
+ fprintf(E->trace.fpt,"Empty elements filled with old compositional values: %d (%f percent)\n",
+ E->trace.istat_iempty,(100.0*E->trace.istat_iempty)/E->lmesh.nel);
+ }
+
/* reset statistical counters */
E->trace.istat_isend=0;
@@ -394,24 +385,17 @@
/* compositional and error fraction data files */
//TODO: move
- if (E->parallel.me==0)
- {
- if (E->composition.ichemical_buoyancy==1)
- {
- //TODO: to be init'd
- fprintf(E->fp,"composition: %e %e\n",E->monitor.elapsed_time,E->composition.bulk_composition);
- fprintf(E->fp,"composition_error_fraction: %e %e\n",E->monitor.elapsed_time,E->composition.error_fraction);
+ if (E->parallel.me==0) {
+ if (E->composition.ichemical_buoyancy==1) {
+ fprintf(E->fp,"composition: %e %e\n",E->monitor.elapsed_time,E->composition.bulk_composition);
+ fprintf(E->fp,"composition_error_fraction: %e %e\n",E->monitor.elapsed_time,E->composition.error_fraction);
- }
-
}
+ }
-
fflush(E->trace.fpt);
- if (been_here==0) been_here++;
-
return;
}
@@ -453,58 +437,56 @@
dt=E->advection.timestep;
- for (j=1;j<=E->sphere.caps_per_proc;j++)
- {
+ for (j=1;j<=E->sphere.caps_per_proc;j++) {
- numtracers=E->trace.ntracers[j];
+ numtracers=E->trace.ntracers[j];
- for (kk=1;kk<=numtracers;kk++)
- {
+ for (kk=1;kk<=numtracers;kk++) {
- theta0=E->trace.basicq[j][0][kk];
- phi0=E->trace.basicq[j][1][kk];
- rad0=E->trace.basicq[j][2][kk];
- x0=E->trace.basicq[j][3][kk];
- y0=E->trace.basicq[j][4][kk];
- z0=E->trace.basicq[j][5][kk];
+ theta0=E->trace.basicq[j][0][kk];
+ phi0=E->trace.basicq[j][1][kk];
+ rad0=E->trace.basicq[j][2][kk];
+ x0=E->trace.basicq[j][3][kk];
+ y0=E->trace.basicq[j][4][kk];
+ z0=E->trace.basicq[j][5][kk];
- nelem=E->trace.ielement[j][kk];
- get_velocity(E,j,nelem,theta0,phi0,rad0,velocity_vector);
+ nelem=E->trace.ielement[j][kk];
+ get_velocity(E,j,nelem,theta0,phi0,rad0,velocity_vector);
- x_pred=x0+velocity_vector[1]*dt;
- y_pred=y0+velocity_vector[2]*dt;
- z_pred=z0+velocity_vector[3]*dt;
+ x_pred=x0+velocity_vector[1]*dt;
+ y_pred=y0+velocity_vector[2]*dt;
+ z_pred=z0+velocity_vector[3]*dt;
- /* keep in box */
+ /* keep in box */
- cart_to_sphere(E,x_pred,y_pred,z_pred,&theta_pred,&phi_pred,&rad_pred);
- keep_in_sphere(E,&x_pred,&y_pred,&z_pred,&theta_pred,&phi_pred,&rad_pred);
+ cart_to_sphere(E,x_pred,y_pred,z_pred,&theta_pred,&phi_pred,&rad_pred);
+ keep_in_sphere(E,&x_pred,&y_pred,&z_pred,&theta_pred,&phi_pred,&rad_pred);
- /* Current Coordinates are always kept in positions 0-5. */
+ /* Current Coordinates are always kept in positions 0-5. */
- E->trace.basicq[j][0][kk]=theta_pred;
- E->trace.basicq[j][1][kk]=phi_pred;
- E->trace.basicq[j][2][kk]=rad_pred;
- E->trace.basicq[j][3][kk]=x_pred;
- E->trace.basicq[j][4][kk]=y_pred;
- E->trace.basicq[j][5][kk]=z_pred;
+ E->trace.basicq[j][0][kk]=theta_pred;
+ E->trace.basicq[j][1][kk]=phi_pred;
+ E->trace.basicq[j][2][kk]=rad_pred;
+ E->trace.basicq[j][3][kk]=x_pred;
+ E->trace.basicq[j][4][kk]=y_pred;
+ E->trace.basicq[j][5][kk]=z_pred;
- /* Fill in original coords (positions 6-8) */
+ /* Fill in original coords (positions 6-8) */
- E->trace.basicq[j][6][kk]=x0;
- E->trace.basicq[j][7][kk]=y0;
- E->trace.basicq[j][8][kk]=z0;
+ E->trace.basicq[j][6][kk]=x0;
+ E->trace.basicq[j][7][kk]=y0;
+ E->trace.basicq[j][8][kk]=z0;
- /* Fill in original velocities (positions 9-11) */
+ /* Fill in original velocities (positions 9-11) */
- E->trace.basicq[j][9][kk]=velocity_vector[1]; /* Vx */
- E->trace.basicq[j][10][kk]=velocity_vector[2]; /* Vy */
- E->trace.basicq[j][11][kk]=velocity_vector[3]; /* Vz */
+ E->trace.basicq[j][9][kk]=velocity_vector[1]; /* Vx */
+ E->trace.basicq[j][10][kk]=velocity_vector[2]; /* Vy */
+ E->trace.basicq[j][11][kk]=velocity_vector[3]; /* Vz */
- } /* end kk, predicting tracers */
- } /* end caps */
+ } /* end kk, predicting tracers */
+ } /* end caps */
/* find new tracer elements and caps */
@@ -554,59 +536,52 @@
dt=E->advection.timestep;
- if ((E->parallel.me==0) && (E->trace.itracer_advection_scheme==2) )
- {
- fprintf(stderr,"AA:Correcting Tracers\n");
- fflush(stderr);
- }
+ for (j=1;j<=E->sphere.caps_per_proc;j++) {
+ for (kk=1;kk<=E->trace.ntracers[j];kk++) {
- for (j=1;j<=E->sphere.caps_per_proc;j++)
- {
- for (kk=1;kk<=E->trace.ntracers[j];kk++)
- {
+ theta_pred=E->trace.basicq[j][0][kk];
+ phi_pred=E->trace.basicq[j][1][kk];
+ rad_pred=E->trace.basicq[j][2][kk];
+ x_pred=E->trace.basicq[j][3][kk];
+ y_pred=E->trace.basicq[j][4][kk];
+ z_pred=E->trace.basicq[j][5][kk];
- theta_pred=E->trace.basicq[j][0][kk];
- phi_pred=E->trace.basicq[j][1][kk];
- rad_pred=E->trace.basicq[j][2][kk];
- x_pred=E->trace.basicq[j][3][kk];
- y_pred=E->trace.basicq[j][4][kk];
- z_pred=E->trace.basicq[j][5][kk];
+ x0=E->trace.basicq[j][6][kk];
+ y0=E->trace.basicq[j][7][kk];
+ z0=E->trace.basicq[j][8][kk];
- x0=E->trace.basicq[j][6][kk];
- y0=E->trace.basicq[j][7][kk];
- z0=E->trace.basicq[j][8][kk];
+ Vx0=E->trace.basicq[j][9][kk];
+ Vy0=E->trace.basicq[j][10][kk];
+ Vz0=E->trace.basicq[j][11][kk];
- Vx0=E->trace.basicq[j][9][kk];
- Vy0=E->trace.basicq[j][10][kk];
- Vz0=E->trace.basicq[j][11][kk];
+ nelem=E->trace.ielement[j][kk];
- nelem=E->trace.ielement[j][kk];
+ get_velocity(E,j,nelem,theta_pred,phi_pred,rad_pred,velocity_vector);
- get_velocity(E,j,nelem,theta_pred,phi_pred,rad_pred,velocity_vector);
+ Vx_pred=velocity_vector[1];
+ Vy_pred=velocity_vector[2];
+ Vz_pred=velocity_vector[3];
- Vx_pred=velocity_vector[1];
- Vy_pred=velocity_vector[2];
- Vz_pred=velocity_vector[3];
+ x_cor=x0 + dt * 0.5*(Vx0+Vx_pred);
+ y_cor=y0 + dt * 0.5*(Vy0+Vy_pred);
+ z_cor=z0 + dt * 0.5*(Vz0+Vz_pred);
- x_cor=x0 + dt * 0.5*(Vx0+Vx_pred);
- y_cor=y0 + dt * 0.5*(Vy0+Vy_pred);
- z_cor=z0 + dt * 0.5*(Vz0+Vz_pred);
+ cart_to_sphere(E,x_cor,y_cor,z_cor,&theta_cor,&phi_cor,&rad_cor);
+ keep_in_sphere(E,&x_cor,&y_cor,&z_cor,&theta_cor,&phi_cor,&rad_cor);
- cart_to_sphere(E,x_cor,y_cor,z_cor,&theta_cor,&phi_cor,&rad_cor);
- keep_in_sphere(E,&x_cor,&y_cor,&z_cor,&theta_cor,&phi_cor,&rad_cor);
+ /* Fill in Current Positions (other positions are no longer important) */
- /* Fill in Current Positions (other positions are no longer important) */
+ E->trace.basicq[j][0][kk]=theta_cor;
+ E->trace.basicq[j][1][kk]=phi_cor;
+ E->trace.basicq[j][2][kk]=rad_cor;
+ E->trace.basicq[j][3][kk]=x_cor;
+ E->trace.basicq[j][4][kk]=y_cor;
+ E->trace.basicq[j][5][kk]=z_cor;
- E->trace.basicq[j][0][kk]=theta_cor;
- E->trace.basicq[j][1][kk]=phi_cor;
- E->trace.basicq[j][2][kk]=rad_cor;
- E->trace.basicq[j][3][kk]=x_cor;
- E->trace.basicq[j][4][kk]=y_cor;
- E->trace.basicq[j][5][kk]=z_cor;
+ } /* end kk, correcting tracers */
+ } /* end caps */
- } /* end kk, correcting tracers */
- } /* end caps */
/* find new tracer elements and caps */
find_tracers(E);
@@ -1038,7 +1013,10 @@
fflush(E->trace.fpt);
exit(10);
}
+ for (kk=1;kk<=E->trace.max_ntracers[j];kk++)
+ E->trace.ielement[j][kk]=-99;
+
for (kk=0;kk<E->trace.number_of_basic_quantities;kk++) {
if ((E->trace.basicq[j][kk]=(double *)malloc(E->trace.max_ntracers[j]*sizeof(double)))==NULL) {
fprintf(E->trace.fpt,"ERROR(initialize tracer arrays)-no memory 1b.%d\n",kk);
@@ -1106,25 +1084,9 @@
void lost_souls();
void sphere_to_cart();
- static int been_here=0;
-
time_stat1=CPU_time0();
- if (been_here==0)
- {
- for (j=1;j<=E->sphere.caps_per_proc;j++)
- {
- for (kk=1;kk<=E->trace.ntracers[j];kk++)
- {
- E->trace.ielement[j][kk]=-99;
- }
- }
- been_here++;
- }
-
-
-
for (j=1;j<=E->sphere.caps_per_proc;j++)
{
@@ -1283,7 +1245,7 @@
MPI_Request request[200];
MPI_Status status1;
MPI_Status status2;
- static int itag=1;
+ int itag=1;
parallel_process_sync(E);
@@ -5278,6 +5240,10 @@
int j, kk, number_of_tracers;
double rad;
+
+ /* ic_method_for_flavors == 0 (layerd structure) */
+ /* any tracer above z_interface is of flavor 0 */
+ /* any tracer below z_interface is of flavor 1 */
if (E->trace.ic_method_for_flavors == 0) {
for (j=1;j<=E->sphere.caps_per_proc;j++) {
More information about the cig-commits
mailing list