mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Added flag to control how to do IO with sockets
This commit is contained in:
parent
343dba02f8
commit
7a07b2926e
@ -60,6 +60,7 @@ RiaPreferences::RiaPreferences(void)
|
|||||||
CAF_PDM_InitField(&autocomputeDepthRelatedProperties,"autocomputeDepth", true, "DEPTH related properties", "", "DEPTH, DX, DY, DZ, TOP, BOTTOM", "");
|
CAF_PDM_InitField(&autocomputeDepthRelatedProperties,"autocomputeDepth", true, "DEPTH related properties", "", "DEPTH, DX, DY, DZ, TOP, BOTTOM", "");
|
||||||
|
|
||||||
CAF_PDM_InitField(&readFaultData, "readFaultData", true, "Read fault data", "", "", "");
|
CAF_PDM_InitField(&readFaultData, "readFaultData", true, "Read fault data", "", "", "");
|
||||||
|
CAF_PDM_InitField(&useStreamTransfer, "useStreamTransfer", true, "Use stream transfer to Octave", "", "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -60,6 +60,8 @@ public: // Pdm Fields
|
|||||||
|
|
||||||
caf::PdmField<bool> readFaultData;
|
caf::PdmField<bool> readFaultData;
|
||||||
|
|
||||||
|
caf::PdmField<bool> useStreamTransfer;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
|
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
|
||||||
|
|
||||||
|
@ -34,6 +34,8 @@
|
|||||||
#include "RigCaseCellResultsData.h"
|
#include "RigCaseCellResultsData.h"
|
||||||
|
|
||||||
#include <QTcpSocket>
|
#include <QTcpSocket>
|
||||||
|
#include "RiaApplication.h"
|
||||||
|
#include "RiaPreferences.h"
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -241,32 +243,66 @@ public:
|
|||||||
// dv(3) = 8;
|
// dv(3) = 8;
|
||||||
// dv(4) = 3;
|
// dv(4) = 3;
|
||||||
|
|
||||||
std::vector<double> cellCornerValues(doubleValueCount);
|
cvf::Timer timer;
|
||||||
cvf::Vec3d cornerVerts[8];
|
|
||||||
quint64 coordCount = 0;
|
if (RiaApplication::instance()->preferences()->useStreamTransfer())
|
||||||
for (int coordIdx = 0; coordIdx < 3; coordIdx++)
|
|
||||||
{
|
{
|
||||||
for (size_t cornerIdx = 0; cornerIdx < 8; cornerIdx++)
|
cvf::Vec3d cornerVerts[8];
|
||||||
|
for (int coordIdx = 0; coordIdx < 3; coordIdx++)
|
||||||
{
|
{
|
||||||
size_t cornerIndexMapping = cellCornerMappingEclipse[cornerIdx];
|
for (size_t cornerIdx = 0; cornerIdx < 8; cornerIdx++)
|
||||||
|
|
||||||
for (size_t k = 0; k < cellCountK; k++)
|
|
||||||
{
|
{
|
||||||
for (size_t j = 0; j < cellCountJ; j++)
|
size_t cornerIndexMapping = cellCornerMappingEclipse[cornerIdx];
|
||||||
{
|
|
||||||
for (size_t i = 0; i < cellCountI; i++)
|
|
||||||
{
|
|
||||||
size_t localCellIdx = rigGrid->cellIndexFromIJK(i, j, k);
|
|
||||||
rigGrid->cellCornerVertices(localCellIdx, cornerVerts);
|
|
||||||
|
|
||||||
cellCornerValues[coordCount++] = cornerVerts[cornerIndexMapping][coordIdx];
|
for (size_t k = 0; k < cellCountK; k++)
|
||||||
|
{
|
||||||
|
for (size_t j = 0; j < cellCountJ; j++)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < cellCountI; i++)
|
||||||
|
{
|
||||||
|
size_t localCellIdx = rigGrid->cellIndexFromIJK(i, j, k);
|
||||||
|
rigGrid->cellCornerVertices(localCellIdx, cornerVerts);
|
||||||
|
|
||||||
|
socketStream << cornerVerts[cornerIndexMapping][coordIdx];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::vector<double> cellCornerValues(doubleValueCount);
|
||||||
|
cvf::Vec3d cornerVerts[8];
|
||||||
|
quint64 coordCount = 0;
|
||||||
|
for (int coordIdx = 0; coordIdx < 3; coordIdx++)
|
||||||
|
{
|
||||||
|
for (size_t cornerIdx = 0; cornerIdx < 8; cornerIdx++)
|
||||||
|
{
|
||||||
|
size_t cornerIndexMapping = cellCornerMappingEclipse[cornerIdx];
|
||||||
|
|
||||||
server->currentClient()->write((const char *)cellCornerValues.data(), byteCount);
|
for (size_t k = 0; k < cellCountK; k++)
|
||||||
|
{
|
||||||
|
for (size_t j = 0; j < cellCountJ; j++)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < cellCountI; i++)
|
||||||
|
{
|
||||||
|
size_t localCellIdx = rigGrid->cellIndexFromIJK(i, j, k);
|
||||||
|
rigGrid->cellCornerVertices(localCellIdx, cornerVerts);
|
||||||
|
|
||||||
|
cellCornerValues[coordCount++] = cornerVerts[cornerIndexMapping][coordIdx];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
server->currentClient()->write((const char *)cellCornerValues.data(), byteCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
double totalTimeMS = timer.time() * 1000.0;
|
||||||
|
QString resultInfo = QString("Total time '%1 ms'").arg(totalTimeMS);
|
||||||
|
|
||||||
|
server->errorMessageDialog()->showMessage(resultInfo);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,8 @@
|
|||||||
#include "Rim3dOverlayInfoConfig.h"
|
#include "Rim3dOverlayInfoConfig.h"
|
||||||
|
|
||||||
#include <QTcpSocket>
|
#include <QTcpSocket>
|
||||||
|
#include "RiaApplication.h"
|
||||||
|
#include "RiaPreferences.h"
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -305,30 +307,61 @@ public:
|
|||||||
socketStream << timestepCount;
|
socketStream << timestepCount;
|
||||||
|
|
||||||
size_t valueIdx = 0;
|
size_t valueIdx = 0;
|
||||||
|
cvf::Timer timer;
|
||||||
std::vector<double> values(rigGrid->cellCount());
|
|
||||||
|
|
||||||
for (size_t tsIdx = 0; tsIdx < timestepCount; tsIdx++)
|
if (RiaApplication::instance()->preferences()->useStreamTransfer())
|
||||||
{
|
{
|
||||||
cvf::ref<cvf::StructGridScalarDataAccess> cellCenterDataAccessObject = rimCase->reservoirData()->dataAccessObject(rigGrid, porosityModelEnum, requestedTimesteps[tsIdx], scalarResultIndex);
|
for (size_t tsIdx = 0; tsIdx < timestepCount; tsIdx++)
|
||||||
if (cellCenterDataAccessObject.isNull())
|
|
||||||
{
|
{
|
||||||
continue;
|
cvf::ref<cvf::StructGridScalarDataAccess> cellCenterDataAccessObject = rimCase->reservoirData()->dataAccessObject(rigGrid, porosityModelEnum, requestedTimesteps[tsIdx], scalarResultIndex);
|
||||||
}
|
if (cellCenterDataAccessObject.isNull())
|
||||||
|
|
||||||
for (size_t cellIdx = 0; cellIdx < rigGrid->cellCount(); cellIdx++)
|
|
||||||
{
|
|
||||||
double cellValue = cellCenterDataAccessObject->cellScalar(cellIdx);
|
|
||||||
if (cellValue == HUGE_VAL)
|
|
||||||
{
|
{
|
||||||
cellValue = 0.0;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t cellIdx = 0; cellIdx < rigGrid->cellCount(); cellIdx++)
|
||||||
|
{
|
||||||
|
double cellValue = cellCenterDataAccessObject->cellScalar(cellIdx);
|
||||||
|
if (cellValue == HUGE_VAL)
|
||||||
|
{
|
||||||
|
cellValue = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
socketStream << cellValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
std::vector<double> values(rigGrid->cellCount());
|
||||||
|
for (size_t tsIdx = 0; tsIdx < timestepCount; tsIdx++)
|
||||||
|
{
|
||||||
|
cvf::ref<cvf::StructGridScalarDataAccess> cellCenterDataAccessObject = rimCase->reservoirData()->dataAccessObject(rigGrid, porosityModelEnum, requestedTimesteps[tsIdx], scalarResultIndex);
|
||||||
|
if (cellCenterDataAccessObject.isNull())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t cellIdx = 0; cellIdx < rigGrid->cellCount(); cellIdx++)
|
||||||
|
{
|
||||||
|
double cellValue = cellCenterDataAccessObject->cellScalar(cellIdx);
|
||||||
|
if (cellValue == HUGE_VAL)
|
||||||
|
{
|
||||||
|
cellValue = 0.0;
|
||||||
|
}
|
||||||
|
values[valueIdx++] = cellValue;
|
||||||
}
|
}
|
||||||
values[cellIdx] = cellValue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
server->currentClient()->write((const char *)values.data(), rigGrid->cellCount() * sizeof(double));
|
server->currentClient()->write((const char *)values.data(), rigGrid->cellCount() * sizeof(double));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double totalTimeMS = timer.time() * 1000.0;
|
||||||
|
QString resultInfo = QString("Total time '%1 ms'").arg(totalTimeMS);
|
||||||
|
|
||||||
|
server->errorMessageDialog()->showMessage(resultInfo);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user