mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
The building of Octave plugins within main ResInsight build on RHEL8 cause the build to use gcc-12, and gcc-12 is extremely slow when building opm-common. Adjust the CMake configuration so it is possible to build the Octave plugins as an independent build job. The plugin binaries can then be uploaded to an external server. The main ResInsight build can download the binaries and include them in the install package for ResInsight. Use the flag RESINSIGHT_USE_EXTERNAL_OCTAVE_PLUGINS to download external Octave plugin binaries.
114 lines
3.0 KiB
C++
114 lines
3.0 KiB
C++
#include <QtNetwork>
|
|
#include <octave/oct.h>
|
|
|
|
#include "riSettings.h"
|
|
|
|
void getMainGridDimensions(int32NDArray& gridDimensions, const QString &hostName, quint16 port, QString caseName)
|
|
{
|
|
QString serverName = hostName;
|
|
quint16 serverPort = port;
|
|
|
|
QTcpSocket socket;
|
|
socket.connectToHost(serverName, serverPort);
|
|
|
|
if (!socket.waitForConnected(riOctavePlugin::connectTimeOutMilliSecs))
|
|
{
|
|
error("Connection: %s",socket.errorString().toLatin1().data());
|
|
return;
|
|
}
|
|
|
|
// Create command and send it:
|
|
|
|
QString command("GetMainGridDimensions ");
|
|
command += caseName;
|
|
QByteArray cmdBytes = command.toLatin1();
|
|
|
|
QDataStream socketStream(&socket);
|
|
socketStream.setVersion(QDataStream::Qt_4_0);
|
|
|
|
socketStream << (qint64)(cmdBytes.size());
|
|
socket.write(cmdBytes);
|
|
|
|
// Get response. First wait for the header
|
|
|
|
while (socket.bytesAvailable() < (int)(3*sizeof(quint64)))
|
|
{
|
|
if (!socket.waitForReadyRead(riOctavePlugin::longTimeOutMilliSecs))
|
|
{
|
|
error("Waiting for header: %s",socket.errorString().toLatin1().data());
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Read timestep count and blocksize
|
|
|
|
quint64 iCount;
|
|
quint64 jCount;
|
|
quint64 kCount;
|
|
|
|
socketStream >> iCount;
|
|
socketStream >> jCount;
|
|
socketStream >> kCount;
|
|
|
|
dim_vector dv (1, 1);
|
|
dv(0) = 3;
|
|
|
|
gridDimensions.resize(dv);
|
|
gridDimensions(0) = iCount;
|
|
gridDimensions(1) = jCount;
|
|
gridDimensions(2) = kCount;
|
|
|
|
|
|
QString tmp = QString("riGetMainGridDimensions : Read main grid dimensions");
|
|
if (caseName.isEmpty())
|
|
{
|
|
tmp += QString(" from active case.");
|
|
}
|
|
else
|
|
{
|
|
tmp += QString(" from %1.").arg(caseName);
|
|
}
|
|
octave_stdout << tmp.toStdString() << " Dimensions: " << iCount << ", " << jCount << ", " << kCount << std::endl;
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
DEFUN_DLD (riGetMainGridDimensions, args, nargout,
|
|
"Usage:\n"
|
|
"\n"
|
|
" riGetMainGridDimensions( [CaseName/CaseIndex])\n"
|
|
"\n"
|
|
"Returns a vector of size 3: [ICount, JCount, KCount] \n"
|
|
"Containing the dimensions of the main grid in the requested case.\n"
|
|
"If the Eclipse Case is not defined, the active View in ResInsight is used."
|
|
)
|
|
{
|
|
int nargin = args.length ();
|
|
if (nargin > 1)
|
|
{
|
|
error("riGetActiveCellInfo: Too many arguments. Only the name or index of the case is valid input.\n");
|
|
print_usage();
|
|
}
|
|
else if (nargout < 1)
|
|
{
|
|
error("riGetActiveCellInfo: Missing output argument.\n");
|
|
print_usage();
|
|
}
|
|
else
|
|
{
|
|
int32NDArray propertyFrames;
|
|
|
|
if (nargin > 0)
|
|
getMainGridDimensions(propertyFrames, "127.0.0.1", riOctavePlugin::portNumber(), args(0).char_matrix_value().row_as_string(0).c_str());
|
|
else
|
|
getMainGridDimensions(propertyFrames, "127.0.0.1", riOctavePlugin::portNumber(), "");
|
|
|
|
return octave_value(propertyFrames);
|
|
}
|
|
|
|
return octave_value_list ();
|
|
}
|
|
|