[cig-commits] r15648 - long/3D/SNAC/trunk/Snac/plugins/conditionFunctions

echoi at geodynamics.org echoi at geodynamics.org
Fri Sep 4 10:14:16 PDT 2009


Author: echoi
Date: 2009-09-04 10:14:16 -0700 (Fri, 04 Sep 2009)
New Revision: 15648

Modified:
   long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/Register.c
   long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/SnacCondFunc_ElementCondFunc.c
   long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/SnacCondFunc_ElementCondFunc.h
Log:
Added one more example of element condition function that assignes phase index to each element. Details will be added to the manual with a walkthrough for adding a new function.


Modified: long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/Register.c
===================================================================
--- long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/Register.c	2009-09-04 16:59:34 UTC (rev 15647)
+++ long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/Register.c	2009-09-04 17:14:16 UTC (rev 15648)
@@ -75,6 +75,9 @@
 			ConditionFunction_New(_SnacCondFunc_AssignPhaseID,"SnacCF_AssignPhaseID" ) );
 	ConditionFunction_Register_Add(
 			context->condFunc_Register,
+			ConditionFunction_New(_SnacCondFunc_DeadSea,"SnacCF_DeadSea" ) );
+	ConditionFunction_Register_Add(
+			context->condFunc_Register,
 			ConditionFunction_New( _SnacCondFunc_MaxwellBenchmark,"SnacCF_MaxwellBenchmark" ) );
 	ConditionFunction_Register_Add(
 			context->condFunc_Register,

Modified: long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/SnacCondFunc_ElementCondFunc.c
===================================================================
--- long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/SnacCondFunc_ElementCondFunc.c	2009-09-04 16:59:34 UTC (rev 15647)
+++ long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/SnacCondFunc_ElementCondFunc.c	2009-09-04 17:14:16 UTC (rev 15648)
@@ -67,3 +67,42 @@
 	else
 		(*material_I) = 0;
 }
+
+void _SnacCondFunc_DeadSea( Index element_lI, Variable_Index var_I, void* _context, void* result ){
+	Snac_Context*		context = (Snac_Context*)_context;
+	Snac_Element*		element = Snac_Element_At( context, element_lI );
+	Material_Index*		material_I = (Material_Index*)result;
+	
+	/* Stuff for convenience */
+	Mesh*				mesh = context->mesh;
+	MeshLayout*			layout = (MeshLayout*)mesh->layout;
+	HexaMD*				decomp = (HexaMD*)layout->decomp;
+	IJK				ijk;
+    	Element_GlobalIndex		global_I_range = decomp->elementGlobal3DCounts[0];
+    	Element_GlobalIndex		global_K_range = decomp->elementGlobal3DCounts[2];
+
+	Element_GlobalIndex		element_gI = _MeshDecomp_Element_LocalToGlobal1D( decomp, element_lI );
+        unsigned int			matID=0, tetra_I;	
+
+	RegularMeshUtils_Element_1DTo3D( decomp, element_gI, &ijk[0], &ijk[1], &ijk[2] );
+
+	if( (ijk[0] < (global_I_range-ijk[2])) &&
+		(ijk[2] < global_K_range/4) )
+		matID=1;
+	if((ijk[0]==(global_I_range-ijk[2]-1)) &&
+		(ijk[2] < (global_K_range/4)) )
+		matID=2;
+	if( (ijk[0]==global_I_range/2) &&
+		(ijk[2]>=global_K_range/4) )
+		matID=2;
+	if( ((ijk[0]>=global_I_range/2)&&(ijk[0]<=global_I_range*3/4))
+		&&
+		(ijk[2]==global_K_range/4) )
+		matID=2;
+
+	(*material_I)=matID;
+
+	for( tetra_I = 0; tetra_I < Tetrahedra_Count; tetra_I++ ) {
+		element->tetra[tetra_I].material_I=matID;
+	}
+}

Modified: long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/SnacCondFunc_ElementCondFunc.h
===================================================================
--- long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/SnacCondFunc_ElementCondFunc.h	2009-09-04 16:59:34 UTC (rev 15647)
+++ long/3D/SNAC/trunk/Snac/plugins/conditionFunctions/SnacCondFunc_ElementCondFunc.h	2009-09-04 17:14:16 UTC (rev 15648)
@@ -47,4 +47,9 @@
 		void*				context, 
 		void*				result );
 
+	void _SnacCondFunc_DeadSea( 
+		Element_LocalIndex		element_lI, 
+		Variable_Index			var_I, 
+		void*				context, 
+		void*				result );
 #endif



More information about the CIG-COMMITS mailing list