[cig-commits] r19744 - in long/3D/SNAC/trunk/Snac/plugins: plastic_BI remesher_BI

echoi at geodynamics.org echoi at geodynamics.org
Thu Mar 8 11:09:06 PST 2012


Author: echoi
Date: 2012-03-08 11:09:06 -0800 (Thu, 08 Mar 2012)
New Revision: 19744

Modified:
   long/3D/SNAC/trunk/Snac/plugins/plastic_BI/Remesh.c
   long/3D/SNAC/trunk/Snac/plugins/remesher_BI/RemeshElements.c
   long/3D/SNAC/trunk/Snac/plugins/remesher_BI/makefile
Log:
Minor changes in the code and GSL dependency removed from makefile.


Modified: long/3D/SNAC/trunk/Snac/plugins/plastic_BI/Remesh.c
===================================================================
--- long/3D/SNAC/trunk/Snac/plugins/plastic_BI/Remesh.c	2012-03-08 19:01:49 UTC (rev 19743)
+++ long/3D/SNAC/trunk/Snac/plugins/plastic_BI/Remesh.c	2012-03-08 19:09:06 UTC (rev 19744)
@@ -58,9 +58,9 @@
 	Snac_Element*				element = (Snac_Element*)ExtensionManager_At( context->mesh->elementExtensionMgr, 
 											dstElements, 
 											dstEltInd );
-	SnacPlastic_Element*	elementExt = ExtensionManager_Get( context->mesh->elementExtensionMgr, 
-									   element, 
-									   SnacPlastic_ElementHandle );
+	SnacPlastic_Element*		elementExt = ExtensionManager_Get( context->mesh->elementExtensionMgr, 
+												element, 
+									 			SnacPlastic_ElementHandle );
 	Element_DomainIndex 		eltdI[8],eldI,eldJ,eldK;
 	Index 						coef_I;
 	Element_DomainIndex			neldI =  decomp->elementDomain3DCounts[0];
@@ -85,27 +85,54 @@
 		eldJ = (((srcEltInd-eldI)/neldI) % neldJ);
 		eldK = ((srcEltInd-eldI-eldJ*neldI)/(neldI*neldJ));
 
-	/* Eight-node hex defined on the old barycenter grid. */
-	eltdI[0] = eldI     + eldJ*neldI     + eldK*neldI*neldJ;
-	eltdI[1] = (eldI+1) + eldJ*neldI     + eldK*neldI*neldJ;
-	eltdI[2] = (eldI+1) + (eldJ+1)*neldI + eldK*neldI*neldJ;
-	eltdI[3] = eldI     + (eldJ+1)*neldI + eldK*neldI*neldJ;
-	eltdI[4] = eldI     + eldJ*neldI     + (eldK+1)*neldI*neldJ;
-	eltdI[5] = (eldI+1) + eldJ*neldI     + (eldK+1)*neldI*neldJ;
-	eltdI[6] = (eldI+1) + (eldJ+1)*neldI + (eldK+1)*neldI*neldJ;
-	eltdI[7] = eldI     + (eldJ+1)*neldI + (eldK+1)*neldI*neldJ;
-
-	elementExt->plasticStrain[dstTetInd] = 0.0;
-	for(coef_I=0;coef_I<4;coef_I++) {
-		/* The actual src elements are the four apexes of a tet (srcTetInd) in the old barycenter grid. */
-		Snac_Element* 			srcElt = Snac_Element_At( context, 
-														  meshExt->orderedToDomain[eltdI[TetraToNode[srcTetInd][coef_I]]] );
-		SnacPlastic_Element*	srcEltExt = ExtensionManager_Get(
-													context->mesh->elementExtensionMgr,
-													srcElt,
-													SnacPlastic_ElementHandle );
-		/* Weights are associated only with destination element but not on the tet level. 
-		   So, "dstTetInd" is used in both source and destination terms. */
-		elementExt->plasticStrain[dstTetInd] += meshExt->barcord[dstEltInd].L[coef_I]*srcEltExt->plasticStrain[dstTetInd];
+		/* Eight-node hex defined on the old barycenter grid. */
+		eltdI[0] = eldI     + eldJ*neldI     + eldK*neldI*neldJ;
+		eltdI[1] = (eldI+1) + eldJ*neldI     + eldK*neldI*neldJ;
+		eltdI[2] = (eldI+1) + (eldJ+1)*neldI + eldK*neldI*neldJ;
+		eltdI[3] = eldI     + (eldJ+1)*neldI + eldK*neldI*neldJ;
+		eltdI[4] = eldI     + eldJ*neldI     + (eldK+1)*neldI*neldJ;
+		eltdI[5] = (eldI+1) + eldJ*neldI     + (eldK+1)*neldI*neldJ;
+		eltdI[6] = (eldI+1) + (eldJ+1)*neldI + (eldK+1)*neldI*neldJ;
+		eltdI[7] = eldI     + (eldJ+1)*neldI + (eldK+1)*neldI*neldJ;
+		
+		elementExt->plasticStrain[dstTetInd] = 0.0;
+		for(coef_I=0;coef_I<4;coef_I++) {
+			/* The actual src elements are the four apexes of a tet (srcTetInd) in the old barycenter grid. */
+			Snac_Element* 			srcElt = Snac_Element_At( context, 
+															  meshExt->orderedToDomain[eltdI[TetraToNode[srcTetInd][coef_I]]] );
+			SnacPlastic_Element*	srcEltExt = ExtensionManager_Get(
+																	 context->mesh->elementExtensionMgr,
+																	 srcElt,
+																	 SnacPlastic_ElementHandle );
+			/* Weights are associated only with destination element but not on the tet level. 
+			   So, "dstTetInd" is used in both source and destination terms. */
+			elementExt->plasticStrain[dstTetInd] += meshExt->barcord[dstEltInd].L[coef_I]*srcEltExt->plasticStrain[dstTetInd];
+		}
+		break;
+	case xy:
+		/* Decompose srcEltInd into ijk indexes. */
+		eldI = (srcEltInd % neldI);
+		eldJ = (((srcEltInd-eldI)/neldI) % neldJ);
+		
+		/* Eight-node hex defined on the old barycenter grid. */
+		eltdI[0] = eldI     + eldJ*neldI;     
+		eltdI[1] = (eldI+1) + eldJ*neldI;
+		eltdI[2] = (eldI+1) + (eldJ+1)*neldI;
+		eltdI[3] = eldI     + (eldJ+1)*neldI;
+		
+		elementExt->plasticStrain[dstTetInd] = 0.0;
+		for(coef_I=0;coef_I<3;coef_I++) {
+			/* The actual src elements are the four apexes of a tet (srcTetInd) in the old barycenter grid. */
+			Snac_Element* 			srcElt = Snac_Element_At( context,
+															  meshExt->orderedToDomain[eltdI[TriToNode[srcTetInd][coef_I]]] );
+			SnacPlastic_Element*	srcEltExt = ExtensionManager_Get(
+																	 context->mesh->elementExtensionMgr,
+																	 srcElt,
+																	 SnacPlastic_ElementHandle );
+			/* Weights are associated only with destination element but not on the tet level.
+			   So, "dstTetInd" is used in both source and destination terms. */
+			elementExt->plasticStrain[dstTetInd] += meshExt->barcord[dstEltInd].L[coef_I]*srcEltExt->plasticStrain[dstTetInd];
+		}
+		break;
 	}
 }

Modified: long/3D/SNAC/trunk/Snac/plugins/remesher_BI/RemeshElements.c
===================================================================
--- long/3D/SNAC/trunk/Snac/plugins/remesher_BI/RemeshElements.c	2012-03-08 19:01:49 UTC (rev 19743)
+++ long/3D/SNAC/trunk/Snac/plugins/remesher_BI/RemeshElements.c	2012-03-08 19:09:06 UTC (rev 19744)
@@ -125,18 +125,20 @@
 	Snac_Context*			context = (Snac_Context*)_context;
 	Element_LocalIndex	element_lI;
 
-				/* if(context->rank==13) { */
-				/* 	fprintf(stderr,"Looking %d (ijk:%d/%d %d/%d %d/%d)\n",element_lI,ellI,nellI-1,ellJ,nellJ-1,ellK,nellK-1); */
-				/* 	fprintf(stderr,"           %d to %d/%d %d to %d/%d %d to %d/%d)\n",mindI,maxdI,neldI-1,mindJ,maxdJ,neldJ-1,mindK,maxdK,neldK-1); */
-				/* } */
-				for( eldK = mindK; eldK < maxdK; eldK++ ) {
-					for( eldJ = mindJ; eldJ < maxdJ; eldJ++ ) {
-						for( eldI = mindI; eldI < maxdI; eldI++ ) {
-							element_dI = eldI+eldJ*neldI+eldK*neldI*neldJ;
-							for(tet_I=0;tet_I<5;tet_I++) {
-								Index	coef_I;
-								double 	lambda[4];
-								double 	tol_error = 1e-12;
+	/* Update all the elements, and in the process work out this processor's minLengthScale */
+	for( element_lI = 0; element_lI < context->mesh->elementLocalCount; element_lI++ ) {
+		double elementMinLengthScale;
+		
+		KeyCall( context, context->updateElementK, Snac_UpdateElementMomentum_CallCast* )
+			( KeyHandle(context,context->updateElementK),
+			  context,
+			  element_lI,
+			  &elementMinLengthScale );
+		if( elementMinLengthScale < context->minLengthScale ) {
+			context->minLengthScale = elementMinLengthScale;
+		}
+	}
+}
 
 
 /*

Modified: long/3D/SNAC/trunk/Snac/plugins/remesher_BI/makefile
===================================================================
--- long/3D/SNAC/trunk/Snac/plugins/remesher_BI/makefile	2012-03-08 19:01:49 UTC (rev 19743)
+++ long/3D/SNAC/trunk/Snac/plugins/remesher_BI/makefile	2012-03-08 19:09:06 UTC (rev 19744)
@@ -48,6 +48,6 @@
 EXTERNAL_LIBS = -L${STGERMAIN_LIBDIR}  -lSnac -lStGermain 
 EXTERNAL_INCLUDES = -I${STGERMAIN_INCDIR}/StGermain -I${STGERMAIN_INCDIR} 
 
-packages = MPI XML MATH GSL
+packages = MPI XML MATH
 
 include ${PROJ_ROOT}/Makefile.vmake



More information about the CIG-COMMITS mailing list