From 98b8612009f2fea59ff61a75c9bc2a554f67a792 Mon Sep 17 00:00:00 2001 From: Jose Luis Cercos-Pita Date: Tue, 9 Jun 2026 06:18:09 +0200 Subject: [PATCH 1/2] fix(core): Demote points below seabed from error to warning --- source/MoorDyn2.cpp | 14 +++++--------- source/Point.cpp | 3 +-- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/source/MoorDyn2.cpp b/source/MoorDyn2.cpp index dc486d0a..d9970cbb 100644 --- a/source/MoorDyn2.cpp +++ b/source/MoorDyn2.cpp @@ -522,12 +522,7 @@ moordyn::MoorDyn::Init(const double* x, const double* xd, bool skip_ic) } // call this just to set WaterKin (may also set up output file in // future) - try { - PointList[l]->initialize(); - } - MOORDYN_CATCHER(err, err_msg); - if (err != MOORDYN_SUCCESS) - return err; + PointList[l]->initialize(); ix += 3; } @@ -1193,9 +1188,10 @@ moordyn::MoorDyn::ReadInFile() // Note - this is not in MD-F if (r0[2] < -env->WtrDpth) { env->WtrDpth = -r0[2]; - LOGWRN << "\t Water depth set to point " << PointList.size() + 1 - << " z position because point was specified below the " - "seabed" << endl; + LOGWRN << "\t Water depth set to point " + << PointList.size() + 1 + << " z position because point was specified below the" + << " seabed" << endl; } // Check point ID is sequential starting from 1 diff --git a/source/Point.cpp b/source/Point.cpp index 1819db2d..9cddd0b6 100644 --- a/source/Point.cpp +++ b/source/Point.cpp @@ -173,11 +173,10 @@ Point::initialize() const real waterDepth = seafloor ? seafloor->getDepthAt(r[0], r[1]) : -env->WtrDpth; if (waterDepth > r[2]) { - LOGERR << "Error: water depth is shallower than Point " << number + LOGWRN << "Error: water depth is shallower than Point " << number << "." << endl << "\tseabed z = " << waterDepth << endl << "\tpoint = " << r << endl; - throw moordyn::invalid_value_error("Invalid water depth"); } } From 561440a51a939e91969c3ee3a2d73a6615142b57 Mon Sep 17 00:00:00 2001 From: Jose Luis Cercos-Pita Date: Tue, 9 Jun 2026 06:22:51 +0200 Subject: [PATCH 2/2] fix(core): MATLAB wrappers trying to use the instance as a parameter (fixes #384) --- wrappers/matlab/MoorDynM_Load.cpp | 2 +- wrappers/matlab/MoorDynM_LoadState.cpp | 2 +- wrappers/matlab/MoorDynM_Save.cpp | 2 +- wrappers/matlab/MoorDynM_SaveBodyVTK.cpp | 2 +- wrappers/matlab/MoorDynM_SaveLineVTK.cpp | 2 +- wrappers/matlab/MoorDynM_SaveRodVTK.cpp | 2 +- wrappers/matlab/MoorDynM_SaveState.cpp | 2 +- wrappers/matlab/MoorDynM_SaveVTK.cpp | 2 +- wrappers/matlab/MoorDynM_SetLogFile.cpp | 2 +- wrappers/matlab/MoorDynM_SetTimeScheme.cpp | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/wrappers/matlab/MoorDynM_Load.cpp b/wrappers/matlab/MoorDynM_Load.cpp index 621d7fe6..06d35494 100644 --- a/wrappers/matlab/MoorDynM_Load.cpp +++ b/wrappers/matlab/MoorDynM_Load.cpp @@ -39,7 +39,7 @@ using matlab::mex::ArgumentList; MOORDYNM_MEX_FUNCTION_BEGIN(MoorDyn, 2, 0) { - const CharArray filename_matlab = inputs[0]; + const CharArray filename_matlab = inputs[1]; std::string filename(filename_matlab.toAscii()); const int err = MoorDyn_Load(instance, filename.c_str()); MOORDYNM_CHECK_ERROR(err); diff --git a/wrappers/matlab/MoorDynM_LoadState.cpp b/wrappers/matlab/MoorDynM_LoadState.cpp index 3a024270..8cec97ff 100644 --- a/wrappers/matlab/MoorDynM_LoadState.cpp +++ b/wrappers/matlab/MoorDynM_LoadState.cpp @@ -39,7 +39,7 @@ using matlab::mex::ArgumentList; MOORDYNM_MEX_FUNCTION_BEGIN(MoorDyn, 2, 0) { - const CharArray filename_matlab = inputs[0]; + const CharArray filename_matlab = inputs[1]; std::string filename(filename_matlab.toAscii()); const int err = MoorDyn_LoadState(instance, filename.c_str()); MOORDYNM_CHECK_ERROR(err); diff --git a/wrappers/matlab/MoorDynM_Save.cpp b/wrappers/matlab/MoorDynM_Save.cpp index ca77aa0a..c9d930ce 100644 --- a/wrappers/matlab/MoorDynM_Save.cpp +++ b/wrappers/matlab/MoorDynM_Save.cpp @@ -39,7 +39,7 @@ using matlab::mex::ArgumentList; MOORDYNM_MEX_FUNCTION_BEGIN(MoorDyn, 2, 0) { - const CharArray filename_matlab = inputs[0]; + const CharArray filename_matlab = inputs[1]; std::string filename(filename_matlab.toAscii()); const int err = MoorDyn_Save(instance, filename.c_str()); MOORDYNM_CHECK_ERROR(err); diff --git a/wrappers/matlab/MoorDynM_SaveBodyVTK.cpp b/wrappers/matlab/MoorDynM_SaveBodyVTK.cpp index 4d3ae7b9..fb8a600f 100644 --- a/wrappers/matlab/MoorDynM_SaveBodyVTK.cpp +++ b/wrappers/matlab/MoorDynM_SaveBodyVTK.cpp @@ -39,7 +39,7 @@ using matlab::mex::ArgumentList; MOORDYNM_MEX_FUNCTION_BEGIN(MoorDynBody, 2, 0) { - const CharArray filename_matlab = inputs[0]; + const CharArray filename_matlab = inputs[1]; std::string filename(filename_matlab.toAscii()); const int err = MoorDyn_SaveBodyVTK(instance, filename.c_str()); MOORDYNM_CHECK_ERROR(err); diff --git a/wrappers/matlab/MoorDynM_SaveLineVTK.cpp b/wrappers/matlab/MoorDynM_SaveLineVTK.cpp index 3f62c623..972e19de 100644 --- a/wrappers/matlab/MoorDynM_SaveLineVTK.cpp +++ b/wrappers/matlab/MoorDynM_SaveLineVTK.cpp @@ -39,7 +39,7 @@ using matlab::mex::ArgumentList; MOORDYNM_MEX_FUNCTION_BEGIN(MoorDynLine, 2, 0) { - const CharArray filename_matlab = inputs[0]; + const CharArray filename_matlab = inputs[1]; std::string filename(filename_matlab.toAscii()); const int err = MoorDyn_SaveLineVTK(instance, filename.c_str()); MOORDYNM_CHECK_ERROR(err); diff --git a/wrappers/matlab/MoorDynM_SaveRodVTK.cpp b/wrappers/matlab/MoorDynM_SaveRodVTK.cpp index 7f2f4d1c..a20c4b87 100644 --- a/wrappers/matlab/MoorDynM_SaveRodVTK.cpp +++ b/wrappers/matlab/MoorDynM_SaveRodVTK.cpp @@ -39,7 +39,7 @@ using matlab::mex::ArgumentList; MOORDYNM_MEX_FUNCTION_BEGIN(MoorDynRod, 2, 0) { - const CharArray filename_matlab = inputs[0]; + const CharArray filename_matlab = inputs[1]; std::string filename(filename_matlab.toAscii()); const int err = MoorDyn_SaveRodVTK(instance, filename.c_str()); MOORDYNM_CHECK_ERROR(err); diff --git a/wrappers/matlab/MoorDynM_SaveState.cpp b/wrappers/matlab/MoorDynM_SaveState.cpp index 21a36162..607719d2 100644 --- a/wrappers/matlab/MoorDynM_SaveState.cpp +++ b/wrappers/matlab/MoorDynM_SaveState.cpp @@ -39,7 +39,7 @@ using matlab::mex::ArgumentList; MOORDYNM_MEX_FUNCTION_BEGIN(MoorDyn, 2, 0) { - const CharArray filename_matlab = inputs[0]; + const CharArray filename_matlab = inputs[1]; std::string filename(filename_matlab.toAscii()); const int err = MoorDyn_SaveState(instance, filename.c_str()); MOORDYNM_CHECK_ERROR(err); diff --git a/wrappers/matlab/MoorDynM_SaveVTK.cpp b/wrappers/matlab/MoorDynM_SaveVTK.cpp index 4438cc37..f3918362 100644 --- a/wrappers/matlab/MoorDynM_SaveVTK.cpp +++ b/wrappers/matlab/MoorDynM_SaveVTK.cpp @@ -39,7 +39,7 @@ using matlab::mex::ArgumentList; MOORDYNM_MEX_FUNCTION_BEGIN(MoorDyn, 2, 0) { - const CharArray filename_matlab = inputs[0]; + const CharArray filename_matlab = inputs[1]; std::string filename(filename_matlab.toAscii()); const int err = MoorDyn_SaveVTK(instance, filename.c_str()); MOORDYNM_CHECK_ERROR(err); diff --git a/wrappers/matlab/MoorDynM_SetLogFile.cpp b/wrappers/matlab/MoorDynM_SetLogFile.cpp index 19eab347..6d096547 100644 --- a/wrappers/matlab/MoorDynM_SetLogFile.cpp +++ b/wrappers/matlab/MoorDynM_SetLogFile.cpp @@ -39,7 +39,7 @@ using matlab::mex::ArgumentList; MOORDYNM_MEX_FUNCTION_BEGIN(MoorDyn, 2, 0) { - const CharArray filename_matlab = inputs[0]; + const CharArray filename_matlab = inputs[1]; std::string filename(filename_matlab.toAscii()); const int err = MoorDyn_SetLogFile(instance, filename.c_str()); MOORDYNM_CHECK_ERROR(err); diff --git a/wrappers/matlab/MoorDynM_SetTimeScheme.cpp b/wrappers/matlab/MoorDynM_SetTimeScheme.cpp index a2c810c3..2955b83b 100644 --- a/wrappers/matlab/MoorDynM_SetTimeScheme.cpp +++ b/wrappers/matlab/MoorDynM_SetTimeScheme.cpp @@ -39,7 +39,7 @@ using matlab::mex::ArgumentList; MOORDYNM_MEX_FUNCTION_BEGIN(MoorDyn, 2, 0) { - const CharArray name_matlab = inputs[0]; + const CharArray name_matlab = inputs[1]; std::string name(name_matlab.toAscii()); const int err = MoorDyn_SetTimeScheme(instance, name.c_str()); MOORDYNM_CHECK_ERROR(err);