Bob Jackson's GridGen routines have been successfully wrapped for use with python code. A tarball (PyGridGen-dist.tgz) has been uploaded to the FieldMarshal.org website. The files that comprise the python tool CB2.py, derived fromRobert Jackson's CreateBoundary program, can now be found here. Bob's code was originally written in fortran77 and the files used from that project are almost completely unchanged here. The only exceptions are: PlotMeshPoints.f: changed the calling parameters so that I could pass in the names of the input and output files. InitIO.f: created this file so that I could pass input/output file names in from the command line, rather than just use the hard-coded file names found in the original code. I_O.INC: added BOUNDARY and CRV_FILE, again, so that I could pass file names in as arguments, rather than leave them hard-coded as they were in the original code. CreateBoundary.f: not used. However, a python version of this can be found in CreateBoundary.py. I wrote this as an interrim step in creating CB2.py. CreateBoundary.py allowed me to test the importation of the wrapped fortran77 code, as well as verify that CB2.py worked correctly. NOTE: as of this writing there are STILL precision differences between the pure fortran77 and the ftn/python code. Notwithstanding these, both programs should produce nearly identical drawings. If you have f2py installed on your system, you can make the module with this command: f2py -c PyGridGen.pyf *.f This will create PyGridGen.so, a linux binary of which I've included in this tarball, just in case you have neither f2py nor f77 installed. I've included a sample input file derived from the original inputs in GridGen/CreateBoundary. This can be found in testdata.txt. Each record is a comma-separated set of values that all start with the type, label, and tag for each element. The remaining fields vary depending on the type. Null values are simply omitted, but the field delimiter (comma) must still be present. To represent the "str_p2" values -- essentially last point plotted -- I've adopted a notation that uses @1 and @2 mnemonics to represent str_p2[1] and str_p2[2] (last x and last y, respectively). Plot point values may be integer or floating point constants, @1, @2, or expressions involving any of these. For example, take a look at the element definititon for Focus Electrode-6. To run the program and produce some output, use python CB2.py -o 'Bound.pts', -c 'Bound.lns', -s 'Bound.scr' \ This will create PyGridGen.so, a linux binary of which I've included in this tarball, just in case you have neither f2py nor f77 installed. I've included a sample input file derived from the original inputs in GridGen/CreateBoundary. This can be found in testdata.txt. Each record is a comma-separated set of values that all start with the type, label, and tag for each element. The remaining fields vary depending on the type. Null values are simply omitted, but the field delimiter (comma) must still be present. To represent the "str_p2" values -- essentially last point plotted -- I've adopted a notation that uses @1 and @2 mnemonics to represent str_p2[1] and str_p2[2] (last x and last y, respectively). Plot point values may be integer or floating point constants, @1, @2, or expressions involving any of these. For example, take a look at the element definititon for Focus Electrode-6. To run the program and produce some output, use python CB2.py -o 'Bound.pts', -c 'Bound.lns', -s 'Bound.scr' \ testdata.txt For other options, refer to the comment header in CB2.py Originally posted by Michael McLay — last modified Mar 30, 2005 11:24 AM |