Main Page | Files | Data Structures | Functions | Global Variables |
include/gpiv/gpiv-piv_par.h
Go to the documentation of this file.
00001 /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 c-style: "K&R" -*- */
00002 
00003 /*
00004    libgpiv - library for Particle Image Velocimetry
00005 
00006    Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Gerber van der Graaf
00007 
00008    This file is part of libgpiv.
00009 
00010    Libgpiv is free software; you can redistribute it and/or modify
00011    it under the terms of the GNU General Public License as published by
00012    the Free Software Foundation; either version 2, or (at your option)
00013    any later version.
00014 
00015    This program is distributed in the hope that it will be useful,
00016    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018    GNU General Public License for more details.
00019 
00020    You should have received a copy of the GNU General Public License
00021    along with this program; if not, write to the Free Software Foundation,
00022    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
00023 
00024 
00025 
00026 ------------------------------------------------------------------------------
00027 FILENAME:                piv_par.c
00028 LIBRARY:                 libgpiv
00029 EXTERNAL FUNCTIONS:      
00030                          gpiv_piv_parameters_set
00031                          gpiv_piv_default_parameters
00032                          gpiv_piv_get_parameters_from_resources
00033 
00034                          gpiv_piv_read_parameters
00035                          gpiv_piv_check_parameters_read
00036                  gpiv_piv_test_parameters
00037                          gpiv_piv_print_parameters
00038                          gpiv_piv_cp_parameters
00039                          gpiv_piv_cp_undef_parameters
00040                          gpiv_piv_fread_hdf5_parameters
00041                          gpiv_piv_fwrite_hdf5_parameters
00042 
00043 --------------------------------------------------------------------- */
00044 
00055 #ifndef __LIBGPIV_PIVPAR_H__
00056 #define __LIBGPIV_PIVPAR_H__
00057 
00058 /*-----------------------------------------------------------------------------
00059  * Parameters for Piv evaluation
00060  */
00061 
00062 #define GPIV_PIVPAR_KEY                      "PIV"           
00068 enum GpivIntScheme {
00069     GPIV_NO_CORR,
00070     GPIV_LK_WEIGHT,              
00071     GPIV_ZERO_OFF_FORWARD,       
00072     GPIV_ZERO_OFF_CENTRAL,       
00073     GPIV_IMG_DEFORM              
00074 };
00075 
00076 
00080 typedef struct __GpivPivPar GpivPivPar;
00081 
00091 struct __GpivPivPar {
00092     guint col_start;                    
00093     gboolean col_start__set;            
00095     guint col_end;                      
00096     gboolean col_end__set;              
00098     guint ifit;                         
00099     gboolean ifit__set;                 
00101     guint int_geo;                      
00102     gboolean int_geo__set;              
00104     guint int_line_col;                 
00105     gboolean int_line_col__set;         
00107     guint int_line_col_start;           
00108     gboolean int_line_col_start__set;   
00110     guint int_line_col_end;             
00111     gboolean int_line_col_end__set;     
00113     guint int_line_row;                 
00114     gboolean int_line_row__set;         
00116     guint int_line_row_start;           
00117     gboolean int_line_row_start__set;   
00119     guint int_line_row_end;             
00120     gboolean int_line_row_end__set;     
00122     guint int_point_col;                
00123     gboolean int_point_col__set;        
00125     guint int_point_row;                
00126     gboolean int_point_row__set;        
00128     guint int_size_f;                   
00129     gboolean int_size_f__set;           
00131     guint int_size_i;                   
00132     gboolean int_size_i__set;           
00134     gint int_shift;                     
00135     gboolean int_shift__set;            
00137     int int_deform;                     
00138     gboolean int_deform__set;           
00140     gint peak;                          
00141     gboolean peak__set;                 
00143     int pre_shift_col;                  
00144     gboolean pre_shift_col__set;        
00146     int pre_shift_row;                  
00147     gboolean pre_shift_row__set;        
00149     int print_par;                      
00150     gboolean print_par__set;            
00152     int print_piv;                      
00153     gboolean print_piv__set;            
00155     guint row_start;                    
00156     gboolean row_start__set;            
00158     guint row_end;                      
00159     gboolean row_end__set;              
00161     int spline_degree;                  
00162     gboolean spline_degree__set;        
00164     enum GpivIntScheme int_scheme;      
00165     gboolean int_scheme__set;           
00167     gboolean gauss_weight_ia;           
00168     gboolean gauss_weight_ia__set;      
00170     gboolean spof_filter;               
00171     gboolean spof_filter__set;          
00172 };
00173 
00174 
00175 /*
00176  * Function prototypes
00177  */
00178 
00188 void
00189 gpiv_piv_default_parameters     (GpivPivPar     *piv_par_default,
00190                     const gboolean      force
00191                     );
00192 
00193 
00194 
00203 GpivPivPar *
00204 gpiv_piv_get_parameters_from_resources  (const gchar        *localrc,
00205                                          const gboolean     verbose
00206                                          );
00207 
00208 
00209 
00217 void
00218 gpiv_piv_parameters_set         (GpivPivPar     *piv_par,
00219                     const gboolean      flag
00220                     );
00221 
00222 
00223 
00233 void 
00234 gpiv_piv_read_parameters        (FILE           *fp, 
00235                     GpivPivPar      *piv_par,
00236                     const gboolean      verbose
00237                     );
00238 
00239 
00240 
00251 gchar *
00252 gpiv_piv_check_parameters_read      (GpivPivPar             *piv_par,
00253                     const GpivPivPar    *piv_par_default
00254                     );
00255 
00256 
00257 
00266 gchar *
00267 gpiv_piv_testonly_parameters        (const GpivImagePar     *image_par, 
00268                     const GpivPivPar    *piv_par
00269                     );
00270 
00271 
00272 
00282 gchar *
00283 gpiv_piv_testadjust_parameters      (const GpivImagePar     *image_par, 
00284                     GpivPivPar      *piv_par
00285                     );
00286 
00287 
00288 
00297 void 
00298 gpiv_piv_print_parameters       (FILE                   *fp,
00299                     const GpivPivPar    *piv_par
00300                     );
00301 
00308 GpivPivPar *
00309 gpiv_piv_cp_parameters          (const GpivPivPar       *piv_par
00310                     );
00311 
00312 
00321 void
00322 gpiv_piv_cp_undef_parameters        (const GpivPivPar       *piv_par_src, 
00323                     GpivPivPar      *piv_par_dest
00324                     );
00325 
00326 
00333 GpivPivPar *
00334 gpiv_piv_fread_hdf5_parameters      (const gchar        *fname
00335                     );
00336 
00337 
00345 gchar *
00346 gpiv_piv_fwrite_hdf5_parameters         (const gchar            *fname,
00347                                          const GpivPivPar       *piv_par 
00348                                          );
00349 
00350 
00351 #ifdef ENABLE_MPI
00352 
00358 gchar *
00359 gpiv_piv_mpi_bcast_pivpar       (GpivPivPar     *piv_par);
00360 #endif /* ENABLE_MPI */
00361 #endif /* __LIBGPIV_PIVPAR_H__ */