31 const double cd_table[30],
double dep,
double mach)
55 bool b_mach_states[5];
56 for (i = 0; i < 6; i++) {
57 b_dep_states[i] = (dep_states[i] <= dep);
59 i1 =
eml_find(b_dep_states, (
int *)&y1_idx_data);
61 for (i = 0; i < i1; i++) {
62 x1_idx_data = y1_idx_data;
64 for (i = 0; i < i1; i++) {
65 cd = (double)x1_idx_data + 1.0;
68 for (i = 0; i < 5; i++) {
71 i1 =
b_eml_find(b_mach_states, (
int *)&y1_idx_data);
72 for (i = 0; i < i1; i++) {
73 y2_idx_data = (double)y1_idx_data + 1.0;
76 for (i = 0; i < loop_ub; i++) {
77 x1_data = dep_states[x1_idx_data - 1];
78 x2_data = dep_states[(int)cd - 1];
80 for (i = 0; i < i1; i++) {
86 for (i = 0; i < loop_ub; i++) {
87 b_tmp_data = x2_data - dep;
89 for (i = 0; i < i1; i++) {
90 b_b_tmp_data = y2_data - mach;
92 for (i = 0; i < loop_ub; i++) {
93 c_b_tmp_data = dep - x1_data;
95 for (i = 0; i < i1; i++) {
96 d_b_tmp_data = mach - y1_data;
99 cd_table_size[0] = i1;
100 cd_table_size[1] = loop_ub;
101 if (loop_ub - 1 >= 0) {
102 for (i = 0; i < i1; i++) {
103 cd_table_data =
cd_table[(y1_idx_data + 5 * (x1_idx_data - 1)) - 1];
106 for (i = 0; i < loop_ub; i++) {
107 x2_data = (x2_data - x1_data) * y2_data;
109 mrdiv_2((
double *)&x2_data, loop_ub, (
double *)&tmp_data, tmp_size);
110 y2_size =
mtimes((
double *)&cd_table_data, cd_table_size,
111 (
double *)&b_tmp_data, (
double *)&y2_data);
112 if (loop_ub - 1 >= 0) {
113 for (i = 0; i < i1; i++) {
114 cd_table_data =
cd_table[(y1_idx_data + 5 * ((int)cd - 1)) - 1];
117 y1_size =
mtimes((
double *)&cd_table_data, cd_table_size,
118 (
double *)&c_b_tmp_data, (
double *)&y1_data);
119 if (loop_ub - 1 >= 0) {
120 for (i = 0; i < i1; i++) {
121 cd_table_data =
cd_table[((int)y2_idx_data + 5 * (x1_idx_data - 1)) - 1];
124 x1_idx_data =
mtimes((
double *)&cd_table_data, cd_table_size,
125 (
double *)&b_tmp_data, (
double *)&x2_data);
126 if (loop_ub - 1 >= 0) {
127 for (i = 0; i < i1; i++) {
128 cd_table_data =
cd_table[((int)y2_idx_data + 5 * ((
int)cd - 1)) - 1];
131 y1_idx_data =
mtimes((
double *)&cd_table_data, cd_table_size,
132 (
double *)&c_b_tmp_data, (
double *)&x1_data);
143 if ((y2_size == y1_size) && (i == x1_idx_data) && (i1 == y1_idx_data)) {
145 loop_ub = tmp_size[1];
146 for (i = 0; i < loop_ub; i++) {
147 cd += tmp_data * (((y2_data * b_b_tmp_data + y1_data * b_b_tmp_data) +
148 x2_data * d_b_tmp_data) +
149 x1_data * d_b_tmp_data);
153 &y2_size, (
double *)&b_b_tmp_data, (
double *)&y1_data,
154 &y1_size, (
double *)&x2_data, &x1_idx_data,
155 (
double *)&d_b_tmp_data, (
double *)&x1_data,
double cdEvaluation(const double dep_states[6], const double mach_states[5], const double cd_table[30], double dep, double mach)
Estimates the coefficient of drag (Cd) via 2D bilinear interpolation.
Performs 2D bilinear interpolation to estimate the coefficient of drag (Cd).
double binary_expand_op(const double in1_data[], const int in1_size[2], const double in2_data[], const int *in2_size, const double in3_data[], const double in4_data[], const int *in4_size, const double in5_data[], const int *in5_size, const double in6_data[], const double in7_data[], const int *in7_size)
Performs a fused set of element-wise operations for 2D interpolation.
A MATLAB Coder helper for performing element-wise array operations.
int b_eml_find(const boolean_T x[5], int i_data[])
Finds the index of the last true element in a 5-element boolean array.
int eml_find(const boolean_T x[6], int i_data[])
Finds the index of the last true element in a 6-element boolean array.
Provides MATLAB Coder helper functions to find indices of true values.
const double mach_states[]
void mrdiv_2(const double B_data[], int B_size, double Y_data[], int Y_size[2])
Performs element-wise division of a scalar by each element of a matrix.
Provides MATLAB Coder helper functions for right matrix division.
int mtimes(const double A_data[], const int A_size[2], const double B_data[], double C_data[])
Performs matrix multiplication: C = A * B.
A MATLAB Coder helper function for matrix multiplication.
Provides definitions and utility functions for non-finite floating-point values.