[cig-commits] r6336 - short/3D/PyLith/branches/pylith-0.8/pylith3d/module

willic3 at geodynamics.org willic3 at geodynamics.org
Wed Mar 21 13:18:58 PDT 2007


Author: willic3
Date: 2007-03-21 13:18:58 -0700 (Wed, 21 Mar 2007)
New Revision: 6336

Modified:
   short/3D/PyLith/branches/pylith-0.8/pylith3d/module/scanner.cc
Log:
Made some changes so the per-processor BC filenames are based on the
global BC filename.  For everything to be consistent, this should also
be done for coordinates, connectivities, split nodes, and tractions.
That would involve changes to PETSc, however.



Modified: short/3D/PyLith/branches/pylith-0.8/pylith3d/module/scanner.cc
===================================================================
--- short/3D/PyLith/branches/pylith-0.8/pylith3d/module/scanner.cc	2007-03-21 19:42:35 UTC (rev 6335)
+++ short/3D/PyLith/branches/pylith-0.8/pylith3d/module/scanner.cc	2007-03-21 20:18:58 UTC (rev 6336)
@@ -67,7 +67,8 @@
 
   PetscFunctionBegin;
   ierr = PetscStrcpy(bcFilename, baseFilename);
-  ierr = PetscStrcat(bcFilename, ".bc");
+  // ierr = PetscStrcat(bcFilename, ".bc");
+  std::cout << bcFilename;
   f = fopen(bcFilename, "r");CHKERRQ(ierr);
   IgnoreComments_PyLith(buf, 2048, f);
   /* Ignore displacement units */
@@ -150,8 +151,12 @@
   if (mesh->debug()) {
     boundaries->view("PyLith boundaries");
   }
-  ierr = PetscStrcpy(bcFilename, baseFilename);
+  int slen = std::strlen(baseFilename);
+  std::strncpy(bcFilename, baseFilename, slen-3);
+  bcFilename[slen-3] = '\0';
+  // ierr = PetscStrcpy(bcFilename, baseFilename.substr(0,slen-4));
   ierr = PetscStrcat(bcFilename, suff);
+  std::cout << bcFilename;
 
   // Determine if we have bc stuff
   const ALE::Obj<ALE::Mesh::topology_type::label_sequence>& vertices = boundaries->getTopology()->depthStratum(patch, 0);
@@ -162,6 +167,7 @@
       break;
     } // if
 
+  std::cout << bcFilename;
   f = fopen(bcFilename, "w");CHKERRQ(ierr);
   if (haveBC) {
     // Only write header if bc file contains information
@@ -208,11 +214,11 @@
 PyObject * pypylith3d_processMesh(PyObject *, PyObject *args)
 {
   char *meshInputFile;
-  char  *meshOutputFile;
+  char  *meshBcFile;
   int   interpolateMesh;
   char* partitioner;
 
-  int ok = PyArg_ParseTuple(args, (char *) "ssis:processMesh", &meshOutputFile, &meshInputFile, &interpolateMesh, &partitioner);
+  int ok = PyArg_ParseTuple(args, (char *) "ssis:processMesh", &meshBcFile, &meshInputFile, &interpolateMesh, &partitioner);
 
   if (!ok) {
     return 0;
@@ -240,7 +246,8 @@
   m = ALE::New::Distribution<ALE::Mesh::topology_type>::distributeMesh(m, partitioner);
   ierr = MeshSetMesh(mesh, m);
   debug << journal::at(__HERE__) << "[" << rank << "]Distributed PETSc Mesh"  << journal::endl;
-  ierr = ReadBoundary_PyLith(meshInputFile, PETSC_FALSE, &numBoundaryVertices, &numBoundaryComponents, &boundaryVertices, &boundaryValues);
+  std::cout << meshBcFile;
+  ierr = ReadBoundary_PyLith(meshBcFile, PETSC_FALSE, &numBoundaryVertices, &numBoundaryComponents, &boundaryVertices, &boundaryValues);
 
   const Obj<ALE::Mesh::foliated_section_type>& boundaries = m->getBoundariesNew();
   ALE::Mesh::foliated_section_type::patch_type patch      = 0;
@@ -303,12 +310,16 @@
   char           suff[9];
 
   sprintf(suff, "%s%d%s", ".", rank, ".bc");
-  ierr = PetscStrcpy(bcFilename, meshInputFile);
+
+  int slen = std::strlen(meshBcFile);
+  std::strncpy(bcFilename, meshBcFile, slen-3);
+  // ierr = PetscStrcpy(bcFilename, meshBcFile.substr(0,slen-4));
   ierr = PetscStrcat(bcFilename, suff);
+  std::cout << bcFilename;
 
   debug << journal::at(__HERE__) << "[" << rank << "]Output new PyLith mesh into: " << bcFilename << journal::endl;
 
-  ierr = WriteBoundary_PyLith(meshInputFile, m);
+  ierr = WriteBoundary_PyLith(meshBcFile, m);
   debug << journal::at(__HERE__) << "[" << rank << "]Wrote PyLith boundary conditions"  << journal::endl;
 
   const Obj<ALE::Mesh::topology_type::label_sequence>& vertices = m->getTopology()->depthStratum(0, 0);



More information about the cig-commits mailing list