[cig-commits] r3949 - in long/3D/Gale/trunk/src/StgFEM: .
Discretisation/src
walter at geodynamics.org
walter at geodynamics.org
Thu Jul 6 02:08:19 PDT 2006
Author: walter
Date: 2006-07-06 02:08:19 -0700 (Thu, 06 Jul 2006)
New Revision: 3949
Modified:
long/3D/Gale/trunk/src/StgFEM/
long/3D/Gale/trunk/src/StgFEM/Discretisation/src/AnalyticSolution.c
long/3D/Gale/trunk/src/StgFEM/Discretisation/src/FeVariable.h
Log:
r665 at earth: boo | 2006-07-06 02:04:20 -0700
r658 at earth (orig r599): RobertTurnbull | 2006-07-02 06:15:05 -0700
Adding some verbose output stuff to AnalyticSolution functions
If you want to print the values of the analytic field and the calculated for each node then
set analyticSolutionVerbose as true in your input file or on the command line (i.e. --analyticSolutionVerbose=True)
Property changes on: long/3D/Gale/trunk/src/StgFEM
___________________________________________________________________
Name: svk:merge
- 38867592-cf10-0410-9e16-a142ea72ac34:/cig:664
db209038-57f2-0310-97fa-b160e0ae9d04:/trunk:598
+ 38867592-cf10-0410-9e16-a142ea72ac34:/cig:665
db209038-57f2-0310-97fa-b160e0ae9d04:/trunk:599
Modified: long/3D/Gale/trunk/src/StgFEM/Discretisation/src/AnalyticSolution.c
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/Discretisation/src/AnalyticSolution.c 2006-07-06 09:08:03 UTC (rev 3948)
+++ long/3D/Gale/trunk/src/StgFEM/Discretisation/src/AnalyticSolution.c 2006-07-06 09:08:19 UTC (rev 3949)
@@ -108,7 +108,7 @@
return self;
}
-void _AnalyticSolution_Init( AnalyticSolution* self, Swarm* integrationSwarm, LiveComponentRegister* LC_Register, AbstractContext* context ) {
+void _AnalyticSolution_Init( AnalyticSolution* self, Swarm* integrationSwarm, LiveComponentRegister* LC_Register, AbstractContext* context, Bool verboseMode ) {
self->LC_Register = LC_Register;
self->integrationSwarm = integrationSwarm;
self->context = context;
@@ -125,6 +125,11 @@
_AnalyticSolution_Initialise, self );
EP_AppendClassHook( Context_GetEntryPoint( context, AbstractContext_EP_DumpClass ),
AnalyticSolution_TestAll, self );
+
+ if ( verboseMode ) {
+ Stream* infoStream = Journal_MyStream( Info_Type, self );
+ Stream_SetLevel( infoStream, 2 );
+ }
}
void _AnalyticSolution_Delete( void* analyticSolution ) {
@@ -161,11 +166,13 @@
AnalyticSolution* self = (AnalyticSolution*)analyticSolution;
AbstractContext* context;
Swarm* integrationSwarm;
+ Bool verboseMode;
context = Stg_ComponentFactory_ConstructByName( cf, "context", AbstractContext, True );
integrationSwarm = Stg_ComponentFactory_ConstructByName( cf, "gaussSwarm", Swarm, True );
+ verboseMode = Stg_ComponentFactory_GetRootDictBool( cf, "analyticSolutionVerbose", False );
- _AnalyticSolution_Init( self, integrationSwarm, cf->LCRegister, context );
+ _AnalyticSolution_Init( self, integrationSwarm, cf->LCRegister, context, verboseMode );
}
void _AnalyticSolution_Build( void* analyticSolution, void* data ) {
@@ -213,6 +220,8 @@
Dof_Index dofAtEachNodeCount;
Node_DomainIndex dNode_I;
double* value;
+ Stream* infoStream = Journal_MyStream( Info_Type, self );
+ FeVariable* feVariable;
/* Do some error checking */
assert( Stg_ObjectList_Count( self->analyticFeVariableList ) >= analyticFeVariable_I );
@@ -222,6 +231,7 @@
Stg_CheckType( Stg_ObjectList_At( self->analyticFeVariableList, analyticFeVariable_I ), FeVariable );
solutionFunction = (AnalyticSolution_FeVariableSolutionFunction*)
Stg_ObjectList_ObjectAt( self->analyticFeVariableFuncList, analyticFeVariable_I );
+ feVariable = AnalyticSolution_GetFeVariableFromAnalyticFeVariable( self, analyticFeVariable );
/* Get number of degrees of freedom at each node (assuming they are the same) */
dofAtEachNodeCount = analyticFeVariable->dofLayout->dofCounts[0];
@@ -237,6 +247,36 @@
/* Put value on node */
FeVariable_SetValueAtNode( analyticFeVariable, dNode_I, value );
+
+ /* Print verbose information */
+ if ( Stream_IsPrintableLevel( infoStream, 2 ) ) {
+ Dimension_Index dim = analyticFeVariable->dim;
+ Dimension_Index dim_I;
+ Dof_Index dof_I;
+
+ /* Print Coord */
+ Journal_Printf( infoStream, "Node = %u Coord ( ", dNode_I );
+ for ( dim_I = 0 ; dim_I < dim - 1 ; dim_I++ ) {
+ Journal_Printf( infoStream, "%g, ", coord[ dim_I ] );
+ }
+ Journal_Printf( infoStream, "%g ) ", coord[ dim_I ] );
+
+ /* Print Analytic Values */
+ Journal_Printf( infoStream, "%s ( ", analyticFeVariable->name );
+ for ( dof_I = 0 ; dof_I < dofAtEachNodeCount - 1 ; dof_I++ ) {
+ Journal_Printf( infoStream, "%g, ", value[ dof_I ] );
+ }
+ Journal_Printf( infoStream, "%g ) ", value[ dof_I ] );
+
+ /* Print FeVariable Values */
+ memset( value, 0, dofAtEachNodeCount * sizeof(double) );
+ FeVariable_GetValueAtNode( feVariable, dNode_I, value );
+ Journal_Printf( infoStream, "%s ( ", feVariable->name );
+ for ( dof_I = 0 ; dof_I < dofAtEachNodeCount - 1 ; dof_I++ ) {
+ Journal_Printf( infoStream, "%g, ", value[ dof_I ] );
+ }
+ Journal_Printf( infoStream, "%g )\n", value[ dof_I ] );
+ }
}
Memory_Free( value );
Modified: long/3D/Gale/trunk/src/StgFEM/Discretisation/src/FeVariable.h
===================================================================
--- long/3D/Gale/trunk/src/StgFEM/Discretisation/src/FeVariable.h 2006-07-06 09:08:03 UTC (rev 3948)
+++ long/3D/Gale/trunk/src/StgFEM/Discretisation/src/FeVariable.h 2006-07-06 09:08:19 UTC (rev 3949)
@@ -56,7 +56,7 @@
extern const Type FeVariable_Type;
typedef void (FeVariable_InterpolateWithinElementFunction) (void* fieldVariable, Element_DomainIndex dElement_I, Coord xi, double* value );
- typedef void (FeVariable_GetValueAtNodeFunction) (void* feVariable, Node_DomainIndex dElement_I, double* value );
+ typedef void (FeVariable_GetValueAtNodeFunction) (void* feVariable, Node_DomainIndex dNode_I, double* value );
/** FeVariable class contents */
#define __FeVariable \
@@ -237,7 +237,7 @@
/** Prints out the value at each DOF for this FeVariable */
void FeVariable_PrintLocalDiscreteValues( void* variable, Stream* stream );
- void _FeVariable_GetValueAtNode( void* feVariable, Node_LocalIndex lNode_I, double* value ) ;
+ void _FeVariable_GetValueAtNode( void* feVariable, Node_DomainIndex dNode_I, double* value ) ;
/* --- Public Functions --- */
More information about the cig-commits
mailing list