[cig-commits] [commit] rajesh-petsc: completed the implementation of p_to_nodes_petsc (53fbc9c)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Wed Aug 20 12:37:10 PDT 2014
Repository : https://github.com/geodynamics/citcoms
On branch : rajesh-petsc
Link : https://github.com/geodynamics/citcoms/compare/fb1839e7e93bc56eb542afd64b3db70f2df6a5d8...15e05e4d8d088429e89c42427a1392f428737625
>---------------------------------------------------------------
commit 53fbc9c11a28b3f5d6ea6ae15f957d6fdcdd01e3
Author: Rajesh Kommu <rajesh.kommu at gmail.com>
Date: Wed Aug 20 12:29:28 2014 -0700
completed the implementation of p_to_nodes_petsc
>---------------------------------------------------------------
53fbc9c11a28b3f5d6ea6ae15f957d6fdcdd01e3
lib/Nodal_mesh.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/lib/Nodal_mesh.c b/lib/Nodal_mesh.c
index 7ad63c7..e168d0b 100644
--- a/lib/Nodal_mesh.c
+++ b/lib/Nodal_mesh.c
@@ -214,7 +214,33 @@ void velo_from_element_d(E,VV,m,el,sphere_key)
PetscErrorCode p_to_nodes_petsc(struct All_variables *E,
Vec PVec, Vec PNVec, int lev )
{
+ PetscErrorCode ierr;
+ PetscScalar *P[2], *PN[2]; // 2 instead of NCS(=14) to save space
+ int e, element,node, j;
+
+ ierr = VecGetArray(PVec, &P[1]); CHKERRQ(ierr); --P[1];
+ ierr = VecGetArray(PNVec, &PN[1]); CHKERRQ(ierr); --PN[1];
+
+ for(node = 1; node <= E->lmesh.NNO[lev]; ++node )
+ PN[1][node] = 0.0;
+
+ for(element = 1; element <= E->lmesh.NEL[lev]; element++)
+ for(j = 1; j <= enodes[E->mesh.nsd]; j++)
+ {
+ node = E->IEN[lev][1][element].node[j];
+ PN[1][node] += P[1][element] * E->TWW[lev][1][element].node[j];
+ }
+
+ (E->exchange_node_f)(E, PN, lev);
+
+ for(node = 1; node <= E->lmesh.NNO[lev]; node++)
+ PN[1][node] *= E->MASS[lev][1][node];
+
+ ++P[1]; ierr = VecRestoreArray(PVec, &P[1]); CHKERRQ(ierr);
+ ++PN[1]; ierr = VecRestoreArray(PNVec, &PN[1]); CHKERRQ(ierr);
+
PetscFunctionReturn(0);
+
}
void p_to_nodes(E,P,PN,lev)
More information about the CIG-COMMITS
mailing list