[cig-commits] r15484 - mc/3D/CitcomS/trunk/lib
becker at geodynamics.org
becker at geodynamics.org
Tue Jul 28 21:05:43 PDT 2009
Author: becker
Date: 2009-07-28 21:05:42 -0700 (Tue, 28 Jul 2009)
New Revision: 15484
Modified:
mc/3D/CitcomS/trunk/lib/Ggrd_handling.c
Log:
Ensure debugging output for ggrd_vtop mixed BC if more than one
CPU with depth is used.
Previous check in of precise_strain_rate=on mode seems to be OK,
stress, geoid, and dynamic topo output (for cbf topo off) have been
tested.
Modified: mc/3D/CitcomS/trunk/lib/Ggrd_handling.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Ggrd_handling.c 2009-07-28 01:00:36 UTC (rev 15483)
+++ mc/3D/CitcomS/trunk/lib/Ggrd_handling.c 2009-07-29 04:05:42 UTC (rev 15484)
@@ -643,17 +643,25 @@
static pole_warned = FALSE;
static ggrd_boolean shift_to_pos_lon = FALSE;
const int dims=E->mesh.nsd;
+ int top_echo,nfree,nfixed;
#ifdef USE_GZDIR
gzFile *fp1;
#else
myerror(E,"ggrd_read_vtop_from_file needs to use GZDIR (set USE_GZDIR flag) because of code output");
#endif
+ /* top processor check */
+ top_echo = E->parallel.nprocz-1;
+
/* read in plate code files? */
use_codes = (E->control.ggrd_vtop_omega[0] > 1e-7)?(1):(0);
save_codes = 0;
/* */
if(E->mesh.topvbc != 1)
myerror(E,"ggrd_read_vtop_from_file: top velocity BCs, but topvbc is free slip");
+
+ if(E->parallel.me == 0)
+ fprintf(stderr,"ggrd_read_vtop_from_file: init, mixed %i\n",E->control.ggrd_allow_mixed_vbcs);
+
/* global, top level number of nodes */
noxg = E->lmesh.nox;nozg=E->lmesh.noz;noyg=E->lmesh.noy;
noxgnozg = noxg*nozg;
@@ -664,7 +672,7 @@
vscale = E->data.scalev * E->data.timedir;
if(use_codes)
vscale *= E->data.radius_km*1e3/1e6*1e2*M_PI/180.; /* for deg/Myr -> cm/yr conversion */
- if (E->parallel.me_loc[3] == E->parallel.nprocz-1) {
+ if (E->parallel.me_loc[3] == top_echo) {
/*
TOP PROCESSORs ONLY
@@ -687,7 +695,7 @@
read in grd files (only needed for top processors, really, but
leave as is for now
*/
- if(E->parallel.me==0)
+ if(E->parallel.me == top_echo)
fprintf(stderr,"ggrd_read_vtop_from_file: initializing ggrd velocities for %s setup\n",
is_global?("global"):("regional"));
if(is_global){ /* decide on GMT flag */
@@ -749,7 +757,7 @@
snprintf(tfilename1,1000,"%s/codes.%d.gz", E->control.data_dir,E->parallel.me);
fp1 = gzdir_output_open(tfilename1,"w");
}
- if(E->parallel.me == 0)
+ if(E->parallel.me == top_echo)
if(use_codes)
fprintf(stderr,"ggrd_read_vtop_from_file: assigning Euler vector %g, %g, %g to plates with code %i\n",
E->control.ggrd_vtop_omega[1],
@@ -766,7 +774,7 @@
*/
theta_max = (90-E->control.ggrd.svp[0].south)*M_PI/180-1e-5;
theta_min = (90-E->control.ggrd.svp[0].north)*M_PI/180+1e-5;
- if((E->parallel.me ==0) && (is_global)){
+ if((E->parallel.me == top_echo) && (is_global)){
fprintf(stderr,"ggrd_read_vtop_from_file: determined South/North range: %g/%g\n",
E->control.ggrd.svp[0].south,E->control.ggrd.svp[0].north);
}
@@ -784,25 +792,25 @@
interpolate = 0;
/* present day should be last file*/
i1 = E->control.ggrd.time_hist.nvtimes - 1;
- if(E->parallel.me == 0)
+ if(E->parallel.me == top_echo)
fprintf(stderr,"ggrd_read_vtop_from_file: using present day vtop for age = %g\n",age);
}else{
/* */
ggrd_interpol_time(age,&E->control.ggrd.time_hist,&i1,&i2,&f1,&f2,
E->control.ggrd.time_hist.vstage_transition);
interpolate = 1;
- if(E->parallel.me == 0)
+ if(E->parallel.me == top_echo)
fprintf(stderr,"ggrd_read_vtop_from_file: interpolating vtop for age = %g\n",age);
}
}else{
interpolate = 0; /* single timestep, use single file */
i1 = 0;
- if(E->parallel.me == 0)
+ if(E->parallel.me == top_echo)
fprintf(stderr,"ggrd_read_vtop_from_file: temporally constant velocity BC \n");
}
- if(E->parallel.me==0){
+ if(E->parallel.me == top_echo){
fprintf(stderr,"ggrd_read_vtop_from_file: assigning velocities BC, timedep: %i time: %g\n",
timedep,age);
@@ -810,7 +818,7 @@
/* if mixed BCs are allowed, need to reassign the boundary
condition */
if(E->control.ggrd_allow_mixed_vbcs){
-
+ nfree = nfixed = 0;
/*
mixed BC part
@@ -818,7 +826,7 @@
*/
if(use_codes)
myerror(E,"cannot mix Euler velocities for plate codes and mixed vbcs");
- if(E->parallel.me == 0)
+ if(E->parallel.me == top_echo)
fprintf(stderr,"WARNING: allowing mixed velocity BCs\n");
@@ -882,11 +890,13 @@
}
if(fabs(v[2]) > cutoff){
/* free slip */
+ nfree++;
E->NODE[level][m][nodel] = E->NODE[level][m][nodel] & (~VBX);
E->NODE[level][m][nodel] = E->NODE[level][m][nodel] | SBX;
E->NODE[level][m][nodel] = E->NODE[level][m][nodel] & (~VBY);
E->NODE[level][m][nodel] = E->NODE[level][m][nodel] | SBY;
}else{
+ nfixed++;
/* no slip */
E->NODE[level][m][nodel] = E->NODE[level][m][nodel] | VBX;
E->NODE[level][m][nodel] = E->NODE[level][m][nodel] & (~SBX);
@@ -898,6 +908,7 @@
/* sum up all assignments */
} /* cap */
} /* level */
+ fprintf(stderr,"mixed_bc: %i free %i fixed for CPU %i\n",nfree,nfixed,E->parallel.me);
} /* end mixed BC assign */
/*
@@ -1035,7 +1046,8 @@
}
} /* end top proc branch */
E->control.ggrd.vtop_control_init = 1;
- if(E->parallel.me == 0)fprintf(stderr,"vtop from grd done: %i\n",lc++);
+ if(E->parallel.me == 0)
+ fprintf(stderr,"vtop from grd done: %i\n",lc++);
}
More information about the CIG-COMMITS
mailing list