Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "autoLayerDriver.H"
00027 #include <OpenFOAM/syncTools.H>
00028
00029
00030
00031 template<class Type>
00032 void Foam::autoLayerDriver::averageNeighbours
00033 (
00034 const polyMesh& mesh,
00035 const PackedBoolList& isMasterEdge,
00036 const labelList& meshEdges,
00037 const labelList& meshPoints,
00038 const edgeList& edges,
00039 const scalarField& invSumWeight,
00040 const Field<Type>& data,
00041 Field<Type>& average
00042 )
00043 {
00044 average = pTraits<Type>::zero;
00045
00046 forAll(edges, edgeI)
00047 {
00048 if (isMasterEdge.get(meshEdges[edgeI]) == 1)
00049 {
00050 const edge& e = edges[edgeI];
00051
00052 scalar eWeight = 1.0;
00053 label v0 = e[0];
00054 label v1 = e[1];
00055
00056 average[v0] += eWeight*data[v1];
00057 average[v1] += eWeight*data[v0];
00058 }
00059 }
00060
00061 syncTools::syncPointList
00062 (
00063 mesh,
00064 meshPoints,
00065 average,
00066 plusEqOp<Type>(),
00067 pTraits<Type>::zero,
00068 false
00069 );
00070
00071 average *= invSumWeight;
00072 }
00073
00074
00075