Commit 5a7c2f58 authored by cyrush's avatar cyrush

added key_aggregate expression

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@6727 18c085ea-50e0-402c-830e-de6fd14e8384
parent a94c0630
This diff is collapsed.
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. The
* full copyright notice is contained in the file COPYRIGHT located at the root
* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the disclaimer (as noted below) in the
* documentation and/or other materials provided with the distribution.
* - Neither the name of the LLNS/LLNL nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
*****************************************************************************/
// ************************************************************************* //
// avtKeyAggregatorExpression.h //
// ************************************************************************* //
#ifndef AVT_KEY_AGGREGATOR_EXPRESSION_H
#define AVT_KEY_AGGREGATOR_EXPRESSION_H
#include <avtExpressionFilter.h>
class vtkIntArray;
class vtkFloatArray;
// ****************************************************************************
// Class: avtKeyAggregatorExpression
//
// Purpose:
// This expression allows an user to aggregate values by a set of
// contigious interger keys. The keys and values are cell fields passed
// to the expression.
//
//
// Programmer: Cyrus Harrison
// Creation: March 26, 2009
//
// Modifications:
//
// ****************************************************************************
class EXPRESSION_API avtKeyAggregatorExpression : public avtExpressionFilter
{
public:
avtKeyAggregatorExpression();
virtual ~avtKeyAggregatorExpression();
virtual void AddInputVariableName(const char *var);
virtual const char *GetType(void)
{ return "avtKeyAggregatorExpression"; };
virtual const char *GetDescription(void)
{return "Aggregating values per key.";};
virtual int NumVariableArguments() { return 2; };
virtual int GetVariableDimension();
virtual bool IsPointVariable(void) { return false; }
protected:
virtual void Execute(void);
private:
int FindMaxKey(vector<vtkIntArray*> &key_arrays);
void Aggregate(vector<vtkIntArray*> &key_arrays,
vector<vtkFloatArray*> &val_arrays,
int num_keys, int num_val_comps,
vector<float> &key_results);
vtkFloatArray *CreateResultArray(vtkIntArray *keys,
vector<float> &key_results,
int num_val_comps);
std::vector<std::string> inputVarNames;
};
#endif
......@@ -238,6 +238,9 @@
# Hank Childs, Mon Feb 16 07:34:34 PST 2009
# Added TimeIterators directory.
#
# Cyrus Harrison, Thu Mar 26 16:29:52 PDT 2009
# Added Key Aggregator Expression.
#
##############################################################################
@SET_MAKE@
......@@ -320,6 +323,7 @@ General_src= \
General/avtGeodesicVectorQuantizeExpression.C \
General/avtGradientExpression.C \
General/avtHSVColorComposeExpression.C \
General/avtKeyAggregatorExpression.C \
General/avtLaplacianExpression.C \
General/avtMIRvfExpression.C \
General/avtMatvfExpression.C \
......
......@@ -172,6 +172,7 @@
#include <avtApplyEnumerationExpression.h>
#include <avtConstantFunctionExpression.h>
#include <avtGeodesicVectorQuantizeExpression.h>
#include <avtKeyAggregatorExpression.h>
#include <stdio.h>
#include <ExpressionException.h>
......@@ -529,6 +530,9 @@ avtVectorExpr::CreateFilters(ExprPipelineState *state)
// Jeremy Meredith, Wed Mar 11 12:14:38 EDT 2009
// Added "cycle" and "timestep" expressions.
//
// Cyrus Harrison, Thu Mar 26 17:08:32 PDT 2009
// Added "key_aggregate" expression.
//
// ****************************************************************************
avtExpressionFilter *
......@@ -676,6 +680,8 @@ avtFunctionExpr::CreateFilters(string functionName)
g->SetAlgorithm(NODAL_TO_ZONAL_QUAD_HEX);
return g;
}
if (functionName == "key_aggregate" || functionName == "key_agg")
return new avtKeyAggregatorExpression;
if (functionName == "gradient")
return new avtGradientExpression();
if (functionName == "curl")
......
../../avt/Expressions/General/avtKeyAggregatorExpression.h
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment