mirror of
				https://github.com/OPM/ResInsight.git
				synced 2025-02-25 18:55:39 -06:00 
			
		
		
		
	Merge pull request #169 from OPM/octave-64-bit-investigation
Implemented workaround for Qt limitation of 2Gb data for socket transfer
This commit is contained in:
		@@ -699,7 +699,7 @@ bool RiaApplication::openInputEclipseCaseFromFileNames(const QStringList& fileNa
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RiaApplication::createMockModel()
 | 
			
		||||
{
 | 
			
		||||
    openEclipseCase("Result Mock Debug Model Simple", "Result Mock Debug Model Simple");
 | 
			
		||||
    openEclipseCase(RimDefines::mockModelBasic(), RimDefines::mockModelBasic());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
@@ -707,7 +707,7 @@ void RiaApplication::createMockModel()
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RiaApplication::createResultsMockModel()
 | 
			
		||||
{
 | 
			
		||||
    openEclipseCase("Result Mock Debug Model With Results", "Result Mock Debug Model With Results");
 | 
			
		||||
    openEclipseCase(RimDefines::mockModelBasicWithResults(), RimDefines::mockModelBasicWithResults());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -716,7 +716,16 @@ void RiaApplication::createResultsMockModel()
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RiaApplication::createLargeResultsMockModel()
 | 
			
		||||
{
 | 
			
		||||
    openEclipseCase("Result Mock Debug Model Large With Results", "Result Mock Debug Model Large With Results");
 | 
			
		||||
    openEclipseCase(RimDefines::mockModelLargeWithResults(), RimDefines::mockModelLargeWithResults());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RiaApplication::createMockModelCustomized()
 | 
			
		||||
{
 | 
			
		||||
    openEclipseCase(RimDefines::mockModelCustomized(), RimDefines::mockModelCustomized());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
@@ -724,7 +733,7 @@ void RiaApplication::createLargeResultsMockModel()
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RiaApplication::createInputMockModel()
 | 
			
		||||
{
 | 
			
		||||
    openInputEclipseCaseFromFileNames(QStringList("Input Mock Debug Model Simple"));
 | 
			
		||||
    openInputEclipseCaseFromFileNames(QStringList(RimDefines::mockModelBasicInputCase()));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
 
 | 
			
		||||
@@ -81,6 +81,7 @@ public:
 | 
			
		||||
    void                createMockModel();
 | 
			
		||||
    void                createResultsMockModel();
 | 
			
		||||
    void                createLargeResultsMockModel();
 | 
			
		||||
    void                createMockModelCustomized();
 | 
			
		||||
    void                createInputMockModel();
 | 
			
		||||
 | 
			
		||||
    QString             defaultFileDialogDirectory(const QString& dialogName);
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,6 @@ set( APPLICATION_FILES
 | 
			
		||||
set( USER_INTERFACE_FILES
 | 
			
		||||
    UserInterface/RiuCursors.cpp
 | 
			
		||||
    UserInterface/RiuMainWindow.cpp
 | 
			
		||||
    UserInterface/RiuPreferencesDialog.cpp
 | 
			
		||||
    UserInterface/RiuResultInfoPanel.cpp
 | 
			
		||||
    UserInterface/RiuViewer.cpp
 | 
			
		||||
    UserInterface/RiuSimpleHistogramWidget.cpp
 | 
			
		||||
@@ -59,6 +58,7 @@ set( SOCKET_INTERFACE_FILES
 | 
			
		||||
    SocketInterface/RiaPropertyDataCommands.cpp
 | 
			
		||||
    SocketInterface/RiaWellDataCommands.cpp
 | 
			
		||||
    SocketInterface/RiaSocketTools.cpp
 | 
			
		||||
    SocketInterface/RiaSocketDataTransfer.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -98,7 +98,6 @@ set ( QT_MOC_HEADERS
 | 
			
		||||
    ProjectDataModel/RimMimeData.h
 | 
			
		||||
    
 | 
			
		||||
    UserInterface/RiuMainWindow.h
 | 
			
		||||
    UserInterface/RiuPreferencesDialog.h
 | 
			
		||||
    UserInterface/RiuResultInfoPanel.h
 | 
			
		||||
    UserInterface/RiuViewer.h
 | 
			
		||||
    UserInterface/RiuProcessMonitor.h
 | 
			
		||||
@@ -155,6 +154,8 @@ list( REMOVE_ITEM RAW_SOURCES
 | 
			
		||||
    Application/RiaImageCompareReporter.cpp
 | 
			
		||||
    Application/RiaRegressionTest.cpp
 | 
			
		||||
 | 
			
		||||
    SocketInterface/RiaSocketDataTransfer.cpp
 | 
			
		||||
 | 
			
		||||
    FileInterface/RifEclipseInputFileTools.cpp
 | 
			
		||||
    FileInterface/RifEclipseOutputFileTools.cpp
 | 
			
		||||
    FileInterface/RifEclipseRestartFilesetAccess.cpp
 | 
			
		||||
 
 | 
			
		||||
@@ -175,3 +175,11 @@ void RifReaderMockModel::populateReservoir(RigCaseData* eclipseCase)
 | 
			
		||||
    m_reservoirBuilder.populateReservoir(eclipseCase);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RifReaderMockModel::enableWellData(bool enableWellData)
 | 
			
		||||
{
 | 
			
		||||
    m_reservoirBuilder.enableWellData(enableWellData);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ public:
 | 
			
		||||
    void                    setWorldCoordinates(cvf::Vec3d minWorldCoordinate, cvf::Vec3d maxWorldCoordinate);
 | 
			
		||||
    void                    setGridPointDimensions(const cvf::Vec3st& gridPointDimensions);
 | 
			
		||||
    void                    setResultInfo(size_t resultCount, size_t timeStepCount);
 | 
			
		||||
    void                    enableWellData(bool enableWellData);
 | 
			
		||||
 | 
			
		||||
    void                    addLocalGridRefinement(const cvf::Vec3st& minCellPosition, const cvf::Vec3st& maxCellPosition, const cvf::Vec3st& singleCellRefinementFactors);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -46,6 +46,7 @@ ${CEE_CURRENT_LIST_DIR}RimCommandObject.h
 | 
			
		||||
${CEE_CURRENT_LIST_DIR}RimTools.h
 | 
			
		||||
${CEE_CURRENT_LIST_DIR}RimFault.h
 | 
			
		||||
${CEE_CURRENT_LIST_DIR}RimFaultCollection.h
 | 
			
		||||
${CEE_CURRENT_LIST_DIR}RimMockModelSettings.h
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set (SOURCE_GROUP_SOURCE_FILES
 | 
			
		||||
@@ -90,6 +91,7 @@ ${CEE_CURRENT_LIST_DIR}RimCommandObject.cpp
 | 
			
		||||
${CEE_CURRENT_LIST_DIR}RimTools.cpp
 | 
			
		||||
${CEE_CURRENT_LIST_DIR}RimFault.cpp
 | 
			
		||||
${CEE_CURRENT_LIST_DIR}RimFaultCollection.cpp
 | 
			
		||||
${CEE_CURRENT_LIST_DIR}RimMockModelSettings.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
list(APPEND CODE_HEADER_FILES
 | 
			
		||||
 
 | 
			
		||||
@@ -41,8 +41,16 @@ public:
 | 
			
		||||
 | 
			
		||||
    static QString undefinedResultName() { return "None"; }
 | 
			
		||||
    static QString undefinedGridFaultName() { return "Undefined grid faults"; }
 | 
			
		||||
 | 
			
		||||
    static QString combinedTransmissibilityResultName() { return "TRANSXYZ"; }
 | 
			
		||||
    static QString ternarySaturationResultName()        { return "TERNARY"; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // Mock model text identifiers
 | 
			
		||||
    static QString mockModelBasic()                 { return "Result Mock Debug Model Simple"; }
 | 
			
		||||
    static QString mockModelBasicWithResults()      { return "Result Mock Debug Model With Results"; }
 | 
			
		||||
    static QString mockModelLargeWithResults()      { return "Result Mock Debug Model Large With Results"; }
 | 
			
		||||
    static QString mockModelCustomized()            { return "Result Mock Debug Model Customized"; }
 | 
			
		||||
    static QString mockModelBasicInputCase()        { return "Input Mock Debug Model Simple"; }
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -77,7 +77,7 @@ RimInputCase::~RimInputCase()
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RimInputCase::openDataFileSet(const QStringList& fileNames)
 | 
			
		||||
{
 | 
			
		||||
    if (fileNames.contains("Input Mock Debug Model Simple"))
 | 
			
		||||
    if (fileNames.contains(RimDefines::mockModelBasicInputCase()))
 | 
			
		||||
    {
 | 
			
		||||
        cvf::ref<RifReaderInterface> readerInterface = this->createMockModel(fileNames[0]);
 | 
			
		||||
        results(RifReaderInterface::MATRIX_RESULTS)->setReaderInterface(readerInterface.p());
 | 
			
		||||
@@ -184,7 +184,7 @@ bool RimInputCase::openEclipseGridFile()
 | 
			
		||||
    {
 | 
			
		||||
        cvf::ref<RifReaderInterface> readerInterface;
 | 
			
		||||
 | 
			
		||||
        if (m_gridFileName().contains("Input Mock Debug Model Simple"))
 | 
			
		||||
        if (m_gridFileName().contains(RimDefines::mockModelBasicInputCase()))
 | 
			
		||||
        {
 | 
			
		||||
            readerInterface = this->createMockModel(this->m_gridFileName());
 | 
			
		||||
        }
 | 
			
		||||
@@ -377,7 +377,7 @@ cvf::ref<RifReaderInterface> RimInputCase::createMockModel(QString modelName)
 | 
			
		||||
    cvf::ref<RigCaseData> reservoir = new RigCaseData;
 | 
			
		||||
    cvf::ref<RifReaderMockModel> mockFileInterface = new RifReaderMockModel;
 | 
			
		||||
 | 
			
		||||
    if (modelName == "Input Mock Debug Model Simple")
 | 
			
		||||
    if (modelName == RimDefines::mockModelBasicInputCase())
 | 
			
		||||
    {
 | 
			
		||||
        m_gridFileName = modelName;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										77
									
								
								ApplicationCode/ProjectDataModel/RimMockModelSettings.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								ApplicationCode/ProjectDataModel/RimMockModelSettings.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (C) 2011-2012 Statoil ASA, Ceetron AS
 | 
			
		||||
// 
 | 
			
		||||
//  ResInsight is free software: you can redistribute it and/or modify
 | 
			
		||||
//  it under the terms of the GNU General Public License as published by
 | 
			
		||||
//  the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
//  (at your option) any later version.
 | 
			
		||||
// 
 | 
			
		||||
//  ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//  WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//  FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
// 
 | 
			
		||||
//  See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html> 
 | 
			
		||||
//  for more details.
 | 
			
		||||
//
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#include "RiaStdInclude.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "RimMockModelSettings.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CAF_PDM_SOURCE_INIT(RimMockModelSettings, "MockModelSettings");
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
RimMockModelSettings::RimMockModelSettings()
 | 
			
		||||
{
 | 
			
		||||
    CAF_PDM_InitObject("Mock Model Settings", "", "", "");
 | 
			
		||||
 | 
			
		||||
    CAF_PDM_InitField(&cellCountX,    "CellCountX",  quint64(100), "Cell Count X", "", "", "");
 | 
			
		||||
    CAF_PDM_InitField(&cellCountY,    "CellCountY",  quint64(100), "Cell Count Y", "", "", "");
 | 
			
		||||
    CAF_PDM_InitField(&cellCountZ,    "CellCountZ",  quint64(10), "Cell Count Z", "", "", "");
 | 
			
		||||
 | 
			
		||||
    CAF_PDM_InitFieldNoDefault(&totalCellCount,  "TotalCellCount", "Total Cell Count",   "", "", "");
 | 
			
		||||
    totalCellCount.setUiReadOnly(true);
 | 
			
		||||
 | 
			
		||||
    CAF_PDM_InitField(&resultCount,    "ResultCount",    quint64(3),    "Result Count", "", "", "");
 | 
			
		||||
    CAF_PDM_InitField(&timeStepCount,  "TimeStepCount",  quint64(10),   "Time Step Count", "", "", "");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
RimMockModelSettings::~RimMockModelSettings()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RimMockModelSettings::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
 | 
			
		||||
{
 | 
			
		||||
    totalCellCount = cellCountX * cellCountY * cellCountZ;
 | 
			
		||||
    totalCellCount.updateConnectedEditors();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RimMockModelSettings::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
 | 
			
		||||
{
 | 
			
		||||
    caf::PdmUiGroup* gridSizeGroup = uiOrdering.addNewGroup("Grid size");
 | 
			
		||||
    gridSizeGroup->add(&cellCountX);
 | 
			
		||||
    gridSizeGroup->add(&cellCountY);
 | 
			
		||||
    gridSizeGroup->add(&cellCountZ);
 | 
			
		||||
    gridSizeGroup->add(&totalCellCount);
 | 
			
		||||
 | 
			
		||||
    caf::PdmUiGroup* resultGroup = uiOrdering.addNewGroup("Results");
 | 
			
		||||
    resultGroup->add(&resultCount);
 | 
			
		||||
    resultGroup->add(&timeStepCount);
 | 
			
		||||
}
 | 
			
		||||
@@ -18,32 +18,35 @@
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
namespace caf
 | 
			
		||||
{
 | 
			
		||||
    class PdmObject;
 | 
			
		||||
    class PdmUiPropertyView;
 | 
			
		||||
}
 | 
			
		||||
#include "cafPdmField.h"
 | 
			
		||||
#include "cafPdmObject.h"
 | 
			
		||||
#include "cafPdmPointer.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//==================================================================================================
 | 
			
		||||
//
 | 
			
		||||
// 
 | 
			
		||||
//
 | 
			
		||||
///  
 | 
			
		||||
///  
 | 
			
		||||
//==================================================================================================
 | 
			
		||||
class RiuPreferencesDialog : public QDialog
 | 
			
		||||
class RimMockModelSettings : public caf::PdmObject
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
    CAF_PDM_HEADER_INIT;
 | 
			
		||||
public:
 | 
			
		||||
    RiuPreferencesDialog(QWidget* parent, caf::PdmObject* object, const QString& windowTitle);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void setupUi();
 | 
			
		||||
    RimMockModelSettings();
 | 
			
		||||
    virtual ~RimMockModelSettings();
 | 
			
		||||
 | 
			
		||||
    caf::PdmField<quint64>  cellCountX;
 | 
			
		||||
    caf::PdmField<quint64>  cellCountY;
 | 
			
		||||
    caf::PdmField<quint64>  cellCountZ;
 | 
			
		||||
 | 
			
		||||
    caf::PdmField<quint64>  totalCellCount;
 | 
			
		||||
 | 
			
		||||
    caf::PdmField<quint64>  resultCount;
 | 
			
		||||
    caf::PdmField<quint64>  timeStepCount;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue );
 | 
			
		||||
 | 
			
		||||
    virtual void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering );
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QString                     m_windowTitle;
 | 
			
		||||
    caf::PdmObject*             m_pdmObject;
 | 
			
		||||
    caf::PdmUiPropertyView*     m_pdmUiPropertyView;
 | 
			
		||||
};
 | 
			
		||||
@@ -17,6 +17,13 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#include "RiaStdInclude.h"
 | 
			
		||||
 | 
			
		||||
#include "cafProgressInfo.h"
 | 
			
		||||
#include "cafPdmSettings.h"
 | 
			
		||||
#include "cafPdmFieldCvfMat4d.h"
 | 
			
		||||
#include "cafPdmFieldCvfColor.h"
 | 
			
		||||
#include "cafPdmUiPropertyDialog.h"
 | 
			
		||||
 | 
			
		||||
#include "RimResultCase.h"
 | 
			
		||||
#include "RigCaseData.h"
 | 
			
		||||
#include "RifReaderEclipseOutput.h"
 | 
			
		||||
@@ -24,7 +31,7 @@
 | 
			
		||||
#include "RimReservoirView.h"
 | 
			
		||||
#include "RifReaderMockModel.h"
 | 
			
		||||
#include "RifReaderEclipseInput.h"
 | 
			
		||||
#include "cafProgressInfo.h"
 | 
			
		||||
 | 
			
		||||
#include "RimProject.h"
 | 
			
		||||
#include "RifEclipseOutputFileTools.h"
 | 
			
		||||
#include "RiaApplication.h"
 | 
			
		||||
@@ -34,8 +41,6 @@
 | 
			
		||||
#include "RimReservoirCellResultsCacher.h"
 | 
			
		||||
#include "RimWellPathCollection.h"
 | 
			
		||||
 | 
			
		||||
#include "cafPdmFieldCvfMat4d.h"
 | 
			
		||||
#include "cafPdmFieldCvfColor.h"
 | 
			
		||||
#include "RimResultSlot.h"
 | 
			
		||||
#include "RimCellEdgeResultSlot.h"
 | 
			
		||||
#include "RimCellRangeFilterCollection.h"
 | 
			
		||||
@@ -45,6 +50,7 @@
 | 
			
		||||
#include "RimOilField.h"
 | 
			
		||||
#include "RimAnalysisModels.h"
 | 
			
		||||
#include "RiaPreferences.h"
 | 
			
		||||
#include "RimMockModelSettings.h"
 | 
			
		||||
 | 
			
		||||
CAF_PDM_SOURCE_INIT(RimResultCase, "EclipseCase");
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
@@ -199,7 +205,7 @@ cvf::ref<RifReaderInterface> RimResultCase::createMockModel(QString modelName)
 | 
			
		||||
    cvf::ref<RifReaderMockModel> mockFileInterface = new RifReaderMockModel;
 | 
			
		||||
    cvf::ref<RigCaseData> reservoir = new RigCaseData;
 | 
			
		||||
 | 
			
		||||
     if (modelName == "Result Mock Debug Model Simple")
 | 
			
		||||
     if (modelName == RimDefines::mockModelBasic())
 | 
			
		||||
    {
 | 
			
		||||
        // Create the mock file interface and and RigSerervoir and set them up.
 | 
			
		||||
        mockFileInterface->setWorldCoordinates(cvf::Vec3d(10, 10, 10), cvf::Vec3d(20, 20, 20));
 | 
			
		||||
@@ -221,7 +227,7 @@ cvf::ref<RifReaderInterface> RimResultCase::createMockModel(QString modelName)
 | 
			
		||||
            //reservoir->mainGrid()->cell(idx).setActiveIndexInMatrixModel(cvf::UNDEFINED_SIZE_T);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else if (modelName == "Result Mock Debug Model With Results")
 | 
			
		||||
    else if (modelName == RimDefines::mockModelBasicWithResults())
 | 
			
		||||
    {
 | 
			
		||||
        mockFileInterface->setWorldCoordinates(cvf::Vec3d(10, 10, 10), cvf::Vec3d(-20, -20, -20));
 | 
			
		||||
        mockFileInterface->setGridPointDimensions(cvf::Vec3st(5, 10, 20));
 | 
			
		||||
@@ -234,7 +240,7 @@ cvf::ref<RifReaderInterface> RimResultCase::createMockModel(QString modelName)
 | 
			
		||||
        cvf::Vec3d& tmp = reservoir->mainGrid()->nodes()[1];
 | 
			
		||||
        tmp += cvf::Vec3d(1, 0, 0);
 | 
			
		||||
    }
 | 
			
		||||
    else if (modelName =="Result Mock Debug Model Large With Results")
 | 
			
		||||
    else if (modelName == RimDefines::mockModelLargeWithResults())
 | 
			
		||||
    {
 | 
			
		||||
        double startX = 0;
 | 
			
		||||
        double startY = 0;
 | 
			
		||||
@@ -262,6 +268,45 @@ cvf::ref<RifReaderInterface> RimResultCase::createMockModel(QString modelName)
 | 
			
		||||
        mockFileInterface->open("", reservoir.p());
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    else if (modelName == RimDefines::mockModelCustomized())
 | 
			
		||||
    {
 | 
			
		||||
        QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
 | 
			
		||||
 | 
			
		||||
        RimMockModelSettings rimMockModelSettings;
 | 
			
		||||
        caf::Settings::readFieldsFromApplicationStore(&rimMockModelSettings);
 | 
			
		||||
 | 
			
		||||
        caf::PdmUiPropertyDialog propertyDialog(NULL, &rimMockModelSettings, "Customize Mock Model");
 | 
			
		||||
        if (propertyDialog.exec() == QDialog::Accepted)
 | 
			
		||||
        {
 | 
			
		||||
            QApplication::restoreOverrideCursor();
 | 
			
		||||
 | 
			
		||||
            caf::Settings::writeFieldsToApplicationStore(&rimMockModelSettings);
 | 
			
		||||
 | 
			
		||||
            double startX = 0;
 | 
			
		||||
            double startY = 0;
 | 
			
		||||
            double startZ = 0;
 | 
			
		||||
 | 
			
		||||
            double widthX = 6000;
 | 
			
		||||
            double widthY = 12000;
 | 
			
		||||
            double widthZ = 500;
 | 
			
		||||
 | 
			
		||||
            // Test code to simulate UTM coordinates
 | 
			
		||||
            double offsetX = 400000;
 | 
			
		||||
            double offsetY = 6000000;
 | 
			
		||||
            double offsetZ = 0;
 | 
			
		||||
 | 
			
		||||
            mockFileInterface->setWorldCoordinates(cvf::Vec3d(startX + offsetX, startY + offsetY, startZ + offsetZ), cvf::Vec3d(startX + widthX + offsetX, startY + widthY + offsetY, startZ + widthZ + offsetZ));
 | 
			
		||||
            mockFileInterface->setGridPointDimensions(cvf::Vec3st(rimMockModelSettings.cellCountX + 1, rimMockModelSettings.cellCountY + 1, rimMockModelSettings.cellCountZ + 1));
 | 
			
		||||
            mockFileInterface->setResultInfo(rimMockModelSettings.resultCount, rimMockModelSettings.timeStepCount);
 | 
			
		||||
            mockFileInterface->enableWellData(false);
 | 
			
		||||
 | 
			
		||||
            mockFileInterface->open("", reservoir.p());
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
             QApplication::restoreOverrideCursor();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this->setReservoirData( reservoir.p() );
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,9 @@
 | 
			
		||||
//#include "RiaStdInclude.h"
 | 
			
		||||
 | 
			
		||||
#include "cafPdmDocument.h"
 | 
			
		||||
#include "cafPdmFieldCvfColor.h"
 | 
			
		||||
#include "cafPdmFieldCvfMat4d.h"
 | 
			
		||||
#include "cafPdmUiPropertyDialog.h"
 | 
			
		||||
 | 
			
		||||
#include <QAction>
 | 
			
		||||
#include <QMenu>
 | 
			
		||||
@@ -37,7 +40,6 @@
 | 
			
		||||
#include "RimInputPropertyCollection.h"
 | 
			
		||||
#include "RimExportInputPropertySettings.h"
 | 
			
		||||
#include "RiaPreferences.h"
 | 
			
		||||
#include "RiuPreferencesDialog.h"
 | 
			
		||||
#include "RifEclipseInputFileTools.h"
 | 
			
		||||
#include "RimInputCase.h"
 | 
			
		||||
#include "RimBinaryExportSettings.h"
 | 
			
		||||
@@ -59,9 +61,6 @@
 | 
			
		||||
#include "RimWellPathCollection.h"
 | 
			
		||||
#include "RimReservoirCellResultsCacher.h"
 | 
			
		||||
#include "Rim3dOverlayInfoConfig.h"
 | 
			
		||||
 | 
			
		||||
#include "cafPdmFieldCvfColor.h"
 | 
			
		||||
#include "cafPdmFieldCvfMat4d.h"
 | 
			
		||||
#include "RimProject.h"
 | 
			
		||||
#include "RimOilField.h"
 | 
			
		||||
#include "RimAnalysisModels.h"
 | 
			
		||||
@@ -834,8 +833,8 @@ void RimUiTreeView::slotWriteInputProperty()
 | 
			
		||||
        exportSettings.fileName = outputFileName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    RiuPreferencesDialog preferencesDialog(this, &exportSettings, "Export Eclipse Property to Text File");
 | 
			
		||||
    if (preferencesDialog.exec() == QDialog::Accepted)
 | 
			
		||||
    caf::PdmUiPropertyDialog propertyDialog(this, &exportSettings, "Export Eclipse Property to Text File");
 | 
			
		||||
    if (propertyDialog.exec() == QDialog::Accepted)
 | 
			
		||||
    {
 | 
			
		||||
        bool isOk = RifEclipseInputFileTools::writePropertyToTextFile(exportSettings.fileName, inputReservoir->reservoirData(), 0, inputProperty->resultName, exportSettings.eclipseKeyword);
 | 
			
		||||
        if (isOk)
 | 
			
		||||
@@ -887,8 +886,8 @@ void RimUiTreeView::slotWriteBinaryResultAsInputProperty()
 | 
			
		||||
        exportSettings.fileName = outputFileName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    RiuPreferencesDialog preferencesDialog(this, &exportSettings, "Export Binary Eclipse Data to Text File");
 | 
			
		||||
    if (preferencesDialog.exec() == QDialog::Accepted)
 | 
			
		||||
    caf::PdmUiPropertyDialog propertyDialog(this, &exportSettings, "Export Binary Eclipse Data to Text File");
 | 
			
		||||
    if (propertyDialog.exec() == QDialog::Accepted)
 | 
			
		||||
    {
 | 
			
		||||
        size_t timeStep = resultSlot->reservoirView()->currentTimeStep();
 | 
			
		||||
        RifReaderInterface::PorosityModelResultType porosityModel = RigCaseCellResultsData::convertFromProjectModelPorosityModel(resultSlot->porosityModel());
 | 
			
		||||
 
 | 
			
		||||
@@ -193,6 +193,14 @@ void RigActiveCellInfo::clear()
 | 
			
		||||
    m_activeCellsBoundingBox.reset();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
bool RigActiveCellInfo::isCoarseningActive() const
 | 
			
		||||
{
 | 
			
		||||
    return m_globalCellResultCount != m_globalActiveCellCount;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,7 @@ public:
 | 
			
		||||
    size_t              globalCellCount() const;
 | 
			
		||||
    size_t              globalActiveCellCount() const;
 | 
			
		||||
    size_t              globalCellResultCount() const;
 | 
			
		||||
    bool                isCoarseningActive() const;
 | 
			
		||||
 | 
			
		||||
    bool                isActive(size_t globalCellIndex) const;
 | 
			
		||||
    size_t              cellResultIndex(size_t globalCellIndex) const;
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,7 @@ RigReservoirBuilderMock::RigReservoirBuilderMock()
 | 
			
		||||
    m_resultCount = 0;
 | 
			
		||||
    m_timeStepCount = 0;
 | 
			
		||||
    m_gridPointDimensions = cvf::Vec3st::ZERO;
 | 
			
		||||
    m_enableWellData = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
@@ -134,10 +135,14 @@ void RigReservoirBuilderMock::appendCubeNodes(const cvf::Vec3d& min, const cvf::
 | 
			
		||||
void RigReservoirBuilderMock::appendCells(size_t nodeStartIndex, size_t cellCount, RigGridBase* hostGrid, std::vector<RigCell>& cells)
 | 
			
		||||
{
 | 
			
		||||
    size_t activeCellIndex = 0;
 | 
			
		||||
    size_t i;
 | 
			
		||||
    for (i = 0; i < cellCount; i++)
 | 
			
		||||
    long long i;
 | 
			
		||||
 | 
			
		||||
    cells.resize(cellCount);
 | 
			
		||||
 | 
			
		||||
#pragma omp parallel for
 | 
			
		||||
    for (i = 0; i < static_cast<long long>(cellCount); i++)
 | 
			
		||||
    {
 | 
			
		||||
        RigCell riCell;
 | 
			
		||||
        RigCell& riCell = cells[i];
 | 
			
		||||
 | 
			
		||||
        riCell.setHostGrid(hostGrid);
 | 
			
		||||
        riCell.setCellIndex(i);
 | 
			
		||||
@@ -164,8 +169,6 @@ void RigReservoirBuilderMock::appendCells(size_t nodeStartIndex, size_t cellCoun
 | 
			
		||||
            riCell.setActiveIndexInMatrixModel(activeCellIndex++);
 | 
			
		||||
        }
 | 
			
		||||
        */
 | 
			
		||||
 | 
			
		||||
        cells.push_back(riCell);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -246,7 +249,10 @@ void RigReservoirBuilderMock::populateReservoir(RigCaseData* eclipseCase)
 | 
			
		||||
 | 
			
		||||
    eclipseCase->mainGrid()->setGridPointDimensions(m_gridPointDimensions);
 | 
			
		||||
 | 
			
		||||
    addWellData(eclipseCase, eclipseCase->mainGrid());
 | 
			
		||||
    if (m_enableWellData)
 | 
			
		||||
    {
 | 
			
		||||
        addWellData(eclipseCase, eclipseCase->mainGrid());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    addFaults(eclipseCase);
 | 
			
		||||
 | 
			
		||||
@@ -346,13 +352,15 @@ bool RigReservoirBuilderMock::dynamicResult(RigCaseData* eclipseCase, const QStr
 | 
			
		||||
    double scaleValue = 1.0 + resultIndex * 0.1;
 | 
			
		||||
    double offsetValue = 100 * resultIndex;
 | 
			
		||||
 | 
			
		||||
    size_t k;
 | 
			
		||||
    for (k = 0; k < eclipseCase->mainGrid()->cells().size(); k++)
 | 
			
		||||
    values->resize(eclipseCase->mainGrid()->cells().size());
 | 
			
		||||
 | 
			
		||||
#pragma omp parallel for
 | 
			
		||||
    for (long long k = 0; k < static_cast<long long>(eclipseCase->mainGrid()->cells().size()); k++)
 | 
			
		||||
    {
 | 
			
		||||
        RigCell& cell = eclipseCase->mainGrid()->cells()[k];
 | 
			
		||||
        {
 | 
			
		||||
            double val = offsetValue + scaleValue * ( (stepIndex * 1000 + k) % eclipseCase->mainGrid()->cells().size() );
 | 
			
		||||
            values->push_back(val);
 | 
			
		||||
            values->at(k) = val;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -521,3 +529,11 @@ void RigReservoirBuilderMock::addFaults(RigCaseData* eclipseCase)
 | 
			
		||||
    grid->setFaults(faults);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RigReservoirBuilderMock::enableWellData(bool enableWellData)
 | 
			
		||||
{
 | 
			
		||||
    m_enableWellData = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -48,6 +48,7 @@ public:
 | 
			
		||||
    void setWorldCoordinates(cvf::Vec3d minWorldCoordinate, cvf::Vec3d maxWorldCoordinate);
 | 
			
		||||
    void setGridPointDimensions(const cvf::Vec3st& gridPointDimensions);
 | 
			
		||||
    void setResultInfo(size_t resultCount, size_t timeStepCount);
 | 
			
		||||
    void enableWellData(bool enableWellData);
 | 
			
		||||
 | 
			
		||||
    size_t resultCount() const { return m_resultCount; }
 | 
			
		||||
    size_t timeStepCount() const { return m_timeStepCount; }
 | 
			
		||||
@@ -91,6 +92,7 @@ private:
 | 
			
		||||
    cvf::Vec3st m_gridPointDimensions;
 | 
			
		||||
    size_t      m_resultCount;
 | 
			
		||||
    size_t      m_timeStepCount;
 | 
			
		||||
    bool        m_enableWellData;
 | 
			
		||||
 | 
			
		||||
    std::vector<LocalGridRefinement> m_localGridRefinements;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -16,9 +16,12 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#include "RiaStdInclude.h"
 | 
			
		||||
 | 
			
		||||
#include "RiaSocketCommand.h"
 | 
			
		||||
#include "RiaSocketServer.h"
 | 
			
		||||
#include "RiaSocketTools.h"
 | 
			
		||||
#include "RiaApplication.h"
 | 
			
		||||
#include "RiaPreferences.h"
 | 
			
		||||
 | 
			
		||||
#include "RimReservoirView.h"
 | 
			
		||||
#include "RimResultSlot.h"
 | 
			
		||||
@@ -28,8 +31,8 @@
 | 
			
		||||
#include "RimWellCollection.h"
 | 
			
		||||
#include "Rim3dOverlayInfoConfig.h"
 | 
			
		||||
#include "RimReservoirCellResultsCacher.h"
 | 
			
		||||
 | 
			
		||||
#include "RimCase.h"
 | 
			
		||||
 | 
			
		||||
#include "RigCaseData.h"
 | 
			
		||||
#include "RigCaseCellResultsData.h"
 | 
			
		||||
 | 
			
		||||
@@ -37,6 +40,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// OBSOLETE, to be deleted
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
@@ -128,18 +132,9 @@ public:
 | 
			
		||||
        quint64 timestepByteCount = (quint64)(timestepResultCount*sizeof(qint32));
 | 
			
		||||
        socketStream << timestepByteCount;
 | 
			
		||||
 | 
			
		||||
        // Then write the data.
 | 
			
		||||
 | 
			
		||||
        for (size_t tIdx = 0; tIdx < columnCount; ++tIdx)
 | 
			
		||||
        {
 | 
			
		||||
#if 1 // Write data as raw bytes, fast but does not handle byteswapping
 | 
			
		||||
            server->currentClient()->write((const char *)activeCellInfo[tIdx].data(), timestepByteCount);
 | 
			
		||||
#else  // Write data using QDataStream, does byteswapping for us. Must use QDataStream on client as well
 | 
			
		||||
            for (size_t cIdx = 0; cIdx < activeCellInfo[tIdx].size(); ++cIdx)
 | 
			
		||||
            {
 | 
			
		||||
                socketStream << activeCellInfo[tIdx][cIdx];
 | 
			
		||||
            }
 | 
			
		||||
#endif
 | 
			
		||||
            RiaSocketTools::writeBlockData(server, server->currentClient(), (const char *)activeCellInfo[tIdx].data(), timestepByteCount);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,9 @@
 | 
			
		||||
#include "RigCaseCellResultsData.h"
 | 
			
		||||
 | 
			
		||||
#include <QTcpSocket>
 | 
			
		||||
#include "RiaApplication.h"
 | 
			
		||||
#include "RiaPreferences.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
@@ -84,11 +87,14 @@ public:
 | 
			
		||||
        //  dv(2) = cellCountK;
 | 
			
		||||
        //  dv(3) = 3;
 | 
			
		||||
 | 
			
		||||
        std::vector<double> cellCenterValues(doubleValueCount);
 | 
			
		||||
        cvf::Vec3d cornerVerts[8];
 | 
			
		||||
        quint64 coordCount = 0;
 | 
			
		||||
        size_t blockByteCount = cellCount * sizeof(double);
 | 
			
		||||
        std::vector<double> doubleValues(blockByteCount);
 | 
			
		||||
 | 
			
		||||
        for (int coordIdx = 0; coordIdx < 3; coordIdx++)
 | 
			
		||||
        {
 | 
			
		||||
            quint64 valueIndex = 0;
 | 
			
		||||
 | 
			
		||||
            for (size_t k = 0; k < cellCountK; k++)
 | 
			
		||||
            {
 | 
			
		||||
                for (size_t j = 0; j < cellCountJ; j++)
 | 
			
		||||
@@ -98,16 +104,16 @@ public:
 | 
			
		||||
                        size_t localCellIdx = rigGrid->cellIndexFromIJK(i, j, k);
 | 
			
		||||
                        cvf::Vec3d center = rigGrid->cell(localCellIdx).center();
 | 
			
		||||
 | 
			
		||||
                        cellCenterValues[coordCount++] = center[coordIdx];
 | 
			
		||||
                        doubleValues[valueIndex++] = center[coordIdx];
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            CVF_ASSERT(valueIndex == cellCount);
 | 
			
		||||
 | 
			
		||||
            RiaSocketTools::writeBlockData(server, server->currentClient(), (const char *)doubleValues.data(), blockByteCount);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        CVF_ASSERT(coordCount == doubleValueCount);
 | 
			
		||||
 | 
			
		||||
        server->currentClient()->write((const char *)cellCenterValues.data(), byteCount);
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@@ -149,6 +155,11 @@ public:
 | 
			
		||||
        size_t activeCellCount = actCellInfo->globalActiveCellCount();
 | 
			
		||||
        size_t doubleValueCount = activeCellCount * 3;
 | 
			
		||||
 | 
			
		||||
        socketStream << (quint64)activeCellCount;
 | 
			
		||||
        quint64 byteCount = doubleValueCount * sizeof(double);
 | 
			
		||||
        socketStream << byteCount;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        // This structure is supposed to be received by Octave using a NDArray. The ordering of this loop is
 | 
			
		||||
        // defined by the ordering of the receiving NDArray
 | 
			
		||||
        //
 | 
			
		||||
@@ -159,28 +170,26 @@ public:
 | 
			
		||||
        //  dv(0) = coordCount;
 | 
			
		||||
        //  dv(1) = 3;
 | 
			
		||||
 | 
			
		||||
        std::vector<double> cellCenterValues(doubleValueCount);
 | 
			
		||||
        quint64 coordCount = 0;
 | 
			
		||||
        size_t blockByteCount = activeCellCount * sizeof(double);
 | 
			
		||||
        std::vector<double> doubleValues(blockByteCount);
 | 
			
		||||
 | 
			
		||||
        for (int coordIdx = 0; coordIdx < 3; coordIdx++)
 | 
			
		||||
        {
 | 
			
		||||
            quint64 valueIndex = 0;
 | 
			
		||||
 | 
			
		||||
            for (size_t globalCellIdx = 0; globalCellIdx < mainGrid->cells().size(); globalCellIdx++)
 | 
			
		||||
            {
 | 
			
		||||
                if (!actCellInfo->isActive(globalCellIdx)) continue;
 | 
			
		||||
 | 
			
		||||
                cvf::Vec3d center = mainGrid->cells()[globalCellIdx].center();
 | 
			
		||||
 | 
			
		||||
                cellCenterValues[coordCount++] = center[coordIdx];
 | 
			
		||||
                doubleValues[valueIndex++] = center[coordIdx];
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            CVF_ASSERT(valueIndex == activeCellCount);
 | 
			
		||||
            RiaSocketTools::writeBlockData(server, server->currentClient(), (const char *)doubleValues.data(), blockByteCount);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        CVF_ASSERT(coordCount == doubleValueCount);
 | 
			
		||||
 | 
			
		||||
        socketStream << (quint64)activeCellCount;
 | 
			
		||||
        quint64 byteCount = doubleValueCount * sizeof(double);
 | 
			
		||||
        socketStream << byteCount;
 | 
			
		||||
 | 
			
		||||
        server->currentClient()->write((const char *)cellCenterValues.data(), byteCount);
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -241,15 +250,18 @@ public:
 | 
			
		||||
        //  dv(3) = 8;
 | 
			
		||||
        //  dv(4) = 3;
 | 
			
		||||
 | 
			
		||||
        std::vector<double> cellCornerValues(doubleValueCount);
 | 
			
		||||
        cvf::Vec3d cornerVerts[8];
 | 
			
		||||
        quint64 coordCount = 0;
 | 
			
		||||
        size_t blockByteCount = cellCount * sizeof(double);
 | 
			
		||||
        std::vector<double> doubleValues(blockByteCount);
 | 
			
		||||
 | 
			
		||||
        for (int coordIdx = 0; coordIdx < 3; coordIdx++)
 | 
			
		||||
        {
 | 
			
		||||
            for (size_t cornerIdx = 0; cornerIdx < 8; cornerIdx++)
 | 
			
		||||
            {
 | 
			
		||||
                size_t cornerIndexMapping = cellCornerMappingEclipse[cornerIdx];
 | 
			
		||||
 | 
			
		||||
                quint64 valueIndex = 0;
 | 
			
		||||
 | 
			
		||||
                for (size_t k = 0; k < cellCountK; k++)
 | 
			
		||||
                {
 | 
			
		||||
                    for (size_t j = 0; j < cellCountJ; j++)
 | 
			
		||||
@@ -259,15 +271,17 @@ public:
 | 
			
		||||
                            size_t localCellIdx = rigGrid->cellIndexFromIJK(i, j, k);
 | 
			
		||||
                            rigGrid->cellCornerVertices(localCellIdx, cornerVerts);
 | 
			
		||||
 | 
			
		||||
                            cellCornerValues[coordCount++] = cornerVerts[cornerIndexMapping][coordIdx];
 | 
			
		||||
                            doubleValues[valueIndex++] = cornerVerts[cornerIndexMapping][coordIdx];
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                CVF_ASSERT(valueIndex == cellCount);
 | 
			
		||||
 | 
			
		||||
                RiaSocketTools::writeBlockData(server, server->currentClient(), (const char *)doubleValues.data(), blockByteCount);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        server->currentClient()->write((const char *)cellCornerValues.data(), byteCount);
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@@ -310,6 +324,10 @@ public:
 | 
			
		||||
        size_t activeCellCount = actCellInfo->globalActiveCellCount();
 | 
			
		||||
        size_t doubleValueCount = activeCellCount * 3 * 8;
 | 
			
		||||
 | 
			
		||||
        socketStream << (quint64)activeCellCount;
 | 
			
		||||
        quint64 byteCount = doubleValueCount * sizeof(double);
 | 
			
		||||
        socketStream << byteCount;
 | 
			
		||||
 | 
			
		||||
        // This structure is supposed to be received by Octave using a NDArray. The ordering of this loop is
 | 
			
		||||
        // defined by the ordering of the receiving NDArray
 | 
			
		||||
        //
 | 
			
		||||
@@ -321,32 +339,33 @@ public:
 | 
			
		||||
        //  dv(1) = 8;
 | 
			
		||||
        //  dv(2) = 3;
 | 
			
		||||
 | 
			
		||||
        std::vector<double> cellCornerValues(doubleValueCount);
 | 
			
		||||
        cvf::Vec3d cornerVerts[8];
 | 
			
		||||
        quint64 coordCount = 0;
 | 
			
		||||
        size_t blockByteCount = activeCellCount * sizeof(double);
 | 
			
		||||
        std::vector<double> doubleValues(blockByteCount);
 | 
			
		||||
 | 
			
		||||
        for (int coordIdx = 0; coordIdx < 3; coordIdx++)
 | 
			
		||||
        {
 | 
			
		||||
            for (size_t cornerIdx = 0; cornerIdx < 8; cornerIdx++)
 | 
			
		||||
            {
 | 
			
		||||
                size_t cornerIndexMapping = cellCornerMappingEclipse[cornerIdx];
 | 
			
		||||
 | 
			
		||||
                quint64 valueIndex = 0;
 | 
			
		||||
 | 
			
		||||
                for (size_t globalCellIdx = 0; globalCellIdx < mainGrid->cells().size(); globalCellIdx++)
 | 
			
		||||
                {
 | 
			
		||||
                    if (!actCellInfo->isActive(globalCellIdx)) continue;
 | 
			
		||||
 | 
			
		||||
                    mainGrid->cellCornerVertices(globalCellIdx, cornerVerts);
 | 
			
		||||
 | 
			
		||||
                    cellCornerValues[coordCount++] = cornerVerts[cornerIndexMapping][coordIdx];
 | 
			
		||||
                    doubleValues[valueIndex++] = cornerVerts[cornerIndexMapping][coordIdx];
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                CVF_ASSERT(valueIndex == activeCellCount);
 | 
			
		||||
 | 
			
		||||
                RiaSocketTools::writeBlockData(server, server->currentClient(), (const char *)doubleValues.data(), blockByteCount);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        socketStream << (quint64)activeCellCount;
 | 
			
		||||
        quint64 byteCount = doubleValueCount * sizeof(double);
 | 
			
		||||
        socketStream << byteCount;
 | 
			
		||||
 | 
			
		||||
        server->currentClient()->write((const char *)cellCornerValues.data(), byteCount);
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,9 @@
 | 
			
		||||
#include "Rim3dOverlayInfoConfig.h"
 | 
			
		||||
 | 
			
		||||
#include <QTcpSocket>
 | 
			
		||||
#include "RiaApplication.h"
 | 
			
		||||
#include "RiaPreferences.h"
 | 
			
		||||
#include "RiaSocketDataTransfer.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
@@ -143,6 +146,9 @@ public:
 | 
			
		||||
            socketStream << timestepByteCount ;
 | 
			
		||||
 | 
			
		||||
            // Then write the data.
 | 
			
		||||
            size_t valueCount = RiaSocketDataTransfer::maximumValueCountInBlock();
 | 
			
		||||
            std::vector<double> values(valueCount);
 | 
			
		||||
            size_t valueIndex = 0;
 | 
			
		||||
 | 
			
		||||
            size_t globalCellCount = activeInfo->globalCellCount();
 | 
			
		||||
            for (size_t tIdx = 0; tIdx < requestedTimesteps.size(); ++tIdx)
 | 
			
		||||
@@ -154,37 +160,34 @@ public:
 | 
			
		||||
                    {
 | 
			
		||||
                        if (resultIdx < scalarResultFrames->at(requestedTimesteps[tIdx]).size())
 | 
			
		||||
                        {
 | 
			
		||||
                            socketStream << scalarResultFrames->at(requestedTimesteps[tIdx])[resultIdx];
 | 
			
		||||
                            values[valueIndex] = scalarResultFrames->at(requestedTimesteps[tIdx])[resultIdx];
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
                            socketStream << HUGE_VAL;
 | 
			
		||||
                            values[valueIndex] = HUGE_VAL;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        valueIndex++;
 | 
			
		||||
                        if (valueIndex >= valueCount)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (!RiaSocketTools::writeBlockData(server, server->currentClient(), (const char *)values.data(), valueIndex * sizeof(double)))
 | 
			
		||||
                            {
 | 
			
		||||
                                return false;
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            valueIndex = 0;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
#if 0
 | 
			
		||||
            // This aproach is faster but does not handle coarsening
 | 
			
		||||
            size_t  timestepResultCount = scalarResultFrames->front().size();
 | 
			
		||||
            quint64 timestepByteCount = (quint64)(timestepResultCount*sizeof(double));
 | 
			
		||||
            socketStream << timestepByteCount ;
 | 
			
		||||
 | 
			
		||||
            // Then write the data.
 | 
			
		||||
 | 
			
		||||
            for (size_t tIdx = 0; tIdx < requestedTimesteps.size(); ++tIdx)
 | 
			
		||||
            // Write remaining data
 | 
			
		||||
            if (!RiaSocketTools::writeBlockData(server, server->currentClient(), (const char *)values.data(), valueIndex * sizeof(double)))
 | 
			
		||||
            {
 | 
			
		||||
#if 1 // Write data as raw bytes, fast but does not handle byteswapping
 | 
			
		||||
                server->currentClient()->write((const char *)scalarResultFrames->at(requestedTimesteps[tIdx]).data(), timestepByteCount); // Raw print of data. Fast but no platform conversion
 | 
			
		||||
#else  // Write data using QDataStream, does byteswapping for us. Must use QDataStream on client as well
 | 
			
		||||
                for (size_t cIdx = 0; cIdx < scalarResultFrames->at(requestedTimesteps[tIdx]).size(); ++cIdx)
 | 
			
		||||
                {
 | 
			
		||||
                    socketStream << scalarResultFrames->at(tIdx)[cIdx];
 | 
			
		||||
                }
 | 
			
		||||
#endif
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@@ -304,10 +307,6 @@ public:
 | 
			
		||||
        quint64 timestepCount = (quint64)requestedTimesteps.size();
 | 
			
		||||
        socketStream << timestepCount;
 | 
			
		||||
 | 
			
		||||
        size_t doubleValueCount = cellCountI * cellCountJ * cellCountK * timestepCount * sizeof(double);
 | 
			
		||||
        std::vector<double> values(doubleValueCount);
 | 
			
		||||
        size_t valueIdx = 0;
 | 
			
		||||
        
 | 
			
		||||
        for (size_t tsIdx = 0; tsIdx < timestepCount; tsIdx++)
 | 
			
		||||
        {
 | 
			
		||||
            cvf::ref<cvf::StructGridScalarDataAccess> cellCenterDataAccessObject = rimCase->reservoirData()->dataAccessObject(rigGrid, porosityModelEnum, requestedTimesteps[tsIdx], scalarResultIndex);
 | 
			
		||||
@@ -316,6 +315,9 @@ public:
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            size_t valueCount = RiaSocketDataTransfer::maximumValueCountInBlock();
 | 
			
		||||
            std::vector<double> values(valueCount);
 | 
			
		||||
            size_t valueIndex = 0;
 | 
			
		||||
            for (size_t cellIdx = 0; cellIdx < rigGrid->cellCount(); cellIdx++)
 | 
			
		||||
            {
 | 
			
		||||
                double cellValue = cellCenterDataAccessObject->cellScalar(cellIdx);
 | 
			
		||||
@@ -323,12 +325,26 @@ public:
 | 
			
		||||
                {
 | 
			
		||||
                    cellValue = 0.0;
 | 
			
		||||
                }
 | 
			
		||||
                values[valueIdx++] = cellValue;
 | 
			
		||||
                values[valueIndex++] = cellValue;
 | 
			
		||||
 | 
			
		||||
                if (valueIndex >= valueCount)
 | 
			
		||||
                {
 | 
			
		||||
                    if (!RiaSocketTools::writeBlockData(server, server->currentClient(), (const char *)values.data(), valueIndex * sizeof(double)))
 | 
			
		||||
                    {
 | 
			
		||||
                        return false;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    valueIndex = 0;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Write remaining data
 | 
			
		||||
            if (!RiaSocketTools::writeBlockData(server, server->currentClient(), (const char *)values.data(), valueIndex * sizeof(double)))
 | 
			
		||||
            {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        server->currentClient()->write((const char *)values.data(), doubleValueCount);
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@@ -553,16 +569,18 @@ public:
 | 
			
		||||
                internalMatrixData = m_scalarResultsToAdd->at(m_requestedTimesteps[m_currentTimeStepNumberToRead]).data();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
#if 1 // Use raw data transfer. Faster.
 | 
			
		||||
            bytesRead = currentClient->read((char*)(internalMatrixData), m_bytesPerTimeStepToRead);
 | 
			
		||||
#else
 | 
			
		||||
            for (size_t cIdx = 0; cIdx < cellCountFromOctave; ++cIdx)
 | 
			
		||||
            QStringList errorMessages;
 | 
			
		||||
            if (!RiaSocketDataTransfer::readBlockDataFromSocket(currentClient, (char*)(internalMatrixData), m_bytesPerTimeStepToRead, errorMessages))
 | 
			
		||||
            {
 | 
			
		||||
                socketStream >> internalMatrixData[cIdx];
 | 
			
		||||
                for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
                {
 | 
			
		||||
                    server->errorMessageDialog()->showMessage(errorMessages[i]);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (socketStream.status() == QDataStream::Ok) bytesRead += sizeof(double);
 | 
			
		||||
                currentClient->abort();
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
            // Map data from active  to result index based container ( Coarsening is active)
 | 
			
		||||
            if (isCoarseningActive)
 | 
			
		||||
            {
 | 
			
		||||
@@ -577,12 +595,6 @@ public:
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if ((int)m_bytesPerTimeStepToRead != bytesRead)
 | 
			
		||||
            {
 | 
			
		||||
                server->errorMessageDialog()->showMessage(RiaSocketServer::tr("ResInsight SocketServer: \n") +
 | 
			
		||||
                                                  RiaSocketServer::tr("Could not read binary double data properly from socket"));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            ++m_currentTimeStepNumberToRead;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -897,8 +909,17 @@ public:
 | 
			
		||||
 | 
			
		||||
            std::vector<double> doubleValues(cellCountFromOctave);
 | 
			
		||||
 | 
			
		||||
            qint64 bytesRead = currentClient->read((char*)(doubleValues.data()), m_bytesPerTimeStepToRead);
 | 
			
		||||
            size_t doubleValueIndex = 0;
 | 
			
		||||
            QStringList errorMessages;
 | 
			
		||||
            if (!RiaSocketDataTransfer::readBlockDataFromSocket(currentClient, (char*)(doubleValues.data()), m_bytesPerTimeStepToRead, errorMessages))
 | 
			
		||||
            {
 | 
			
		||||
                for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
                {
 | 
			
		||||
                    server->errorMessageDialog()->showMessage(errorMessages[i]);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                currentClient->abort();
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            cvf::ref<cvf::StructGridScalarDataAccess> cellCenterDataAccessObject = 
 | 
			
		||||
                m_currentReservoir->reservoirData()->dataAccessObject(grid, m_porosityModelEnum, m_requestedTimesteps[m_currentTimeStepNumberToRead], m_currentScalarIndex);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										113
									
								
								ApplicationCode/SocketInterface/RiaSocketDataTransfer.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								ApplicationCode/SocketInterface/RiaSocketDataTransfer.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,113 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (C) Statoil ASA, Ceetron Solutions AS
 | 
			
		||||
// 
 | 
			
		||||
//  ResInsight is free software: you can redistribute it and/or modify
 | 
			
		||||
//  it under the terms of the GNU General Public License as published by
 | 
			
		||||
//  the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
//  (at your option) any later version.
 | 
			
		||||
// 
 | 
			
		||||
//  ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//  WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//  FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
// 
 | 
			
		||||
//  See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html> 
 | 
			
		||||
//  for more details.
 | 
			
		||||
//
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#include "RiaSocketDataTransfer.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
bool RiaSocketDataTransfer::writeBlockDataToSocket(QTcpSocket* socket, const char* data, quint64 bytesToWrite, QStringList& errorMessages)
 | 
			
		||||
{
 | 
			
		||||
    quint64 bytesWritten = 0;
 | 
			
		||||
    int blockCount = 0;
 | 
			
		||||
 | 
			
		||||
    quint64 maxBlockSize = maximumValueCountInBlock() * sizeof(double);
 | 
			
		||||
 | 
			
		||||
    while (bytesWritten < bytesToWrite)
 | 
			
		||||
    {
 | 
			
		||||
        quint64 byteCountToWrite = qMin(bytesToWrite - bytesWritten, maxBlockSize);
 | 
			
		||||
 | 
			
		||||
        qint64 actuallyBytesWritten = socket->write(data + bytesWritten, byteCountToWrite);
 | 
			
		||||
        if (actuallyBytesWritten < 0)
 | 
			
		||||
        {
 | 
			
		||||
            errorMessages.push_back("Error detected when writing data, error string from socket");
 | 
			
		||||
            errorMessages.push_back(socket->errorString());
 | 
			
		||||
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        bytesWritten += actuallyBytesWritten;
 | 
			
		||||
 | 
			
		||||
        blockCount++;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
bool RiaSocketDataTransfer::readBlockDataFromSocket(QTcpSocket* socket, char* data, quint64 bytesToRead, QStringList& errorMessages)
 | 
			
		||||
{
 | 
			
		||||
    quint64 bytesRead = 0;
 | 
			
		||||
 | 
			
		||||
    quint64 maxBlockSize = maximumValueCountInBlock() * sizeof(double);
 | 
			
		||||
 | 
			
		||||
    while (bytesRead < bytesToRead)
 | 
			
		||||
    {
 | 
			
		||||
        if (socket->bytesAvailable())
 | 
			
		||||
        {
 | 
			
		||||
            quint64 byteCountToRead = bytesToRead - bytesRead;
 | 
			
		||||
            byteCountToRead = qMin(byteCountToRead, maxBlockSize);
 | 
			
		||||
 | 
			
		||||
            qint64 actuallyBytesRead = socket->read(data + bytesRead, byteCountToRead);
 | 
			
		||||
            if (actuallyBytesRead < 0)
 | 
			
		||||
            {
 | 
			
		||||
                errorMessages.push_back("Error detected when reading data, error string from socket");
 | 
			
		||||
                errorMessages.push_back(socket->errorString());
 | 
			
		||||
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            bytesRead += actuallyBytesRead;
 | 
			
		||||
 | 
			
		||||
#ifdef octave_oct_h
 | 
			
		||||
            //octave_stdout << "Byte read " << bytesRead << " of a total of "<< bytesToRead << "\n";
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            if (!socket->waitForReadyRead())
 | 
			
		||||
            {
 | 
			
		||||
                errorMessages.push_back("Waited for data for %1 milli seconds.");
 | 
			
		||||
                errorMessages.push_back(socket->errorString());
 | 
			
		||||
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Allow Octave process to end a long running Octave function
 | 
			
		||||
#ifdef octave_oct_h
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
size_t RiaSocketDataTransfer::maximumValueCountInBlock()
 | 
			
		||||
{
 | 
			
		||||
    return 20000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										36
									
								
								ApplicationCode/SocketInterface/RiaSocketDataTransfer.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								ApplicationCode/SocketInterface/RiaSocketDataTransfer.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (C) Statoil ASA, Ceetron Solutions AS
 | 
			
		||||
// 
 | 
			
		||||
//  ResInsight is free software: you can redistribute it and/or modify
 | 
			
		||||
//  it under the terms of the GNU General Public License as published by
 | 
			
		||||
//  the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
//  (at your option) any later version.
 | 
			
		||||
// 
 | 
			
		||||
//  ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//  WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//  FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
// 
 | 
			
		||||
//  See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html> 
 | 
			
		||||
//  for more details.
 | 
			
		||||
//
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#include <QTcpSocket>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
//==================================================================================================
 | 
			
		||||
///  Utility class used for transfer of data using QTcpSocket
 | 
			
		||||
///
 | 
			
		||||
///  As the compile configuration for octave plugins is quite complex, 
 | 
			
		||||
//   the octave plugins includes the cpp-file to be able to compile only one file per plugin
 | 
			
		||||
//==================================================================================================
 | 
			
		||||
class RiaSocketDataTransfer
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    static size_t maximumValueCountInBlock();
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    static bool writeBlockDataToSocket(QTcpSocket* socket, const char* data, quint64 bytesToWrite, QStringList& errorMessages);
 | 
			
		||||
    static bool readBlockDataFromSocket(QTcpSocket* socket, char* data, quint64 bytesToRead, QStringList& errorMessages);
 | 
			
		||||
};
 | 
			
		||||
@@ -16,6 +16,10 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#include "RiaStdInclude.h"
 | 
			
		||||
 | 
			
		||||
#include "RiaApplication.h"
 | 
			
		||||
#include "RiaPreferences.h"
 | 
			
		||||
 | 
			
		||||
#include "RiaSocketTools.h"
 | 
			
		||||
#include "RiaSocketServer.h"
 | 
			
		||||
#include "RimCase.h"
 | 
			
		||||
@@ -34,6 +38,9 @@
 | 
			
		||||
 | 
			
		||||
#include "RimInputPropertyCollection.h"
 | 
			
		||||
 | 
			
		||||
#include "RiaSocketDataTransfer.h"
 | 
			
		||||
 | 
			
		||||
#include <QTcpSocket>
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
@@ -98,4 +105,28 @@ void RiaSocketTools::getCaseInfoFromCase(RimCase* rimCase, qint64& caseId, QStri
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
bool RiaSocketTools::writeBlockData(RiaSocketServer* server, QTcpSocket* socket, const char* data, quint64 bytesToWrite)
 | 
			
		||||
{
 | 
			
		||||
    cvf::Timer timer;
 | 
			
		||||
 | 
			
		||||
    QStringList errorMessages;
 | 
			
		||||
    bool writeSucceded = RiaSocketDataTransfer::writeBlockDataToSocket(socket, data, bytesToWrite, errorMessages);
 | 
			
		||||
 | 
			
		||||
    if (server)
 | 
			
		||||
    {
 | 
			
		||||
        for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
        {
 | 
			
		||||
            server->errorMessageDialog()->showMessage(errorMessages[i]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
//         double totalTimeMS = timer.time() * 1000.0;
 | 
			
		||||
//         QString resultInfo = QString("Total time '%1 ms'").arg(totalTimeMS);
 | 
			
		||||
// 
 | 
			
		||||
//         server->errorMessageDialog()->showMessage(resultInfo);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return writeSucceded;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@
 | 
			
		||||
 | 
			
		||||
class RimCase;
 | 
			
		||||
class RiaSocketServer;
 | 
			
		||||
class QTcpSocket;
 | 
			
		||||
 | 
			
		||||
#define PMonLog( MessageString ) RiuMainWindow::instance()->processMonitor()->addStringToLog( MessageString );
 | 
			
		||||
 | 
			
		||||
@@ -25,4 +26,6 @@ class RiaSocketTools
 | 
			
		||||
public:
 | 
			
		||||
    static RimCase* findCaseFromArgs(RiaSocketServer* server, const QList<QByteArray>& args);
 | 
			
		||||
    static void getCaseInfoFromCase(RimCase* rimCase, qint64& caseId, QString& caseName, QString& caseType, qint64& caseGroupId);
 | 
			
		||||
    
 | 
			
		||||
    static bool writeBlockData(RiaSocketServer* server, QTcpSocket* socket, const char* data, quint64 bytesToWrite);
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,6 @@
 | 
			
		||||
#include "RiuMultiCaseImportDialog.h"
 | 
			
		||||
 | 
			
		||||
#include "RiaPreferences.h"
 | 
			
		||||
#include "RiuPreferencesDialog.h"
 | 
			
		||||
 | 
			
		||||
#include "RigCaseCellResultsData.h"
 | 
			
		||||
 | 
			
		||||
@@ -63,6 +62,7 @@
 | 
			
		||||
#include "RimCalcScript.h"
 | 
			
		||||
#include "RimTools.h"
 | 
			
		||||
#include "RiaRegressionTest.h"
 | 
			
		||||
#include "cafPdmUiPropertyDialog.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -199,6 +199,7 @@ void RiuMainWindow::createActions()
 | 
			
		||||
    m_mockModelAction           = new QAction("&Mock Model", this);
 | 
			
		||||
    m_mockResultsModelAction    = new QAction("Mock Model With &Results", this);
 | 
			
		||||
    m_mockLargeResultsModelAction = new QAction("Large Mock Model", this);
 | 
			
		||||
    m_mockModelCustomizedAction = new QAction("Customized Mock Model", this);
 | 
			
		||||
    m_mockInputModelAction      = new QAction("Input Mock Model", this);
 | 
			
		||||
 | 
			
		||||
    m_snapshotToFile            = new QAction(QIcon(":/SnapShotSave.png"), "Snapshot To File", this);
 | 
			
		||||
@@ -226,6 +227,7 @@ void RiuMainWindow::createActions()
 | 
			
		||||
    connect(m_mockModelAction,	        SIGNAL(triggered()), SLOT(slotMockModel()));
 | 
			
		||||
    connect(m_mockResultsModelAction,	SIGNAL(triggered()), SLOT(slotMockResultsModel()));
 | 
			
		||||
    connect(m_mockLargeResultsModelAction,	SIGNAL(triggered()), SLOT(slotMockLargeResultsModel()));
 | 
			
		||||
    connect(m_mockModelCustomizedAction,	SIGNAL(triggered()), SLOT(slotMockModelCustomized()));
 | 
			
		||||
    connect(m_mockInputModelAction,	    SIGNAL(triggered()), SLOT(slotInputMockModel()));
 | 
			
		||||
 | 
			
		||||
    connect(m_snapshotToFile,	        SIGNAL(triggered()), SLOT(slotSnapshotToFile()));
 | 
			
		||||
@@ -386,6 +388,7 @@ void RiuMainWindow::createMenus()
 | 
			
		||||
    testMenu->addAction(m_mockModelAction);
 | 
			
		||||
    testMenu->addAction(m_mockResultsModelAction);
 | 
			
		||||
    testMenu->addAction(m_mockLargeResultsModelAction);
 | 
			
		||||
    testMenu->addAction(m_mockModelCustomizedAction);
 | 
			
		||||
    testMenu->addAction(m_mockInputModelAction);
 | 
			
		||||
    testMenu->addSeparator();
 | 
			
		||||
    testMenu->addAction(m_createCommandObject);
 | 
			
		||||
@@ -846,8 +849,6 @@ void RiuMainWindow::slotMockModel()
 | 
			
		||||
{
 | 
			
		||||
    RiaApplication* app = RiaApplication::instance();
 | 
			
		||||
    app->createMockModel();
 | 
			
		||||
 | 
			
		||||
    //m_mainViewer->setDefaultView();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
@@ -857,8 +858,6 @@ void RiuMainWindow::slotMockResultsModel()
 | 
			
		||||
{
 | 
			
		||||
    RiaApplication* app = RiaApplication::instance();
 | 
			
		||||
    app->createResultsMockModel();
 | 
			
		||||
 | 
			
		||||
    //m_mainViewer->setDefaultView();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -871,6 +870,14 @@ void RiuMainWindow::slotMockLargeResultsModel()
 | 
			
		||||
    app->createLargeResultsMockModel();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RiuMainWindow::slotMockModelCustomized()
 | 
			
		||||
{
 | 
			
		||||
    RiaApplication* app = RiaApplication::instance();
 | 
			
		||||
    app->createMockModelCustomized();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
@@ -1217,8 +1224,8 @@ void RiuMainWindow::slotShowPerformanceInfo(bool enable)
 | 
			
		||||
void RiuMainWindow::slotEditPreferences()
 | 
			
		||||
{
 | 
			
		||||
    RiaApplication* app = RiaApplication::instance();
 | 
			
		||||
    RiuPreferencesDialog preferencesDialog(this, app->preferences(), "Preferences");
 | 
			
		||||
    if (preferencesDialog.exec() == QDialog::Accepted)
 | 
			
		||||
    caf::PdmUiPropertyDialog propertyDialog(this, app->preferences(), "Preferences");
 | 
			
		||||
    if (propertyDialog.exec() == QDialog::Accepted)
 | 
			
		||||
    {
 | 
			
		||||
        // Write preferences using QSettings  and apply them to the application
 | 
			
		||||
        app->writeFieldsToApplicationStore(app->preferences());
 | 
			
		||||
@@ -1447,9 +1454,9 @@ void RiuMainWindow::slotOpenMultipleCases()
 | 
			
		||||
 | 
			
		||||
    if (1)
 | 
			
		||||
    {
 | 
			
		||||
        gridFileNames += "Result Mock Debug Model With Results";
 | 
			
		||||
        gridFileNames += "Result Mock Debug Model With Results";
 | 
			
		||||
        gridFileNames += "Result Mock Debug Model With Results";
 | 
			
		||||
        gridFileNames += RimDefines::mockModelBasicWithResults();
 | 
			
		||||
        gridFileNames += RimDefines::mockModelBasicWithResults();
 | 
			
		||||
        gridFileNames += RimDefines::mockModelBasicWithResults();
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
@@ -1766,7 +1773,7 @@ void RiuMainWindow::slotShowRegressionTestDialog()
 | 
			
		||||
    RiaApplication* app = RiaApplication::instance();
 | 
			
		||||
    app->readFieldsFromApplicationStore(®TestConfig);
 | 
			
		||||
 | 
			
		||||
    RiuPreferencesDialog regressionTestDialog(this, ®TestConfig, "Regression Test");
 | 
			
		||||
    caf::PdmUiPropertyDialog regressionTestDialog(this, ®TestConfig, "Regression Test");
 | 
			
		||||
    if (regressionTestDialog.exec() == QDialog::Accepted)
 | 
			
		||||
    {
 | 
			
		||||
        // Write preferences using QSettings and apply them to the application
 | 
			
		||||
 
 | 
			
		||||
@@ -154,6 +154,7 @@ private:
 | 
			
		||||
    QAction*		    m_mockModelAction;
 | 
			
		||||
    QAction*		    m_mockResultsModelAction;
 | 
			
		||||
    QAction*		    m_mockLargeResultsModelAction;
 | 
			
		||||
    QAction*		    m_mockModelCustomizedAction;
 | 
			
		||||
    QAction*		    m_mockInputModelAction;
 | 
			
		||||
 | 
			
		||||
    QAction*		    m_snapshotToFile;
 | 
			
		||||
@@ -243,6 +244,7 @@ private slots:
 | 
			
		||||
    void    slotMockModel();
 | 
			
		||||
    void    slotMockResultsModel();
 | 
			
		||||
    void    slotMockLargeResultsModel();
 | 
			
		||||
    void    slotMockModelCustomized();
 | 
			
		||||
    void    slotInputMockModel();
 | 
			
		||||
 | 
			
		||||
    // Windows slots
 | 
			
		||||
 
 | 
			
		||||
@@ -1,67 +0,0 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (C) 2011-2012 Statoil ASA, Ceetron AS
 | 
			
		||||
// 
 | 
			
		||||
//  ResInsight is free software: you can redistribute it and/or modify
 | 
			
		||||
//  it under the terms of the GNU General Public License as published by
 | 
			
		||||
//  the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
//  (at your option) any later version.
 | 
			
		||||
// 
 | 
			
		||||
//  ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//  WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//  FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
// 
 | 
			
		||||
//  See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html> 
 | 
			
		||||
//  for more details.
 | 
			
		||||
//
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#include "RiaStdInclude.h"
 | 
			
		||||
#include "RiuPreferencesDialog.h"
 | 
			
		||||
 | 
			
		||||
#include "cafAppEnum.h"
 | 
			
		||||
#include "cafPdmObject.h"
 | 
			
		||||
 | 
			
		||||
#include "RimUiTreeModelPdm.h"
 | 
			
		||||
#include "cafPdmUiPropertyView.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
RiuPreferencesDialog::RiuPreferencesDialog(QWidget* parent, caf::PdmObject* object, const QString& windowTitle)
 | 
			
		||||
    : QDialog(parent)
 | 
			
		||||
{
 | 
			
		||||
    CVF_ASSERT(object);
 | 
			
		||||
    
 | 
			
		||||
    m_pdmObject = object;
 | 
			
		||||
    m_windowTitle = windowTitle;
 | 
			
		||||
 | 
			
		||||
    setupUi();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void RiuPreferencesDialog::setupUi()
 | 
			
		||||
{
 | 
			
		||||
    setWindowTitle(m_windowTitle);
 | 
			
		||||
 | 
			
		||||
    m_pdmUiPropertyView = new caf::PdmUiPropertyView(this);
 | 
			
		||||
 | 
			
		||||
    QVBoxLayout* dialogLayout = new QVBoxLayout;
 | 
			
		||||
    setLayout(dialogLayout);
 | 
			
		||||
 | 
			
		||||
    dialogLayout->addWidget(m_pdmUiPropertyView);
 | 
			
		||||
    m_pdmUiPropertyView->showProperties(m_pdmObject);
 | 
			
		||||
 | 
			
		||||
    // Buttons
 | 
			
		||||
    QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
 | 
			
		||||
    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
 | 
			
		||||
    connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
 | 
			
		||||
 | 
			
		||||
    dialogLayout->addWidget(buttonBox);
 | 
			
		||||
 | 
			
		||||
    this->resize(400, 200);
 | 
			
		||||
}
 | 
			
		||||
@@ -11,6 +11,7 @@ set( QOBJECT_HEADERS
 | 
			
		||||
    cafUiTreeModelPdm.h
 | 
			
		||||
    cafUiProcess.h
 | 
			
		||||
    
 | 
			
		||||
    cafPdmSettings.h
 | 
			
		||||
    cafPdmUiLineEditor.h
 | 
			
		||||
    cafPdmUiCheckBoxEditor.h
 | 
			
		||||
    cafPdmUiComboBoxEditor.h
 | 
			
		||||
@@ -24,6 +25,7 @@ set( QOBJECT_HEADERS
 | 
			
		||||
    cafPdmUiColorEditor.h
 | 
			
		||||
    
 | 
			
		||||
    cafPdmUiPropertyView.h
 | 
			
		||||
    cafPdmUiPropertyDialog.h
 | 
			
		||||
    cafPdmUiTreeView.h
 | 
			
		||||
    cafPdmUiTreeViewModel.h
 | 
			
		||||
    cafPdmUiListView.h
 | 
			
		||||
@@ -38,6 +40,7 @@ endif()
 | 
			
		||||
add_library( ${PROJECT_NAME}
 | 
			
		||||
	cafAboutDialog.cpp
 | 
			
		||||
	cafAboutDialog.h
 | 
			
		||||
	cafPdmSettings.cpp
 | 
			
		||||
	cafPdmUiCheckBoxEditor.cpp
 | 
			
		||||
	cafPdmUiCheckBoxEditor.h
 | 
			
		||||
	cafPdmUiColorEditor.cpp
 | 
			
		||||
@@ -57,6 +60,8 @@ add_library( ${PROJECT_NAME}
 | 
			
		||||
    cafPdmUiListViewEditor.cpp
 | 
			
		||||
    cafPdmUiListViewEditor.h
 | 
			
		||||
    cafPdmUiListView.cpp
 | 
			
		||||
	cafPdmUiPropertyDialog.cpp
 | 
			
		||||
	cafPdmUiPropertyDialog.h
 | 
			
		||||
	cafPdmUiPropertyView.cpp
 | 
			
		||||
	cafPdmUiPropertyView.h
 | 
			
		||||
	cafPdmUiPushButtonEditor.cpp
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										116
									
								
								Fwk/AppFwk/cafUserInterface/cafPdmSettings.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								Fwk/AppFwk/cafUserInterface/cafPdmSettings.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,116 @@
 | 
			
		||||
//##################################################################################################
 | 
			
		||||
//
 | 
			
		||||
//   Custom Visualization Core library
 | 
			
		||||
//   Copyright (C) 2011-2013 Ceetron AS
 | 
			
		||||
//
 | 
			
		||||
//   This library may be used under the terms of either the GNU General Public License or
 | 
			
		||||
//   the GNU Lesser General Public License as follows:
 | 
			
		||||
//
 | 
			
		||||
//   GNU General Public License Usage
 | 
			
		||||
//   This library is free software: you can redistribute it and/or modify
 | 
			
		||||
//   it under the terms of the GNU General Public License as published by
 | 
			
		||||
//   the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
//   (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
//   This library is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//   WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//   FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
//
 | 
			
		||||
//   See the GNU General Public License at <<http://www.gnu.org/licenses/gpl.html>>
 | 
			
		||||
//   for more details.
 | 
			
		||||
//
 | 
			
		||||
//   GNU Lesser General Public License Usage
 | 
			
		||||
//   This library is free software; you can redistribute it and/or modify
 | 
			
		||||
//   it under the terms of the GNU Lesser General Public License as published by
 | 
			
		||||
//   the Free Software Foundation; either version 2.1 of the License, or
 | 
			
		||||
//   (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
//   This library is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//   WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//   FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
//
 | 
			
		||||
//   See the GNU Lesser General Public License at <<http://www.gnu.org/licenses/lgpl-2.1.html>>
 | 
			
		||||
//   for more details.
 | 
			
		||||
//
 | 
			
		||||
//##################################################################################################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "cafPdmSettings.h"
 | 
			
		||||
#include "cafPdmField.h"
 | 
			
		||||
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace caf
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void Settings::readFieldsFromApplicationStore(caf::PdmObject* object)
 | 
			
		||||
{
 | 
			
		||||
    // Qt doc :
 | 
			
		||||
    //
 | 
			
		||||
    // Constructs a QSettings object for accessing settings of the application and organization
 | 
			
		||||
    // set previously with a call to QCoreApplication::setOrganizationName(), 
 | 
			
		||||
    // QCoreApplication::setOrganizationDomain(), and QCoreApplication::setApplicationName().
 | 
			
		||||
    QSettings settings;
 | 
			
		||||
 | 
			
		||||
    QString prefix = object->classKeyword();
 | 
			
		||||
    if (!prefix.isEmpty())
 | 
			
		||||
    {
 | 
			
		||||
        prefix += "/";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    std::vector<caf::PdmFieldHandle*> fields;
 | 
			
		||||
    object->fields(fields);
 | 
			
		||||
    size_t i;
 | 
			
		||||
    for (i = 0; i < fields.size(); i++)
 | 
			
		||||
    {
 | 
			
		||||
        caf::PdmFieldHandle* fieldHandle = fields[i];
 | 
			
		||||
 | 
			
		||||
        QString keywordWithPrefix = prefix + fieldHandle->keyword();
 | 
			
		||||
        if (settings.contains(keywordWithPrefix))
 | 
			
		||||
        {
 | 
			
		||||
            QVariant val = settings.value(keywordWithPrefix);
 | 
			
		||||
            fieldHandle->setValueFromUi(val);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void Settings::writeFieldsToApplicationStore(caf::PdmObject* object)
 | 
			
		||||
{
 | 
			
		||||
    assert(object);
 | 
			
		||||
 | 
			
		||||
    // Qt doc :
 | 
			
		||||
    //
 | 
			
		||||
    // Constructs a QSettings object for accessing settings of the application and organization
 | 
			
		||||
    // set previously with a call to QCoreApplication::setOrganizationName(), 
 | 
			
		||||
    // QCoreApplication::setOrganizationDomain(), and QCoreApplication::setApplicationName().
 | 
			
		||||
    QSettings settings;
 | 
			
		||||
 | 
			
		||||
    QString prefix = object->classKeyword();
 | 
			
		||||
    if (!prefix.isEmpty())
 | 
			
		||||
    {
 | 
			
		||||
        prefix += "/";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    std::vector<caf::PdmFieldHandle*> fields;
 | 
			
		||||
    object->fields(fields);
 | 
			
		||||
 | 
			
		||||
    size_t i;
 | 
			
		||||
    for (i = 0; i < fields.size(); i++)
 | 
			
		||||
    {
 | 
			
		||||
        caf::PdmFieldHandle* fieldHandle = fields[i];
 | 
			
		||||
 | 
			
		||||
        QString keywordWithPrefix = prefix + fieldHandle->keyword();
 | 
			
		||||
        settings.setValue(keywordWithPrefix, fieldHandle->uiValue());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
} // namespace caf
 | 
			
		||||
							
								
								
									
										55
									
								
								Fwk/AppFwk/cafUserInterface/cafPdmSettings.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								Fwk/AppFwk/cafUserInterface/cafPdmSettings.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
//##################################################################################################
 | 
			
		||||
//
 | 
			
		||||
//   Custom Visualization Core library
 | 
			
		||||
//   Copyright (C) 2011-2013 Ceetron AS
 | 
			
		||||
//
 | 
			
		||||
//   This library may be used under the terms of either the GNU General Public License or
 | 
			
		||||
//   the GNU Lesser General Public License as follows:
 | 
			
		||||
//
 | 
			
		||||
//   GNU General Public License Usage
 | 
			
		||||
//   This library is free software: you can redistribute it and/or modify
 | 
			
		||||
//   it under the terms of the GNU General Public License as published by
 | 
			
		||||
//   the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
//   (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
//   This library is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//   WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//   FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
//
 | 
			
		||||
//   See the GNU General Public License at <<http://www.gnu.org/licenses/gpl.html>>
 | 
			
		||||
//   for more details.
 | 
			
		||||
//
 | 
			
		||||
//   GNU Lesser General Public License Usage
 | 
			
		||||
//   This library is free software; you can redistribute it and/or modify
 | 
			
		||||
//   it under the terms of the GNU Lesser General Public License as published by
 | 
			
		||||
//   the Free Software Foundation; either version 2.1 of the License, or
 | 
			
		||||
//   (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
//   This library is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//   WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//   FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
//
 | 
			
		||||
//   See the GNU Lesser General Public License at <<http://www.gnu.org/licenses/lgpl-2.1.html>>
 | 
			
		||||
//   for more details.
 | 
			
		||||
//
 | 
			
		||||
//##################################################################################################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <QSettings>
 | 
			
		||||
 | 
			
		||||
namespace caf
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    class PdmObject;
 | 
			
		||||
 | 
			
		||||
class Settings
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    static void readFieldsFromApplicationStore(caf::PdmObject* object);
 | 
			
		||||
    static void writeFieldsToApplicationStore(caf::PdmObject* object);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
} // end namespace caf
 | 
			
		||||
@@ -65,10 +65,11 @@ CAF_PDM_UI_REGISTER_DEFAULT_FIELD_EDITOR(PdmUiLineEditor, QString);
 | 
			
		||||
CAF_PDM_UI_REGISTER_DEFAULT_FIELD_EDITOR(PdmUiLineEditor, int);
 | 
			
		||||
CAF_PDM_UI_REGISTER_DEFAULT_FIELD_EDITOR(PdmUiLineEditor, double);
 | 
			
		||||
CAF_PDM_UI_REGISTER_DEFAULT_FIELD_EDITOR(PdmUiLineEditor, float);
 | 
			
		||||
CAF_PDM_UI_REGISTER_DEFAULT_FIELD_EDITOR(PdmUiLineEditor, quint64);
 | 
			
		||||
 | 
			
		||||
CAF_PDM_UI_REGISTER_DEFAULT_FIELD_EDITOR(PdmUiListEditor, std::vector<QString>);
 | 
			
		||||
CAF_PDM_UI_REGISTER_DEFAULT_FIELD_EDITOR(PdmUiListEditor, std::vector<int>);
 | 
			
		||||
CAF_PDM_UI_REGISTER_DEFAULT_FIELD_EDITOR(PdmUiListEditor, std::vector<unsigned int>);
 | 
			
		||||
 | 
			
		||||
CAF_PDM_UI_REGISTER_DEFAULT_FIELD_EDITOR(PdmUiListEditor, std::vector<float>);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										92
									
								
								Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyDialog.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyDialog.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,92 @@
 | 
			
		||||
//##################################################################################################
 | 
			
		||||
//
 | 
			
		||||
//   Custom Visualization Core library
 | 
			
		||||
//   Copyright (C) 2011-2013 Ceetron AS
 | 
			
		||||
//
 | 
			
		||||
//   This library may be used under the terms of either the GNU General Public License or
 | 
			
		||||
//   the GNU Lesser General Public License as follows:
 | 
			
		||||
//
 | 
			
		||||
//   GNU General Public License Usage
 | 
			
		||||
//   This library is free software: you can redistribute it and/or modify
 | 
			
		||||
//   it under the terms of the GNU General Public License as published by
 | 
			
		||||
//   the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
//   (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
//   This library is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//   WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//   FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
//
 | 
			
		||||
//   See the GNU General Public License at <<http://www.gnu.org/licenses/gpl.html>>
 | 
			
		||||
//   for more details.
 | 
			
		||||
//
 | 
			
		||||
//   GNU Lesser General Public License Usage
 | 
			
		||||
//   This library is free software; you can redistribute it and/or modify
 | 
			
		||||
//   it under the terms of the GNU Lesser General Public License as published by
 | 
			
		||||
//   the Free Software Foundation; either version 2.1 of the License, or
 | 
			
		||||
//   (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
//   This library is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//   WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//   FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
//
 | 
			
		||||
//   See the GNU Lesser General Public License at <<http://www.gnu.org/licenses/lgpl-2.1.html>>
 | 
			
		||||
//   for more details.
 | 
			
		||||
//
 | 
			
		||||
//##################################################################################################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "cafPdmUiPropertyDialog.h"
 | 
			
		||||
 | 
			
		||||
#include "cafPdmObject.h"
 | 
			
		||||
#include "cafPdmUiPropertyView.h"
 | 
			
		||||
 | 
			
		||||
#include <QVBoxLayout>
 | 
			
		||||
#include <QDialogButtonBox>
 | 
			
		||||
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace caf {
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
PdmUiPropertyDialog::PdmUiPropertyDialog(QWidget* parent, caf::PdmObject* object, const QString& windowTitle)
 | 
			
		||||
    : QDialog(parent)
 | 
			
		||||
{
 | 
			
		||||
    assert(object);
 | 
			
		||||
 | 
			
		||||
    m_pdmObject = object;
 | 
			
		||||
    m_windowTitle = windowTitle;
 | 
			
		||||
 | 
			
		||||
    setupUi();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
/// 
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
void PdmUiPropertyDialog::setupUi()
 | 
			
		||||
{
 | 
			
		||||
    setWindowTitle(m_windowTitle);
 | 
			
		||||
 | 
			
		||||
    m_pdmUiPropertyView = new caf::PdmUiPropertyView(this);
 | 
			
		||||
 | 
			
		||||
    QVBoxLayout* dialogLayout = new QVBoxLayout;
 | 
			
		||||
    setLayout(dialogLayout);
 | 
			
		||||
 | 
			
		||||
    dialogLayout->addWidget(m_pdmUiPropertyView);
 | 
			
		||||
    m_pdmUiPropertyView->showProperties(m_pdmObject);
 | 
			
		||||
 | 
			
		||||
    // Buttons
 | 
			
		||||
    QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
 | 
			
		||||
    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
 | 
			
		||||
    connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
 | 
			
		||||
 | 
			
		||||
    dialogLayout->addWidget(buttonBox);
 | 
			
		||||
 | 
			
		||||
    this->resize(400, 200);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}  // end namespace caf
 | 
			
		||||
							
								
								
									
										70
									
								
								Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyDialog.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyDialog.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
//##################################################################################################
 | 
			
		||||
//
 | 
			
		||||
//   Custom Visualization Core library
 | 
			
		||||
//   Copyright (C) 2011-2013 Ceetron AS
 | 
			
		||||
//
 | 
			
		||||
//   This library may be used under the terms of either the GNU General Public License or
 | 
			
		||||
//   the GNU Lesser General Public License as follows:
 | 
			
		||||
//
 | 
			
		||||
//   GNU General Public License Usage
 | 
			
		||||
//   This library is free software: you can redistribute it and/or modify
 | 
			
		||||
//   it under the terms of the GNU General Public License as published by
 | 
			
		||||
//   the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
//   (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
//   This library is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//   WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//   FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
//
 | 
			
		||||
//   See the GNU General Public License at <<http://www.gnu.org/licenses/gpl.html>>
 | 
			
		||||
//   for more details.
 | 
			
		||||
//
 | 
			
		||||
//   GNU Lesser General Public License Usage
 | 
			
		||||
//   This library is free software; you can redistribute it and/or modify
 | 
			
		||||
//   it under the terms of the GNU Lesser General Public License as published by
 | 
			
		||||
//   the Free Software Foundation; either version 2.1 of the License, or
 | 
			
		||||
//   (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
//   This library is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
			
		||||
//   WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
			
		||||
//   FITNESS FOR A PARTICULAR PURPOSE.
 | 
			
		||||
//
 | 
			
		||||
//   See the GNU Lesser General Public License at <<http://www.gnu.org/licenses/lgpl-2.1.html>>
 | 
			
		||||
//   for more details.
 | 
			
		||||
//
 | 
			
		||||
//##################################################################################################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
namespace caf
 | 
			
		||||
{
 | 
			
		||||
    class PdmObject;
 | 
			
		||||
    class PdmUiPropertyView;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//==================================================================================================
 | 
			
		||||
//
 | 
			
		||||
// 
 | 
			
		||||
//
 | 
			
		||||
//==================================================================================================
 | 
			
		||||
class PdmUiPropertyDialog : public QDialog
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    PdmUiPropertyDialog(QWidget* parent, caf::PdmObject* object, const QString& windowTitle);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void setupUi();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QString                     m_windowTitle;
 | 
			
		||||
    caf::PdmObject*             m_pdmObject;
 | 
			
		||||
    caf::PdmUiPropertyView*     m_pdmUiPropertyView;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
} // end namespace caf
 | 
			
		||||
@@ -4,28 +4,28 @@
 | 
			
		||||
# See http://www.cmake.org/Wiki/CMakeUserFindOctave
 | 
			
		||||
 | 
			
		||||
set(CPP_SOURCES
 | 
			
		||||
  riGetActiveCellProperty.cpp
 | 
			
		||||
  riSetActiveCellProperty.cpp
 | 
			
		||||
  riGetActiveCellInfo.cpp
 | 
			
		||||
  riGetMainGridDimensions.cpp
 | 
			
		||||
  riGetCurrentCase.cpp
 | 
			
		||||
  riGetCaseGroups.cpp
 | 
			
		||||
  riGetSelectedCases.cpp
 | 
			
		||||
  riGetCases.cpp
 | 
			
		||||
  riGetTimeStepDates.cpp
 | 
			
		||||
  riGetTimeStepDays.cpp
 | 
			
		||||
  riGetGridDimensions.cpp
 | 
			
		||||
  riGetCoarseningInfo.cpp
 | 
			
		||||
  riGetCellCenters.cpp
 | 
			
		||||
  riGetActiveCellCenters.cpp
 | 
			
		||||
  riGetCellCorners.cpp
 | 
			
		||||
  riGetActiveCellCorners.cpp
 | 
			
		||||
  riGetGridProperty.cpp
 | 
			
		||||
  riSetGridProperty.cpp
 | 
			
		||||
  riGetPropertyNames.cpp
 | 
			
		||||
  riGetWellNames.cpp
 | 
			
		||||
  riGetWellStatus.cpp
 | 
			
		||||
  riGetWellCells.cpp
 | 
			
		||||
    riGetActiveCellProperty.cpp
 | 
			
		||||
    riSetActiveCellProperty.cpp
 | 
			
		||||
    riGetActiveCellInfo.cpp
 | 
			
		||||
    riGetMainGridDimensions.cpp
 | 
			
		||||
    riGetCurrentCase.cpp
 | 
			
		||||
    riGetCaseGroups.cpp
 | 
			
		||||
    riGetSelectedCases.cpp
 | 
			
		||||
    riGetCases.cpp
 | 
			
		||||
    riGetTimeStepDates.cpp
 | 
			
		||||
    riGetTimeStepDays.cpp
 | 
			
		||||
    riGetGridDimensions.cpp
 | 
			
		||||
    riGetCoarseningInfo.cpp
 | 
			
		||||
    riGetCellCenters.cpp
 | 
			
		||||
    riGetActiveCellCenters.cpp
 | 
			
		||||
    riGetCellCorners.cpp
 | 
			
		||||
    riGetActiveCellCorners.cpp
 | 
			
		||||
    riGetGridProperty.cpp
 | 
			
		||||
    riSetGridProperty.cpp
 | 
			
		||||
    riGetPropertyNames.cpp
 | 
			
		||||
    riGetWellNames.cpp
 | 
			
		||||
    riGetWellStatus.cpp
 | 
			
		||||
    riGetWellCells.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 | 
			
		||||
@@ -88,7 +88,7 @@ if (RESINSIGHT_OCTAVE_PLUGIN_QMAKE AND RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
 | 
			
		||||
                    OUTPUT "${octFileName}"
 | 
			
		||||
                    COMMAND call "\"%VS100COMNTOOLS%../../VC/vcvarsall.bat\"" x86
 | 
			
		||||
                    COMMAND ${CMAKE_COMMAND} ARGS -E chdir ${RESINSIGHT_OCTAVE_BIN_DIR} ${RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE} -I${OCTAVE_QT_QTNETWORK_INCLUDE_DIR}
 | 
			
		||||
                        -I${OCTAVE_QT_QTCORE_INCLUDE_DIR} -I${OCTAVE_QT_INCLUDE_DIR} ${RPATH_COMMAND}
 | 
			
		||||
                        -I${OCTAVE_QT_QTCORE_INCLUDE_DIR} -I${OCTAVE_QT_INCLUDE_DIR} -I${ResInsight_SOURCE_DIR}/ApplicationCode/SocketInterface ${RPATH_COMMAND}
 | 
			
		||||
                        -L${OCTAVE_QT_LIBRARY_DIR} -lQtCore${QT_LIBRARY_POSTFIX} -lQtNetwork${QT_LIBRARY_POSTFIX} -o "${octFileName}" "${srcFileName}"
 | 
			
		||||
                    DEPENDS "${srcFileName}"
 | 
			
		||||
                    COMMENT "===> 32-bit x86 VS2010 : Generating ${octFileName}"
 | 
			
		||||
@@ -97,7 +97,7 @@ if (RESINSIGHT_OCTAVE_PLUGIN_QMAKE AND RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
 | 
			
		||||
                add_custom_command(
 | 
			
		||||
                    OUTPUT "${octFileName}"
 | 
			
		||||
                    COMMAND ${CMAKE_COMMAND} ARGS -E chdir ${RESINSIGHT_OCTAVE_BIN_DIR} ${RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE} -I${OCTAVE_QT_QTNETWORK_INCLUDE_DIR}
 | 
			
		||||
                        -I${OCTAVE_QT_QTCORE_INCLUDE_DIR} -I${OCTAVE_QT_INCLUDE_DIR} ${RPATH_COMMAND}
 | 
			
		||||
                        -I${OCTAVE_QT_QTCORE_INCLUDE_DIR} -I${OCTAVE_QT_INCLUDE_DIR} -I${ResInsight_SOURCE_DIR}/ApplicationCode/SocketInterface ${RPATH_COMMAND}
 | 
			
		||||
                        -L${OCTAVE_QT_LIBRARY_DIR} -lQtCore${QT_LIBRARY_POSTFIX} -lQtNetwork${QT_LIBRARY_POSTFIX} -o "${octFileName}" "${srcFileName}"
 | 
			
		||||
                    DEPENDS "${srcFileName}"
 | 
			
		||||
                    COMMENT "===> Generating ${octFileName}"
 | 
			
		||||
@@ -107,7 +107,7 @@ if (RESINSIGHT_OCTAVE_PLUGIN_QMAKE AND RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
 | 
			
		||||
            add_custom_command(
 | 
			
		||||
                OUTPUT "${octFileName}"
 | 
			
		||||
                COMMAND OCTAVE_HOME=${OCTAVE_HOME} ${RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE}
 | 
			
		||||
                    -I${OCTAVE_QT_QTNETWORK_INCLUDE_DIR} -I${OCTAVE_QT_QTCORE_INCLUDE_DIR} -I${OCTAVE_QT_INCLUDE_DIR} ${RPATH_COMMAND}
 | 
			
		||||
                    -I${OCTAVE_QT_QTNETWORK_INCLUDE_DIR} -I${OCTAVE_QT_QTCORE_INCLUDE_DIR} -I${OCTAVE_QT_INCLUDE_DIR} -I${ResInsight_SOURCE_DIR}/ApplicationCode/SocketInterface ${RPATH_COMMAND}
 | 
			
		||||
                    -L${OCTAVE_QT_LIBRARY_DIR} -lQtCore -lQtNetwork -o "${octFileName}" "${srcFileName}"
 | 
			
		||||
                DEPENDS "${srcFileName}"
 | 
			
		||||
                COMMENT "===> Generating ${octFileName}"
 | 
			
		||||
@@ -141,7 +141,9 @@ if (RESINSIGHT_OCTAVE_PLUGIN_QMAKE AND RESINSIGHT_OCTAVE_PLUGIN_MKOCTFILE)
 | 
			
		||||
      "${CMAKE_CURRENT_BINARY_DIR}/riGetWellNames.oct"
 | 
			
		||||
      "${CMAKE_CURRENT_BINARY_DIR}/riGetWellStatus.oct"
 | 
			
		||||
      "${CMAKE_CURRENT_BINARY_DIR}/riGetWellCells.oct"
 | 
			
		||||
      SOURCES ${CPP_SOURCES}
 | 
			
		||||
      SOURCES
 | 
			
		||||
      ${CPP_SOURCES}
 | 
			
		||||
      riSettings.h 
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,10 @@
 | 
			
		||||
#include <QtNetwork>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
#include <octave/oct.h>
 | 
			
		||||
 | 
			
		||||
#include "riSettings.h"
 | 
			
		||||
#include "RiaSocketDataTransfer.cpp"  // NB! Include cpp-file to avoid linking of additional file in oct-compile configuration
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void getActiveCellCenters(NDArray& cellCenterValues, const QString &hostName, quint16 port, const qint32& caseId, const QString& porosityModel)
 | 
			
		||||
@@ -61,24 +64,17 @@ void getActiveCellCenters(NDArray& cellCenterValues, const QString &hostName, qu
 | 
			
		||||
 | 
			
		||||
    cellCenterValues.resize(dv);
 | 
			
		||||
 | 
			
		||||
    while (socket.bytesAvailable() < (qint64)(byteCount))
 | 
			
		||||
    {
 | 
			
		||||
        if (!socket.waitForReadyRead(riOctavePlugin::longTimeOutMilliSecs))
 | 
			
		||||
        {
 | 
			
		||||
            error((("Waiting for data: ") + socket.errorString()).toLatin1().data());
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    quint64 bytesRead = 0;
 | 
			
		||||
    double* internalMatrixData = cellCenterValues.fortran_vec();
 | 
			
		||||
    bytesRead = socket.read((char*)(internalMatrixData), byteCount);
 | 
			
		||||
    QStringList errorMessages;
 | 
			
		||||
 | 
			
		||||
    if (byteCount != bytesRead)
 | 
			
		||||
    if (!RiaSocketDataTransfer::readBlockDataFromSocket(&socket, (char*)(internalMatrixData), byteCount, errorMessages))
 | 
			
		||||
    {
 | 
			
		||||
        error("Could not read binary double data properly from socket");
 | 
			
		||||
        octave_stdout << "Active cell count: " << activeCellCount << std::endl;
 | 
			
		||||
        for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
        {
 | 
			
		||||
            error(errorMessages[i].toLatin1().data());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,10 @@
 | 
			
		||||
#include <QtNetwork>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
#include <octave/oct.h>
 | 
			
		||||
 | 
			
		||||
#include "riSettings.h"
 | 
			
		||||
#include "RiaSocketDataTransfer.cpp"  // NB! Include cpp-file to avoid linking of additional file in oct-compile configuration
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void getActiveCellCorners(NDArray& cellCornerValues, const QString &hostName, quint16 port, const qint32& caseId, const QString& porosityModel)
 | 
			
		||||
@@ -61,24 +64,16 @@ void getActiveCellCorners(NDArray& cellCornerValues, const QString &hostName, qu
 | 
			
		||||
    dv(2) = 3;
 | 
			
		||||
    cellCornerValues.resize(dv);
 | 
			
		||||
 | 
			
		||||
    while (socket.bytesAvailable() < (qint64)(byteCount))
 | 
			
		||||
    {
 | 
			
		||||
        if (!socket.waitForReadyRead(riOctavePlugin::longTimeOutMilliSecs))
 | 
			
		||||
        {
 | 
			
		||||
            error((("Waiting for data: ") + socket.errorString()).toLatin1().data());
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    quint64 bytesRead = 0;
 | 
			
		||||
    double* internalMatrixData = cellCornerValues.fortran_vec();
 | 
			
		||||
    bytesRead = socket.read((char*)(internalMatrixData), byteCount);
 | 
			
		||||
 | 
			
		||||
    if (byteCount != bytesRead)
 | 
			
		||||
    QStringList errorMessages;
 | 
			
		||||
    if (!RiaSocketDataTransfer::readBlockDataFromSocket(&socket, (char*)(internalMatrixData), byteCount, errorMessages))
 | 
			
		||||
    {
 | 
			
		||||
        error("Could not read binary double data properly from socket");
 | 
			
		||||
        octave_stdout << "Active cell count: " << activeCellCount << std::endl;
 | 
			
		||||
        for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
        {
 | 
			
		||||
            error(errorMessages[i].toLatin1().data());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,9 @@
 | 
			
		||||
#include <QtNetwork>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
#include <octave/oct.h>
 | 
			
		||||
 | 
			
		||||
#include "riSettings.h"
 | 
			
		||||
 | 
			
		||||
#include "RiaSocketDataTransfer.cpp"  // NB! Include cpp-file to avoid linking of additional file in oct-compile configuration
 | 
			
		||||
 | 
			
		||||
void getActiveCellInfo(int32NDArray& activeCellInfo, const QString &hostName, quint16 port, const qint64& caseId, const QString& porosityModel)
 | 
			
		||||
{
 | 
			
		||||
@@ -43,59 +44,32 @@ void getActiveCellInfo(int32NDArray& activeCellInfo, const QString &hostName, qu
 | 
			
		||||
    // Read timestep count and blocksize
 | 
			
		||||
 | 
			
		||||
    quint64 columnCount;
 | 
			
		||||
    quint64 byteCount;
 | 
			
		||||
    quint64 byteCountForOneTimestep;
 | 
			
		||||
    size_t  activeCellCount;
 | 
			
		||||
 | 
			
		||||
    socketStream >> columnCount;
 | 
			
		||||
    socketStream >> byteCount;
 | 
			
		||||
    socketStream >> byteCountForOneTimestep;
 | 
			
		||||
 | 
			
		||||
    activeCellCount = byteCount / sizeof(qint32);
 | 
			
		||||
    activeCellCount = byteCountForOneTimestep / sizeof(qint32);
 | 
			
		||||
 | 
			
		||||
    dim_vector dv (2, 1);
 | 
			
		||||
    dv(0) = activeCellCount;
 | 
			
		||||
    dv(1) = columnCount;
 | 
			
		||||
    activeCellInfo.resize(dv);
 | 
			
		||||
 | 
			
		||||
    if (!(byteCount && columnCount))
 | 
			
		||||
    if (!(byteCountForOneTimestep && columnCount))
 | 
			
		||||
    {
 | 
			
		||||
        error ("Could not find the requested data in ResInsight");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Wait for available data for each column, then read data for each column
 | 
			
		||||
    for (size_t tIdx = 0; tIdx < columnCount; ++tIdx)
 | 
			
		||||
    qint32* internalMatrixData = (qint32*)activeCellInfo.fortran_vec()->mex_get_data();
 | 
			
		||||
    QStringList errorMessages;
 | 
			
		||||
    if (!RiaSocketDataTransfer::readBlockDataFromSocket(&socket, (char*)(internalMatrixData), columnCount * byteCountForOneTimestep, errorMessages))
 | 
			
		||||
    {
 | 
			
		||||
        while (socket.bytesAvailable() < (int)byteCount)
 | 
			
		||||
        for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
        {
 | 
			
		||||
            if (!socket.waitForReadyRead(riOctavePlugin::longTimeOutMilliSecs))
 | 
			
		||||
            {
 | 
			
		||||
                QString errorMsg = QString("Waiting for column number: %1 of %2: %3").arg(tIdx).arg(columnCount).arg(socket.errorString());
 | 
			
		||||
 | 
			
		||||
                error(errorMsg.toLatin1().data());
 | 
			
		||||
                octave_stdout << "Active cells: " << activeCellCount << ", Columns: " << columnCount << std::endl;
 | 
			
		||||
                return ;
 | 
			
		||||
            }
 | 
			
		||||
           OCTAVE_QUIT;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        qint64 bytesRead = 0;
 | 
			
		||||
        qint32* internalMatrixData = (qint32*)activeCellInfo.fortran_vec()->mex_get_data();
 | 
			
		||||
 | 
			
		||||
#if 1 // Use raw data transfer. Faster.
 | 
			
		||||
        bytesRead = socket.read((char*)(internalMatrixData + tIdx * activeCellCount), byteCount);
 | 
			
		||||
#else
 | 
			
		||||
        for (size_t cIdx = 0; cIdx < activeCellCount; ++cIdx)
 | 
			
		||||
        {
 | 
			
		||||
            socketStream >> internalMatrixData[tIdx * activeCellCount + cIdx];
 | 
			
		||||
 | 
			
		||||
            if (socketStream.status() == QDataStream::Ok) bytesRead += sizeof(int);
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        if ((int)byteCount != bytesRead)
 | 
			
		||||
        {
 | 
			
		||||
            error("Could not read binary double data properly from socket");
 | 
			
		||||
            octave_stdout << "Active cells: " << activeCellCount << ", Columns: " << columnCount << std::endl;
 | 
			
		||||
            error(errorMessages[i].toLatin1().data());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,12 @@
 | 
			
		||||
#include <QtNetwork>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
#include <octave/oct.h>
 | 
			
		||||
 | 
			
		||||
#include "riSettings.h"
 | 
			
		||||
 | 
			
		||||
#include "RiaSocketDataTransfer.cpp"  // NB! Include cpp-file to avoid linking of additional file in oct-compile configuration
 | 
			
		||||
 | 
			
		||||
void getActiveCellProperty(Matrix& propertyFrames, const QString &serverName, quint16 serverPort,
 | 
			
		||||
                        const qint64& caseId, QString propertyName, const int32NDArray& requestedTimeSteps, QString porosityModel)
 | 
			
		||||
{
 | 
			
		||||
@@ -63,44 +68,18 @@ void getActiveCellProperty(Matrix& propertyFrames, const QString &serverName, qu
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Wait for available data for each timestep, then read data for each timestep
 | 
			
		||||
    quint64 totalByteCount = byteCount * timestepCount;
 | 
			
		||||
 | 
			
		||||
    for (size_t tIdx = 0; tIdx < timestepCount; ++tIdx)
 | 
			
		||||
    double* internalMatrixData = propertyFrames.fortran_vec();
 | 
			
		||||
    QStringList errorMessages;
 | 
			
		||||
    if (!RiaSocketDataTransfer::readBlockDataFromSocket(&socket, (char*)(internalMatrixData), totalByteCount, errorMessages))
 | 
			
		||||
    {
 | 
			
		||||
        while (socket.bytesAvailable() < (int)byteCount)
 | 
			
		||||
        for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
        {
 | 
			
		||||
            if (!socket.waitForReadyRead(riOctavePlugin::longTimeOutMilliSecs))
 | 
			
		||||
            {
 | 
			
		||||
                error((("Waiting for timestep data number: ") + QString::number(tIdx)+  ": " + socket.errorString()).toLatin1().data());
 | 
			
		||||
                octave_stdout << "Active cells: " << activeCellCount << ", Timesteps: " << timestepCount << std::endl;
 | 
			
		||||
                return ;
 | 
			
		||||
            }
 | 
			
		||||
           OCTAVE_QUIT;
 | 
			
		||||
            error(errorMessages[i].toLatin1().data());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        qint64 bytesRead = 0;
 | 
			
		||||
        double * internalMatrixData = propertyFrames.fortran_vec();
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
        // Raw data transfer. Faster. Not possible when dealing with coarsening
 | 
			
		||||
        // bytesRead = socket.read((char*)(internalMatrixData + tIdx * activeCellCount), byteCount);
 | 
			
		||||
#else
 | 
			
		||||
        // Compatible transfer. Now the only one working
 | 
			
		||||
        for (size_t cIdx = 0; cIdx < activeCellCount; ++cIdx)
 | 
			
		||||
        {
 | 
			
		||||
            socketStream >> internalMatrixData[tIdx * activeCellCount + cIdx];
 | 
			
		||||
 | 
			
		||||
            if (socketStream.status() == QDataStream::Ok) bytesRead += sizeof(double);
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        if ((int)byteCount != bytesRead)
 | 
			
		||||
        {
 | 
			
		||||
            error("Could not read binary double data properly from socket");
 | 
			
		||||
            octave_stdout << "Active cells: " << activeCellCount << ", Timesteps: " << timestepCount << std::endl;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    QString tmp = QString("riGetActiveCellProperty : Read %1").arg(propertyName);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,10 @@
 | 
			
		||||
#include <QtNetwork>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
#include <octave/oct.h>
 | 
			
		||||
 | 
			
		||||
#include "riSettings.h"
 | 
			
		||||
#include "RiaSocketDataTransfer.cpp"  // NB! Include cpp-file to avoid linking of additional file in oct-compile configuration
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void getCellCenters(NDArray& cellCenterValues, const QString &hostName, quint16 port, const qint32& caseId, const quint32& gridIndex)
 | 
			
		||||
@@ -66,39 +69,18 @@ void getCellCenters(NDArray& cellCenterValues, const QString &hostName, quint16
 | 
			
		||||
    dv(3) = 3;
 | 
			
		||||
    cellCenterValues.resize(dv);
 | 
			
		||||
 | 
			
		||||
    while (socket.bytesAvailable() < (qint64)(byteCount))
 | 
			
		||||
    double* internalMatrixData = cellCenterValues.fortran_vec();
 | 
			
		||||
    QStringList errorMessages;
 | 
			
		||||
    if (!RiaSocketDataTransfer::readBlockDataFromSocket(&socket, (char*)(internalMatrixData), byteCount, errorMessages))
 | 
			
		||||
    {
 | 
			
		||||
        if (!socket.waitForReadyRead(riOctavePlugin::longTimeOutMilliSecs))
 | 
			
		||||
        for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
        {
 | 
			
		||||
            error((("Waiting for data: ") + socket.errorString()).toLatin1().data());
 | 
			
		||||
            return;
 | 
			
		||||
            error(errorMessages[i].toLatin1().data());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //octave_stdout << " riGetCellCenters : I = " << cellCountI <<" J = " << cellCountJ << " K = " << cellCountK  << std::endl;
 | 
			
		||||
    //octave_stdout << " riGetCellCenters : numDoubles = " << valueCount << std::endl;
 | 
			
		||||
 | 
			
		||||
    double* internalMatrixData = cellCenterValues.fortran_vec();
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    octave_idx_type valueCount = cellCenterValues.length();
 | 
			
		||||
    double val;
 | 
			
		||||
    for (octave_idx_type i = 0; i < valueCount; i++)
 | 
			
		||||
    {
 | 
			
		||||
        socketStream >> internalMatrixData[i];
 | 
			
		||||
    }
 | 
			
		||||
#else
 | 
			
		||||
    quint64 bytesRead = 0;
 | 
			
		||||
    bytesRead = socket.read((char*)(internalMatrixData), byteCount);
 | 
			
		||||
 | 
			
		||||
    if (byteCount != bytesRead)
 | 
			
		||||
    {
 | 
			
		||||
        error("Could not read binary double data properly from socket");
 | 
			
		||||
        octave_stdout << "Cell count: " << cellCount << std::endl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,12 @@
 | 
			
		||||
#include <QtNetwork>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
#include <octave/oct.h>
 | 
			
		||||
 | 
			
		||||
#include "riSettings.h"
 | 
			
		||||
#include "RiaSocketDataTransfer.cpp"  // NB! Include cpp-file to avoid linking of additional file in oct-compile configuration
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void getCellCorners(NDArray& cellCornerValues, const QString &hostName, quint16 port, const qint32& caseId, const quint32& gridIndex)
 | 
			
		||||
@@ -67,37 +72,18 @@ void getCellCorners(NDArray& cellCornerValues, const QString &hostName, quint16
 | 
			
		||||
    dv(4) = 3;
 | 
			
		||||
    cellCornerValues.resize(dv);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    while (socket.bytesAvailable() < (qint64)(byteCount))
 | 
			
		||||
    double* internalMatrixData = cellCornerValues.fortran_vec();
 | 
			
		||||
    QStringList errorMessages;
 | 
			
		||||
    if (!RiaSocketDataTransfer::readBlockDataFromSocket(&socket, (char*)(internalMatrixData), byteCount, errorMessages))
 | 
			
		||||
    {
 | 
			
		||||
        if (!socket.waitForReadyRead(riOctavePlugin::longTimeOutMilliSecs))
 | 
			
		||||
        for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
        {
 | 
			
		||||
            error((("Waiting for data: ") + socket.errorString()).toLatin1().data());
 | 
			
		||||
            return;
 | 
			
		||||
            error(errorMessages[i].toLatin1().data());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    double* internalMatrixData = cellCornerValues.fortran_vec();
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    double val;
 | 
			
		||||
    for (octave_idx_type i = 0; i < valueCount; i++)
 | 
			
		||||
    {
 | 
			
		||||
        socketStream >> internalMatrixData[i];
 | 
			
		||||
    }
 | 
			
		||||
#else
 | 
			
		||||
    quint64 bytesRead = 0;
 | 
			
		||||
    bytesRead = socket.read((char*)(internalMatrixData), byteCount);
 | 
			
		||||
 | 
			
		||||
    if (byteCount != bytesRead)
 | 
			
		||||
    {
 | 
			
		||||
        error("Could not read binary double data properly from socket");
 | 
			
		||||
        octave_stdout << "Cell count: " << cellCount << std::endl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,11 @@
 | 
			
		||||
#include <QtNetwork>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
#include <octave/oct.h>
 | 
			
		||||
 | 
			
		||||
#include "riSettings.h"
 | 
			
		||||
#include "RiaSocketDataTransfer.cpp"  // NB! Include cpp-file to avoid linking of additional file in oct-compile configuration
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void getGridProperty(NDArray& propertyFrames, const QString &serverName, quint16 serverPort,
 | 
			
		||||
                        const int& caseId, int gridIdx, QString propertyName, const int32NDArray& requestedTimeSteps, QString porosityModel)
 | 
			
		||||
@@ -22,7 +27,7 @@ void getGridProperty(NDArray& propertyFrames, const QString &serverName, quint16
 | 
			
		||||
    QString command;
 | 
			
		||||
    command += "GetGridProperty " + QString::number(caseId) + " " + QString::number(gridIdx) + " " + propertyName + " " + porosityModel;
 | 
			
		||||
 | 
			
		||||
    for (int i = 0; i < requestedTimeSteps.length(); ++i)
 | 
			
		||||
    for (qint64 i = 0; i < requestedTimeSteps.length(); ++i)
 | 
			
		||||
    {
 | 
			
		||||
        if (i == 0) command += " ";
 | 
			
		||||
        command += QString::number(static_cast<int>(requestedTimeSteps.elem(i)) - 1); // To make the index 0-based
 | 
			
		||||
@@ -36,7 +41,7 @@ void getGridProperty(NDArray& propertyFrames, const QString &serverName, quint16
 | 
			
		||||
 | 
			
		||||
    // Get response. First wait for the header
 | 
			
		||||
 | 
			
		||||
    while (socket.bytesAvailable() < (int)(4*sizeof(quint64)))
 | 
			
		||||
    while (socket.bytesAvailable() < (qint64)(4*sizeof(quint64)))
 | 
			
		||||
    {
 | 
			
		||||
        if (!socket.waitForReadyRead(riOctavePlugin::longTimeOutMilliSecs))
 | 
			
		||||
        {
 | 
			
		||||
@@ -48,6 +53,7 @@ void getGridProperty(NDArray& propertyFrames, const QString &serverName, quint16
 | 
			
		||||
    // Read sizes
 | 
			
		||||
 | 
			
		||||
    quint64 totalByteCount;
 | 
			
		||||
   
 | 
			
		||||
    quint64 cellCountI;
 | 
			
		||||
    quint64 cellCountJ;
 | 
			
		||||
    quint64 cellCountK;
 | 
			
		||||
@@ -59,6 +65,7 @@ void getGridProperty(NDArray& propertyFrames, const QString &serverName, quint16
 | 
			
		||||
    socketStream >> timestepCount;
 | 
			
		||||
 | 
			
		||||
    totalByteCount = cellCountI*cellCountJ*cellCountK*timestepCount*sizeof(double);
 | 
			
		||||
    
 | 
			
		||||
    if (!(totalByteCount))
 | 
			
		||||
    {
 | 
			
		||||
        error ("Could not find the requested data in ResInsight");
 | 
			
		||||
@@ -74,28 +81,16 @@ void getGridProperty(NDArray& propertyFrames, const QString &serverName, quint16
 | 
			
		||||
 | 
			
		||||
    propertyFrames.resize(dv);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // Wait for available data
 | 
			
		||||
 | 
			
		||||
    while (socket.bytesAvailable() < (int)totalByteCount)
 | 
			
		||||
    double* internalMatrixData = propertyFrames.fortran_vec();
 | 
			
		||||
    QStringList errorMessages;
 | 
			
		||||
    if (!RiaSocketDataTransfer::readBlockDataFromSocket(&socket, (char*)(internalMatrixData), totalByteCount, errorMessages))
 | 
			
		||||
    {
 | 
			
		||||
        if (!socket.waitForReadyRead(riOctavePlugin::longTimeOutMilliSecs))
 | 
			
		||||
        for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
        {
 | 
			
		||||
            error(("Waiting for data : " + socket.errorString()).toLatin1().data());
 | 
			
		||||
            return ;
 | 
			
		||||
            error(errorMessages[i].toLatin1().data());
 | 
			
		||||
        }
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    qint64 bytesRead = 0;
 | 
			
		||||
    double * internalMatrixData = propertyFrames.fortran_vec();
 | 
			
		||||
 | 
			
		||||
    // Raw data transfer. Faster.
 | 
			
		||||
    bytesRead = socket.read((char*)(internalMatrixData ), totalByteCount);
 | 
			
		||||
 | 
			
		||||
    if ((int)totalByteCount != bytesRead)
 | 
			
		||||
    {
 | 
			
		||||
        error("Could not read binary double data properly from socket");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    QString tmp = QString("riGetGridProperty : Read %1").arg(propertyName);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,10 @@
 | 
			
		||||
#include <QtNetwork>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
#include <octave/oct.h>
 | 
			
		||||
 | 
			
		||||
#include "riSettings.h"
 | 
			
		||||
#include "RiaSocketDataTransfer.cpp"  // NB! Include cpp-file to avoid linking of additional file in oct-compile configuration
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void setEclipseProperty(const Matrix& propertyFrames, const QString &hostName, quint16 port,
 | 
			
		||||
@@ -47,27 +51,29 @@ void setEclipseProperty(const Matrix& propertyFrames, const QString &hostName, q
 | 
			
		||||
    socketStream << (qint64)timeStepByteCount;
 | 
			
		||||
 | 
			
		||||
    const double* internalData = propertyFrames.fortran_vec();
 | 
			
		||||
    qint64 dataWritten = socket.write((const char *)internalData, timeStepByteCount*timeStepCount);
 | 
			
		||||
 | 
			
		||||
    if (dataWritten == timeStepByteCount*timeStepCount)
 | 
			
		||||
    QStringList errorMessages;
 | 
			
		||||
    if (!RiaSocketDataTransfer::writeBlockDataToSocket(&socket, (const char *)internalData, timeStepByteCount*timeStepCount, errorMessages))
 | 
			
		||||
    {
 | 
			
		||||
        QString tmp = QString("riSetActiveCellProperty : Wrote %1").arg(propertyName);
 | 
			
		||||
        for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
        {
 | 
			
		||||
            octave_stdout << errorMessages[i].toStdString();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (caseId == -1)
 | 
			
		||||
        {
 | 
			
		||||
            tmp += QString(" to current case.");
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            tmp += QString(" to case with Id = %1.").arg(caseId);
 | 
			
		||||
        }
 | 
			
		||||
        octave_stdout << tmp.toStdString() << " Active Cells : " << cellCount << " Time steps : " << timeStepCount << std::endl;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    QString tmp = QString("riSetActiveCellProperty : Wrote %1").arg(propertyName);
 | 
			
		||||
 | 
			
		||||
    if (caseId == -1)
 | 
			
		||||
    {
 | 
			
		||||
        tmp += QString(" to current case.");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        error("riSetActiveCellProperty : Was not able to write the proper amount of data to ResInsight:");
 | 
			
		||||
        octave_stdout << " Active Cells : " << cellCount << "Time steps : " << timeStepCount << " Data Written: " << dataWritten << " Should have written: " << timeStepCount * cellCount * sizeof(double) << std::endl;
 | 
			
		||||
        tmp += QString(" to case with Id = %1.").arg(caseId);
 | 
			
		||||
    }
 | 
			
		||||
    octave_stdout << tmp.toStdString() << " Active Cells : " << cellCount << " Time steps : " << timeStepCount << std::endl;
 | 
			
		||||
 | 
			
		||||
    while(socket.bytesToWrite() && socket.state() == QAbstractSocket::ConnectedState)
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,10 @@
 | 
			
		||||
#include <QtNetwork>
 | 
			
		||||
#include <QStringList>
 | 
			
		||||
 | 
			
		||||
#include <octave/oct.h>
 | 
			
		||||
 | 
			
		||||
#include "riSettings.h"
 | 
			
		||||
#include "RiaSocketDataTransfer.cpp"  // NB! Include cpp-file to avoid linking of additional file in oct-compile configuration
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void setEclipseProperty(const NDArray& propertyFrames, const QString &hostName, quint16 port,
 | 
			
		||||
@@ -64,35 +68,40 @@ void setEclipseProperty(const NDArray& propertyFrames, const QString &hostName,
 | 
			
		||||
    socketStream << (qint64)singleTimeStepByteCount;
 | 
			
		||||
 | 
			
		||||
    const double* internalData = propertyFrames.fortran_vec();
 | 
			
		||||
    int dataWritten = socket.write((const char *)internalData, singleTimeStepByteCount*timeStepCount);
 | 
			
		||||
 | 
			
		||||
    if (dataWritten == singleTimeStepByteCount*timeStepCount)
 | 
			
		||||
    QStringList errorMessages;
 | 
			
		||||
    if (!RiaSocketDataTransfer::writeBlockDataToSocket(&socket, (const char *)internalData, timeStepCount*singleTimeStepByteCount, errorMessages))
 | 
			
		||||
    {
 | 
			
		||||
        QString tmp = QString("riSetGridProperty : Wrote %1").arg(propertyName);
 | 
			
		||||
 | 
			
		||||
        if (caseId == -1)
 | 
			
		||||
        for (int i = 0; i < errorMessages.size(); i++)
 | 
			
		||||
        {
 | 
			
		||||
            tmp += QString(" to current case,");
 | 
			
		||||
            octave_stdout << errorMessages[i].toStdString();
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            tmp += QString(" to case with Id = %1,").arg(caseId);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        tmp += QString(" grid index: %1, ").arg(gridIndex);
 | 
			
		||||
 | 
			
		||||
        octave_stdout << tmp.toStdString() << " Time steps : " << timeStepCount << std::endl;
 | 
			
		||||
        size_t cellCount = cellCountI * cellCountJ * cellCountK;
 | 
			
		||||
        error("riSetGridProperty : Was not able to write the proper amount of data to ResInsight:");
 | 
			
		||||
        octave_stdout << " Cell count : " << cellCount << "Time steps : " << timeStepCount << std::endl;
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    QString tmp = QString("riSetGridProperty : Wrote %1").arg(propertyName);
 | 
			
		||||
 | 
			
		||||
    if (caseId == -1)
 | 
			
		||||
    {
 | 
			
		||||
        tmp += QString(" to current case,");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        size_t cellCount = cellCountI * cellCountJ * cellCountK;
 | 
			
		||||
        error("riSetGridProperty : Was not able to write the proper amount of data to ResInsight:");
 | 
			
		||||
        octave_stdout << " Cell count : " << cellCount << "Time steps : " << timeStepCount << " Data Written: " << dataWritten << " Should have written: " << timeStepCount * cellCount * sizeof(double) << std::endl;
 | 
			
		||||
        tmp += QString(" to case with Id = %1,").arg(caseId);
 | 
			
		||||
    }
 | 
			
		||||
        
 | 
			
		||||
    tmp += QString(" grid index: %1, ").arg(gridIndex);
 | 
			
		||||
 | 
			
		||||
    octave_stdout << tmp.toStdString() << " Time steps : " << timeStepCount << std::endl;
 | 
			
		||||
 | 
			
		||||
    while(socket.bytesToWrite() && socket.state() == QAbstractSocket::ConnectedState)
 | 
			
		||||
    {
 | 
			
		||||
        // octave_stdout << "Bytes to write: " << socket.bytesToWrite() << std::endl;
 | 
			
		||||
//        octave_stdout << "Bytes to write: " << socket.bytesToWrite() << std::endl << std::flush;
 | 
			
		||||
        socket.waitForBytesWritten(riOctavePlugin::longTimeOutMilliSecs);
 | 
			
		||||
        OCTAVE_QUIT;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,8 @@ namespace riOctavePlugin
 | 
			
		||||
    const int shortTimeOutMilliSecs     =    5000;
 | 
			
		||||
    const int longTimeOutMilliSecs      = 6000000;
 | 
			
		||||
 | 
			
		||||
    const int socketMaxByteCount        =  100000;
 | 
			
		||||
 | 
			
		||||
    // Octave data structure : CaseInfo
 | 
			
		||||
    char caseInfo_CaseId[]      = "CaseId";
 | 
			
		||||
    char caseInfo_CaseName[]    = "CaseName";
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user