From: Kevin M. Rosenberg Date: Thu, 8 Jun 2000 16:43:10 +0000 (+0000) Subject: r89: *** empty log message *** X-Git-Tag: debian-4.5.3-3~928 X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=commitdiff_plain;h=013445d4e52c07491291289eb32fa325d9f9f8ff r89: *** empty log message *** --- diff --git a/src/ctrec.cpp b/src/ctrec.cpp index 6ed8bd9..fed86ee 100644 --- a/src/ctrec.cpp +++ b/src/ctrec.cpp @@ -1,59 +1,15 @@ /***************************************************************************** -** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: ctrec.cpp,v 1.3 2000/06/07 10:12:05 kevin Exp $ -** $Log: ctrec.cpp,v $ -** Revision 1.3 2000/06/07 10:12:05 kevin -** Upgraded from MPI to MPI++ -** -** Revision 1.2 2000/06/07 07:43:19 kevin -** Converted to IF data files and C++ -** -** Revision 1.1 2000/06/07 02:29:05 kevin -** Initial C++ versions -** -** Revision 1.13 2000/06/05 01:33:25 kevin -** BSpline changes -** -** Revision 1.12 2000/05/24 22:50:04 kevin -** Added support for new SGP library -** -** Revision 1.11 2000/05/16 04:33:59 kevin -** Improved option processing -** -** Revision 1.10 2000/05/11 01:06:30 kevin -** Changed sprintf to snprintf -** -** Revision 1.9 2000/05/08 20:02:32 kevin -** ANSI C changes -** -** Revision 1.8 2000/05/04 18:16:34 kevin -** renamed filter definitions -** -** Revision 1.7 2000/05/03 08:49:50 kevin -** Code cleanup -** -** Revision 1.6 2000/05/02 15:31:47 kevin -** code cleaning +** FILE IDENTIFICATION ** -** Revision 1.5 2000/04/30 11:41:06 kevin -** Cleaned up debugging code -** -** Revision 1.4 2000/04/30 10:13:27 kevin -** Fixed MPI bugs -** -** Revision 1.3 2000/04/30 04:06:13 kevin -** Update Raysum i/o routines -** Fix MPI bug in ctrec (scatter_raysum) that referenced rs_global -** -** Revision 1.2 2000/04/29 23:24:56 kevin -** *** empty log message *** -** -** Revision 1.1.1.1 2000/04/28 13:02:44 kevin -** Initial CVS import for first public release +** Name: ctrec.cpp +** Purpose: Reconstruct an image from projections +** Programmer: Kevin Rosenberg +** Date Started: Aug 1984 ** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg ** +** $Id: ctrec.cpp,v 1.4 2000/06/08 16:43:10 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -69,15 +25,6 @@ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ -/* FILE - * ctrec.c Reconstruct an image from raysums - * - * DATE - * Aug 84 - * Jul 99 -- Converted to ANSI C - * Added MPI parallel processing - */ - #include "ct.h" enum {O_INTERP, O_FILTER, O_FILTER_PARAM, O_BACKPROJ, O_VERBOSE, O_TRACE, O_HELP, O_DEBUG, O_VERSION}; @@ -351,8 +298,8 @@ ctrec_main (const int argc, char *const argv[]) im_global = new ImageFile (im_filename, nx, ny); im_global->adf.fileCreate(); } - im_local = new ImageFile (nx, ny); + im_local = new ImageFile (nx, ny); #else rs_global = raysum_open (rs_name); raysum_read (rs_global); @@ -361,13 +308,13 @@ ctrec_main (const int argc, char *const argv[]) im_global = new ImageFile (im_filename, nx, ny); im_global->adf.fileCreate(); - #endif #ifdef HAVE_MPI mpi_t1 = MPI::Wtime(); proj_reconst (*im_local, rs_local, opt_filter, opt_filter_param, opt_interp, opt_interp_param, opt_backproj, opt_trace); + mpi_t2 = MPI::Wtime(); mpi_t = mpi_t2 - mpi_t1; mpi_ct.comm.Reduce(&mpi_t, &mpi_t_g, 1, MPI::DOUBLE, MPI::MAX, 0); @@ -385,14 +332,16 @@ ctrec_main (const int argc, char *const argv[]) int nxLocal = im_local->adf.nx(); int nyLocal = im_local->adf.ny(); ImageFileArray vLocal = im_local->getArray(); - ImageFileArray vGlobal = im_global->getArray(); + ImageFileArray vGlobal = NULL; + if (mpi_ct.my_rank == 0) + vGlobal = im_global->getArray(); for (int ix = 0; ix < nxLocal; ix++) { void *recvbuf = NULL; if (mpi_ct.my_rank == 0) recvbuf = vGlobal[ix]; - mpi_ct.comm.Reduce(vLocal[ix], recvbuf, nyLocal, MPI::FLOAT, MPI::SUM, 0); + mpi_ct.comm.Reduce(vLocal[ix], recvbuf, nyLocal, im_local->getMPIDataType(), MPI::SUM, 0); } if (opt_verbose) { diff --git a/src/ctsim.cpp b/src/ctsim.cpp index bc3e0ba..57b5549 100644 --- a/src/ctsim.cpp +++ b/src/ctsim.cpp @@ -1,3 +1,26 @@ +/***************************************************************************** +** FILE IDENTIFICATION +** +** Name: ctsim.cpp +** Purpose: GUI shell for CT Simulation +** Programmer: Kevin Rosenberg +** Date Started: June 2000 +** +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License (version 2) as +** published by the Free Software Foundation. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + #include #include diff --git a/src/if-1.cpp b/src/if-1.cpp index 8d2330c..bfdd9dd 100644 --- a/src/if-1.cpp +++ b/src/if-1.cpp @@ -1,37 +1,15 @@ /***************************************************************************** -** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: if-1.cpp,v 1.3 2000/06/07 07:43:19 kevin Exp $ -** $Log: if-1.cpp,v $ -** Revision 1.3 2000/06/07 07:43:19 kevin -** Converted to IF data files and C++ -** -** Revision 1.2 2000/06/07 03:50:27 kevin -** *** empty log message *** -** -** Revision 1.1 2000/06/07 02:29:05 kevin -** Initial C++ versions -** -** Revision 1.6 2000/05/24 22:50:04 kevin -** Added support for new SGP library +** FILE IDENTIFICATION ** -** Revision 1.5 2000/05/16 04:33:59 kevin -** Improved option processing -** -** Revision 1.4 2000/05/09 14:52:27 kevin -** added sqr and sqrt functions -** -** Revision 1.3 2000/05/08 20:02:32 kevin -** ANSI C changes -** -** Revision 1.2 2000/05/03 08:49:50 kevin -** Code cleanup -** -** Revision 1.1.1.1 2000/04/28 13:02:44 kevin -** Initial CVS import for first public release +** Name: if-1.cpp +** Purpose: Manipulate a single image file +** Programmer: Kevin Rosenberg +** Date Started: Aug 1984 ** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg ** +** $Id: if-1.cpp,v 1.4 2000/06/08 16:43:10 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as diff --git a/src/if-2.cpp b/src/if-2.cpp index 6b9532b..4368c17 100644 --- a/src/if-2.cpp +++ b/src/if-2.cpp @@ -1,31 +1,15 @@ /***************************************************************************** -** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: if-2.cpp,v 1.1 2000/06/07 07:43:19 kevin Exp $ -** $Log: if-2.cpp,v $ -** Revision 1.1 2000/06/07 07:43:19 kevin -** Converted to IF data files and C++ -** -** Revision 1.1 2000/06/07 02:29:05 kevin -** Initial C++ versions -** -** Revision 1.5 2000/05/24 22:50:04 kevin -** Added support for new SGP library +** FILE IDENTIFICATION ** -** Revision 1.4 2000/05/16 04:33:59 kevin -** Improved option processing -** -** Revision 1.3 2000/05/11 01:06:30 kevin -** Changed sprintf to snprintf -** -** Revision 1.2 2000/05/08 20:02:32 kevin -** ANSI C changes -** -** Revision 1.1.1.1 2000/04/28 13:02:44 kevin -** Initial CVS import for first public release +** Name: if-2.cpp +** Purpose: Manipulate two image files +** Programmer: Kevin Rosenberg +** Date Started: May 2000 ** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg ** +** $Id: if-2.cpp,v 1.2 2000/06/08 16:43:10 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as diff --git a/src/if2img.cpp b/src/if2img.cpp index 1132e73..d25c394 100644 --- a/src/if2img.cpp +++ b/src/if2img.cpp @@ -1,34 +1,15 @@ /***************************************************************************** -** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: if2img.cpp,v 1.1 2000/06/07 07:55:30 kevin Exp $ -** $Log: if2img.cpp,v $ -** Revision 1.1 2000/06/07 07:55:30 kevin -** Initial import -** -** Revision 1.1 2000/06/07 02:29:05 kevin -** Initial C++ versions -** -** Revision 1.6 2000/06/03 07:57:51 kevin -** Fixed PNG 16-bit format -** -** Revision 1.5 2000/06/03 06:29:57 kevin -** *** empty log message *** +** FILE IDENTIFICATION ** -** Revision 1.4 2000/05/24 22:50:04 kevin -** Added support for new SGP library -** -** Revision 1.3 2000/05/16 04:33:59 kevin -** Improved option processing -** -** Revision 1.2 2000/05/08 20:02:32 kevin -** ANSI C changes -** -** Revision 1.1.1.1 2000/04/28 13:02:44 kevin -** Initial CVS import for first public release +** Name: if2img.cpp +** Purpose: Convert an image file to a viewable image +** Programmer: Kevin Rosenberg +** Date Started: April 2000 ** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg ** +** $Id: if2img.cpp,v 1.2 2000/06/08 16:43:10 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as diff --git a/src/ifinfo.cpp b/src/ifinfo.cpp index 136792d..bc55c1e 100644 --- a/src/ifinfo.cpp +++ b/src/ifinfo.cpp @@ -1,28 +1,15 @@ /***************************************************************************** -** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: ifinfo.cpp,v 1.3 2000/06/07 07:43:19 kevin Exp $ -** $Log: ifinfo.cpp,v $ -** Revision 1.3 2000/06/07 07:43:19 kevin -** Converted to IF data files and C++ -** -** Revision 1.2 2000/06/07 03:50:27 kevin -** *** empty log message *** -** -** Revision 1.1 2000/06/07 02:29:05 kevin -** Initial C++ versions +** FILE IDENTIFICATION ** -** Revision 1.3 2000/05/16 04:33:59 kevin -** Improved option processing -** -** Revision 1.2 2000/05/08 20:02:32 kevin -** ANSI C changes -** -** Revision 1.1.1.1 2000/04/28 13:02:44 kevin -** Initial CVS import for first public release +** Name: ifinfo.cpp +** Purpose: Display information about an image file +** Programmer: Kevin Rosenberg +** Date Started: April 2000 ** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg ** +** $Id: ifinfo.cpp,v 1.4 2000/06/08 16:43:10 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as diff --git a/src/phm2if.cpp b/src/phm2if.cpp index 0d1a09f..9b2b33b 100644 --- a/src/phm2if.cpp +++ b/src/phm2if.cpp @@ -1,53 +1,15 @@ /***************************************************************************** -** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: phm2if.cpp,v 1.4 2000/06/07 10:12:05 kevin Exp $ -** $Log: phm2if.cpp,v $ -** Revision 1.4 2000/06/07 10:12:05 kevin -** Upgraded from MPI to MPI++ -** -** Revision 1.3 2000/06/07 07:43:19 kevin -** Converted to IF data files and C++ -** -** Revision 1.2 2000/06/07 03:50:27 kevin -** *** empty log message *** -** -** Revision 1.1 2000/06/07 02:29:05 kevin -** Initial C++ versions -** -** Revision 1.10 2000/05/24 22:50:04 kevin -** Added support for new SGP library -** -** Revision 1.9 2000/05/16 04:33:59 kevin -** Improved option processing -** -** Revision 1.8 2000/05/11 01:06:30 kevin -** Changed sprintf to snprintf -** -** Revision 1.7 2000/05/08 20:02:32 kevin -** ANSI C changes -** -** Revision 1.6 2000/05/03 08:49:50 kevin -** Code cleanup -** -** Revision 1.5 2000/04/30 19:17:54 kevin -** *** empty log message *** +** FILE IDENTIFICATION ** -** Revision 1.4 2000/04/30 04:06:13 kevin -** Update Raysum i/o routines -** Fix MPI bug in ctrec (scatter_raysum) that referenced rs_global -** -** Revision 1.3 2000/04/28 18:19:01 kevin -** removed unused files -** -** Revision 1.2 2000/04/28 13:50:45 kevin -** Removed Makefile Makefile.in that are automatically generated by autoconf -** -** Revision 1.1.1.1 2000/04/28 13:02:44 kevin -** Initial CVS import for first public release +** Name: phm2if.cpp +** Purpose: Convert an phantom object to an image file +** Programmer: Kevin Rosenberg +** Date Started: 1984 ** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg ** +** $Id: phm2if.cpp,v 1.5 2000/06/08 16:43:10 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -141,7 +103,7 @@ phm2sdf_usage (const char *program) } #ifdef HAVE_MPI -void mpi_gather_image (ImageFile& im_global, ImageFile& im_local, const int opt_debug); +void mpi_gather_image (ImageFile* im_global, ImageFile* im_local, const int opt_debug); #endif int @@ -357,7 +319,7 @@ phm2sdf_main (const int argc, char *const argv[]) if (opt_verbose) { mpi_t2 = MPI::Wtime(); mpi_t = mpi_t2 - mpi_t1; - mpi_ct.comm.Reduce(&mpi_t, &mpi_t_g, 1, MPI::DOUBLE, MPI::MAX, 0); + mpi_ct.comm.Reduce (&mpi_t, &mpi_t_g, 1, MPI::DOUBLE, MPI::MAX, 0); if (mpi_ct.my_rank == 0) printf("Time to Bcast vars = %f secs, Max time = %f\n", mpi_t, mpi_t_g); } @@ -368,7 +330,6 @@ phm2sdf_main (const int argc, char *const argv[]) im_global = new ImageFile (opt_outfile, opt_nx, opt_ny); im_global->adf.fileCreate(); } - im_local = new ImageFile (opt_nx, opt_ny); #else im_global = new ImageFile (opt_outfile, opt_nx, opt_ny); @@ -386,10 +347,13 @@ phm2sdf_main (const int argc, char *const argv[]) } #endif - ImageFileArray v = im_global->getArray (); double calctime = 0; + ImageFileArray v; #ifdef HAVE_MPI + if (mpi_ct.my_rank == 0) + v = im_global->getArray (); + if (phm->type == P_UNIT_PULSE) { if (mpi_ct.my_rank == 0) { v[opt_nx/2][opt_ny/2] = 1.; @@ -401,6 +365,8 @@ phm2sdf_main (const int argc, char *const argv[]) calctime = 0; } } else { + mpi_ct.comm.Barrier(); + if (opt_verbose) mpi_t1 = MPI::Wtime(); phm_to_imagefile (phm, *im_local, mpi_ct.start_work_unit[mpi_ct.my_rank], mpi_ct.local_work_units[mpi_ct.my_rank], opt_nsample, opt_trace); @@ -411,9 +377,10 @@ phm2sdf_main (const int argc, char *const argv[]) if (mpi_ct.my_rank == 0) printf("Time to compile phm = %f secs, Max time = %f\n", mpi_t, mpi_t_g); } - mpi_gather_image(*im_global, *im_local, opt_debug); + mpi_gather_image(im_global, im_local, opt_debug); } #else + v = im_global->getArray (); if (phm->type == P_UNIT_PULSE) { v[opt_nx/2][opt_ny/2] = 1.; calctime = 0; @@ -445,17 +412,17 @@ phm2sdf_main (const int argc, char *const argv[]) im_global->adf.fileClose (); if (opt_verbose) fprintf (stdout, "Time to compile image = %.2f sec\n\n", calctime); - } - if (opt_trace >= TRACE_PHM) { - double dmin, dmax; - int nscale; - - printf ("Enter display size scale (nominal = 1): "); - scanf ("%d", &nscale); - printf ("Enter minimum and maximum densities (min, max): "); - scanf ("%lf %lf", &dmin, &dmax); - image_display_scale (*im_global, nscale, dmin, dmax); + if (opt_trace >= TRACE_PHM) { + double dmin, dmax; + int nscale; + + printf ("Enter display size scale (nominal = 1): "); + scanf ("%d", &nscale); + printf ("Enter minimum and maximum densities (min, max): "); + scanf ("%lf %lf", &dmin, &dmax); + image_display_scale (*im_global, nscale, dmin, dmax); + } } phm_free (phm); @@ -466,16 +433,17 @@ phm2sdf_main (const int argc, char *const argv[]) #ifdef HAVE_MPI -void mpi_gather_image (ImageFile& im_global, ImageFile& im_local, const int opt_debug) +void mpi_gather_image (ImageFile* im_global, ImageFile* im_local, const int opt_debug) { - ImageFileArray vLocal = im_local.getArray(); - ImageFileArray vGlobal = im_global.getArray(); - int nyLocal = im_local.ny(); - int nyGlobal = im_global.ny(); + ImageFileArray vLocal = im_local->getArray(); + ImageFileArray vGlobal = NULL; + if (mpi_ct.my_rank == 0) + vGlobal = im_global->getArray(); + int nyLocal = im_local->ny(); int end_work_unit = mpi_ct.local_work_units[mpi_ct.my_rank] - 1; for (int iw = 0; iw <= end_work_unit; iw++) { - mpi_ct.comm.Send(vLocal[iw], nyLocal, im_local.getMPIDataType(), 0, 0); + mpi_ct.comm.Send(vLocal[iw], nyLocal, im_local->getMPIDataType(), 0, 0); } if (mpi_ct.my_rank == 0) { @@ -489,7 +457,7 @@ void mpi_gather_image (ImageFile& im_global, ImageFile& im_local, const int opt_ for (int iw = mpi_ct.start_work_unit[iproc]; iw <= end_work_unit; iw++) { MPI::Status status; - mpi_ct.comm.Recv(vGlobal[iw], nyGlobal, MPI::FLOAT, iproc, 0, status); + mpi_ct.comm.Recv(vGlobal[iw], nyLocal, im_local->getMPIDataType(), iproc, 0, status); } } } diff --git a/src/phm2rs.cpp b/src/phm2rs.cpp index 78a9f5f..ed9c9e0 100644 --- a/src/phm2rs.cpp +++ b/src/phm2rs.cpp @@ -1,57 +1,15 @@ /***************************************************************************** -** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** PURPOSE -** Generate raysum projections from phantom object -** -** HISTORY -** 1984 -- Final DOS version -** 1999 -- First UNIX version -** -** $Id: phm2rs.cpp,v 1.2 2000/06/07 10:12:05 kevin Exp $ -** $Log: phm2rs.cpp,v $ -** Revision 1.2 2000/06/07 10:12:05 kevin -** Upgraded from MPI to MPI++ -** -** Revision 1.1 2000/06/07 02:29:05 kevin -** Initial C++ versions -** -** Revision 1.12 2000/05/24 22:50:04 kevin -** Added support for new SGP library -** -** Revision 1.11 2000/05/16 04:33:59 kevin -** Improved option processing -** -** Revision 1.9 2000/05/08 20:02:32 kevin -** ANSI C changes +** FILE IDENTIFICATION ** -** Revision 1.8 2000/05/04 18:16:34 kevin -** renamed filter definitions -** -** Revision 1.7 2000/05/03 08:49:50 kevin -** Code cleanup -** -** Revision 1.6 2000/04/30 18:23:53 kevin -** Code cleaning -** -** Revision 1.5 2000/04/30 10:13:27 kevin -** Fixed MPI bugs -** -** Revision 1.4 2000/04/30 04:06:13 kevin -** Update Raysum i/o routines -** Fix MPI bug in ctrec (scatter_raysum) that referenced rs_global -** -** Revision 1.3 2000/04/29 23:24:56 kevin -** *** empty log message *** -** -** Revision 1.2 2000/04/28 13:50:45 kevin -** Removed Makefile Makefile.in that are automatically generated by autoconf -** -** Revision 1.1.1.1 2000/04/28 13:02:44 kevin -** Initial CVS import for first public release +** Name: phm2rs.cpp +** Purpose: Take projections of a phantom object +** Programmer: Kevin Rosenberg +** Date Started: 1984 ** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg ** +** $Id: phm2rs.cpp,v 1.3 2000/06/08 16:43:10 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as diff --git a/src/rs2if.cpp b/src/rs2if.cpp index 7985355..42a8220 100644 --- a/src/rs2if.cpp +++ b/src/rs2if.cpp @@ -1,25 +1,15 @@ /***************************************************************************** -** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: rs2if.cpp,v 1.2 2000/06/07 07:43:19 kevin Exp $ -** $Log: rs2if.cpp,v $ -** Revision 1.2 2000/06/07 07:43:19 kevin -** Converted to IF data files and C++ -** -** Revision 1.1 2000/06/07 02:29:05 kevin -** Initial C++ versions +** FILE IDENTIFICATION ** -** Revision 1.3 2000/05/16 04:33:59 kevin -** Improved option processing -** -** Revision 1.2 2000/05/08 20:02:32 kevin -** ANSI C changes -** -** Revision 1.1.1.1 2000/04/28 13:02:44 kevin -** Initial CVS import for first public release +** Name: rs2if.cpp +** Purpose: Convert an projection data file to an image file +** Programmer: Kevin Rosenberg +** Date Started: April 2000 ** +** This is part of the CTSim program +** Copyright (C) 1983-2000 Kevin Rosenberg ** +** $Id: rs2if.cpp,v 1.3 2000/06/08 16:43:10 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as