System Preprocessors
Data Structures | Defines | Functions
transform.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "petsc.h"
#include "sysprotransform.h"
#include "syspro_impl.h"

Go to the source code of this file.

Data Structures

struct  SalsaTransformObject_

Defines

#define TFINC   20
#define STRDUP(a)   ( (a) ? strdup(a) : NULL)

Functions

PetscErrorCode NewTransform (const char *name, SalsaTransform *tf)
PetscErrorCode DeregisterTransform (SalsaTransform tf)
PetscErrorCode TransformGetName (SalsaTransform tf, const char **name)
PetscErrorCode TransformGetObjects (SalsaTransform tf, int *n, SalsaTransformObject **objs)
PetscErrorCode NewTransformObject (const char *transform, const char *name, SalsaTransformObject *to)
PetscErrorCode FreeTransformObject (SalsaTransformObject tf)
PetscErrorCode TransformObjectGetName (SalsaTransformObject tf, const char **name)
PetscErrorCode TransformObjectSetExplanation (SalsaTransformObject tf, const char *x)
PetscErrorCode TransformObjectSetSuitabilityFunction (SalsaTransformObject tf, void *sctx, PetscErrorCode(*f)(NumericalProblem, void *, SuitabilityValue *))
PetscErrorCode TransformObjectGetSuitabilityFunction (SalsaTransformObject tf, void **sctx, PetscErrorCode(**f)(NumericalProblem, void *, SuitabilityValue *))
PetscErrorCode TransformObjectGetTransformName (SalsaTransformObject tf, char **name)
PetscErrorCode TransformObjectGetByName (const char *trans, const char *name, SalsaTransformObject *tf)
PetscErrorCode TransformObjectsGetNames (SalsaTransform tf, const char ***names)
PetscErrorCode SysProDefineCharAnnotation (const char *transform, const char *ann)
PetscErrorCode TransformCharAnnotationGetIndex (SalsaTransform tf, const char *ann, int *idx, PetscTruth *flg)
PetscErrorCode SysProDefineIntAnnotation (const char *transform, const char *ann)
PetscErrorCode TransformIntAnnotationGetIndex (SalsaTransform tf, const char *ann, int *idx, PetscTruth *flg)
PetscErrorCode TransformObjectMark (SalsaTransformObject tf)
PetscErrorCode TransformObjectUnmark (SalsaTransformObject tf)
PetscErrorCode TransformObjectsMarkAll (SalsaTransform tf)
PetscErrorCode TransformObjectsUnmarkAll (SalsaTransform tf)
PetscErrorCode TransformObjectGetMark (SalsaTransformObject tf, int *m)
PetscErrorCode TransformGetNUnmarked (SalsaTransform tf, int *n)
PetscErrorCode PreprocessorSaveAprioriSelection (SystemPreprocessor pp)
PetscErrorCode PreprocessorApplyAprioriSelection (SystemPreprocessor pp)
PetscErrorCode TransformObjectsUseOnly (SalsaTransform tf, const char *list)
PetscErrorCode TransformGetNextUnmarkedItem (SalsaTransform tf, const char *old, SalsaTransformObject *snew, PetscTruth *f)
PetscErrorCode TransformObjectDefineOption (SalsaTransformObject tf, const char *opt)
PetscErrorCode TransformObjectAddOption (SalsaTransformObject tf, int v)
PetscErrorCode TransformObjectAddOptionExplanation (SalsaTransformObject tf, int opt, const char *ex)
PetscErrorCode TransformItemOptionsUseOnly (SalsaTransformObject tf, const char *opt)
PetscErrorCode TransformItemGetFirstOption (const char *tf, const char *it, int *v, PetscTruth *f)
PetscErrorCode TransformItemGetNextOption (const char *tf, const char *it, int *v, PetscTruth *f)
PetscErrorCode TransformItemOptionMark (SalsaTransform tf, const char *it, int o)
PetscErrorCode TransformObjectCharAnnotate (SalsaTransformObject tf, const char *an, const char *v)
PetscErrorCode TransformObjectIntAnnotate (SalsaTransformObject tf, const char *an, int v)
PetscErrorCode TransformObjectGetIntAnnotation (SalsaTransformObject tf, const char *an, int *v, PetscTruth *f)
PetscErrorCode TransformReportTeXTable (SalsaTransform tf, FILE *f)
PetscErrorCode TransformReportEnabled (SalsaTransform tf, const char **rs)
PetscErrorCode TransformItemDescribeShort (SalsaTransform tf, char *it, int opt, char **s)
PetscErrorCode TransformItemDescribeLong (SalsaTransform tf, char *it, int opt, char **s)
PetscErrorCode TransformSetUserChoices (SalsaTransform tf, PetscTruth ch)
PetscErrorCode TransformGetUserChoices (SalsaTransform tf, PetscTruth *ch)
PetscErrorCode SetSuitabilityContextTester (SalsaTransform tf, PetscErrorCode(*f)(void *))
PetscErrorCode TestSuitabilityContext (SalsaTransform tf, void *ctx)
PetscErrorCode SalsaTransformIntegrityTest (SalsaTransform tf)

Define Documentation

#define STRDUP (   a)    ( (a) ? strdup(a) : NULL)

Definition at line 556 of file transform.c.

#define TFINC   20

Function Documentation

PetscErrorCode DeregisterTransform ( SalsaTransform  tf)
PetscErrorCode FreeTransformObject ( SalsaTransformObject  tf)
PetscErrorCode NewTransform ( const char *  name,
SalsaTransform tf 
)

Define a new class of preprocessors, for instance scaling or permutation.

Definition at line 45 of file transform.c.

References SalsaTransform_::alloc_objects, SalsaTransform_::aprioriselection, CHKERRQ(), SalsaTransform_::cookie, ierr, SalsaTransform_::n_objects, SalsaTransform_::name, TFINC, TRANSFORMCOOKIE, and SalsaTransform_::transformobjects.

Referenced by DeclarePreprocessor().

PetscErrorCode NewTransformObject ( const char *  transform,
const char *  name,
SalsaTransformObject to 
)

Create a transform object specified by name for the preprocessor class transform. The to parameter can be NULL if no further specifications of the object are needed, in which case this only registers the name.

Definition at line 109 of file transform.c.

References SalsaTransform_::alloc_objects, CHKERRQ(), SalsaTransformObject_::cookie, ierr, SalsaTransform_::n_objects, SalsaTransformObject_::name, SalsaTransformObject_::transform, TransformGetByName(), TRANSFORMOBJECTCOOKIE, and SalsaTransform_::transformobjects.

Referenced by declareadders(), setup_approximation_choices(), setup_distribution_choices(), setup_flipsign_choices(), setup_ksp_choices(), setup_pc_choices(), setup_scaling_choices(), and setup_singleton_choices().

PetscErrorCode PreprocessorApplyAprioriSelection ( SystemPreprocessor  pp)
PetscErrorCode PreprocessorSaveAprioriSelection ( SystemPreprocessor  pp)
PetscErrorCode SalsaTransformIntegrityTest ( SalsaTransform  tf)
PetscErrorCode SetSuitabilityContextTester ( SalsaTransform  tf,
PetscErrorCode(*)(void *)  f 
)

Definition at line 884 of file transform.c.

References CHECKVALIDTRANSFORM, and SalsaTransform_::suitabilityctxtester.

Referenced by setup_ksp_choices().

PetscErrorCode SysProDefineCharAnnotation ( const char *  transform,
const char *  ann 
)

Define a character string annotation for a transform. The index of this annotation can be retrieved with TransformCharAnnotationGetIndex(). The actual annotation can be found with TransformItemGetCharAnnotation().

Definition at line 276 of file transform.c.

References SalsaTransform_::annotations_c, CHKERRQ(), ierr, SalsaTransform_::n_annotate_c, TFINC, and TransformGetByName().

Referenced by setup_ksp_choices().

PetscErrorCode SysProDefineIntAnnotation ( const char *  transform,
const char *  ann 
)

Define a integer string annotation for a transform. The index of this annotation can be retrieved with TransformIntAnnotationGetIndex(). The actual annotation can be found with TransformItemGetIntAnnotation().

Definition at line 332 of file transform.c.

References SalsaTransform_::annotations_i, CHKERRQ(), ierr, SalsaTransform_::n_annotate_i, TFINC, and TransformGetByName().

Referenced by setup_distribution_choices(), setup_ksp_choices(), setup_pc_choices(), and setup_scaling_choices().

PetscErrorCode TestSuitabilityContext ( SalsaTransform  tf,
void *  ctx 
)
PetscErrorCode TransformCharAnnotationGetIndex ( SalsaTransform  tf,
const char *  ann,
int *  idx,
PetscTruth *  flg 
)
PetscErrorCode TransformGetName ( SalsaTransform  tf,
const char **  name 
)

Definition at line 81 of file transform.c.

References CHECKVALIDTRANSFORM, and SalsaTransform_::name.

PetscErrorCode TransformGetNextUnmarkedItem ( SalsaTransform  tf,
const char *  old,
SalsaTransformObject snew,
PetscTruth *  f 
)

Find the next unmarked value; if old is NULL, the first first unmarked value is given, otherwise the first one after a match with old.

Definition at line 527 of file transform.c.

References CHECKVALIDTRANSFORM, CHECKVALIDTRANSFORMOBJECT, SalsaTransformObject_::marked, SalsaTransform_::n_objects, SalsaTransformObject_::name, SalsaTransform_::transformobjects, and TRUTH.

Referenced by ChooseFirstTransform(), PreprocessedSolution(), and PreprocessorsOptionsHandling().

PetscErrorCode TransformGetNUnmarked ( SalsaTransform  tf,
int *  n 
)
PetscErrorCode TransformGetObjects ( SalsaTransform  tf,
int *  n,
SalsaTransformObject **  objs 
)
PetscErrorCode TransformGetUserChoices ( SalsaTransform  tf,
PetscTruth *  ch 
)

Query whether the user has ordained which choice(s) to take for a specific transform. The values of these choices are implicitly given by disabling some transforms.

See also TransformSetUserChoices(), TransformObjectsUseOnly().

Definition at line 874 of file transform.c.

References CHECKVALIDTRANSFORM, and SalsaTransform_::userchoices.

Referenced by PreprocessedSolution().

PetscErrorCode TransformIntAnnotationGetIndex ( SalsaTransform  tf,
const char *  ann,
int *  idx,
PetscTruth *  flg 
)
PetscErrorCode TransformItemDescribeLong ( SalsaTransform  tf,
char *  it,
int  opt,
char **  s 
)
PetscErrorCode TransformItemDescribeShort ( SalsaTransform  tf,
char *  it,
int  opt,
char **  s 
)
PetscErrorCode TransformItemGetFirstOption ( const char *  tf,
const char *  it,
int *  v,
PetscTruth *  f 
)
PetscErrorCode TransformItemGetNextOption ( const char *  tf,
const char *  it,
int *  v,
PetscTruth *  f 
)
PetscErrorCode TransformItemOptionMark ( SalsaTransform  tf,
const char *  it,
int  o 
)
PetscErrorCode TransformItemOptionsUseOnly ( SalsaTransformObject  tf,
const char *  opt 
)
PetscErrorCode TransformObjectAddOption ( SalsaTransformObject  tf,
int  v 
)
PetscErrorCode TransformObjectAddOptionExplanation ( SalsaTransformObject  tf,
int  opt,
const char *  ex 
)
PetscErrorCode TransformObjectCharAnnotate ( SalsaTransformObject  tf,
const char *  an,
const char *  v 
)
PetscErrorCode TransformObjectDefineOption ( SalsaTransformObject  tf,
const char *  opt 
)
PetscErrorCode TransformObjectGetByName ( const char *  trans,
const char *  name,
SalsaTransformObject tf 
)
PetscErrorCode TransformObjectGetIntAnnotation ( SalsaTransformObject  tf,
const char *  an,
int *  v,
PetscTruth *  f 
)
PetscErrorCode TransformObjectGetMark ( SalsaTransformObject  tf,
int *  m 
)

Definition at line 438 of file transform.c.

References CHECKVALIDTRANSFORMOBJECT, and SalsaTransformObject_::marked.

Referenced by TransformReportEnabled().

PetscErrorCode TransformObjectGetName ( SalsaTransformObject  tf,
const char **  name 
)
PetscErrorCode TransformObjectGetSuitabilityFunction ( SalsaTransformObject  tf,
void **  sctx,
PetscErrorCode(**)(NumericalProblem, void *, SuitabilityValue *)  f 
)

Retrieve the suitability function and context; see Suitability functions. Both arguments can be null.

See also TransformObjectSetSuitabilityFunction().

Definition at line 210 of file transform.c.

References CHECKVALIDTRANSFORMOBJECT, SalsaTransformObject_::suitabilityctx, and SalsaTransformObject_::suitabilityfunction.

Referenced by PreprocessorSpecificSetup(), SalsaTransformIntegrityTest(), and unset_ksps().

PetscErrorCode TransformObjectGetTransformName ( SalsaTransformObject  tf,
char **  name 
)
PetscErrorCode TransformObjectIntAnnotate ( SalsaTransformObject  tf,
const char *  an,
int  v 
)
PetscErrorCode TransformObjectMark ( SalsaTransformObject  tf)
PetscErrorCode TransformObjectSetExplanation ( SalsaTransformObject  tf,
const char *  x 
)
PetscErrorCode TransformObjectSetSuitabilityFunction ( SalsaTransformObject  tf,
void *  sctx,
PetscErrorCode(*)(NumericalProblem, void *, SuitabilityValue *)  f 
)
PetscErrorCode TransformObjectsGetNames ( SalsaTransform  tf,
const char ***  names 
)

Get the names of all declared transformobjects. An array is allocated for the names, which needs to be PetscFree()'d.

Definition at line 255 of file transform.c.

References CHECKVALIDTRANSFORM, CHKERRQ(), ierr, SalsaTransform_::n_objects, SalsaTransformObject_::name, and SalsaTransform_::transformobjects.

Referenced by ContinueRetrievingAllPreprocessors(), and TransformReportEnabled().

PetscErrorCode TransformObjectsMarkAll ( SalsaTransform  tf)
PetscErrorCode TransformObjectsUnmarkAll ( SalsaTransform  tf)
PetscErrorCode TransformObjectsUseOnly ( SalsaTransform  tf,
const char *  list 
)

Mark a list of names as to be used.

Cases:

  • "name1,name2,name3" : all other names are marked as not to be used
  • "not,name1,name2" : all names will be used, except for the ones listed

Definition at line 494 of file transform.c.

References CHECKVALIDTRANSFORM, CHKERRQ(), ierr, SalsaTransform_::name, TransformObjectGetByName(), TransformObjectMark(), TransformObjectsMarkAll(), TransformObjectsUnmarkAll(), and TransformObjectUnmark().

Referenced by PreprocessorsOptionsHandling().

PetscErrorCode TransformObjectUnmark ( SalsaTransformObject  tf)
PetscErrorCode TransformReportEnabled ( SalsaTransform  tf,
const char **  rs 
)
PetscErrorCode TransformReportTeXTable ( SalsaTransform  tf,
FILE *  f 
)
PetscErrorCode TransformSetUserChoices ( SalsaTransform  tf,
PetscTruth  ch 
)

Declare that the user has ordained which choice(s) to take for a specific transform. The values of these choices are implicitly given by disabling some transforms.

See also TransformGetUserChoices(), TransformObjectsUseOnly().

Definition at line 858 of file transform.c.

References CHECKVALIDTRANSFORM, and SalsaTransform_::userchoices.

Referenced by PreprocessorsOptionsHandling().