mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4549 Add python method to get cell corners on a grid
Equivalent to GetCellCorners in Octave.
This commit is contained in:
@@ -101,6 +101,50 @@ grpc::Status RiaCellCenterStateHandler::assignReply( rips::CellCenters* reply )
|
||||
return Status( grpc::OUT_OF_RANGE, "We've reached the end. This is not an error but means transmission is finished" );
|
||||
}
|
||||
|
||||
void setCornerValues( rips::Vec3d* out, const cvf::Vec3d& in )
|
||||
{
|
||||
out->set_x( in.x() );
|
||||
out->set_y( in.y() );
|
||||
out->set_z( in.z() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
grpc::Status RiaCellCenterStateHandler::assignCornersReply( rips::CellCornersArray* reply )
|
||||
{
|
||||
const size_t packageSize = RiaGrpcServiceInterface::numberOfMessagesForByteCount( sizeof( rips::CellCornersArray ) );
|
||||
size_t packageIndex = 0u;
|
||||
reply->mutable_cells()->Reserve( (int)packageSize );
|
||||
|
||||
cvf::Vec3d cornerVerts[8];
|
||||
for ( ; packageIndex < packageSize && m_currentCellIdx < m_grid->cellCount(); ++packageIndex )
|
||||
{
|
||||
m_grid->cellCornerVertices( m_currentCellIdx, cornerVerts );
|
||||
for ( cvf::Vec3d& corner : cornerVerts )
|
||||
{
|
||||
convertVec3dToPositiveDepth( &corner );
|
||||
}
|
||||
|
||||
rips::CellCorners* corners = reply->add_cells();
|
||||
setCornerValues( corners->mutable_c0(), cornerVerts[0] );
|
||||
setCornerValues( corners->mutable_c1(), cornerVerts[1] );
|
||||
setCornerValues( corners->mutable_c2(), cornerVerts[2] );
|
||||
setCornerValues( corners->mutable_c3(), cornerVerts[3] );
|
||||
setCornerValues( corners->mutable_c4(), cornerVerts[4] );
|
||||
setCornerValues( corners->mutable_c5(), cornerVerts[5] );
|
||||
setCornerValues( corners->mutable_c6(), cornerVerts[6] );
|
||||
setCornerValues( corners->mutable_c7(), cornerVerts[7] );
|
||||
|
||||
m_currentCellIdx++;
|
||||
}
|
||||
if ( packageIndex > 0u )
|
||||
{
|
||||
return Status::OK;
|
||||
}
|
||||
return Status( grpc::OUT_OF_RANGE, "We've reached the end. This is not an error but means transmission is finished" );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -142,6 +186,17 @@ grpc::Status RiaGrpcGridService::GetCellCenters( grpc::ServerContext* cont
|
||||
return stateHandler->assignReply( reply );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
grpc::Status RiaGrpcGridService::GetCellCorners( grpc::ServerContext* context,
|
||||
const rips::GridRequest* request,
|
||||
rips::CellCornersArray* reply,
|
||||
RiaCellCenterStateHandler* stateHandler )
|
||||
{
|
||||
return stateHandler->assignCornersReply( reply );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -156,6 +211,11 @@ std::vector<RiaGrpcCallbackInterface*> RiaGrpcGridService::createCallbacks()
|
||||
&Self::RequestGetCellCenters,
|
||||
new RiaCellCenterStateHandler ),
|
||||
|
||||
new RiaGrpcServerToClientStreamCallback<Self, GridRequest, CellCornersArray, RiaCellCenterStateHandler>( this,
|
||||
&Self::GetCellCorners,
|
||||
&Self::RequestGetCellCorners,
|
||||
new RiaCellCenterStateHandler ),
|
||||
|
||||
new RiaGrpcUnaryCallback<Self, GridRequest, GridDimensions>( this, &Self::GetDimensions, &Self::RequestGetDimensions )};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user