Skip to content

Commit 144a372

Browse files
committed
add support of the debug version of the integrate functions in the C bindings
1 parent 7eb2983 commit 144a372

2 files changed

Lines changed: 108 additions & 3 deletions

File tree

bindings/c/include/MGIS/Behaviour/Integrate.h

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,14 @@ MGIS_C_EXPORT mgis_status mgis_bv_free_behaviour_integration_options(
107107
* \param[in,out] d: behaviour data
108108
* \param[in,out] b: behaviour
109109
*/
110-
111110
MGIS_C_EXPORT mgis_status mgis_bv_integrate(int* const,
112111
mgis_bv_BehaviourDataView* const,
113112
const mgis_bv_Behaviour* const);
113+
//! \brief debugging version
114+
MGIS_C_EXPORT mgis_status
115+
mgis_bv_integrate_debug(int* const,
116+
mgis_bv_BehaviourDataView* const,
117+
const mgis_bv_Behaviour* const);
114118
/*!
115119
* \brief integrate the behaviour. The returned value has the following
116120
* meaning:
@@ -130,6 +134,9 @@ MGIS_C_EXPORT mgis_status mgis_bv_integrate(int* const,
130134
MGIS_C_EXPORT mgis_status mgis_bv_integrate_2(int* const,
131135
mgis_bv_BehaviourData* const,
132136
const mgis_bv_Behaviour* const);
137+
//! \brief debugging version
138+
MGIS_C_EXPORT mgis_status mgis_bv_integrate_debug_2(
139+
int* const, mgis_bv_BehaviourData* const, const mgis_bv_Behaviour* const);
133140
/*!
134141
* \brief integrate the behaviour for a range of integration points. The
135142
* returned value has the following meaning:
@@ -152,6 +159,14 @@ mgis_bv_integrate_material_data_manager_part(int* const,
152159
const mgis_real,
153160
const mgis_size_type,
154161
const mgis_size_type);
162+
//! \brief debugging version
163+
MGIS_C_EXPORT mgis_status
164+
mgis_bv_integrate_debug_material_data_manager_part(int* const,
165+
mgis_bv_MaterialDataManager* const,
166+
const mgis_bv_IntegrationType,
167+
const mgis_real,
168+
const mgis_size_type,
169+
const mgis_size_type);
155170
/*!
156171
* \brief integrate the behaviour for a range of integration points. The
157172
* returned value has the following meaning:
@@ -172,14 +187,29 @@ mgis_bv_integrate_material_data_manager(int* const,
172187
mgis_bv_MaterialDataManager* const,
173188
const mgis_bv_IntegrationType,
174189
const mgis_real);
190+
//! \brief debugging version
191+
MGIS_C_EXPORT mgis_status mgis_bv_integrate_debug_material_data_manager(
192+
int* const,
193+
mgis_ThreadPool* const,
194+
mgis_bv_MaterialDataManager* const,
195+
const mgis_bv_IntegrationType,
196+
const mgis_real);
175197

176198
MGIS_C_EXPORT mgis_status
177199
mgis_bv_integrate_material_data_manager_with_options(int* const,
178200
mgis_ThreadPool* const,
179201
mgis_bv_MaterialDataManager* const,
180202
mgis_bv_BehaviourIntegrationOptions* const,
181203
const mgis_real);
182-
204+
//! \brief debugging version
205+
MGIS_C_EXPORT mgis_status
206+
mgis_bv_integrate_debug_material_data_manager_with_options(
207+
int* const,
208+
mgis_ThreadPool* const,
209+
mgis_bv_MaterialDataManager* const,
210+
mgis_bv_BehaviourIntegrationOptions* const,
211+
const mgis_real);
212+
183213
#ifdef __cplusplus
184214
}
185215
#endif /* __cplusplus */

bindings/c/src/Integrate.cxx

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,31 @@ mgis_status mgis_bv_integrate(int* const r,
115115
return mgis_report_success();
116116
} // end of mgis_bv_integrate
117117

118+
mgis_status mgis_bv_integrate_debug(int* const r,
119+
mgis_bv_BehaviourDataView* const d,
120+
const mgis_bv_Behaviour* const b) {
121+
*r = mgis::behaviour::integrate_debug(*d, *b);
122+
if ((*r != 1) && (*r != 0)) {
123+
return mgis_report_failure("behaviour integration failed");
124+
}
125+
return mgis_report_success();
126+
} // end of mgis_bv_integrate
127+
118128
mgis_status mgis_bv_integrate_2(int* const r,
119129
mgis_bv_BehaviourData* const d,
120130
const mgis_bv_Behaviour* const b) {
121131
auto v = mgis::behaviour::make_view(*d);
122132
auto s = mgis_bv_integrate(r, &v, b);
123133
return s;
124-
} // end of mgis_bv_integrate2
134+
} // end of mgis_bv_integrate_2
135+
136+
mgis_status mgis_bv_integrate_debug_2(int* const r,
137+
mgis_bv_BehaviourData* const d,
138+
const mgis_bv_Behaviour* const b) {
139+
auto v = mgis::behaviour::make_view(*d);
140+
auto s = mgis_bv_integrate_debug(r, &v, b);
141+
return s;
142+
} // end of mgis_bv_integrate_debug_2
125143

126144
mgis_status mgis_bv_integrate_material_data_manager(
127145
int* const r,
@@ -141,6 +159,25 @@ mgis_status mgis_bv_integrate_material_data_manager(
141159
return mgis_report_success();
142160
} // end of mgis_bv_integrate_material_data_manager
143161

162+
mgis_status mgis_bv_integrate_debug_material_data_manager(
163+
int* const r,
164+
mgis_ThreadPool* const p,
165+
mgis_bv_MaterialDataManager* const m,
166+
const mgis_bv_IntegrationType i,
167+
const mgis_real dt) {
168+
*r = -1;
169+
try {
170+
*r =
171+
mgis::behaviour::integrate_debug(*p, *m, convertIntegrationType(i), dt);
172+
if ((*r != 1) && (*r != 0)) {
173+
return mgis_report_failure("behaviour integration failed");
174+
}
175+
} catch (...) {
176+
return mgis_handle_cxx_exception();
177+
}
178+
return mgis_report_success();
179+
} // end of mgis_bv_integrate_debug_material_data_manager
180+
144181
mgis_status mgis_bv_integrate_material_data_manager_with_options(
145182
int* const r,
146183
mgis_ThreadPool* const p,
@@ -159,6 +196,24 @@ mgis_status mgis_bv_integrate_material_data_manager_with_options(
159196
return mgis_report_success();
160197
} // end of mgis_bv_integrate_material_data_manager_with_options
161198

199+
mgis_status mgis_bv_integrate_debug_material_data_manager_with_options(
200+
int* const r,
201+
mgis_ThreadPool* const p,
202+
mgis_bv_MaterialDataManager* const m,
203+
mgis_bv_BehaviourIntegrationOptions* const o,
204+
const mgis_real dt) {
205+
*r = -1;
206+
try {
207+
*r = mgis::behaviour::integrate_debug(*p, *m, *o, dt).exit_status;
208+
if ((*r != 1) && (*r != 0)) {
209+
return mgis_report_failure("behaviour integration failed");
210+
}
211+
} catch (...) {
212+
return mgis_handle_cxx_exception();
213+
}
214+
return mgis_report_success();
215+
} // end of mgis_bv_integrate_debug_material_data_manager_with_options
216+
162217
mgis_status mgis_bv_integrate_material_data_manager_part(
163218
int* const r,
164219
mgis_bv_MaterialDataManager* const m,
@@ -178,4 +233,24 @@ mgis_status mgis_bv_integrate_material_data_manager_part(
178233
return mgis_report_success();
179234
} // end of mgis_bv_integrate_material_data_manager_part
180235

236+
mgis_status mgis_bv_integrate_debug_material_data_manager_part(
237+
int* const r,
238+
mgis_bv_MaterialDataManager* const m,
239+
const mgis_bv_IntegrationType i,
240+
const mgis_real dt,
241+
const mgis_size_type b,
242+
const mgis_size_type e) {
243+
*r = -1;
244+
try {
245+
*r = mgis::behaviour::integrate_debug(*m, convertIntegrationType(i), dt, b,
246+
e);
247+
if ((*r != 1) && (*r != 0)) {
248+
return mgis_report_failure("behaviour integration failed");
249+
}
250+
} catch (...) {
251+
return mgis_handle_cxx_exception();
252+
}
253+
return mgis_report_success();
254+
} // end of mgis_bv_integrate_debug_material_data_manager_part
255+
181256
} // end of extern "C"

0 commit comments

Comments
 (0)