Category: News
Help with ocean transect plot
Hi Matlabbers,
I’m fairly new to the community and struggling to make a transect plot of some nitrate data that I have from CTD casts. I have 11 stations across an area, each with different depths, and each with various nitrate concentration data.
So, what I want to produce is a transect plot, showing water depth on the y axis, distance between stations on x-axis and the nitrate concentration at each station on the z-axis, but in a 2D plot.
My issue is, for each station, the depth varies, and my nitrate concentration data is quite scattered, hence I want to interpolate it so that for missing data (NaNs), it takes the concentration from neighbouring stations at the same depth and generates a value. When I do this using my data, Matlab interpolates across the rows which doesnt work since there are various depths across each row. I can’t really make a uniform depth profile because it differs so much between each station. I’ve tried fillmissing and interp1 to get around the fact that i have so many NaN values, but the results are really blocky.
Any suggestions?
This is what I currently get:
And this is the sort of look I’m after
Thanks in advance :)Hi Matlabbers,
I’m fairly new to the community and struggling to make a transect plot of some nitrate data that I have from CTD casts. I have 11 stations across an area, each with different depths, and each with various nitrate concentration data.
So, what I want to produce is a transect plot, showing water depth on the y axis, distance between stations on x-axis and the nitrate concentration at each station on the z-axis, but in a 2D plot.
My issue is, for each station, the depth varies, and my nitrate concentration data is quite scattered, hence I want to interpolate it so that for missing data (NaNs), it takes the concentration from neighbouring stations at the same depth and generates a value. When I do this using my data, Matlab interpolates across the rows which doesnt work since there are various depths across each row. I can’t really make a uniform depth profile because it differs so much between each station. I’ve tried fillmissing and interp1 to get around the fact that i have so many NaN values, but the results are really blocky.
Any suggestions?
This is what I currently get:
And this is the sort of look I’m after
Thanks in advance 🙂 Hi Matlabbers,
I’m fairly new to the community and struggling to make a transect plot of some nitrate data that I have from CTD casts. I have 11 stations across an area, each with different depths, and each with various nitrate concentration data.
So, what I want to produce is a transect plot, showing water depth on the y axis, distance between stations on x-axis and the nitrate concentration at each station on the z-axis, but in a 2D plot.
My issue is, for each station, the depth varies, and my nitrate concentration data is quite scattered, hence I want to interpolate it so that for missing data (NaNs), it takes the concentration from neighbouring stations at the same depth and generates a value. When I do this using my data, Matlab interpolates across the rows which doesnt work since there are various depths across each row. I can’t really make a uniform depth profile because it differs so much between each station. I’ve tried fillmissing and interp1 to get around the fact that i have so many NaN values, but the results are really blocky.
Any suggestions?
This is what I currently get:
And this is the sort of look I’m after
Thanks in advance 🙂 interpolation, plotting, scattered data, transect plot MATLAB Answers — New Questions
Looping a macro
I have a macro that copies/pastes then deletes columns of data, it then copies/pastes the new data at the end of the previous set.
How can I make this macro loop until all the data is processed, ie column G in my case?
I have a macro that copies/pastes then deletes columns of data, it then copies/pastes the new data at the end of the previous set.How can I make this macro loop until all the data is processed, ie column G in my case? Read More
Document hyperlink from document properties
Do you have any ideas to create a Hyperlink from document properties in modern view as it is in classic view? See examples below
Modern mode:
Classic mode:
Do you have any ideas to create a Hyperlink from document properties in modern view as it is in classic view? See examples below Modern mode:Classic mode: Read More
Best practices for honeytoken device
We just tried the honeytoken device feature of MDI by setting up a new domain-joined server with a fake file share opened up to everyone.
But we’re now getting ‘Honeytoken authentication activity on one endpoint’ incidents because there is kerberos activity to the domain controllers. But this activity makes sense since it’s domain-joined…
Shouldn’t you be joining these honeytoken devices to the domain or what are the best practises?
It seems there isn’t much documentation around setting up honeytoken devices. Most article describe setting up accounts.
We just tried the honeytoken device feature of MDI by setting up a new domain-joined server with a fake file share opened up to everyone. But we’re now getting ‘Honeytoken authentication activity on one endpoint’ incidents because there is kerberos activity to the domain controllers. But this activity makes sense since it’s domain-joined… Shouldn’t you be joining these honeytoken devices to the domain or what are the best practises?It seems there isn’t much documentation around setting up honeytoken devices. Most article describe setting up accounts. Read More
Onedrive app crashes entire PC
So this is my problem:
I had a sync issue where OneDrive was stuck on sync, without moving at all.
While troubleshooting that problem I was prompted to unlink and re-link my device.
after re-linking, I let OneDrive run all night to resync, when i came back to the PC in the morning i was greeted by a blue screen of death.
Since then, I have discovered that when it tries to sync, my entire PC crashes.
I cannot access any settings since settings aren’t accessible when sync is paused.
please help me with this godawful program
So this is my problem:I had a sync issue where OneDrive was stuck on sync, without moving at all.While troubleshooting that problem I was prompted to unlink and re-link my device.after re-linking, I let OneDrive run all night to resync, when i came back to the PC in the morning i was greeted by a blue screen of death.Since then, I have discovered that when it tries to sync, my entire PC crashes.I cannot access any settings since settings aren’t accessible when sync is paused.please help me with this godawful program Read More
Windows Server 2025 and beyond
Windows Server 2025 is the most secure and performant release yet! Download the evaluation now!
Looking to migrate from VMware to Windows Server 2025? Contact your Microsoft account team!
Looking to migrate from VMware to Windows Server 2025? Contact your Microsoft account team!
The 2024 Windows Server Summit was held in March and brought three days of demos, technical sessions, and Q&A, led by Microsoft engineers, guest experts from Intel®, and our MVP community. For more videos from this year’s Windows Server Summit, please find the full session list here.
This article focuses on what’s new and what’s coming in Windows Server 2025.
What’s new in Windows Server 2025
Get a closer look at Windows Server 2025. Explore improvements, enhancements, and new capabilities. We’ll walk you through the big picture and offer a guide to which Windows Server Summit sessions will help you learn more.
What’s ahead for Windows Server
What’s in it for you? Get a summary of the most important features coming in Windows Server 2025 that will make your life easier and your work more impactful. In this fireside chat, Hari Pulapaka, Windows Server GM and Jeff Woolsey, Principal PM manager, provide an overview of what’s next, and provide their thoughts on how Windows Server can help you stay ahead.
Microsoft Tech Community – Latest Blogs –Read More
need know program of arduino mega 2560
i have an old arduino mega2560 board, i want to change some parameter, but i am unable open file from this arduino , can someone help me.i have an old arduino mega2560 board, i want to change some parameter, but i am unable open file from this arduino , can someone help me. i have an old arduino mega2560 board, i want to change some parameter, but i am unable open file from this arduino , can someone help me. arduino mega2560 MATLAB Answers — New Questions
Why does the pressure diverge so quickly, and what is the solution?
clc; % Clear the command window
clear; % Clear all variables
% Input parameters
rho_fluid = 1220;
rho_copper = 8960; % Density of copper in kg/m^3
L_X = 0.0043;
L_Y = 0.0001;
L_Z = 0.0002;
n_X = 300;
n_Y = 50;
n_Z = 50;
u_inlet = 0.05; % Reduced inlet velocity in m/s
nu = 1e-6; % Kinematic viscosity of the fluid (m^2/s)
tolerance = 1e-6; % Convergence tolerance
max_iter = 10000; % Maximum number of iterations
dt = 1e-10; % Further reduced time step for better numerical stability
% Calculate delta
delta_x = L_X / (n_X – 1); % Grid spacing in X direction
delta_y = L_Y / (n_Y – 1); % Grid spacing in Y direction
delta_z = L_Z / (n_Z – 1); % Grid spacing in Z direction
% Define pin positions and dimensions
pin_radius = 0.0001; % Radius of the pins
pin_height = L_Z; % Height of the pins (same as channel height)
pin_positions = [0.001 0.00005; 0.002 0.00005; 0.003 0.00005; 0.0015 0.00005; 0.0025 0.00005]; % X and Y coordinates of pin centers
% Identify grid points inside and on the surface of pins
is_pin = false(n_X, n_Y, n_Z);
is_surface_pin = false(n_X, n_Y, n_Z);
for p = 1:size(pin_positions, 1)
for i = 1:n_X
for j = 1:n_Y
for k = 1:n_Z
x = (i-1) * delta_x;
y = (j-1) * delta_y;
distance = sqrt((x – pin_positions(p, 1))^2 + (y – pin_positions(p, 2))^2);
if distance <= pin_radius
is_pin(i, j, k) = true;
end
if abs(distance – pin_radius) < (delta_x / 2) % Near the surface
is_surface_pin(i, j, k) = true;
end
end
end
end
end
% Initialize velocity and pressure fields
u = zeros(n_X, n_Y, n_Z); % Initialize with zeros to avoid initial instability
v = zeros(n_X, n_Y, n_Z);
w = zeros(n_X, n_Y, n_Z);
p = zeros(n_X, n_Y, n_Z);
% Time-stepping method for solving Navier-Stokes equations using ADI method
for iter = 1:max_iter
u_old = u;
v_old = v;
w_old = w;
p_old = p;
% Solve for velocity fields (x-direction)
for j = 2:n_Y-1
for k = 2:n_Z-1
for i = 2:n_X-1
if ~is_pin(i, j, k)
% x-momentum equation (ADI method)
u(i,j,k) = u_old(i,j,k) + dt/2 * ( …
– u_old(i,j,k) * (u_old(i+1,j,k) – u_old(i-1,j,k)) / (2 * delta_x) …
– v_old(i,j,k) * (u_old(i,j+1,k) – u_old(i,j-1,k)) / (2 * delta_y) …
– w_old(i,j,k) * (u_old(i,j,k+1) – u_old(i,j,k-1)) / (2 * delta_z) …
+ (p_old(i+1,j,k) – p_old(i-1,j,k)) / (2 * delta_x * rho_fluid) …
+ nu * ((u_old(i+1,j,k) – 2*u_old(i,j,k) + u_old(i-1,j,k)) / delta_x^2 …
+ (u_old(i,j+1,k) – 2*u_old(i,j,k) + u_old(i,j-1,k)) / delta_y^2 …
+ (u_old(i,j,k+1) – 2*u_old(i,j,k) + u_old(i,j,k-1)) / delta_z^2) …
);
end
end
end
end
% Solve for velocity fields (y-direction)
for i = 2:n_X-1
for k = 2:n_Z-1
for j = 2:n_Y-1
if ~is_pin(i, j, k)
% y-momentum equation (ADI method)
v(i,j,k) = v_old(i,j,k) + dt/2 * ( …
– u_old(i,j,k) * (v_old(i+1,j,k) – v_old(i-1,j,k)) / (2 * delta_x) …
– v_old(i,j,k) * (v_old(i,j+1,k) – v_old(i,j-1,k)) / (2 * delta_y) …
– w_old(i,j,k) * (v_old(i,j,k+1) – v_old(i,j,k-1)) / (2 * delta_z) …
+ (p_old(i,j+1,k) – p_old(i,j-1,k)) / (2 * delta_y * rho_fluid) …
+ nu * ((v_old(i+1,j,k) – 2*v_old(i,j,k) + v_old(i-1,j,k)) / delta_x^2 …
+ (v_old(i,j+1,k) – 2*v_old(i,j,k) + v_old(i,j-1,k)) / delta_y^2 …
+ (v_old(i,j,k+1) – 2*v_old(i,j,k) + v_old(i,j,k-1)) / delta_z^2) …
);
end
end
end
end
% Solve for velocity fields (z-direction)
for i = 2:n_X-1
for j = 2:n_Y-1
for k = 2:n_Z-1
if ~is_pin(i, j, k)
% z-momentum equation (ADI method)
w(i,j,k) = w_old(i,j,k) + dt/2 * ( …
– u_old(i,j,k) * (w_old(i+1,j,k) – w_old(i-1,j,k)) / (2 * delta_x) …
– v_old(i,j,k) * (w_old(i,j+1,k) – w_old(i,j-1,k)) / (2 * delta_y) …
– w_old(i,j,k) * (w_old(i,j,k+1) – w_old(i,j,k-1)) / (2 * delta_z) …
+ (p_old(i,j,k+1) – p_old(i,j,k-1)) / (2 * delta_z * rho_fluid) …
+ nu * ((w_old(i+1,j,k) – 2*w_old(i,j,k) + w_old(i-1,j,k)) / delta_x^2 …
+ (w_old(i,j+1,k) – 2*w_old(i,j,k) + w_old(i,j-1,k)) / delta_y^2 …
+ (w_old(i,j,k+1) – 2*w_old(i,j,k) + w_old(i,j,k-1)) / delta_z^2) …
);
end
end
end
end
% Solve for pressure field using the pressure Poisson equation
for i = 2:n_X-1
for j = 2:n_Y-1
for k = 2:n_Z-1
if ~is_pin(i, j, k)
p(i,j,k) = (p_old(i+1,j,k) + p_old(i-1,j,k) + p_old(i,j+1,k) + p_old(i,j-1,k) + p_old(i,j,k+1) + p_old(i,j,k-1)) / 6 …
– (rho_fluid / 6) * ((u(i+1,j,k) – u(i-1,j,k)) / (2 * delta_x) …
+ (v(i,j+1,k) – v(i,j-1,k)) / (2 * delta_y) …
+ (w(i,j,k+1) – w(i,j,k-1)) / (2 * delta_z));
end
end
end
end
% Inlet boundary condition for velocity
u(1, :, 🙂 = u_inlet;
% Outlet boundary condition for pressure
p(n_X, :, 🙂 = 0; % Assume atmospheric pressure at the outlet
% No-slip boundary conditions for velocity at the walls and pins
u(:, :, 1) = 0; % Bottom wall
u(:, :, n_Z) = 0; % Top wall
u(is_pin) = 0; % Surface of pins
v(:, :, 1) = 0; % Bottom wall
v(:, :, n_Z) = 0; % Top wall
v(is_pin) = 0; % Surface of pins
w(:, :, 1) = 0; % Bottom wall
w(:, :, n_Z) = 0; % Top wall
w(is_pin) = 0; % Surface of pins
% Symmetry boundary conditions for velocity at the side walls
u(:, 1, 🙂 = u(:, 2, :); % Left side wall
u(:, n_Y, 🙂 = u(:, n_Y-1, :); % Right side wall
v(:, 1, 🙂 = v(:, 2, :); % Left side wall
v(:, n_Y, 🙂 = v(:, n_Y-1, :); % Right side wall
w(:, 1, 🙂 = w(:, 2, :); % Left side wall
w(:, n_Y, 🙂 = w(:, n_Y-1, :); % Right side wall
% Convergence check
max_diff_u = max(max(max(abs(u – u_old))));
max_diff_v = max(max(max(abs(v – v_old))));
max_diff_w = max(max(max(abs(w – w_old))));
max_diff_p = max(max(max(abs(p – p_old))));
disp([‘Max difference in u: ‘, num2str(max_diff_u)]);
disp([‘Max difference in v: ‘, num2str(max_diff_v)]);
disp([‘Max difference in w: ‘, num2str(max_diff_w)]);
disp([‘Max difference in p: ‘, num2str(max_diff_p)]);
if max_diff_u < tolerance && max_diff_v < tolerance && max_diff_w < tolerance && max_diff_p < tolerance
disp(‘Converged’);
break; % Exit the loop if converged
end
% Check for NaN or Inf values
if any(isnan(u(:))) || any(isinf(u(:))) || any(isnan(v(:))) || any(isinf(v(:))) || any(isnan(w(:))) || any(isinf(w(:))) || any(isnan(p(:))) || any(isinf(p(:)))
disp(‘Error: NaN or Inf detected in velocity or pressure matrix’);
break;
end
endclc; % Clear the command window
clear; % Clear all variables
% Input parameters
rho_fluid = 1220;
rho_copper = 8960; % Density of copper in kg/m^3
L_X = 0.0043;
L_Y = 0.0001;
L_Z = 0.0002;
n_X = 300;
n_Y = 50;
n_Z = 50;
u_inlet = 0.05; % Reduced inlet velocity in m/s
nu = 1e-6; % Kinematic viscosity of the fluid (m^2/s)
tolerance = 1e-6; % Convergence tolerance
max_iter = 10000; % Maximum number of iterations
dt = 1e-10; % Further reduced time step for better numerical stability
% Calculate delta
delta_x = L_X / (n_X – 1); % Grid spacing in X direction
delta_y = L_Y / (n_Y – 1); % Grid spacing in Y direction
delta_z = L_Z / (n_Z – 1); % Grid spacing in Z direction
% Define pin positions and dimensions
pin_radius = 0.0001; % Radius of the pins
pin_height = L_Z; % Height of the pins (same as channel height)
pin_positions = [0.001 0.00005; 0.002 0.00005; 0.003 0.00005; 0.0015 0.00005; 0.0025 0.00005]; % X and Y coordinates of pin centers
% Identify grid points inside and on the surface of pins
is_pin = false(n_X, n_Y, n_Z);
is_surface_pin = false(n_X, n_Y, n_Z);
for p = 1:size(pin_positions, 1)
for i = 1:n_X
for j = 1:n_Y
for k = 1:n_Z
x = (i-1) * delta_x;
y = (j-1) * delta_y;
distance = sqrt((x – pin_positions(p, 1))^2 + (y – pin_positions(p, 2))^2);
if distance <= pin_radius
is_pin(i, j, k) = true;
end
if abs(distance – pin_radius) < (delta_x / 2) % Near the surface
is_surface_pin(i, j, k) = true;
end
end
end
end
end
% Initialize velocity and pressure fields
u = zeros(n_X, n_Y, n_Z); % Initialize with zeros to avoid initial instability
v = zeros(n_X, n_Y, n_Z);
w = zeros(n_X, n_Y, n_Z);
p = zeros(n_X, n_Y, n_Z);
% Time-stepping method for solving Navier-Stokes equations using ADI method
for iter = 1:max_iter
u_old = u;
v_old = v;
w_old = w;
p_old = p;
% Solve for velocity fields (x-direction)
for j = 2:n_Y-1
for k = 2:n_Z-1
for i = 2:n_X-1
if ~is_pin(i, j, k)
% x-momentum equation (ADI method)
u(i,j,k) = u_old(i,j,k) + dt/2 * ( …
– u_old(i,j,k) * (u_old(i+1,j,k) – u_old(i-1,j,k)) / (2 * delta_x) …
– v_old(i,j,k) * (u_old(i,j+1,k) – u_old(i,j-1,k)) / (2 * delta_y) …
– w_old(i,j,k) * (u_old(i,j,k+1) – u_old(i,j,k-1)) / (2 * delta_z) …
+ (p_old(i+1,j,k) – p_old(i-1,j,k)) / (2 * delta_x * rho_fluid) …
+ nu * ((u_old(i+1,j,k) – 2*u_old(i,j,k) + u_old(i-1,j,k)) / delta_x^2 …
+ (u_old(i,j+1,k) – 2*u_old(i,j,k) + u_old(i,j-1,k)) / delta_y^2 …
+ (u_old(i,j,k+1) – 2*u_old(i,j,k) + u_old(i,j,k-1)) / delta_z^2) …
);
end
end
end
end
% Solve for velocity fields (y-direction)
for i = 2:n_X-1
for k = 2:n_Z-1
for j = 2:n_Y-1
if ~is_pin(i, j, k)
% y-momentum equation (ADI method)
v(i,j,k) = v_old(i,j,k) + dt/2 * ( …
– u_old(i,j,k) * (v_old(i+1,j,k) – v_old(i-1,j,k)) / (2 * delta_x) …
– v_old(i,j,k) * (v_old(i,j+1,k) – v_old(i,j-1,k)) / (2 * delta_y) …
– w_old(i,j,k) * (v_old(i,j,k+1) – v_old(i,j,k-1)) / (2 * delta_z) …
+ (p_old(i,j+1,k) – p_old(i,j-1,k)) / (2 * delta_y * rho_fluid) …
+ nu * ((v_old(i+1,j,k) – 2*v_old(i,j,k) + v_old(i-1,j,k)) / delta_x^2 …
+ (v_old(i,j+1,k) – 2*v_old(i,j,k) + v_old(i,j-1,k)) / delta_y^2 …
+ (v_old(i,j,k+1) – 2*v_old(i,j,k) + v_old(i,j,k-1)) / delta_z^2) …
);
end
end
end
end
% Solve for velocity fields (z-direction)
for i = 2:n_X-1
for j = 2:n_Y-1
for k = 2:n_Z-1
if ~is_pin(i, j, k)
% z-momentum equation (ADI method)
w(i,j,k) = w_old(i,j,k) + dt/2 * ( …
– u_old(i,j,k) * (w_old(i+1,j,k) – w_old(i-1,j,k)) / (2 * delta_x) …
– v_old(i,j,k) * (w_old(i,j+1,k) – w_old(i,j-1,k)) / (2 * delta_y) …
– w_old(i,j,k) * (w_old(i,j,k+1) – w_old(i,j,k-1)) / (2 * delta_z) …
+ (p_old(i,j,k+1) – p_old(i,j,k-1)) / (2 * delta_z * rho_fluid) …
+ nu * ((w_old(i+1,j,k) – 2*w_old(i,j,k) + w_old(i-1,j,k)) / delta_x^2 …
+ (w_old(i,j+1,k) – 2*w_old(i,j,k) + w_old(i,j-1,k)) / delta_y^2 …
+ (w_old(i,j,k+1) – 2*w_old(i,j,k) + w_old(i,j,k-1)) / delta_z^2) …
);
end
end
end
end
% Solve for pressure field using the pressure Poisson equation
for i = 2:n_X-1
for j = 2:n_Y-1
for k = 2:n_Z-1
if ~is_pin(i, j, k)
p(i,j,k) = (p_old(i+1,j,k) + p_old(i-1,j,k) + p_old(i,j+1,k) + p_old(i,j-1,k) + p_old(i,j,k+1) + p_old(i,j,k-1)) / 6 …
– (rho_fluid / 6) * ((u(i+1,j,k) – u(i-1,j,k)) / (2 * delta_x) …
+ (v(i,j+1,k) – v(i,j-1,k)) / (2 * delta_y) …
+ (w(i,j,k+1) – w(i,j,k-1)) / (2 * delta_z));
end
end
end
end
% Inlet boundary condition for velocity
u(1, :, 🙂 = u_inlet;
% Outlet boundary condition for pressure
p(n_X, :, 🙂 = 0; % Assume atmospheric pressure at the outlet
% No-slip boundary conditions for velocity at the walls and pins
u(:, :, 1) = 0; % Bottom wall
u(:, :, n_Z) = 0; % Top wall
u(is_pin) = 0; % Surface of pins
v(:, :, 1) = 0; % Bottom wall
v(:, :, n_Z) = 0; % Top wall
v(is_pin) = 0; % Surface of pins
w(:, :, 1) = 0; % Bottom wall
w(:, :, n_Z) = 0; % Top wall
w(is_pin) = 0; % Surface of pins
% Symmetry boundary conditions for velocity at the side walls
u(:, 1, 🙂 = u(:, 2, :); % Left side wall
u(:, n_Y, 🙂 = u(:, n_Y-1, :); % Right side wall
v(:, 1, 🙂 = v(:, 2, :); % Left side wall
v(:, n_Y, 🙂 = v(:, n_Y-1, :); % Right side wall
w(:, 1, 🙂 = w(:, 2, :); % Left side wall
w(:, n_Y, 🙂 = w(:, n_Y-1, :); % Right side wall
% Convergence check
max_diff_u = max(max(max(abs(u – u_old))));
max_diff_v = max(max(max(abs(v – v_old))));
max_diff_w = max(max(max(abs(w – w_old))));
max_diff_p = max(max(max(abs(p – p_old))));
disp([‘Max difference in u: ‘, num2str(max_diff_u)]);
disp([‘Max difference in v: ‘, num2str(max_diff_v)]);
disp([‘Max difference in w: ‘, num2str(max_diff_w)]);
disp([‘Max difference in p: ‘, num2str(max_diff_p)]);
if max_diff_u < tolerance && max_diff_v < tolerance && max_diff_w < tolerance && max_diff_p < tolerance
disp(‘Converged’);
break; % Exit the loop if converged
end
% Check for NaN or Inf values
if any(isnan(u(:))) || any(isinf(u(:))) || any(isnan(v(:))) || any(isinf(v(:))) || any(isnan(w(:))) || any(isinf(w(:))) || any(isnan(p(:))) || any(isinf(p(:)))
disp(‘Error: NaN or Inf detected in velocity or pressure matrix’);
break;
end
end clc; % Clear the command window
clear; % Clear all variables
% Input parameters
rho_fluid = 1220;
rho_copper = 8960; % Density of copper in kg/m^3
L_X = 0.0043;
L_Y = 0.0001;
L_Z = 0.0002;
n_X = 300;
n_Y = 50;
n_Z = 50;
u_inlet = 0.05; % Reduced inlet velocity in m/s
nu = 1e-6; % Kinematic viscosity of the fluid (m^2/s)
tolerance = 1e-6; % Convergence tolerance
max_iter = 10000; % Maximum number of iterations
dt = 1e-10; % Further reduced time step for better numerical stability
% Calculate delta
delta_x = L_X / (n_X – 1); % Grid spacing in X direction
delta_y = L_Y / (n_Y – 1); % Grid spacing in Y direction
delta_z = L_Z / (n_Z – 1); % Grid spacing in Z direction
% Define pin positions and dimensions
pin_radius = 0.0001; % Radius of the pins
pin_height = L_Z; % Height of the pins (same as channel height)
pin_positions = [0.001 0.00005; 0.002 0.00005; 0.003 0.00005; 0.0015 0.00005; 0.0025 0.00005]; % X and Y coordinates of pin centers
% Identify grid points inside and on the surface of pins
is_pin = false(n_X, n_Y, n_Z);
is_surface_pin = false(n_X, n_Y, n_Z);
for p = 1:size(pin_positions, 1)
for i = 1:n_X
for j = 1:n_Y
for k = 1:n_Z
x = (i-1) * delta_x;
y = (j-1) * delta_y;
distance = sqrt((x – pin_positions(p, 1))^2 + (y – pin_positions(p, 2))^2);
if distance <= pin_radius
is_pin(i, j, k) = true;
end
if abs(distance – pin_radius) < (delta_x / 2) % Near the surface
is_surface_pin(i, j, k) = true;
end
end
end
end
end
% Initialize velocity and pressure fields
u = zeros(n_X, n_Y, n_Z); % Initialize with zeros to avoid initial instability
v = zeros(n_X, n_Y, n_Z);
w = zeros(n_X, n_Y, n_Z);
p = zeros(n_X, n_Y, n_Z);
% Time-stepping method for solving Navier-Stokes equations using ADI method
for iter = 1:max_iter
u_old = u;
v_old = v;
w_old = w;
p_old = p;
% Solve for velocity fields (x-direction)
for j = 2:n_Y-1
for k = 2:n_Z-1
for i = 2:n_X-1
if ~is_pin(i, j, k)
% x-momentum equation (ADI method)
u(i,j,k) = u_old(i,j,k) + dt/2 * ( …
– u_old(i,j,k) * (u_old(i+1,j,k) – u_old(i-1,j,k)) / (2 * delta_x) …
– v_old(i,j,k) * (u_old(i,j+1,k) – u_old(i,j-1,k)) / (2 * delta_y) …
– w_old(i,j,k) * (u_old(i,j,k+1) – u_old(i,j,k-1)) / (2 * delta_z) …
+ (p_old(i+1,j,k) – p_old(i-1,j,k)) / (2 * delta_x * rho_fluid) …
+ nu * ((u_old(i+1,j,k) – 2*u_old(i,j,k) + u_old(i-1,j,k)) / delta_x^2 …
+ (u_old(i,j+1,k) – 2*u_old(i,j,k) + u_old(i,j-1,k)) / delta_y^2 …
+ (u_old(i,j,k+1) – 2*u_old(i,j,k) + u_old(i,j,k-1)) / delta_z^2) …
);
end
end
end
end
% Solve for velocity fields (y-direction)
for i = 2:n_X-1
for k = 2:n_Z-1
for j = 2:n_Y-1
if ~is_pin(i, j, k)
% y-momentum equation (ADI method)
v(i,j,k) = v_old(i,j,k) + dt/2 * ( …
– u_old(i,j,k) * (v_old(i+1,j,k) – v_old(i-1,j,k)) / (2 * delta_x) …
– v_old(i,j,k) * (v_old(i,j+1,k) – v_old(i,j-1,k)) / (2 * delta_y) …
– w_old(i,j,k) * (v_old(i,j,k+1) – v_old(i,j,k-1)) / (2 * delta_z) …
+ (p_old(i,j+1,k) – p_old(i,j-1,k)) / (2 * delta_y * rho_fluid) …
+ nu * ((v_old(i+1,j,k) – 2*v_old(i,j,k) + v_old(i-1,j,k)) / delta_x^2 …
+ (v_old(i,j+1,k) – 2*v_old(i,j,k) + v_old(i,j-1,k)) / delta_y^2 …
+ (v_old(i,j,k+1) – 2*v_old(i,j,k) + v_old(i,j,k-1)) / delta_z^2) …
);
end
end
end
end
% Solve for velocity fields (z-direction)
for i = 2:n_X-1
for j = 2:n_Y-1
for k = 2:n_Z-1
if ~is_pin(i, j, k)
% z-momentum equation (ADI method)
w(i,j,k) = w_old(i,j,k) + dt/2 * ( …
– u_old(i,j,k) * (w_old(i+1,j,k) – w_old(i-1,j,k)) / (2 * delta_x) …
– v_old(i,j,k) * (w_old(i,j+1,k) – w_old(i,j-1,k)) / (2 * delta_y) …
– w_old(i,j,k) * (w_old(i,j,k+1) – w_old(i,j,k-1)) / (2 * delta_z) …
+ (p_old(i,j,k+1) – p_old(i,j,k-1)) / (2 * delta_z * rho_fluid) …
+ nu * ((w_old(i+1,j,k) – 2*w_old(i,j,k) + w_old(i-1,j,k)) / delta_x^2 …
+ (w_old(i,j+1,k) – 2*w_old(i,j,k) + w_old(i,j-1,k)) / delta_y^2 …
+ (w_old(i,j,k+1) – 2*w_old(i,j,k) + w_old(i,j,k-1)) / delta_z^2) …
);
end
end
end
end
% Solve for pressure field using the pressure Poisson equation
for i = 2:n_X-1
for j = 2:n_Y-1
for k = 2:n_Z-1
if ~is_pin(i, j, k)
p(i,j,k) = (p_old(i+1,j,k) + p_old(i-1,j,k) + p_old(i,j+1,k) + p_old(i,j-1,k) + p_old(i,j,k+1) + p_old(i,j,k-1)) / 6 …
– (rho_fluid / 6) * ((u(i+1,j,k) – u(i-1,j,k)) / (2 * delta_x) …
+ (v(i,j+1,k) – v(i,j-1,k)) / (2 * delta_y) …
+ (w(i,j,k+1) – w(i,j,k-1)) / (2 * delta_z));
end
end
end
end
% Inlet boundary condition for velocity
u(1, :, 🙂 = u_inlet;
% Outlet boundary condition for pressure
p(n_X, :, 🙂 = 0; % Assume atmospheric pressure at the outlet
% No-slip boundary conditions for velocity at the walls and pins
u(:, :, 1) = 0; % Bottom wall
u(:, :, n_Z) = 0; % Top wall
u(is_pin) = 0; % Surface of pins
v(:, :, 1) = 0; % Bottom wall
v(:, :, n_Z) = 0; % Top wall
v(is_pin) = 0; % Surface of pins
w(:, :, 1) = 0; % Bottom wall
w(:, :, n_Z) = 0; % Top wall
w(is_pin) = 0; % Surface of pins
% Symmetry boundary conditions for velocity at the side walls
u(:, 1, 🙂 = u(:, 2, :); % Left side wall
u(:, n_Y, 🙂 = u(:, n_Y-1, :); % Right side wall
v(:, 1, 🙂 = v(:, 2, :); % Left side wall
v(:, n_Y, 🙂 = v(:, n_Y-1, :); % Right side wall
w(:, 1, 🙂 = w(:, 2, :); % Left side wall
w(:, n_Y, 🙂 = w(:, n_Y-1, :); % Right side wall
% Convergence check
max_diff_u = max(max(max(abs(u – u_old))));
max_diff_v = max(max(max(abs(v – v_old))));
max_diff_w = max(max(max(abs(w – w_old))));
max_diff_p = max(max(max(abs(p – p_old))));
disp([‘Max difference in u: ‘, num2str(max_diff_u)]);
disp([‘Max difference in v: ‘, num2str(max_diff_v)]);
disp([‘Max difference in w: ‘, num2str(max_diff_w)]);
disp([‘Max difference in p: ‘, num2str(max_diff_p)]);
if max_diff_u < tolerance && max_diff_v < tolerance && max_diff_w < tolerance && max_diff_p < tolerance
disp(‘Converged’);
break; % Exit the loop if converged
end
% Check for NaN or Inf values
if any(isnan(u(:))) || any(isinf(u(:))) || any(isnan(v(:))) || any(isinf(v(:))) || any(isnan(w(:))) || any(isinf(w(:))) || any(isnan(p(:))) || any(isinf(p(:)))
disp(‘Error: NaN or Inf detected in velocity or pressure matrix’);
break;
end
end navier-stocks divergence MATLAB Answers — New Questions
ReqIF import error: Type ‘xhtml:p’ has not been found in the registry
Hi,
When I tried to import requirements from a ReqIF file in Requirement Editor, the GUI reports:
"Invalid ReqIF file. Error details: Type ‘xhtml:p’ has not been found in the registry."
Is this class unsupported? It seems ‘xhtml:div’ is supported.
<?xml version="1.0"?>
<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<THE-HEADER>
<REQ-IF-HEADER IDENTIFIER="_q6t8q2X9fb2Cn5jN20LdqZHL1Ir3a98">
<CREATION-TIME>2024-06-14T09:29:39Z</CREATION-TIME>
<REQ-IF-TOOL-ID>Cradle WorkBench</REQ-IF-TOOL-ID>
<REQ-IF-VERSION>1.0</REQ-IF-VERSION>
<SOURCE-TOOL-ID>Cradle WorkBench</SOURCE-TOOL-ID>
<TITLE>Cradle WorkBench ReqIF Export</TITLE>
</REQ-IF-HEADER>
</THE-HEADER>
<CORE-CONTENT>
<REQ-IF-CONTENT>
<DATATYPES>
<DATATYPE-DEFINITION-BOOLEAN IDENTIFIER="_84299a2QOHS4ze5rNPVcDu6PxkacqeY" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_BOOLEAN"/>
<DATATYPE-DEFINITION-INTEGER IDENTIFIER="_jN4Q8qSB1w6EKiQK9AaHaJi4vsYx35r" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_INTEGER" MIN="-2147483648" MAX="2147483647"/>
<DATATYPE-DEFINITION-STRING IDENTIFIER="_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_STRING" MAX-LENGTH="1000"/>
<DATATYPE-DEFINITION-DATE IDENTIFIER="_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_DATE"/>
<DATATYPE-DEFINITION-REAL IDENTIFIER="_46w33R6Ha3U7vy8YwqDYu4J1bPiEKm2" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_REAL" MIN="-1.08310167E17" MAX="1.08310167E17" ACCURACY="10"/>
<DATATYPE-DEFINITION-XHTML IDENTIFIER="_2sYqJFs3WkJJz00VB8ft277UnTheTp5" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_XHTML"/>
<DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_jBW99EoOLIuwDLscUmG3anZjUORjqMu" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Domain">
<SPECIFIED-VALUES>
<ENUM-VALUE IDENTIFIER="_QoLKIC6P9valnJX52LoHh7fW2InMG2h" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Certification">
<PROPERTIES>
<EMBEDDED-VALUE KEY="0" OTHER-CONTENT="Certification"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_nl9it9bDq99s7pdgnf801qH5arRPH3i" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Environment">
<PROPERTIES>
<EMBEDDED-VALUE KEY="1" OTHER-CONTENT="Environment"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_78z6p673bV0G16hC0Ca8emSA6zJr48g" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Human Factors">
<PROPERTIES>
<EMBEDDED-VALUE KEY="2" OTHER-CONTENT="Human Factors"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_VF2V0IFEREXOqsPcrv2vny0TS8548iR" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Infrastructure">
<PROPERTIES>
<EMBEDDED-VALUE KEY="3" OTHER-CONTENT="Infrastructure"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_S0P8HEm4sf0ZVtth82L8AJPtSY9Ng5Z" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Operational">
<PROPERTIES>
<EMBEDDED-VALUE KEY="4" OTHER-CONTENT="Operational"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_Q9PQy2cr2hn09S14orL420GQvm481AN" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Other">
<PROPERTIES>
<EMBEDDED-VALUE KEY="5" OTHER-CONTENT="Other"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_tQdUgsdBFSjnaNZsI04DM0Ok9Lh3aKZ" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Safety">
<PROPERTIES>
<EMBEDDED-VALUE KEY="6" OTHER-CONTENT="Safety"/>
</PROPERTIES>
</ENUM-VALUE>
</SPECIFIED-VALUES>
</DATATYPE-DEFINITION-ENUMERATION>
<DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_WMy3G5qu162WgR6Xw9gFCaVQTeRB65y" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Item Status">
<SPECIFIED-VALUES>
<ENUM-VALUE IDENTIFIER="_1E9z461lHgmgF9pXPK355chQ2Uy9vDR" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Accepted">
<PROPERTIES>
<EMBEDDED-VALUE KEY="7" OTHER-CONTENT="Accepted"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_p6CI770i4yb5Rg2e4zC4L5x5D5k78h0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Agreed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="8" OTHER-CONTENT="Agreed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_3DU39sZMeOe3MaocMf3hQYbHo8Ud0z6" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Candidate">
<PROPERTIES>
<EMBEDDED-VALUE KEY="9" OTHER-CONTENT="Candidate"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_w2kfxbdJt4VWq59lljb9X37be9CLFuM" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Closed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="10" OTHER-CONTENT="Closed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_T4Uoz8RI8wON0QU0HJRFuQm9Mv0K2xB" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Disputed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="11" OTHER-CONTENT="Disputed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_2E45Kk7x847Qn732CWqp7poNMqG6Gq7" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Rejected">
<PROPERTIES>
<EMBEDDED-VALUE KEY="12" OTHER-CONTENT="Rejected"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_x11s6CtBX9U3vz7fgjOSXbJ5NWhE25V" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Review">
<PROPERTIES>
<EMBEDDED-VALUE KEY="13" OTHER-CONTENT="Review"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_ib9j5eojQk36UyOqccVzbo0EjPFN0O5" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Reviewed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="14" OTHER-CONTENT="Reviewed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_4xy2FifD0MPu0uJhBXnGgy9D0H9HYqC" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Suspect">
<PROPERTIES>
<EMBEDDED-VALUE KEY="15" OTHER-CONTENT="Suspect"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_66wNI1VJUVYw4xmbmfiOgN9K6gbnw0w" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="TBD">
<PROPERTIES>
<EMBEDDED-VALUE KEY="16" OTHER-CONTENT="TBD"/>
</PROPERTIES>
</ENUM-VALUE>
</SPECIFIED-VALUES>
</DATATYPE-DEFINITION-ENUMERATION>
<DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_3FMBjzpc5nWFI3k30Z9Z390wxrmI4a0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_System Level">
<SPECIFIED-VALUES>
<ENUM-VALUE IDENTIFIER="_QGd1NTcOY6177TmX7C9t5gM4gc5Zkyy" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Assembly">
<PROPERTIES>
<EMBEDDED-VALUE KEY="17" OTHER-CONTENT="Assembly"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_3t7qe6E5L0CZl8rtxW3Q3n7weKu71zn" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Component">
<PROPERTIES>
<EMBEDDED-VALUE KEY="18" OTHER-CONTENT="Component"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_PNcwOu7g2OALpXpJ5uPNgr1dheKM52J" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Sub-System">
<PROPERTIES>
<EMBEDDED-VALUE KEY="19" OTHER-CONTENT="Sub-System"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_JLUOkrJj5otC4zZ3mx2r2z6gx3tD8nM" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="System">
<PROPERTIES>
<EMBEDDED-VALUE KEY="20" OTHER-CONTENT="System"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_6S937HlnVg21zU1VSQTosz9FE35QiXE" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Unit">
<PROPERTIES>
<EMBEDDED-VALUE KEY="21" OTHER-CONTENT="Unit"/>
</PROPERTIES>
</ENUM-VALUE>
</SPECIFIED-VALUES>
</DATATYPE-DEFINITION-ENUMERATION>
</DATATYPES>
<SPEC-TYPES>
<SPECIFICATION-TYPE IDENTIFIER="_vQSPiJp854ACfaHoeq15TQYwMLWz1n8" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_SBS">
<SPEC-ATTRIBUTES>
<ATTRIBUTE-DEFINITION-INTEGER IDENTIFIER="_tFmqTCfkJ6PTFzh7jFWA57Dv3Os2E24" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Security" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-INTEGER-REF>_jN4Q8qSB1w6EKiQK9AaHaJi4vsYx35r</DATATYPE-DEFINITION-INTEGER-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-INTEGER>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_TCh66m4v824r71lGRyy7yMsJ363O3x9" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Baseline" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_tSnd3D7UWvPXGNwAOAmNmgJw2PEt8zc" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Comment" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_fbT7sNm4Mtw9s6UKdZquJ0ZoL1926ww" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Draft" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_7R99v1K59528lT46nMOTAhoU2P0GEsG" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Group" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_gJ1Zjn4yA397191ETrxSrQH7Mon3sqP" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Identity" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_kAFI67n1VQtO8PdZhaZjC6EZ35IfV7J" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Key" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_W1Y3xSQWl9BvaQFI7GEFb9KvgqiWxng" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Owner" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_VLY5NqVfgiRj59wBJhBnZh6bsjF1RQR" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Status" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_818F5C9Nq62Xy8fbM8Em7opsQP072XH" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Description" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_buiEkw962FbT8I7JXFi9mhp89M30w6C" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_64EBqYYU2Eixx6lAXk6vI65U5RtG1k0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_4H9gtsGhrcmKuS1Ux2fr9tyGs89lih2" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Name" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_sN72WNhUBpKQ8D1LD51UnNn2H9l4lLv" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Revision" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_N6Bzv3Q3L3i7eVbs0F122xIvjGR9AUj" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_45RzThwGKnD8SZvyi4JdPLtsXn1AbxE" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_I6eUj6J37gilfR4U4i4P9rqFfPwp8j0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_TEXT" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-XHTML-REF>_2sYqJFs3WkJJz00VB8ft277UnTheTp5</DATATYPE-DEFINITION-XHTML-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-XHTML>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_4DZHRGS14YD6C9odZwGkhIZq0zg6Jf9" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Domain" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_jBW99EoOLIuwDLscUmG3anZjUORjqMu</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_w0gAFngtw8hP9Hg7NmBG5CZ52ua9Vbi" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Item Status" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_WMy3G5qu162WgR6Xw9gFCaVQTeRB65y</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_AbYG0a0tTMeTjl4fh9oM6XcG137ecD5" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_System Level" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_3FMBjzpc5nWFI3k30Z9Z390wxrmI4a0</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
</SPEC-ATTRIBUTES>
</SPECIFICATION-TYPE>
<SPEC-OBJECT-TYPE IDENTIFIER="_AgI3y7P4M8m411dH6Q795ME0DZwTKaX" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="SBS Object">
<SPEC-ATTRIBUTES>
<ATTRIBUTE-DEFINITION-INTEGER IDENTIFIER="_1l0lJn06F3AWKxHUHk6OvEFv1WPnv4y" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Security" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-INTEGER-REF>_jN4Q8qSB1w6EKiQK9AaHaJi4vsYx35r</DATATYPE-DEFINITION-INTEGER-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-INTEGER>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_ASI470eOS7l88FS29m423AK3Fb67TDu" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Baseline" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_3U7p471015q2eAnmUyr2Q4X9slP6ES3" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Comment" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_301an5l6kiJ32p3793U8FZ30WhL3ggQ" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Draft" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_lT99Dzp9ZmNd3F8u0VdGxECoKT3JM13" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Group" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_2c6QWPXaO9axWk7frkrufvrTGbH0K5o" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Identity" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_2oeT0PltW9BT2Ys9mi19oe97qmzEqAK" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Key" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_DQHhey19gxG5uC6ux9wZ9Iyb0wYcuWF" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Owner" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_7GL4XMKuT575NDBKBj5Ko40XIOuxKl7" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Status" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_jIEt1w4JIIgDdiaT89O9aqX3Qk7k2hT" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Description" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_tK2h5SKKl0M5ZzDm8zz76r08U57Z6Tq" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_4OCaZI6s2ghFTPzGG7g142XaYHVfexq" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_vxr2q82qOn331rcpvk2NrvRIoDc6Mb4" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Name" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_9kKFanMjOhM70uRjYnu9gyPG9Rfo8U2" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Revision" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_rReqE1sJwCI7jfsDUt3JT4p1pVMor4i" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_cYb0I2ulY2QfIY8I6y27Axus3R3Ty4z" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_enYtQsY5enrFcsjWXPt1v352jB4tG3S" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_TEXT" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-XHTML-REF>_2sYqJFs3WkJJz00VB8ft277UnTheTp5</DATATYPE-DEFINITION-XHTML-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-XHTML>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_4eH16HONInN5Mq3FafqPJK2ygJy2lCI" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Domain" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_jBW99EoOLIuwDLscUmG3anZjUORjqMu</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_073U9h0mvX598gvxwM6DEn48B1vf5bC" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Item Status" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_WMy3G5qu162WgR6Xw9gFCaVQTeRB65y</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_zD8CWQua7K735m31eL0dNQDU08GrqZS" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_System Level" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_3FMBjzpc5nWFI3k30Z9Z390wxrmI4a0</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
</SPEC-ATTRIBUTES>
</SPEC-OBJECT-TYPE>
</SPEC-TYPES>
<SPEC-OBJECTS>
<SPEC-OBJECT IDENTIFIER="_8Eu7x9U5M25j17D5SOipCMblruhXvsI" LAST-CHANGE="2024-06-14T09:29:39Z">
<VALUES>
<ATTRIBUTE-VALUE-INTEGER THE-VALUE="1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-INTEGER-REF>_1l0lJn06F3AWKxHUHk6OvEFv1WPnv4y</ATTRIBUTE-DEFINITION-INTEGER-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-INTEGER>
<ATTRIBUTE-VALUE-STRING THE-VALUE="A">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_301an5l6kiJ32p3793U8FZ30WhL3ggQ</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="SBS-2">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_2c6QWPXaO9axWk7frkrufvrTGbH0K5o</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="1.1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_2oeT0PltW9BT2Ys9mi19oe97qmzEqAK</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_DQHhey19gxG5uC6ux9wZ9Iyb0wYcuWF</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_tK2h5SKKl0M5ZzDm8zz76r08U57Z6Tq</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_4OCaZI6s2ghFTPzGG7g142XaYHVfexq</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="aaa-2">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_vxr2q82qOn331rcpvk2NrvRIoDc6Mb4</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:22:18Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_rReqE1sJwCI7jfsDUt3JT4p1pVMor4i</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:22:27Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_cYb0I2ulY2QfIY8I6y27Axus3R3Ty4z</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-ENUMERATION>
<VALUES>
<ENUM-VALUE-REF>_66wNI1VJUVYw4xmbmfiOgN9K6gbnw0w</ENUM-VALUE-REF>
</VALUES>
<DEFINITION>
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_073U9h0mvX598gvxwM6DEn48B1vf5bC</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-ENUMERATION>
</VALUES>
<TYPE>
<SPEC-OBJECT-TYPE-REF>_AgI3y7P4M8m411dH6Q795ME0DZwTKaX</SPEC-OBJECT-TYPE-REF>
</TYPE>
</SPEC-OBJECT>
</SPEC-OBJECTS>
<SPEC-RELATIONS/>
<SPECIFICATIONS>
<SPECIFICATION IDENTIFIER="_TpnzVbw83eLu17T6JDvfqJMZ9g8ZqTn" LAST-CHANGE="2024-06-14T09:29:39Z">
<VALUES>
<ATTRIBUTE-VALUE-INTEGER THE-VALUE="1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-INTEGER-REF>_tFmqTCfkJ6PTFzh7jFWA57Dv3Os2E24</ATTRIBUTE-DEFINITION-INTEGER-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-INTEGER>
<ATTRIBUTE-VALUE-STRING THE-VALUE="A">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_fbT7sNm4Mtw9s6UKdZquJ0ZoL1926ww</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="SBS-1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_gJ1Zjn4yA397191ETrxSrQH7Mon3sqP</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_kAFI67n1VQtO8PdZhaZjC6EZ35IfV7J</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_W1Y3xSQWl9BvaQFI7GEFb9KvgqiWxng</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_buiEkw962FbT8I7JXFi9mhp89M30w6C</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_64EBqYYU2Eixx6lAXk6vI65U5RtG1k0</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="aaa-1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_4H9gtsGhrcmKuS1Ux2fr9tyGs89lih2</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:21:45Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_N6Bzv3Q3L3i7eVbs0F122xIvjGR9AUj</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:28:51Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_45RzThwGKnD8SZvyi4JdPLtsXn1AbxE</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-XHTML>
<THE-VALUE>
<xhtml:p>bbbb</xhtml:p>
</THE-VALUE>
<DEFINITION>
<ATTRIBUTE-DEFINITION-XHTML-REF>_I6eUj6J37gilfR4U4i4P9rqFfPwp8j0</ATTRIBUTE-DEFINITION-XHTML-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-XHTML>
<ATTRIBUTE-VALUE-ENUMERATION>
<VALUES>
<ENUM-VALUE-REF>_66wNI1VJUVYw4xmbmfiOgN9K6gbnw0w</ENUM-VALUE-REF>
</VALUES>
<DEFINITION>
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_w0gAFngtw8hP9Hg7NmBG5CZ52ua9Vbi</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-ENUMERATION>
</VALUES>
<TYPE>
<SPECIFICATION-TYPE-REF>_vQSPiJp854ACfaHoeq15TQYwMLWz1n8</SPECIFICATION-TYPE-REF>
</TYPE>
<CHILDREN>
<SPEC-HIERARCHY IDENTIFIER="_VW48dBKJi53B2g4jLip3S4TskxmQwGb" LAST-CHANGE="2024-06-14T09:29:39Z">
<OBJECT>
<SPEC-OBJECT-REF>_8Eu7x9U5M25j17D5SOipCMblruhXvsI</SPEC-OBJECT-REF>
</OBJECT>
<CHILDREN/>
</SPEC-HIERARCHY>
</CHILDREN>
</SPECIFICATION>
</SPECIFICATIONS>
</REQ-IF-CONTENT>
</CORE-CONTENT>
<TOOL-EXTENSIONS/>
</REQ-IF>Hi,
When I tried to import requirements from a ReqIF file in Requirement Editor, the GUI reports:
"Invalid ReqIF file. Error details: Type ‘xhtml:p’ has not been found in the registry."
Is this class unsupported? It seems ‘xhtml:div’ is supported.
<?xml version="1.0"?>
<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<THE-HEADER>
<REQ-IF-HEADER IDENTIFIER="_q6t8q2X9fb2Cn5jN20LdqZHL1Ir3a98">
<CREATION-TIME>2024-06-14T09:29:39Z</CREATION-TIME>
<REQ-IF-TOOL-ID>Cradle WorkBench</REQ-IF-TOOL-ID>
<REQ-IF-VERSION>1.0</REQ-IF-VERSION>
<SOURCE-TOOL-ID>Cradle WorkBench</SOURCE-TOOL-ID>
<TITLE>Cradle WorkBench ReqIF Export</TITLE>
</REQ-IF-HEADER>
</THE-HEADER>
<CORE-CONTENT>
<REQ-IF-CONTENT>
<DATATYPES>
<DATATYPE-DEFINITION-BOOLEAN IDENTIFIER="_84299a2QOHS4ze5rNPVcDu6PxkacqeY" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_BOOLEAN"/>
<DATATYPE-DEFINITION-INTEGER IDENTIFIER="_jN4Q8qSB1w6EKiQK9AaHaJi4vsYx35r" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_INTEGER" MIN="-2147483648" MAX="2147483647"/>
<DATATYPE-DEFINITION-STRING IDENTIFIER="_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_STRING" MAX-LENGTH="1000"/>
<DATATYPE-DEFINITION-DATE IDENTIFIER="_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_DATE"/>
<DATATYPE-DEFINITION-REAL IDENTIFIER="_46w33R6Ha3U7vy8YwqDYu4J1bPiEKm2" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_REAL" MIN="-1.08310167E17" MAX="1.08310167E17" ACCURACY="10"/>
<DATATYPE-DEFINITION-XHTML IDENTIFIER="_2sYqJFs3WkJJz00VB8ft277UnTheTp5" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_XHTML"/>
<DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_jBW99EoOLIuwDLscUmG3anZjUORjqMu" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Domain">
<SPECIFIED-VALUES>
<ENUM-VALUE IDENTIFIER="_QoLKIC6P9valnJX52LoHh7fW2InMG2h" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Certification">
<PROPERTIES>
<EMBEDDED-VALUE KEY="0" OTHER-CONTENT="Certification"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_nl9it9bDq99s7pdgnf801qH5arRPH3i" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Environment">
<PROPERTIES>
<EMBEDDED-VALUE KEY="1" OTHER-CONTENT="Environment"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_78z6p673bV0G16hC0Ca8emSA6zJr48g" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Human Factors">
<PROPERTIES>
<EMBEDDED-VALUE KEY="2" OTHER-CONTENT="Human Factors"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_VF2V0IFEREXOqsPcrv2vny0TS8548iR" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Infrastructure">
<PROPERTIES>
<EMBEDDED-VALUE KEY="3" OTHER-CONTENT="Infrastructure"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_S0P8HEm4sf0ZVtth82L8AJPtSY9Ng5Z" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Operational">
<PROPERTIES>
<EMBEDDED-VALUE KEY="4" OTHER-CONTENT="Operational"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_Q9PQy2cr2hn09S14orL420GQvm481AN" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Other">
<PROPERTIES>
<EMBEDDED-VALUE KEY="5" OTHER-CONTENT="Other"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_tQdUgsdBFSjnaNZsI04DM0Ok9Lh3aKZ" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Safety">
<PROPERTIES>
<EMBEDDED-VALUE KEY="6" OTHER-CONTENT="Safety"/>
</PROPERTIES>
</ENUM-VALUE>
</SPECIFIED-VALUES>
</DATATYPE-DEFINITION-ENUMERATION>
<DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_WMy3G5qu162WgR6Xw9gFCaVQTeRB65y" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Item Status">
<SPECIFIED-VALUES>
<ENUM-VALUE IDENTIFIER="_1E9z461lHgmgF9pXPK355chQ2Uy9vDR" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Accepted">
<PROPERTIES>
<EMBEDDED-VALUE KEY="7" OTHER-CONTENT="Accepted"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_p6CI770i4yb5Rg2e4zC4L5x5D5k78h0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Agreed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="8" OTHER-CONTENT="Agreed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_3DU39sZMeOe3MaocMf3hQYbHo8Ud0z6" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Candidate">
<PROPERTIES>
<EMBEDDED-VALUE KEY="9" OTHER-CONTENT="Candidate"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_w2kfxbdJt4VWq59lljb9X37be9CLFuM" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Closed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="10" OTHER-CONTENT="Closed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_T4Uoz8RI8wON0QU0HJRFuQm9Mv0K2xB" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Disputed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="11" OTHER-CONTENT="Disputed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_2E45Kk7x847Qn732CWqp7poNMqG6Gq7" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Rejected">
<PROPERTIES>
<EMBEDDED-VALUE KEY="12" OTHER-CONTENT="Rejected"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_x11s6CtBX9U3vz7fgjOSXbJ5NWhE25V" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Review">
<PROPERTIES>
<EMBEDDED-VALUE KEY="13" OTHER-CONTENT="Review"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_ib9j5eojQk36UyOqccVzbo0EjPFN0O5" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Reviewed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="14" OTHER-CONTENT="Reviewed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_4xy2FifD0MPu0uJhBXnGgy9D0H9HYqC" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Suspect">
<PROPERTIES>
<EMBEDDED-VALUE KEY="15" OTHER-CONTENT="Suspect"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_66wNI1VJUVYw4xmbmfiOgN9K6gbnw0w" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="TBD">
<PROPERTIES>
<EMBEDDED-VALUE KEY="16" OTHER-CONTENT="TBD"/>
</PROPERTIES>
</ENUM-VALUE>
</SPECIFIED-VALUES>
</DATATYPE-DEFINITION-ENUMERATION>
<DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_3FMBjzpc5nWFI3k30Z9Z390wxrmI4a0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_System Level">
<SPECIFIED-VALUES>
<ENUM-VALUE IDENTIFIER="_QGd1NTcOY6177TmX7C9t5gM4gc5Zkyy" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Assembly">
<PROPERTIES>
<EMBEDDED-VALUE KEY="17" OTHER-CONTENT="Assembly"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_3t7qe6E5L0CZl8rtxW3Q3n7weKu71zn" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Component">
<PROPERTIES>
<EMBEDDED-VALUE KEY="18" OTHER-CONTENT="Component"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_PNcwOu7g2OALpXpJ5uPNgr1dheKM52J" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Sub-System">
<PROPERTIES>
<EMBEDDED-VALUE KEY="19" OTHER-CONTENT="Sub-System"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_JLUOkrJj5otC4zZ3mx2r2z6gx3tD8nM" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="System">
<PROPERTIES>
<EMBEDDED-VALUE KEY="20" OTHER-CONTENT="System"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_6S937HlnVg21zU1VSQTosz9FE35QiXE" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Unit">
<PROPERTIES>
<EMBEDDED-VALUE KEY="21" OTHER-CONTENT="Unit"/>
</PROPERTIES>
</ENUM-VALUE>
</SPECIFIED-VALUES>
</DATATYPE-DEFINITION-ENUMERATION>
</DATATYPES>
<SPEC-TYPES>
<SPECIFICATION-TYPE IDENTIFIER="_vQSPiJp854ACfaHoeq15TQYwMLWz1n8" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_SBS">
<SPEC-ATTRIBUTES>
<ATTRIBUTE-DEFINITION-INTEGER IDENTIFIER="_tFmqTCfkJ6PTFzh7jFWA57Dv3Os2E24" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Security" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-INTEGER-REF>_jN4Q8qSB1w6EKiQK9AaHaJi4vsYx35r</DATATYPE-DEFINITION-INTEGER-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-INTEGER>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_TCh66m4v824r71lGRyy7yMsJ363O3x9" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Baseline" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_tSnd3D7UWvPXGNwAOAmNmgJw2PEt8zc" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Comment" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_fbT7sNm4Mtw9s6UKdZquJ0ZoL1926ww" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Draft" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_7R99v1K59528lT46nMOTAhoU2P0GEsG" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Group" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_gJ1Zjn4yA397191ETrxSrQH7Mon3sqP" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Identity" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_kAFI67n1VQtO8PdZhaZjC6EZ35IfV7J" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Key" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_W1Y3xSQWl9BvaQFI7GEFb9KvgqiWxng" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Owner" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_VLY5NqVfgiRj59wBJhBnZh6bsjF1RQR" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Status" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_818F5C9Nq62Xy8fbM8Em7opsQP072XH" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Description" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_buiEkw962FbT8I7JXFi9mhp89M30w6C" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_64EBqYYU2Eixx6lAXk6vI65U5RtG1k0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_4H9gtsGhrcmKuS1Ux2fr9tyGs89lih2" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Name" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_sN72WNhUBpKQ8D1LD51UnNn2H9l4lLv" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Revision" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_N6Bzv3Q3L3i7eVbs0F122xIvjGR9AUj" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_45RzThwGKnD8SZvyi4JdPLtsXn1AbxE" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_I6eUj6J37gilfR4U4i4P9rqFfPwp8j0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_TEXT" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-XHTML-REF>_2sYqJFs3WkJJz00VB8ft277UnTheTp5</DATATYPE-DEFINITION-XHTML-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-XHTML>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_4DZHRGS14YD6C9odZwGkhIZq0zg6Jf9" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Domain" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_jBW99EoOLIuwDLscUmG3anZjUORjqMu</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_w0gAFngtw8hP9Hg7NmBG5CZ52ua9Vbi" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Item Status" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_WMy3G5qu162WgR6Xw9gFCaVQTeRB65y</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_AbYG0a0tTMeTjl4fh9oM6XcG137ecD5" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_System Level" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_3FMBjzpc5nWFI3k30Z9Z390wxrmI4a0</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
</SPEC-ATTRIBUTES>
</SPECIFICATION-TYPE>
<SPEC-OBJECT-TYPE IDENTIFIER="_AgI3y7P4M8m411dH6Q795ME0DZwTKaX" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="SBS Object">
<SPEC-ATTRIBUTES>
<ATTRIBUTE-DEFINITION-INTEGER IDENTIFIER="_1l0lJn06F3AWKxHUHk6OvEFv1WPnv4y" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Security" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-INTEGER-REF>_jN4Q8qSB1w6EKiQK9AaHaJi4vsYx35r</DATATYPE-DEFINITION-INTEGER-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-INTEGER>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_ASI470eOS7l88FS29m423AK3Fb67TDu" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Baseline" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_3U7p471015q2eAnmUyr2Q4X9slP6ES3" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Comment" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_301an5l6kiJ32p3793U8FZ30WhL3ggQ" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Draft" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_lT99Dzp9ZmNd3F8u0VdGxECoKT3JM13" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Group" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_2c6QWPXaO9axWk7frkrufvrTGbH0K5o" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Identity" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_2oeT0PltW9BT2Ys9mi19oe97qmzEqAK" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Key" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_DQHhey19gxG5uC6ux9wZ9Iyb0wYcuWF" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Owner" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_7GL4XMKuT575NDBKBj5Ko40XIOuxKl7" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Status" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_jIEt1w4JIIgDdiaT89O9aqX3Qk7k2hT" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Description" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_tK2h5SKKl0M5ZzDm8zz76r08U57Z6Tq" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_4OCaZI6s2ghFTPzGG7g142XaYHVfexq" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_vxr2q82qOn331rcpvk2NrvRIoDc6Mb4" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Name" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_9kKFanMjOhM70uRjYnu9gyPG9Rfo8U2" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Revision" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_rReqE1sJwCI7jfsDUt3JT4p1pVMor4i" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_cYb0I2ulY2QfIY8I6y27Axus3R3Ty4z" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_enYtQsY5enrFcsjWXPt1v352jB4tG3S" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_TEXT" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-XHTML-REF>_2sYqJFs3WkJJz00VB8ft277UnTheTp5</DATATYPE-DEFINITION-XHTML-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-XHTML>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_4eH16HONInN5Mq3FafqPJK2ygJy2lCI" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Domain" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_jBW99EoOLIuwDLscUmG3anZjUORjqMu</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_073U9h0mvX598gvxwM6DEn48B1vf5bC" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Item Status" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_WMy3G5qu162WgR6Xw9gFCaVQTeRB65y</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_zD8CWQua7K735m31eL0dNQDU08GrqZS" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_System Level" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_3FMBjzpc5nWFI3k30Z9Z390wxrmI4a0</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
</SPEC-ATTRIBUTES>
</SPEC-OBJECT-TYPE>
</SPEC-TYPES>
<SPEC-OBJECTS>
<SPEC-OBJECT IDENTIFIER="_8Eu7x9U5M25j17D5SOipCMblruhXvsI" LAST-CHANGE="2024-06-14T09:29:39Z">
<VALUES>
<ATTRIBUTE-VALUE-INTEGER THE-VALUE="1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-INTEGER-REF>_1l0lJn06F3AWKxHUHk6OvEFv1WPnv4y</ATTRIBUTE-DEFINITION-INTEGER-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-INTEGER>
<ATTRIBUTE-VALUE-STRING THE-VALUE="A">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_301an5l6kiJ32p3793U8FZ30WhL3ggQ</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="SBS-2">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_2c6QWPXaO9axWk7frkrufvrTGbH0K5o</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="1.1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_2oeT0PltW9BT2Ys9mi19oe97qmzEqAK</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_DQHhey19gxG5uC6ux9wZ9Iyb0wYcuWF</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_tK2h5SKKl0M5ZzDm8zz76r08U57Z6Tq</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_4OCaZI6s2ghFTPzGG7g142XaYHVfexq</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="aaa-2">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_vxr2q82qOn331rcpvk2NrvRIoDc6Mb4</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:22:18Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_rReqE1sJwCI7jfsDUt3JT4p1pVMor4i</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:22:27Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_cYb0I2ulY2QfIY8I6y27Axus3R3Ty4z</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-ENUMERATION>
<VALUES>
<ENUM-VALUE-REF>_66wNI1VJUVYw4xmbmfiOgN9K6gbnw0w</ENUM-VALUE-REF>
</VALUES>
<DEFINITION>
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_073U9h0mvX598gvxwM6DEn48B1vf5bC</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-ENUMERATION>
</VALUES>
<TYPE>
<SPEC-OBJECT-TYPE-REF>_AgI3y7P4M8m411dH6Q795ME0DZwTKaX</SPEC-OBJECT-TYPE-REF>
</TYPE>
</SPEC-OBJECT>
</SPEC-OBJECTS>
<SPEC-RELATIONS/>
<SPECIFICATIONS>
<SPECIFICATION IDENTIFIER="_TpnzVbw83eLu17T6JDvfqJMZ9g8ZqTn" LAST-CHANGE="2024-06-14T09:29:39Z">
<VALUES>
<ATTRIBUTE-VALUE-INTEGER THE-VALUE="1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-INTEGER-REF>_tFmqTCfkJ6PTFzh7jFWA57Dv3Os2E24</ATTRIBUTE-DEFINITION-INTEGER-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-INTEGER>
<ATTRIBUTE-VALUE-STRING THE-VALUE="A">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_fbT7sNm4Mtw9s6UKdZquJ0ZoL1926ww</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="SBS-1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_gJ1Zjn4yA397191ETrxSrQH7Mon3sqP</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_kAFI67n1VQtO8PdZhaZjC6EZ35IfV7J</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_W1Y3xSQWl9BvaQFI7GEFb9KvgqiWxng</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_buiEkw962FbT8I7JXFi9mhp89M30w6C</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_64EBqYYU2Eixx6lAXk6vI65U5RtG1k0</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="aaa-1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_4H9gtsGhrcmKuS1Ux2fr9tyGs89lih2</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:21:45Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_N6Bzv3Q3L3i7eVbs0F122xIvjGR9AUj</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:28:51Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_45RzThwGKnD8SZvyi4JdPLtsXn1AbxE</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-XHTML>
<THE-VALUE>
<xhtml:p>bbbb</xhtml:p>
</THE-VALUE>
<DEFINITION>
<ATTRIBUTE-DEFINITION-XHTML-REF>_I6eUj6J37gilfR4U4i4P9rqFfPwp8j0</ATTRIBUTE-DEFINITION-XHTML-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-XHTML>
<ATTRIBUTE-VALUE-ENUMERATION>
<VALUES>
<ENUM-VALUE-REF>_66wNI1VJUVYw4xmbmfiOgN9K6gbnw0w</ENUM-VALUE-REF>
</VALUES>
<DEFINITION>
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_w0gAFngtw8hP9Hg7NmBG5CZ52ua9Vbi</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-ENUMERATION>
</VALUES>
<TYPE>
<SPECIFICATION-TYPE-REF>_vQSPiJp854ACfaHoeq15TQYwMLWz1n8</SPECIFICATION-TYPE-REF>
</TYPE>
<CHILDREN>
<SPEC-HIERARCHY IDENTIFIER="_VW48dBKJi53B2g4jLip3S4TskxmQwGb" LAST-CHANGE="2024-06-14T09:29:39Z">
<OBJECT>
<SPEC-OBJECT-REF>_8Eu7x9U5M25j17D5SOipCMblruhXvsI</SPEC-OBJECT-REF>
</OBJECT>
<CHILDREN/>
</SPEC-HIERARCHY>
</CHILDREN>
</SPECIFICATION>
</SPECIFICATIONS>
</REQ-IF-CONTENT>
</CORE-CONTENT>
<TOOL-EXTENSIONS/>
</REQ-IF> Hi,
When I tried to import requirements from a ReqIF file in Requirement Editor, the GUI reports:
"Invalid ReqIF file. Error details: Type ‘xhtml:p’ has not been found in the registry."
Is this class unsupported? It seems ‘xhtml:div’ is supported.
<?xml version="1.0"?>
<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<THE-HEADER>
<REQ-IF-HEADER IDENTIFIER="_q6t8q2X9fb2Cn5jN20LdqZHL1Ir3a98">
<CREATION-TIME>2024-06-14T09:29:39Z</CREATION-TIME>
<REQ-IF-TOOL-ID>Cradle WorkBench</REQ-IF-TOOL-ID>
<REQ-IF-VERSION>1.0</REQ-IF-VERSION>
<SOURCE-TOOL-ID>Cradle WorkBench</SOURCE-TOOL-ID>
<TITLE>Cradle WorkBench ReqIF Export</TITLE>
</REQ-IF-HEADER>
</THE-HEADER>
<CORE-CONTENT>
<REQ-IF-CONTENT>
<DATATYPES>
<DATATYPE-DEFINITION-BOOLEAN IDENTIFIER="_84299a2QOHS4ze5rNPVcDu6PxkacqeY" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_BOOLEAN"/>
<DATATYPE-DEFINITION-INTEGER IDENTIFIER="_jN4Q8qSB1w6EKiQK9AaHaJi4vsYx35r" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_INTEGER" MIN="-2147483648" MAX="2147483647"/>
<DATATYPE-DEFINITION-STRING IDENTIFIER="_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_STRING" MAX-LENGTH="1000"/>
<DATATYPE-DEFINITION-DATE IDENTIFIER="_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_DATE"/>
<DATATYPE-DEFINITION-REAL IDENTIFIER="_46w33R6Ha3U7vy8YwqDYu4J1bPiEKm2" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_REAL" MIN="-1.08310167E17" MAX="1.08310167E17" ACCURACY="10"/>
<DATATYPE-DEFINITION-XHTML IDENTIFIER="_2sYqJFs3WkJJz00VB8ft277UnTheTp5" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_XHTML"/>
<DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_jBW99EoOLIuwDLscUmG3anZjUORjqMu" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Domain">
<SPECIFIED-VALUES>
<ENUM-VALUE IDENTIFIER="_QoLKIC6P9valnJX52LoHh7fW2InMG2h" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Certification">
<PROPERTIES>
<EMBEDDED-VALUE KEY="0" OTHER-CONTENT="Certification"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_nl9it9bDq99s7pdgnf801qH5arRPH3i" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Environment">
<PROPERTIES>
<EMBEDDED-VALUE KEY="1" OTHER-CONTENT="Environment"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_78z6p673bV0G16hC0Ca8emSA6zJr48g" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Human Factors">
<PROPERTIES>
<EMBEDDED-VALUE KEY="2" OTHER-CONTENT="Human Factors"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_VF2V0IFEREXOqsPcrv2vny0TS8548iR" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Infrastructure">
<PROPERTIES>
<EMBEDDED-VALUE KEY="3" OTHER-CONTENT="Infrastructure"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_S0P8HEm4sf0ZVtth82L8AJPtSY9Ng5Z" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Operational">
<PROPERTIES>
<EMBEDDED-VALUE KEY="4" OTHER-CONTENT="Operational"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_Q9PQy2cr2hn09S14orL420GQvm481AN" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Other">
<PROPERTIES>
<EMBEDDED-VALUE KEY="5" OTHER-CONTENT="Other"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_tQdUgsdBFSjnaNZsI04DM0Ok9Lh3aKZ" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Safety">
<PROPERTIES>
<EMBEDDED-VALUE KEY="6" OTHER-CONTENT="Safety"/>
</PROPERTIES>
</ENUM-VALUE>
</SPECIFIED-VALUES>
</DATATYPE-DEFINITION-ENUMERATION>
<DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_WMy3G5qu162WgR6Xw9gFCaVQTeRB65y" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Item Status">
<SPECIFIED-VALUES>
<ENUM-VALUE IDENTIFIER="_1E9z461lHgmgF9pXPK355chQ2Uy9vDR" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Accepted">
<PROPERTIES>
<EMBEDDED-VALUE KEY="7" OTHER-CONTENT="Accepted"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_p6CI770i4yb5Rg2e4zC4L5x5D5k78h0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Agreed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="8" OTHER-CONTENT="Agreed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_3DU39sZMeOe3MaocMf3hQYbHo8Ud0z6" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Candidate">
<PROPERTIES>
<EMBEDDED-VALUE KEY="9" OTHER-CONTENT="Candidate"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_w2kfxbdJt4VWq59lljb9X37be9CLFuM" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Closed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="10" OTHER-CONTENT="Closed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_T4Uoz8RI8wON0QU0HJRFuQm9Mv0K2xB" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Disputed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="11" OTHER-CONTENT="Disputed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_2E45Kk7x847Qn732CWqp7poNMqG6Gq7" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Rejected">
<PROPERTIES>
<EMBEDDED-VALUE KEY="12" OTHER-CONTENT="Rejected"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_x11s6CtBX9U3vz7fgjOSXbJ5NWhE25V" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Review">
<PROPERTIES>
<EMBEDDED-VALUE KEY="13" OTHER-CONTENT="Review"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_ib9j5eojQk36UyOqccVzbo0EjPFN0O5" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Reviewed">
<PROPERTIES>
<EMBEDDED-VALUE KEY="14" OTHER-CONTENT="Reviewed"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_4xy2FifD0MPu0uJhBXnGgy9D0H9HYqC" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Suspect">
<PROPERTIES>
<EMBEDDED-VALUE KEY="15" OTHER-CONTENT="Suspect"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_66wNI1VJUVYw4xmbmfiOgN9K6gbnw0w" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="TBD">
<PROPERTIES>
<EMBEDDED-VALUE KEY="16" OTHER-CONTENT="TBD"/>
</PROPERTIES>
</ENUM-VALUE>
</SPECIFIED-VALUES>
</DATATYPE-DEFINITION-ENUMERATION>
<DATATYPE-DEFINITION-ENUMERATION IDENTIFIER="_3FMBjzpc5nWFI3k30Z9Z390wxrmI4a0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_System Level">
<SPECIFIED-VALUES>
<ENUM-VALUE IDENTIFIER="_QGd1NTcOY6177TmX7C9t5gM4gc5Zkyy" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Assembly">
<PROPERTIES>
<EMBEDDED-VALUE KEY="17" OTHER-CONTENT="Assembly"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_3t7qe6E5L0CZl8rtxW3Q3n7weKu71zn" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Component">
<PROPERTIES>
<EMBEDDED-VALUE KEY="18" OTHER-CONTENT="Component"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_PNcwOu7g2OALpXpJ5uPNgr1dheKM52J" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Sub-System">
<PROPERTIES>
<EMBEDDED-VALUE KEY="19" OTHER-CONTENT="Sub-System"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_JLUOkrJj5otC4zZ3mx2r2z6gx3tD8nM" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="System">
<PROPERTIES>
<EMBEDDED-VALUE KEY="20" OTHER-CONTENT="System"/>
</PROPERTIES>
</ENUM-VALUE>
<ENUM-VALUE IDENTIFIER="_6S937HlnVg21zU1VSQTosz9FE35QiXE" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="Unit">
<PROPERTIES>
<EMBEDDED-VALUE KEY="21" OTHER-CONTENT="Unit"/>
</PROPERTIES>
</ENUM-VALUE>
</SPECIFIED-VALUES>
</DATATYPE-DEFINITION-ENUMERATION>
</DATATYPES>
<SPEC-TYPES>
<SPECIFICATION-TYPE IDENTIFIER="_vQSPiJp854ACfaHoeq15TQYwMLWz1n8" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_SBS">
<SPEC-ATTRIBUTES>
<ATTRIBUTE-DEFINITION-INTEGER IDENTIFIER="_tFmqTCfkJ6PTFzh7jFWA57Dv3Os2E24" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Security" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-INTEGER-REF>_jN4Q8qSB1w6EKiQK9AaHaJi4vsYx35r</DATATYPE-DEFINITION-INTEGER-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-INTEGER>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_TCh66m4v824r71lGRyy7yMsJ363O3x9" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Baseline" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_tSnd3D7UWvPXGNwAOAmNmgJw2PEt8zc" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Comment" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_fbT7sNm4Mtw9s6UKdZquJ0ZoL1926ww" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Draft" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_7R99v1K59528lT46nMOTAhoU2P0GEsG" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Group" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_gJ1Zjn4yA397191ETrxSrQH7Mon3sqP" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Identity" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_kAFI67n1VQtO8PdZhaZjC6EZ35IfV7J" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Key" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_W1Y3xSQWl9BvaQFI7GEFb9KvgqiWxng" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Owner" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_VLY5NqVfgiRj59wBJhBnZh6bsjF1RQR" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Status" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_818F5C9Nq62Xy8fbM8Em7opsQP072XH" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Description" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_buiEkw962FbT8I7JXFi9mhp89M30w6C" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_64EBqYYU2Eixx6lAXk6vI65U5RtG1k0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_4H9gtsGhrcmKuS1Ux2fr9tyGs89lih2" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Name" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_sN72WNhUBpKQ8D1LD51UnNn2H9l4lLv" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Revision" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_N6Bzv3Q3L3i7eVbs0F122xIvjGR9AUj" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_45RzThwGKnD8SZvyi4JdPLtsXn1AbxE" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_I6eUj6J37gilfR4U4i4P9rqFfPwp8j0" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_TEXT" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-XHTML-REF>_2sYqJFs3WkJJz00VB8ft277UnTheTp5</DATATYPE-DEFINITION-XHTML-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-XHTML>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_4DZHRGS14YD6C9odZwGkhIZq0zg6Jf9" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Domain" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_jBW99EoOLIuwDLscUmG3anZjUORjqMu</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_w0gAFngtw8hP9Hg7NmBG5CZ52ua9Vbi" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Item Status" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_WMy3G5qu162WgR6Xw9gFCaVQTeRB65y</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_AbYG0a0tTMeTjl4fh9oM6XcG137ecD5" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_System Level" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_3FMBjzpc5nWFI3k30Z9Z390wxrmI4a0</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
</SPEC-ATTRIBUTES>
</SPECIFICATION-TYPE>
<SPEC-OBJECT-TYPE IDENTIFIER="_AgI3y7P4M8m411dH6Q795ME0DZwTKaX" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="SBS Object">
<SPEC-ATTRIBUTES>
<ATTRIBUTE-DEFINITION-INTEGER IDENTIFIER="_1l0lJn06F3AWKxHUHk6OvEFv1WPnv4y" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Security" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-INTEGER-REF>_jN4Q8qSB1w6EKiQK9AaHaJi4vsYx35r</DATATYPE-DEFINITION-INTEGER-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-INTEGER>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_ASI470eOS7l88FS29m423AK3Fb67TDu" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Baseline" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_3U7p471015q2eAnmUyr2Q4X9slP6ES3" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Comment" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_301an5l6kiJ32p3793U8FZ30WhL3ggQ" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Draft" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_lT99Dzp9ZmNd3F8u0VdGxECoKT3JM13" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Group" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_2c6QWPXaO9axWk7frkrufvrTGbH0K5o" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Identity" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_2oeT0PltW9BT2Ys9mi19oe97qmzEqAK" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Key" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_DQHhey19gxG5uC6ux9wZ9Iyb0wYcuWF" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Owner" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_7GL4XMKuT575NDBKBj5Ko40XIOuxKl7" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Status" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_jIEt1w4JIIgDdiaT89O9aqX3Qk7k2hT" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Description" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_tK2h5SKKl0M5ZzDm8zz76r08U57Z6Tq" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_4OCaZI6s2ghFTPzGG7g142XaYHVfexq" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedBy" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_vxr2q82qOn331rcpvk2NrvRIoDc6Mb4" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Name" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-STRING IDENTIFIER="_9kKFanMjOhM70uRjYnu9gyPG9Rfo8U2" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.Revision" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-STRING-REF>_4hR7Rs7WVAnHWQ9T0IEmS2kj7J0JLpP</DATATYPE-DEFINITION-STRING-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-STRING>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_rReqE1sJwCI7jfsDUt3JT4p1pVMor4i" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignCreatedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-DATE IDENTIFIER="_cYb0I2ulY2QfIY8I6y27Axus3R3Ty4z" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="ReqIF.ForeignModifiedOn" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-DATE-REF>_B6lFGSftbOlNr2F4U8xeKrop3zdkDMg</DATATYPE-DEFINITION-DATE-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-DATE>
<ATTRIBUTE-DEFINITION-XHTML IDENTIFIER="_enYtQsY5enrFcsjWXPt1v352jB4tG3S" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_TEXT" IS-EDITABLE="true">
<TYPE>
<DATATYPE-DEFINITION-XHTML-REF>_2sYqJFs3WkJJz00VB8ft277UnTheTp5</DATATYPE-DEFINITION-XHTML-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-XHTML>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_4eH16HONInN5Mq3FafqPJK2ygJy2lCI" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Domain" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_jBW99EoOLIuwDLscUmG3anZjUORjqMu</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_073U9h0mvX598gvxwM6DEn48B1vf5bC" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_Item Status" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_WMy3G5qu162WgR6Xw9gFCaVQTeRB65y</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
<ATTRIBUTE-DEFINITION-ENUMERATION IDENTIFIER="_zD8CWQua7K735m31eL0dNQDU08GrqZS" LAST-CHANGE="2024-06-14T09:29:39Z" LONG-NAME="CRADLE_System Level" IS-EDITABLE="true" MULTI-VALUED="false">
<TYPE>
<DATATYPE-DEFINITION-ENUMERATION-REF>_3FMBjzpc5nWFI3k30Z9Z390wxrmI4a0</DATATYPE-DEFINITION-ENUMERATION-REF>
</TYPE>
</ATTRIBUTE-DEFINITION-ENUMERATION>
</SPEC-ATTRIBUTES>
</SPEC-OBJECT-TYPE>
</SPEC-TYPES>
<SPEC-OBJECTS>
<SPEC-OBJECT IDENTIFIER="_8Eu7x9U5M25j17D5SOipCMblruhXvsI" LAST-CHANGE="2024-06-14T09:29:39Z">
<VALUES>
<ATTRIBUTE-VALUE-INTEGER THE-VALUE="1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-INTEGER-REF>_1l0lJn06F3AWKxHUHk6OvEFv1WPnv4y</ATTRIBUTE-DEFINITION-INTEGER-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-INTEGER>
<ATTRIBUTE-VALUE-STRING THE-VALUE="A">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_301an5l6kiJ32p3793U8FZ30WhL3ggQ</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="SBS-2">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_2c6QWPXaO9axWk7frkrufvrTGbH0K5o</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="1.1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_2oeT0PltW9BT2Ys9mi19oe97qmzEqAK</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_DQHhey19gxG5uC6ux9wZ9Iyb0wYcuWF</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_tK2h5SKKl0M5ZzDm8zz76r08U57Z6Tq</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_4OCaZI6s2ghFTPzGG7g142XaYHVfexq</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="aaa-2">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_vxr2q82qOn331rcpvk2NrvRIoDc6Mb4</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:22:18Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_rReqE1sJwCI7jfsDUt3JT4p1pVMor4i</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:22:27Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_cYb0I2ulY2QfIY8I6y27Axus3R3Ty4z</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-ENUMERATION>
<VALUES>
<ENUM-VALUE-REF>_66wNI1VJUVYw4xmbmfiOgN9K6gbnw0w</ENUM-VALUE-REF>
</VALUES>
<DEFINITION>
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_073U9h0mvX598gvxwM6DEn48B1vf5bC</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-ENUMERATION>
</VALUES>
<TYPE>
<SPEC-OBJECT-TYPE-REF>_AgI3y7P4M8m411dH6Q795ME0DZwTKaX</SPEC-OBJECT-TYPE-REF>
</TYPE>
</SPEC-OBJECT>
</SPEC-OBJECTS>
<SPEC-RELATIONS/>
<SPECIFICATIONS>
<SPECIFICATION IDENTIFIER="_TpnzVbw83eLu17T6JDvfqJMZ9g8ZqTn" LAST-CHANGE="2024-06-14T09:29:39Z">
<VALUES>
<ATTRIBUTE-VALUE-INTEGER THE-VALUE="1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-INTEGER-REF>_tFmqTCfkJ6PTFzh7jFWA57Dv3Os2E24</ATTRIBUTE-DEFINITION-INTEGER-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-INTEGER>
<ATTRIBUTE-VALUE-STRING THE-VALUE="A">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_fbT7sNm4Mtw9s6UKdZquJ0ZoL1926ww</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="SBS-1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_gJ1Zjn4yA397191ETrxSrQH7Mon3sqP</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_kAFI67n1VQtO8PdZhaZjC6EZ35IfV7J</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_W1Y3xSQWl9BvaQFI7GEFb9KvgqiWxng</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_buiEkw962FbT8I7JXFi9mhp89M30w6C</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="MANAGER">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_64EBqYYU2Eixx6lAXk6vI65U5RtG1k0</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-STRING THE-VALUE="aaa-1">
<DEFINITION>
<ATTRIBUTE-DEFINITION-STRING-REF>_4H9gtsGhrcmKuS1Ux2fr9tyGs89lih2</ATTRIBUTE-DEFINITION-STRING-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-STRING>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:21:45Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_N6Bzv3Q3L3i7eVbs0F122xIvjGR9AUj</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-DATE THE-VALUE="2024-06-14T09:28:51Z">
<DEFINITION>
<ATTRIBUTE-DEFINITION-DATE-REF>_45RzThwGKnD8SZvyi4JdPLtsXn1AbxE</ATTRIBUTE-DEFINITION-DATE-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-DATE>
<ATTRIBUTE-VALUE-XHTML>
<THE-VALUE>
<xhtml:p>bbbb</xhtml:p>
</THE-VALUE>
<DEFINITION>
<ATTRIBUTE-DEFINITION-XHTML-REF>_I6eUj6J37gilfR4U4i4P9rqFfPwp8j0</ATTRIBUTE-DEFINITION-XHTML-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-XHTML>
<ATTRIBUTE-VALUE-ENUMERATION>
<VALUES>
<ENUM-VALUE-REF>_66wNI1VJUVYw4xmbmfiOgN9K6gbnw0w</ENUM-VALUE-REF>
</VALUES>
<DEFINITION>
<ATTRIBUTE-DEFINITION-ENUMERATION-REF>_w0gAFngtw8hP9Hg7NmBG5CZ52ua9Vbi</ATTRIBUTE-DEFINITION-ENUMERATION-REF>
</DEFINITION>
</ATTRIBUTE-VALUE-ENUMERATION>
</VALUES>
<TYPE>
<SPECIFICATION-TYPE-REF>_vQSPiJp854ACfaHoeq15TQYwMLWz1n8</SPECIFICATION-TYPE-REF>
</TYPE>
<CHILDREN>
<SPEC-HIERARCHY IDENTIFIER="_VW48dBKJi53B2g4jLip3S4TskxmQwGb" LAST-CHANGE="2024-06-14T09:29:39Z">
<OBJECT>
<SPEC-OBJECT-REF>_8Eu7x9U5M25j17D5SOipCMblruhXvsI</SPEC-OBJECT-REF>
</OBJECT>
<CHILDREN/>
</SPEC-HIERARCHY>
</CHILDREN>
</SPECIFICATION>
</SPECIFICATIONS>
</REQ-IF-CONTENT>
</CORE-CONTENT>
<TOOL-EXTENSIONS/>
</REQ-IF> attribute-value-xhtml the-value MATLAB Answers — New Questions
Is there a fully EOP functionallity at SMTP-relay and how are the limits?
Hi Everybody,
we are considering to use the SMTP-functionality of ExO to drive mails additionally from a local server. The SMTP relay is described as one of three solutions on this site:
These three solutions are possible:
– SMTP client submission
– Direct send
– SMTP relay
SMTP relay seems to be the unrecommended solution of these three, but it is useful in some cases. In one row is the hint, that there is no possibility to bypass the antispam functionality. The question is here: Is this a fully activated EOP? I ask because normally you have to license the standalone version of EOP for on prem environments (it’s not really a cheap service). And for the the SMTP relay solution there is no ExO License needed, which always would include the EOP.
Is this EOP for free? Or what else is it? It is not clear described.
Another question is regarding the limits. In the linked site you can find regarding this “Reasonable limits are imposed.” Does anyone has further information about it? It is also not described and some people say, there is no limit, some other say the limits will come soon (1st of January 2025). I really don’t want to take advantage of this system but i need to know the facts about it.
Thanks for any contribution!
Hi Everybody, we are considering to use the SMTP-functionality of ExO to drive mails additionally from a local server. The SMTP relay is described as one of three solutions on this site: How to set up a multifunction device or application to send emails using Microsoft 365 or Office 365 | Microsoft Learn These three solutions are possible:- SMTP client submission- Direct send- SMTP relay SMTP relay seems to be the unrecommended solution of these three, but it is useful in some cases. In one row is the hint, that there is no possibility to bypass the antispam functionality. The question is here: Is this a fully activated EOP? I ask because normally you have to license the standalone version of EOP for on prem environments (it’s not really a cheap service). And for the the SMTP relay solution there is no ExO License needed, which always would include the EOP. Is this EOP for free? Or what else is it? It is not clear described. Another question is regarding the limits. In the linked site you can find regarding this “Reasonable limits are imposed.” Does anyone has further information about it? It is also not described and some people say, there is no limit, some other say the limits will come soon (1st of January 2025). I really don’t want to take advantage of this system but i need to know the facts about it. Thanks for any contribution! Read More
Excel or Number querry
Hii
I want to show a number like 1234567 as 12,00,000…
Please help me, how could change the number as required as above (in excel)……..
HiiI want to show a number like 1234567 as 12,00,000… Please help me, how could change the number as required as above (in excel)…….. Read More
Bug with entra shared IOS and teams?
Have IPhones setup using the entra shared mode, everything works great at a base level. Devices get configured to be in shared mode, sso works like a charm for edge and the first user into teams, device gets that user logged out and next user signs in, again edge detects and user is signed in but when you open a teams it’s looking for a email address, if you force close teams it triggers the sso extension and the user gets logged in. Cannot for the life of me figure out why teams ends up in a state where it’s logged out but unable to gets the user creds passed to it. This was not an issue in the past. A reminder this is not iPad shared mode I’m talking about, people get them confused.
Have IPhones setup using the entra shared mode, everything works great at a base level. Devices get configured to be in shared mode, sso works like a charm for edge and the first user into teams, device gets that user logged out and next user signs in, again edge detects and user is signed in but when you open a teams it’s looking for a email address, if you force close teams it triggers the sso extension and the user gets logged in. Cannot for the life of me figure out why teams ends up in a state where it’s logged out but unable to gets the user creds passed to it. This was not an issue in the past. A reminder this is not iPad shared mode I’m talking about, people get them confused. Read More
Assigning a line plot object to a global property doesn’t retain it after the object is deleted
Is there a reason why when I delete a plot of a multiplot graph and assign it to a global (public) property it doesn’t retain it.
ax=app.UIAxes; % My plot is on a UIAxes
t = ax.Children(1) % Get the last plot
app.myPlot=t % myPlot is a Global property
delete(t);
app.myPlot
app.myPlot shows:
ans =
handle to deleted Line
so instead I have to access all the properties of the line individually and assign to a struct.
s = struct;
s.X=t.XData;
s.Y=t.YData;
s.Cl=t.Color;
s.DN=t.DisplayName;
s.Ls=t.LineStyle;
s.Lw=t.LineWidth
s.M=t.Marker;
app.myPlot=s;
Just seems more clunky!Is there a reason why when I delete a plot of a multiplot graph and assign it to a global (public) property it doesn’t retain it.
ax=app.UIAxes; % My plot is on a UIAxes
t = ax.Children(1) % Get the last plot
app.myPlot=t % myPlot is a Global property
delete(t);
app.myPlot
app.myPlot shows:
ans =
handle to deleted Line
so instead I have to access all the properties of the line individually and assign to a struct.
s = struct;
s.X=t.XData;
s.Y=t.YData;
s.Cl=t.Color;
s.DN=t.DisplayName;
s.Ls=t.LineStyle;
s.Lw=t.LineWidth
s.M=t.Marker;
app.myPlot=s;
Just seems more clunky! Is there a reason why when I delete a plot of a multiplot graph and assign it to a global (public) property it doesn’t retain it.
ax=app.UIAxes; % My plot is on a UIAxes
t = ax.Children(1) % Get the last plot
app.myPlot=t % myPlot is a Global property
delete(t);
app.myPlot
app.myPlot shows:
ans =
handle to deleted Line
so instead I have to access all the properties of the line individually and assign to a struct.
s = struct;
s.X=t.XData;
s.Y=t.YData;
s.Cl=t.Color;
s.DN=t.DisplayName;
s.Ls=t.LineStyle;
s.Lw=t.LineWidth
s.M=t.Marker;
app.myPlot=s;
Just seems more clunky! plot, struct, property MATLAB Answers — New Questions
ive been trying to generate vhdl code using hdl code genrator on matlab 2020a but its showing error regarding the use of fi in my code , can someone fix it for me ? thankyou
this is my code : MATLAB FUNCTION
function [received_signal_real, received_signal_imag, error_rate] = hdl_compatible_code(n, channel_type)
% Constants
aircraft_altitude = fi(45000,1,32,10); % Altitude of the aircraft in feet
distance_km = fi(350,1,32,10); % Distance between aircraft and base station in kilometers
speed_of_light = fi(3e8,1,32,10); % Speed of light in m/s
n = 100;
% Pathloss model – Free Space Path Loss (FSPL)
fc = fi(1.5e9,1,32,10); % Carrier frequency in Hz (1.5GHz)
lambda = speed_of_light / fc; % Wavelength
path_loss_dB = 20 *log10_approx(fi(4 * pi * distance_km * 1e3 / lambda,1,32,10)); % Path loss in dB
% AWGN
SNR_dB_awgn = fi(10,1,32,10); % Signal to noise ratio in dB for AWGN channel
SNR_awgn = fi(fi(10)^(SNR_dB_awgn / 10),1,32,10); % Convert SNR to linear scale for AWGN channel
tx_power_awgn = fi(1,1,32,10); % Initial guess for transmit power for AWGN channel
noise_power_awgn = tx_power_awgn / SNR_awgn; % Noise power based on SNR for AWGN channel
% Doppler spread
aircraft_speed = fi(660,1,32,10); % Average aircraft speed in meters per second
fd_max = fi(((aircraft_speed * fi(0.51444,1,32,10) * fc) / speed_of_light),1,32,10); % Doppler frequency shift
% Modulation using lookup table
% Precompute constellation points (Scalar approach)
constellation_points = [fi(1,1,16,10), fi(1i,1,16,10),fi(-1,1,16,10), fi(-1i,1,16,10)];
% Modulation
data = lfsr_data(n); % Generate random bits
qpsk_symbols = constellation_points(data + 1); % QPSK modulation: symbol mapping to complex constellation points
% Generate doppler effect using lookup table
two_pi_fd_max = fi(2*pi*fd_max,1,128,10);
t = fi((0:n-1) /n,1,32,10); % Time vector
doppler_shift = cos_lookup(fi((2 * pi * fd_max * t),1,32,10));
% Channel simulation
if channel_type == 0 % AWGN channel
noise_real = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for real part
noise_imag = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for imaginary part
received_signal = (qpsk_symbols .* doppler_shift) + noise_real + fi(1i,1,16,10) * noise_imag; % Received signal in AWGN channel
elseif channel_type == 1 % Rician fading channel
% Rician channel parameters
K =fi( 5,1,32,10); % Rician factor
LOS_power_dB =fi( -10,1,32,10); % Line of sight power in dB
LOS_power_linear = pow2(fi(10,1,32,10),LOS_power_dB/10); % Convert LOS power to linear scale
K_linear = pow2(fi(10,1,32,10),K/10); % Convert Rician factor to linear scale
% Generate fading coefficients
LOS = sqrt(LOS_power_linear / (2 * (1 + 1 / K_linear))) * ones(1, n,’like’,fi(0,1,16,10)); % LOS component
scattering = sqrt(LOS_power_linear / (2 * (1 + K_linear))) * (lfsr_noise(n) +fi( 1i,1,16,10) * lfsr_noise(n)); % Scattering component
fading_coefficient = LOS + scattering; % Rician fading coefficients
received_signal = (qpsk_symbols .* fading_coefficient .* doppler_shift); % Apply fading to the transmitted signal
% Add noise to the received signal in Rician channel
noise_real_rician = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for real part
noise_imag_rician = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for imaginary part
received_signal = fi((received_signal + noise_real_rician + fi(1i,1,16,10) * noise_imag_rician),1,49,20); % Add noise
else
error(‘hdl_compatible_code:UnknownChannelType’, ‘Unknown channel type’);
end
% QPSK demodulation
% Hard decision demodulation
% Decision regions
decision_regions = [fi(-1-1i,1,16,10), fi(-1+1i,1,16,10), fi(1-1i,1,16,10), fi(1+1i,1,16,10)];
% Initialize demodulated symbols
demodulated_symbols = zeros(1, n,’uint8′);
for i = 1:n
%Seperate real and imaginary part of received_signal and
%decision_regions
received_real = real(received_signal(i));
received_imag = imag(received_signal(i));
decision_real = real(decision_regions);
decision_imag = imag(decision_regions);
%Compute the absolute difference for real and imaginary parts
%seperately
diff_real = received_real – decision_real;
diff_imag = received_imag – decision_imag;
%Compute the absolute value using Pythagorean theorem
abs_diff = sqrt(diff_real.^2+diff_imag.^2);
%Find the index corresponding to the minimum absoloute difference
[~,~]=min(abs_diff);
end
% Calculate the error rate
errors = sum(bitxor(fi((data),0,8,0), fi((demodulated_symbols),0,8,0))); % Count errors
% Extract real and imaginary parts
received_signal_real = real(received_signal);
received_signal_imag = imag(received_signal);
error_rate = errors / n; % Calculate error rate
end
function noise = lfsr_noise(n)
% Linear feedback shift register (LFSR) for pseudo-random number generation
% Initialize LFSR state
lfsr_state = uint32(1);
noise = zeros(1, n,’like’,fi(0,1,16,10));
for i = 1:n
% Generate pseudo-random bit using xor feedback
new_bit = bitxor(bitget(lfsr_state, 1), bitget(lfsr_state, 3));
lfsr_state = bitshift(lfsr_state, -1);
lfsr_state = bitset(lfsr_state, 32, new_bit);
noise(i) = fi(lfsr_state,0,32,0) / fi(intmax(‘uint32’),1,16,10); % Scale [0,1]
end
end
function data = lfsr_data(n)
% Linear feedback shift register (LFSR) for generating random data
% Initialize LFSR state
lfsr_state = uint32(1);
data = zeros(1, n, ‘uint8’);
for i = 1:n
% Generate pseudo-random bit using xor feedback
new_bit = bitxor(bitget(lfsr_state, 1), bitget(lfsr_state, 3));
lfsr_state = bitshift(lfsr_state, -1);
lfsr_state = bitset(lfsr_state, 32, new_bit);
data(i) = fi((mod(lfsr_state,4)),0,2,0); % Generate random values in the range [0, 3]
end
end
function cos_value = cos_lookup(angle)
% Precompute cosine values for a range of angles
angles =fi( (0:0.01:2*pi),1,32,10); % Define the range of angles (adjust the step size as needed)
cos_values = fi((cos(angles)),1,16,10); % Compute cosine values
% Interpolate the cosine value for the given angle
cos_value = fi((zeros(size(angle))),1,16,10);
for i = 1:numel(angle)
[~,idx]=min(abs(angles-angle(i)));
cos_value(i)=cos_values(idx);
end
end
function y = log2_approx(x)
%Fixed-point logarithm base 2 approximation
y = fi(0,1,32,10);%Initialize y as fixed-point format
one = fi(1,1,32,10);%Define one in the same fixed-point format
sqrt2 = fi((sqrt(2)),1,32,10);%Define sqrt(2) in the same fixed -point format
for i = 1:32 %Limiting the iterations to 32 to avoid infinite loop
if x > one
x = bitsra(x,1);
y = fi((y + one),1,32,10);
end
end
frac = fi (0.5,1,32,10);
for i = 1:32
if x < one
x = bitsll(x,1);
y =fi( (y – one),1,32,10);
end
end
frac = fi (0.5,1,32,10);
two_pow_neg32 = fi((2^-32),1,32,10);
for i = 1:32
if x >= sqrt2
x = divide(x,sqrt2);
y =fi((y + frac) , 1,32,10);
end
frac = divide(frac,2);
end
end
function y = log10_approx(x)
%Approximate log10 function using a fixed-point approach
y = log2_approx(x)/ log2_approx(fi(10,1,32,10));
end
function result = divide(a,b)
%custom fixed-point division function
result = a/b;
result = fi(result,a.Signed,a.WordLength,a.FractionLength);
endthis is my code : MATLAB FUNCTION
function [received_signal_real, received_signal_imag, error_rate] = hdl_compatible_code(n, channel_type)
% Constants
aircraft_altitude = fi(45000,1,32,10); % Altitude of the aircraft in feet
distance_km = fi(350,1,32,10); % Distance between aircraft and base station in kilometers
speed_of_light = fi(3e8,1,32,10); % Speed of light in m/s
n = 100;
% Pathloss model – Free Space Path Loss (FSPL)
fc = fi(1.5e9,1,32,10); % Carrier frequency in Hz (1.5GHz)
lambda = speed_of_light / fc; % Wavelength
path_loss_dB = 20 *log10_approx(fi(4 * pi * distance_km * 1e3 / lambda,1,32,10)); % Path loss in dB
% AWGN
SNR_dB_awgn = fi(10,1,32,10); % Signal to noise ratio in dB for AWGN channel
SNR_awgn = fi(fi(10)^(SNR_dB_awgn / 10),1,32,10); % Convert SNR to linear scale for AWGN channel
tx_power_awgn = fi(1,1,32,10); % Initial guess for transmit power for AWGN channel
noise_power_awgn = tx_power_awgn / SNR_awgn; % Noise power based on SNR for AWGN channel
% Doppler spread
aircraft_speed = fi(660,1,32,10); % Average aircraft speed in meters per second
fd_max = fi(((aircraft_speed * fi(0.51444,1,32,10) * fc) / speed_of_light),1,32,10); % Doppler frequency shift
% Modulation using lookup table
% Precompute constellation points (Scalar approach)
constellation_points = [fi(1,1,16,10), fi(1i,1,16,10),fi(-1,1,16,10), fi(-1i,1,16,10)];
% Modulation
data = lfsr_data(n); % Generate random bits
qpsk_symbols = constellation_points(data + 1); % QPSK modulation: symbol mapping to complex constellation points
% Generate doppler effect using lookup table
two_pi_fd_max = fi(2*pi*fd_max,1,128,10);
t = fi((0:n-1) /n,1,32,10); % Time vector
doppler_shift = cos_lookup(fi((2 * pi * fd_max * t),1,32,10));
% Channel simulation
if channel_type == 0 % AWGN channel
noise_real = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for real part
noise_imag = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for imaginary part
received_signal = (qpsk_symbols .* doppler_shift) + noise_real + fi(1i,1,16,10) * noise_imag; % Received signal in AWGN channel
elseif channel_type == 1 % Rician fading channel
% Rician channel parameters
K =fi( 5,1,32,10); % Rician factor
LOS_power_dB =fi( -10,1,32,10); % Line of sight power in dB
LOS_power_linear = pow2(fi(10,1,32,10),LOS_power_dB/10); % Convert LOS power to linear scale
K_linear = pow2(fi(10,1,32,10),K/10); % Convert Rician factor to linear scale
% Generate fading coefficients
LOS = sqrt(LOS_power_linear / (2 * (1 + 1 / K_linear))) * ones(1, n,’like’,fi(0,1,16,10)); % LOS component
scattering = sqrt(LOS_power_linear / (2 * (1 + K_linear))) * (lfsr_noise(n) +fi( 1i,1,16,10) * lfsr_noise(n)); % Scattering component
fading_coefficient = LOS + scattering; % Rician fading coefficients
received_signal = (qpsk_symbols .* fading_coefficient .* doppler_shift); % Apply fading to the transmitted signal
% Add noise to the received signal in Rician channel
noise_real_rician = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for real part
noise_imag_rician = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for imaginary part
received_signal = fi((received_signal + noise_real_rician + fi(1i,1,16,10) * noise_imag_rician),1,49,20); % Add noise
else
error(‘hdl_compatible_code:UnknownChannelType’, ‘Unknown channel type’);
end
% QPSK demodulation
% Hard decision demodulation
% Decision regions
decision_regions = [fi(-1-1i,1,16,10), fi(-1+1i,1,16,10), fi(1-1i,1,16,10), fi(1+1i,1,16,10)];
% Initialize demodulated symbols
demodulated_symbols = zeros(1, n,’uint8′);
for i = 1:n
%Seperate real and imaginary part of received_signal and
%decision_regions
received_real = real(received_signal(i));
received_imag = imag(received_signal(i));
decision_real = real(decision_regions);
decision_imag = imag(decision_regions);
%Compute the absolute difference for real and imaginary parts
%seperately
diff_real = received_real – decision_real;
diff_imag = received_imag – decision_imag;
%Compute the absolute value using Pythagorean theorem
abs_diff = sqrt(diff_real.^2+diff_imag.^2);
%Find the index corresponding to the minimum absoloute difference
[~,~]=min(abs_diff);
end
% Calculate the error rate
errors = sum(bitxor(fi((data),0,8,0), fi((demodulated_symbols),0,8,0))); % Count errors
% Extract real and imaginary parts
received_signal_real = real(received_signal);
received_signal_imag = imag(received_signal);
error_rate = errors / n; % Calculate error rate
end
function noise = lfsr_noise(n)
% Linear feedback shift register (LFSR) for pseudo-random number generation
% Initialize LFSR state
lfsr_state = uint32(1);
noise = zeros(1, n,’like’,fi(0,1,16,10));
for i = 1:n
% Generate pseudo-random bit using xor feedback
new_bit = bitxor(bitget(lfsr_state, 1), bitget(lfsr_state, 3));
lfsr_state = bitshift(lfsr_state, -1);
lfsr_state = bitset(lfsr_state, 32, new_bit);
noise(i) = fi(lfsr_state,0,32,0) / fi(intmax(‘uint32’),1,16,10); % Scale [0,1]
end
end
function data = lfsr_data(n)
% Linear feedback shift register (LFSR) for generating random data
% Initialize LFSR state
lfsr_state = uint32(1);
data = zeros(1, n, ‘uint8’);
for i = 1:n
% Generate pseudo-random bit using xor feedback
new_bit = bitxor(bitget(lfsr_state, 1), bitget(lfsr_state, 3));
lfsr_state = bitshift(lfsr_state, -1);
lfsr_state = bitset(lfsr_state, 32, new_bit);
data(i) = fi((mod(lfsr_state,4)),0,2,0); % Generate random values in the range [0, 3]
end
end
function cos_value = cos_lookup(angle)
% Precompute cosine values for a range of angles
angles =fi( (0:0.01:2*pi),1,32,10); % Define the range of angles (adjust the step size as needed)
cos_values = fi((cos(angles)),1,16,10); % Compute cosine values
% Interpolate the cosine value for the given angle
cos_value = fi((zeros(size(angle))),1,16,10);
for i = 1:numel(angle)
[~,idx]=min(abs(angles-angle(i)));
cos_value(i)=cos_values(idx);
end
end
function y = log2_approx(x)
%Fixed-point logarithm base 2 approximation
y = fi(0,1,32,10);%Initialize y as fixed-point format
one = fi(1,1,32,10);%Define one in the same fixed-point format
sqrt2 = fi((sqrt(2)),1,32,10);%Define sqrt(2) in the same fixed -point format
for i = 1:32 %Limiting the iterations to 32 to avoid infinite loop
if x > one
x = bitsra(x,1);
y = fi((y + one),1,32,10);
end
end
frac = fi (0.5,1,32,10);
for i = 1:32
if x < one
x = bitsll(x,1);
y =fi( (y – one),1,32,10);
end
end
frac = fi (0.5,1,32,10);
two_pow_neg32 = fi((2^-32),1,32,10);
for i = 1:32
if x >= sqrt2
x = divide(x,sqrt2);
y =fi((y + frac) , 1,32,10);
end
frac = divide(frac,2);
end
end
function y = log10_approx(x)
%Approximate log10 function using a fixed-point approach
y = log2_approx(x)/ log2_approx(fi(10,1,32,10));
end
function result = divide(a,b)
%custom fixed-point division function
result = a/b;
result = fi(result,a.Signed,a.WordLength,a.FractionLength);
end this is my code : MATLAB FUNCTION
function [received_signal_real, received_signal_imag, error_rate] = hdl_compatible_code(n, channel_type)
% Constants
aircraft_altitude = fi(45000,1,32,10); % Altitude of the aircraft in feet
distance_km = fi(350,1,32,10); % Distance between aircraft and base station in kilometers
speed_of_light = fi(3e8,1,32,10); % Speed of light in m/s
n = 100;
% Pathloss model – Free Space Path Loss (FSPL)
fc = fi(1.5e9,1,32,10); % Carrier frequency in Hz (1.5GHz)
lambda = speed_of_light / fc; % Wavelength
path_loss_dB = 20 *log10_approx(fi(4 * pi * distance_km * 1e3 / lambda,1,32,10)); % Path loss in dB
% AWGN
SNR_dB_awgn = fi(10,1,32,10); % Signal to noise ratio in dB for AWGN channel
SNR_awgn = fi(fi(10)^(SNR_dB_awgn / 10),1,32,10); % Convert SNR to linear scale for AWGN channel
tx_power_awgn = fi(1,1,32,10); % Initial guess for transmit power for AWGN channel
noise_power_awgn = tx_power_awgn / SNR_awgn; % Noise power based on SNR for AWGN channel
% Doppler spread
aircraft_speed = fi(660,1,32,10); % Average aircraft speed in meters per second
fd_max = fi(((aircraft_speed * fi(0.51444,1,32,10) * fc) / speed_of_light),1,32,10); % Doppler frequency shift
% Modulation using lookup table
% Precompute constellation points (Scalar approach)
constellation_points = [fi(1,1,16,10), fi(1i,1,16,10),fi(-1,1,16,10), fi(-1i,1,16,10)];
% Modulation
data = lfsr_data(n); % Generate random bits
qpsk_symbols = constellation_points(data + 1); % QPSK modulation: symbol mapping to complex constellation points
% Generate doppler effect using lookup table
two_pi_fd_max = fi(2*pi*fd_max,1,128,10);
t = fi((0:n-1) /n,1,32,10); % Time vector
doppler_shift = cos_lookup(fi((2 * pi * fd_max * t),1,32,10));
% Channel simulation
if channel_type == 0 % AWGN channel
noise_real = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for real part
noise_imag = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for imaginary part
received_signal = (qpsk_symbols .* doppler_shift) + noise_real + fi(1i,1,16,10) * noise_imag; % Received signal in AWGN channel
elseif channel_type == 1 % Rician fading channel
% Rician channel parameters
K =fi( 5,1,32,10); % Rician factor
LOS_power_dB =fi( -10,1,32,10); % Line of sight power in dB
LOS_power_linear = pow2(fi(10,1,32,10),LOS_power_dB/10); % Convert LOS power to linear scale
K_linear = pow2(fi(10,1,32,10),K/10); % Convert Rician factor to linear scale
% Generate fading coefficients
LOS = sqrt(LOS_power_linear / (2 * (1 + 1 / K_linear))) * ones(1, n,’like’,fi(0,1,16,10)); % LOS component
scattering = sqrt(LOS_power_linear / (2 * (1 + K_linear))) * (lfsr_noise(n) +fi( 1i,1,16,10) * lfsr_noise(n)); % Scattering component
fading_coefficient = LOS + scattering; % Rician fading coefficients
received_signal = (qpsk_symbols .* fading_coefficient .* doppler_shift); % Apply fading to the transmitted signal
% Add noise to the received signal in Rician channel
noise_real_rician = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for real part
noise_imag_rician = sqrt(noise_power_awgn / 2) * lfsr_noise(n); % Generate noise for imaginary part
received_signal = fi((received_signal + noise_real_rician + fi(1i,1,16,10) * noise_imag_rician),1,49,20); % Add noise
else
error(‘hdl_compatible_code:UnknownChannelType’, ‘Unknown channel type’);
end
% QPSK demodulation
% Hard decision demodulation
% Decision regions
decision_regions = [fi(-1-1i,1,16,10), fi(-1+1i,1,16,10), fi(1-1i,1,16,10), fi(1+1i,1,16,10)];
% Initialize demodulated symbols
demodulated_symbols = zeros(1, n,’uint8′);
for i = 1:n
%Seperate real and imaginary part of received_signal and
%decision_regions
received_real = real(received_signal(i));
received_imag = imag(received_signal(i));
decision_real = real(decision_regions);
decision_imag = imag(decision_regions);
%Compute the absolute difference for real and imaginary parts
%seperately
diff_real = received_real – decision_real;
diff_imag = received_imag – decision_imag;
%Compute the absolute value using Pythagorean theorem
abs_diff = sqrt(diff_real.^2+diff_imag.^2);
%Find the index corresponding to the minimum absoloute difference
[~,~]=min(abs_diff);
end
% Calculate the error rate
errors = sum(bitxor(fi((data),0,8,0), fi((demodulated_symbols),0,8,0))); % Count errors
% Extract real and imaginary parts
received_signal_real = real(received_signal);
received_signal_imag = imag(received_signal);
error_rate = errors / n; % Calculate error rate
end
function noise = lfsr_noise(n)
% Linear feedback shift register (LFSR) for pseudo-random number generation
% Initialize LFSR state
lfsr_state = uint32(1);
noise = zeros(1, n,’like’,fi(0,1,16,10));
for i = 1:n
% Generate pseudo-random bit using xor feedback
new_bit = bitxor(bitget(lfsr_state, 1), bitget(lfsr_state, 3));
lfsr_state = bitshift(lfsr_state, -1);
lfsr_state = bitset(lfsr_state, 32, new_bit);
noise(i) = fi(lfsr_state,0,32,0) / fi(intmax(‘uint32’),1,16,10); % Scale [0,1]
end
end
function data = lfsr_data(n)
% Linear feedback shift register (LFSR) for generating random data
% Initialize LFSR state
lfsr_state = uint32(1);
data = zeros(1, n, ‘uint8’);
for i = 1:n
% Generate pseudo-random bit using xor feedback
new_bit = bitxor(bitget(lfsr_state, 1), bitget(lfsr_state, 3));
lfsr_state = bitshift(lfsr_state, -1);
lfsr_state = bitset(lfsr_state, 32, new_bit);
data(i) = fi((mod(lfsr_state,4)),0,2,0); % Generate random values in the range [0, 3]
end
end
function cos_value = cos_lookup(angle)
% Precompute cosine values for a range of angles
angles =fi( (0:0.01:2*pi),1,32,10); % Define the range of angles (adjust the step size as needed)
cos_values = fi((cos(angles)),1,16,10); % Compute cosine values
% Interpolate the cosine value for the given angle
cos_value = fi((zeros(size(angle))),1,16,10);
for i = 1:numel(angle)
[~,idx]=min(abs(angles-angle(i)));
cos_value(i)=cos_values(idx);
end
end
function y = log2_approx(x)
%Fixed-point logarithm base 2 approximation
y = fi(0,1,32,10);%Initialize y as fixed-point format
one = fi(1,1,32,10);%Define one in the same fixed-point format
sqrt2 = fi((sqrt(2)),1,32,10);%Define sqrt(2) in the same fixed -point format
for i = 1:32 %Limiting the iterations to 32 to avoid infinite loop
if x > one
x = bitsra(x,1);
y = fi((y + one),1,32,10);
end
end
frac = fi (0.5,1,32,10);
for i = 1:32
if x < one
x = bitsll(x,1);
y =fi( (y – one),1,32,10);
end
end
frac = fi (0.5,1,32,10);
two_pow_neg32 = fi((2^-32),1,32,10);
for i = 1:32
if x >= sqrt2
x = divide(x,sqrt2);
y =fi((y + frac) , 1,32,10);
end
frac = divide(frac,2);
end
end
function y = log10_approx(x)
%Approximate log10 function using a fixed-point approach
y = log2_approx(x)/ log2_approx(fi(10,1,32,10));
end
function result = divide(a,b)
%custom fixed-point division function
result = a/b;
result = fi(result,a.Signed,a.WordLength,a.FractionLength);
end hdl coder compatible code MATLAB Answers — New Questions
Requirements manager: How to maintain bidirectional requirements
Hi all.
After that I’ve created the requirements structure in exel file and i imported the requirements from the exel file into the Requirements manager, if I modify the requirements in the Requirements manager there is the possibility to maintain the bidirectionality of the change automatically with some mechanism or with an export function in the source exel file.
Thank you in advance.Hi all.
After that I’ve created the requirements structure in exel file and i imported the requirements from the exel file into the Requirements manager, if I modify the requirements in the Requirements manager there is the possibility to maintain the bidirectionality of the change automatically with some mechanism or with an export function in the source exel file.
Thank you in advance. Hi all.
After that I’ve created the requirements structure in exel file and i imported the requirements from the exel file into the Requirements manager, if I modify the requirements in the Requirements manager there is the possibility to maintain the bidirectionality of the change automatically with some mechanism or with an export function in the source exel file.
Thank you in advance. requirements manager MATLAB Answers — New Questions
(help) How to add your own Power Automate flows in “apps” in group chat
Hi,
I have created multiple power automate flows with various purposes that are active in this group chat on TEAMS, but I would like to know if there is a way to add my custom flows here in this “apps” window to run them from there, or edit the default list.
I would also like to know if there is a way to anchor the workflows icon here, something like this:
Hi,I have created multiple power automate flows with various purposes that are active in this group chat on TEAMS, but I would like to know if there is a way to add my custom flows here in this “apps” window to run them from there, or edit the default list. I would also like to know if there is a way to anchor the workflows icon here, something like this: Read More
Per-User MFA State Added to Tenant Passwords and MFA Report
A Microsoft Graph update makes per-user MFA state available for user accounts. Being able to access the data means that we can include it in the User Passwords and Authentication report. You can now see if accounts are disabled, enabled, or enforced for per-user MFA along with all the other information captured about passwqrd changes, MFA authentication methods, and so on.
https://office365itpros.com/2024/06/14/per-user-mfa-state/
A Microsoft Graph update makes per-user MFA state available for user accounts. Being able to access the data means that we can include it in the User Passwords and Authentication report. You can now see if accounts are disabled, enabled, or enforced for per-user MFA along with all the other information captured about passwqrd changes, MFA authentication methods, and so on.
https://office365itpros.com/2024/06/14/per-user-mfa-state/ Read More
Free Trials & Private Offers
Hello!
I am unsure if this is the right place to ask this, so feel free to direct me elsewhere if not!
We offer Customers the ability to trial our solution directly with us for free for 14 days before purchasing, when starting our Marketplace journey we wanted to keep our listing aligned with what we offer directly to Customers on our Website. When initially listing on the Marketplace, we created a ‘free trial’ through the ‘Get It Now’ button, but what we quickly came to realise is that the free trial is also extended for Private Offers too if you have it activated on your listing.
This has caused issues because we do have Customers who are ready to buy now, buying through Private Offer and were being given the months free trial as well, essentially giving them the option to cancel in that months window, however if we were to have transacted directly with the Customer they would have been a paying Customer as soon as they had signed with us.
We have now turned off our free trial on our Marketplace listing because of this, but I have noticed a decline in activity on our listing as a result of this.
I just wanted to reach out and see if there were any other ISV’s facing a similar problem and if anyone knew if there was a way to get around it and essentially turn off the free trial for Private Offers? If there isn’t today, is anyone aware of any developments in the near future to rectify this?
Hello! I am unsure if this is the right place to ask this, so feel free to direct me elsewhere if not! We offer Customers the ability to trial our solution directly with us for free for 14 days before purchasing, when starting our Marketplace journey we wanted to keep our listing aligned with what we offer directly to Customers on our Website. When initially listing on the Marketplace, we created a ‘free trial’ through the ‘Get It Now’ button, but what we quickly came to realise is that the free trial is also extended for Private Offers too if you have it activated on your listing. This has caused issues because we do have Customers who are ready to buy now, buying through Private Offer and were being given the months free trial as well, essentially giving them the option to cancel in that months window, however if we were to have transacted directly with the Customer they would have been a paying Customer as soon as they had signed with us. We have now turned off our free trial on our Marketplace listing because of this, but I have noticed a decline in activity on our listing as a result of this. I just wanted to reach out and see if there were any other ISV’s facing a similar problem and if anyone knew if there was a way to get around it and essentially turn off the free trial for Private Offers? If there isn’t today, is anyone aware of any developments in the near future to rectify this? Read More
Meet Microsoft at FinOpsX 2024 in San Diego
For the second time, Microsoft will be a platinum sponsor of the FinOps X conference, taking place in
San Diego, CA, from June 19 – 22. This year, you can visit our dedicated Microsoft Event Hub website to learn more about our activities, connect with our experts, and register for our exclusive sessions.
This includes:
Our exclusive evening event, where you can network with industry leaders over amazing food, and celebrate the kickoff of FinOpsX. Spaces are limited.
Customer insight sessions with in-depth discussions and feedback. Register for one of the 45min time slots.
Microsoft speakers in the following sessions:
Unveiling Chevron’s transformation
Navigating new intersections and trends
Bring your data into the AI era – democratize FinOps with Microsoft
Profiles of Microsoft experts who will be attending, so you can connect with them on LinkedIn.
Learn more and register now for Microsoft sessions: https://finops.event-rsvp.net/
For event details and attendee registration, visit https://x.finops.org/us/
Microsoft Tech Community – Latest Blogs –Read More
Hi, I want to plot the eigenvalue of the Orr-Sommerfeld operator at different instants in time. How can I do that?
% p40.m – eigenvalues of Orr-Sommerfeld operator (compare p38.m)
R = 5772; clf, [ay,ax] = meshgrid([.56 .04],[.1 .5]);
for N = 40:20:100
% 2nd- and 4th-order differentiation matrices:
[D,x] = cheb(N); D2 = D^2; D2 = D2(2:N,2:N);
S = diag([0; 1 ./(1-x(2:N).^2); 0]);
D4 = (diag(1-x.^2)*D^4 – 8*diag(x)*D^3 – 12*D^2)*S;
D4 = D4(2:N,2:N);
% Orr-Sommerfeld operators A,B and generalized eigenvalues:
I = eye(N-1);
A = (D4-2*D2+I)/R – 2i*I – 1i*diag(1-x(2:N).^2)*(D2-I);
B = D2-I;
ee = eig(A,B);
i = N/20-1; subplot(‘position’,[ax(i) ay(i) .38 .38])
plot(ee,’.’,’markersize’,12)
grid on, axis([-.8 .2 -1 0]), axis square
title([‘N = ‘ int2str(N) ‘ lambda_{max} = ‘ …
num2str(max(real(ee)),’%16.12f’)]), drawnow
end
with the help of eigenshuffle function.
function [Vseq,Dseq] = eigenshuffle(Asequence,Bsequence)
% eigenshuffle: Consistent sorting for an eigenvalue/vector sequence
% [Vseq,Dseq] = eigenshuffle(Asequence)
% [Vseq,Dseq] = eigenshuffle(Asequence,Bsequence)
%
% Includes munkres.m (by gracious permission from Yi Cao)
% to choose the appropriate permutation. This greatly
% enhances the speed of eigenshuffle over my previous
% release.
%
% http://www.mathworks.com/matlabcentral/fileexchange/20652
%
% Arguments: (input)
% Asequence – an array of eigenvalue problems. If
% Asequence is a 3-d numeric array, then each
% plane of Asequence must contain a square
% matrix that will be used to call eig.
%
% Eig will be called on each of these matrices
% to produce a series of eigenvalues/vectors,
% one such set for each eigenvalue problem.
%
% Bsequence – (OPTIONAL) This allows the user to solve
% generalized eigenvalue problems of the form
%
% A*X = lambda*B*x
%
% Bsequence must be the same shape and size as
% Asequence.
%
% ONLY supply Bsequence when generalized eigenvalues
% will be computed.
%
% Arguments: (Output)
% Vseq – a 3-d array (pxpxn) of eigenvectors. Each
% plane of the array will be sorted into a
% consistent order with the other eigenvalue
% problems. The ordering chosen will be one
% that maximizes the energy of the consecutive
% eigensystems relative to each other.
%
% Dseq – pxn array of eigen values, sorted in order
% to be consistent with each other and with the
% eigenvectors in Vseq.
%
% Example:
% Efun = @(t) [1 2*t+1 t^2 t^3;2*t+1 2-t t^2 1-t^3; …
% t^2 t^2 3-2*t t^2;t^3 1-t^3 t^2 4-3*t];
%
% Aseq = zeros(4,4,21);
% for i = 1:21
% Aseq(:,:,i) = Efun((i-11)/10);
% end
% [Vseq,Dseq] = eigenshuffle(Aseq);
%
% To see that eigenshuffle has done its work correctly,
% look at the eigenvalues in sequence, after the shuffle.
%
% t = (-1:.1:1)’;
% [t,Dseq’]
% ans =
% -1 8.4535 5 2.3447 0.20181
% -0.9 7.8121 4.7687 2.3728 0.44644
% -0.8 7.2481 4.56 2.3413 0.65054
% -0.7 6.7524 4.3648 2.2709 0.8118
% -0.6 6.3156 4.1751 2.1857 0.92364
% -0.5 5.9283 3.9855 2.1118 0.97445
% -0.4 5.5816 3.7931 2.0727 0.95254
% -0.3 5.2676 3.5976 2.0768 0.858
% -0.2 4.9791 3.3995 2.1156 0.70581
% -0.1 4.7109 3.2 2.1742 0.51494
% 0 4.4605 3 2.2391 0.30037
% 0.1 4.2302 2.8 2.2971 0.072689
% 0.2 4.0303 2.5997 2.3303 -0.16034
% 0.3 3.8817 2.4047 2.3064 -0.39272
% 0.4 3.8108 2.1464 2.2628 -0.62001
% 0.5 3.8302 1.8986 2.1111 -0.83992
% 0.6 3.9301 1.5937 1.9298 -1.0537
% 0.7 4.0927 1.2308 1.745 -1.2685
% 0.8 4.3042 0.82515 1.5729 -1.5023
% 0.9 4.5572 0.40389 1.4272 -1.7883
% 1 4.8482 -8.0012e-16 1.3273 -2.1755
%
% Here, the columns are the shuffled eigenvalues.
% See that the second eigenvalue goes to zero, but
% the third eigenvalue remains positive. We can plot
% eigenvalues and see that they have crossed, near
% t = 0.35 in Efun.
%
% plot(-1:.1:1,Dseq’)
%
% For a better appreciation of what eigenshuffle did,
% compare the result of eig directly on Efun(.3) and
% Efun(.4). Thus:
%
% [V3,D3] = eig(Efun(.3))
% V3 =
% -0.74139 0.53464 -0.23551 0.3302
% 0.64781 0.4706 -0.16256 0.57659
% 0.0086542 -0.44236 -0.89119 0.10006
% -0.17496 -0.54498 0.35197 0.74061
%
% D3 =
% -0.39272 0 0 0
% 0 2.3064 0 0
% 0 0 2.4047 0
% 0 0 0 3.8817
%
% [V4,D4] = eig(Efun(.4))
% V4 =
% -0.73026 0.19752 0.49743 0.42459
% 0.66202 0.21373 0.35297 0.62567
% 0.013412 -0.95225 0.25513 0.16717
% -0.16815 -0.092308 -0.75026 0.63271
%
% D4 =
% -0.62001 0 0 0
% 0 2.1464 0 0
% 0 0 2.2628 0
% 0 0 0 3.8108
%
% With no sort or shuffle applied, look at V3(:,3). See
% that it is really closest to V4(:,2), but with a sign
% flip. Since the signs on the eigenvectors are arbitrary,
% the sign is changed, and the most consistent sequence
% will be chosen. By way of comparison, see how the
% eigenvectors in Vseq have been shuffled, the signs
% swapped appropriately.
%
% Vseq(:,:,14)
% ans =
% 0.3302 0.23551 -0.53464 0.74139
% 0.57659 0.16256 -0.4706 -0.64781
% 0.10006 0.89119 0.44236 -0.0086542
% 0.74061 -0.35197 0.54498 0.17496
%
% Vseq(:,:,15)
% ans =
% 0.42459 -0.19752 -0.49743 0.73026
% 0.62567 -0.21373 -0.35297 -0.66202
% 0.16717 0.95225 -0.25513 -0.013412
% 0.63271 0.092308 0.75026 0.16815
%
% See also: eig
%
% Author: John D’Errico
% e-mail: woodchips@rochester.rr.com
% Release: 3.0
% Release date: 2/18/09
% Is Asequence a 3-d array?
Asize = size(Asequence);
if (Asize(1)~=Asize(2))
error(‘Asequence must be a (pxpxn) array of eigen-problems, each of size pxp’)
end
% was Bsequence supplied
genflag = false;
if (nargin > 1) & ~isempty(Bsequence)
genflag = true;
if ~isequal(size(Asequence),size(Bsequence))
error(‘If Bsequence is provided to compute generalized eigenvalues, then Asequence and Bsequence must be the same size arrays’)
end
end
p = Asize(1);
if length(Asize)<3
n = 1;
else
n = Asize(3);
end
% the initial eigenvalues/vectors in nominal order
Vseq = zeros(p,p,n);
Dseq = zeros(p,n);
for i = 1:n
if genflag
[V,D] = eig(Asequence(:,:,i),Bsequence(:,:,i));
else
[V,D] = eig(Asequence(:,:,i));
end
D = diag(D);
% initial ordering is purely in decreasing order.
% If any are complex, the sort is in terms of the
% real part.
[junk,tags] = sort(real(D),1,’descend’);
Dseq(:,i) = D(tags);
Vseq(:,:,i) = V(:,tags);
end
% was there only one eigenvalue problem?
if n < 2
% we can quit now, having sorted the eigenvalues
% as best as we could.
return
end
% now, treat each eigenproblem in sequence (after
% the first one.)
for i = 2:n
% compute distance between systems
V1 = Vseq(:,:,i-1);
V2 = Vseq(:,:,i);
D1 = Dseq(:,i-1);
D2 = Dseq(:,i);
dist = (1-abs(V1’*V2)).*sqrt( …
distancematrix(real(D1),real(D2)).^2+ …
distancematrix(imag(D1),imag(D2)).^2);
% Is there a best permutation? use munkres.
% much faster than my own mintrace, munkres
% is used by gracious permission from Yi Cao.
reorder = munkres(dist);
Vseq(:,:,i) = Vseq(:,reorder,i);
Dseq(:,i) = Dseq(reorder,i);
% also ensure the signs of each eigenvector pair
% were consistent if possible
S = squeeze(real(sum(Vseq(:,:,i-1).*Vseq(:,:,i),1))) < 0;
Vseq(:,S,i) = -Vseq(:,S,i);
end
% =================
% end mainline
% =================
% begin subfunctions
% =================
function d = distancematrix(vec1,vec2)
% simple interpoint distance matrix
[vec1,vec2] = ndgrid(vec1,vec2);
d = abs(vec1 – vec2);
function [assignment,cost] = munkres(costMat)
% MUNKRES Munkres (Hungarian) Algorithm for Linear Assignment Problem.
%
% [ASSIGN,COST] = munkres(COSTMAT) returns the optimal column indices,
% ASSIGN assigned to each row and the minimum COST based on the assignment
% problem represented by the COSTMAT, where the (i,j)th element represents the cost to assign the jth
% job to the ith worker.
%
% This is vectorized implementation of the algorithm. It is the fastest
% among all Matlab implementations of the algorithm.
% Examples
% Example 1: a 5 x 5 example
%{
[assignment,cost] = munkres(magic(5));
disp(assignment); % 3 2 1 5 4
disp(cost); %15
%}
% Example 2: 400 x 400 random data
%{
n=400;
A=rand(n);
tic
[a,b]=munkres(A);
toc % about 2 seconds
%}
% Example 3: rectangular assignment with inf costs
%{
A=rand(10,7);
A(A>0.7)=Inf;
[a,b]=munkres(A);
%}
% Reference:
% "Munkres’ Assignment Algorithm, Modified for Rectangular Matrices",
% http://csclab.murraystate.edu/bob.pilgrim/445/munkres.html
% version 2.0 by Yi Cao at Cranfield University on 10th July 2008
assignment = zeros(1,size(costMat,1));
cost = 0;
costMat(costMat~=costMat)=Inf;
validMat = costMat<Inf;
validCol = any(validMat,1);
validRow = any(validMat,2);
nRows = sum(validRow);
nCols = sum(validCol);
n = max(nRows,nCols);
if ~n
return
end
maxv=10*max(costMat(validMat));
dMat = zeros(n) + maxv;
dMat(1:nRows,1:nCols) = costMat(validRow,validCol);
%*************************************************
% Munkres’ Assignment Algorithm starts here
%*************************************************
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% STEP 1: Subtract the row minimum from each row.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
minR = min(dMat,[],2);
minC = min(bsxfun(@minus, dMat, minR));
%**************************************************************************
% STEP 2: Find a zero of dMat. If there are no starred zeros in its
% column or row start the zero. Repeat for each zero
%**************************************************************************
zP = dMat == bsxfun(@plus, minC, minR);
starZ = zeros(n,1);
while any(zP(:))
[r,c]=find(zP,1);
starZ(r)=c;
zP(r,:)=false;
zP(:,c)=false;
end
while 1
%**************************************************************************
% STEP 3: Cover each column with a starred zero. If all the columns are
% covered then the matching is maximum
%**************************************************************************
if all(starZ>0)
break
end
coverColumn = false(1,n);
coverColumn(starZ(starZ>0))=true;
coverRow = false(n,1);
primeZ = zeros(n,1);
[rIdx, cIdx] = find(dMat(~coverRow,~coverColumn)==bsxfun(@plus,minR(~coverRow),minC(~coverColumn)));
while 1
%**************************************************************************
% STEP 4: Find a noncovered zero and prime it. If there is no starred
% zero in the row containing this primed zero, Go to Step 5.
% Otherwise, cover this row and uncover the column containing
% the starred zero. Continue in this manner until there are no
% uncovered zeros left. Save the smallest uncovered value and
% Go to Step 6.
%**************************************************************************
cR = find(~coverRow);
cC = find(~coverColumn);
rIdx = cR(rIdx);
cIdx = cC(cIdx);
Step = 6;
while ~isempty(cIdx)
uZr = rIdx(1);
uZc = cIdx(1);
primeZ(uZr) = uZc;
stz = starZ(uZr);
if ~stz
Step = 5;
break;
end
coverRow(uZr) = true;
coverColumn(stz) = false;
z = rIdx==uZr;
rIdx(z) = [];
cIdx(z) = [];
cR = find(~coverRow);
z = dMat(~coverRow,stz) == minR(~coverRow) + minC(stz);
rIdx = [rIdx(:);cR(z)];
cIdx = [cIdx(:);stz(ones(sum(z),1))];
end
if Step == 6
% *************************************************************************
% STEP 6: Add the minimum uncovered value to every element of each covered
% row, and subtract it from every element of each uncovered column.
% Return to Step 4 without altering any stars, primes, or covered lines.
%**************************************************************************
[minval,rIdx,cIdx]=outerplus(dMat(~coverRow,~coverColumn),minR(~coverRow),minC(~coverColumn));
minC(~coverColumn) = minC(~coverColumn) + minval;
minR(coverRow) = minR(coverRow) – minval;
else
break
end
end
%**************************************************************************
% STEP 5:
% Construct a series of alternating primed and starred zeros as
% follows:
% Let Z0 represent the uncovered primed zero found in Step 4.
% Let Z1 denote the starred zero in the column of Z0 (if any).
% Let Z2 denote the primed zero in the row of Z1 (there will always
% be one). Continue until the series terminates at a primed zero
% that has no starred zero in its column. Unstar each starred
% zero of the series, star each primed zero of the series, erase
% all primes and uncover every line in the matrix. Return to Step 3.
%**************************************************************************
rowZ1 = find(starZ==uZc);
starZ(uZr)=uZc;
while rowZ1>0
starZ(rowZ1)=0;
uZc = primeZ(rowZ1);
uZr = rowZ1;
rowZ1 = find(starZ==uZc);
starZ(uZr)=uZc;
end
end
% Cost of assignment
rowIdx = find(validRow);
colIdx = find(validCol);
starZ = starZ(1:nRows);
vIdx = starZ <= nCols;
assignment(rowIdx(vIdx)) = colIdx(starZ(vIdx));
cost = trace(costMat(assignment>0,assignment(assignment>0)));
function [minval,rIdx,cIdx]=outerplus(M,x,y)
[nx,ny]=size(M);
minval=inf;
for r=1:nx
x1=x(r);
for c=1:ny
M(r,c)=M(r,c)-(x1+y(c));
if minval>M(r,c)
minval=M(r,c);
end
end
end
[rIdx,cIdx]=find(M==minval);
This code is from SPECTRAL METHODS IN MATLAB by Trefethen. The eigenvalue problem is solved here. But for t>0, how can I calculate eigenvalues? . Dont hasitate to ask me any questien if my problem was mis understood. Thanks in advance.% p40.m – eigenvalues of Orr-Sommerfeld operator (compare p38.m)
R = 5772; clf, [ay,ax] = meshgrid([.56 .04],[.1 .5]);
for N = 40:20:100
% 2nd- and 4th-order differentiation matrices:
[D,x] = cheb(N); D2 = D^2; D2 = D2(2:N,2:N);
S = diag([0; 1 ./(1-x(2:N).^2); 0]);
D4 = (diag(1-x.^2)*D^4 – 8*diag(x)*D^3 – 12*D^2)*S;
D4 = D4(2:N,2:N);
% Orr-Sommerfeld operators A,B and generalized eigenvalues:
I = eye(N-1);
A = (D4-2*D2+I)/R – 2i*I – 1i*diag(1-x(2:N).^2)*(D2-I);
B = D2-I;
ee = eig(A,B);
i = N/20-1; subplot(‘position’,[ax(i) ay(i) .38 .38])
plot(ee,’.’,’markersize’,12)
grid on, axis([-.8 .2 -1 0]), axis square
title([‘N = ‘ int2str(N) ‘ lambda_{max} = ‘ …
num2str(max(real(ee)),’%16.12f’)]), drawnow
end
with the help of eigenshuffle function.
function [Vseq,Dseq] = eigenshuffle(Asequence,Bsequence)
% eigenshuffle: Consistent sorting for an eigenvalue/vector sequence
% [Vseq,Dseq] = eigenshuffle(Asequence)
% [Vseq,Dseq] = eigenshuffle(Asequence,Bsequence)
%
% Includes munkres.m (by gracious permission from Yi Cao)
% to choose the appropriate permutation. This greatly
% enhances the speed of eigenshuffle over my previous
% release.
%
% http://www.mathworks.com/matlabcentral/fileexchange/20652
%
% Arguments: (input)
% Asequence – an array of eigenvalue problems. If
% Asequence is a 3-d numeric array, then each
% plane of Asequence must contain a square
% matrix that will be used to call eig.
%
% Eig will be called on each of these matrices
% to produce a series of eigenvalues/vectors,
% one such set for each eigenvalue problem.
%
% Bsequence – (OPTIONAL) This allows the user to solve
% generalized eigenvalue problems of the form
%
% A*X = lambda*B*x
%
% Bsequence must be the same shape and size as
% Asequence.
%
% ONLY supply Bsequence when generalized eigenvalues
% will be computed.
%
% Arguments: (Output)
% Vseq – a 3-d array (pxpxn) of eigenvectors. Each
% plane of the array will be sorted into a
% consistent order with the other eigenvalue
% problems. The ordering chosen will be one
% that maximizes the energy of the consecutive
% eigensystems relative to each other.
%
% Dseq – pxn array of eigen values, sorted in order
% to be consistent with each other and with the
% eigenvectors in Vseq.
%
% Example:
% Efun = @(t) [1 2*t+1 t^2 t^3;2*t+1 2-t t^2 1-t^3; …
% t^2 t^2 3-2*t t^2;t^3 1-t^3 t^2 4-3*t];
%
% Aseq = zeros(4,4,21);
% for i = 1:21
% Aseq(:,:,i) = Efun((i-11)/10);
% end
% [Vseq,Dseq] = eigenshuffle(Aseq);
%
% To see that eigenshuffle has done its work correctly,
% look at the eigenvalues in sequence, after the shuffle.
%
% t = (-1:.1:1)’;
% [t,Dseq’]
% ans =
% -1 8.4535 5 2.3447 0.20181
% -0.9 7.8121 4.7687 2.3728 0.44644
% -0.8 7.2481 4.56 2.3413 0.65054
% -0.7 6.7524 4.3648 2.2709 0.8118
% -0.6 6.3156 4.1751 2.1857 0.92364
% -0.5 5.9283 3.9855 2.1118 0.97445
% -0.4 5.5816 3.7931 2.0727 0.95254
% -0.3 5.2676 3.5976 2.0768 0.858
% -0.2 4.9791 3.3995 2.1156 0.70581
% -0.1 4.7109 3.2 2.1742 0.51494
% 0 4.4605 3 2.2391 0.30037
% 0.1 4.2302 2.8 2.2971 0.072689
% 0.2 4.0303 2.5997 2.3303 -0.16034
% 0.3 3.8817 2.4047 2.3064 -0.39272
% 0.4 3.8108 2.1464 2.2628 -0.62001
% 0.5 3.8302 1.8986 2.1111 -0.83992
% 0.6 3.9301 1.5937 1.9298 -1.0537
% 0.7 4.0927 1.2308 1.745 -1.2685
% 0.8 4.3042 0.82515 1.5729 -1.5023
% 0.9 4.5572 0.40389 1.4272 -1.7883
% 1 4.8482 -8.0012e-16 1.3273 -2.1755
%
% Here, the columns are the shuffled eigenvalues.
% See that the second eigenvalue goes to zero, but
% the third eigenvalue remains positive. We can plot
% eigenvalues and see that they have crossed, near
% t = 0.35 in Efun.
%
% plot(-1:.1:1,Dseq’)
%
% For a better appreciation of what eigenshuffle did,
% compare the result of eig directly on Efun(.3) and
% Efun(.4). Thus:
%
% [V3,D3] = eig(Efun(.3))
% V3 =
% -0.74139 0.53464 -0.23551 0.3302
% 0.64781 0.4706 -0.16256 0.57659
% 0.0086542 -0.44236 -0.89119 0.10006
% -0.17496 -0.54498 0.35197 0.74061
%
% D3 =
% -0.39272 0 0 0
% 0 2.3064 0 0
% 0 0 2.4047 0
% 0 0 0 3.8817
%
% [V4,D4] = eig(Efun(.4))
% V4 =
% -0.73026 0.19752 0.49743 0.42459
% 0.66202 0.21373 0.35297 0.62567
% 0.013412 -0.95225 0.25513 0.16717
% -0.16815 -0.092308 -0.75026 0.63271
%
% D4 =
% -0.62001 0 0 0
% 0 2.1464 0 0
% 0 0 2.2628 0
% 0 0 0 3.8108
%
% With no sort or shuffle applied, look at V3(:,3). See
% that it is really closest to V4(:,2), but with a sign
% flip. Since the signs on the eigenvectors are arbitrary,
% the sign is changed, and the most consistent sequence
% will be chosen. By way of comparison, see how the
% eigenvectors in Vseq have been shuffled, the signs
% swapped appropriately.
%
% Vseq(:,:,14)
% ans =
% 0.3302 0.23551 -0.53464 0.74139
% 0.57659 0.16256 -0.4706 -0.64781
% 0.10006 0.89119 0.44236 -0.0086542
% 0.74061 -0.35197 0.54498 0.17496
%
% Vseq(:,:,15)
% ans =
% 0.42459 -0.19752 -0.49743 0.73026
% 0.62567 -0.21373 -0.35297 -0.66202
% 0.16717 0.95225 -0.25513 -0.013412
% 0.63271 0.092308 0.75026 0.16815
%
% See also: eig
%
% Author: John D’Errico
% e-mail: woodchips@rochester.rr.com
% Release: 3.0
% Release date: 2/18/09
% Is Asequence a 3-d array?
Asize = size(Asequence);
if (Asize(1)~=Asize(2))
error(‘Asequence must be a (pxpxn) array of eigen-problems, each of size pxp’)
end
% was Bsequence supplied
genflag = false;
if (nargin > 1) & ~isempty(Bsequence)
genflag = true;
if ~isequal(size(Asequence),size(Bsequence))
error(‘If Bsequence is provided to compute generalized eigenvalues, then Asequence and Bsequence must be the same size arrays’)
end
end
p = Asize(1);
if length(Asize)<3
n = 1;
else
n = Asize(3);
end
% the initial eigenvalues/vectors in nominal order
Vseq = zeros(p,p,n);
Dseq = zeros(p,n);
for i = 1:n
if genflag
[V,D] = eig(Asequence(:,:,i),Bsequence(:,:,i));
else
[V,D] = eig(Asequence(:,:,i));
end
D = diag(D);
% initial ordering is purely in decreasing order.
% If any are complex, the sort is in terms of the
% real part.
[junk,tags] = sort(real(D),1,’descend’);
Dseq(:,i) = D(tags);
Vseq(:,:,i) = V(:,tags);
end
% was there only one eigenvalue problem?
if n < 2
% we can quit now, having sorted the eigenvalues
% as best as we could.
return
end
% now, treat each eigenproblem in sequence (after
% the first one.)
for i = 2:n
% compute distance between systems
V1 = Vseq(:,:,i-1);
V2 = Vseq(:,:,i);
D1 = Dseq(:,i-1);
D2 = Dseq(:,i);
dist = (1-abs(V1’*V2)).*sqrt( …
distancematrix(real(D1),real(D2)).^2+ …
distancematrix(imag(D1),imag(D2)).^2);
% Is there a best permutation? use munkres.
% much faster than my own mintrace, munkres
% is used by gracious permission from Yi Cao.
reorder = munkres(dist);
Vseq(:,:,i) = Vseq(:,reorder,i);
Dseq(:,i) = Dseq(reorder,i);
% also ensure the signs of each eigenvector pair
% were consistent if possible
S = squeeze(real(sum(Vseq(:,:,i-1).*Vseq(:,:,i),1))) < 0;
Vseq(:,S,i) = -Vseq(:,S,i);
end
% =================
% end mainline
% =================
% begin subfunctions
% =================
function d = distancematrix(vec1,vec2)
% simple interpoint distance matrix
[vec1,vec2] = ndgrid(vec1,vec2);
d = abs(vec1 – vec2);
function [assignment,cost] = munkres(costMat)
% MUNKRES Munkres (Hungarian) Algorithm for Linear Assignment Problem.
%
% [ASSIGN,COST] = munkres(COSTMAT) returns the optimal column indices,
% ASSIGN assigned to each row and the minimum COST based on the assignment
% problem represented by the COSTMAT, where the (i,j)th element represents the cost to assign the jth
% job to the ith worker.
%
% This is vectorized implementation of the algorithm. It is the fastest
% among all Matlab implementations of the algorithm.
% Examples
% Example 1: a 5 x 5 example
%{
[assignment,cost] = munkres(magic(5));
disp(assignment); % 3 2 1 5 4
disp(cost); %15
%}
% Example 2: 400 x 400 random data
%{
n=400;
A=rand(n);
tic
[a,b]=munkres(A);
toc % about 2 seconds
%}
% Example 3: rectangular assignment with inf costs
%{
A=rand(10,7);
A(A>0.7)=Inf;
[a,b]=munkres(A);
%}
% Reference:
% "Munkres’ Assignment Algorithm, Modified for Rectangular Matrices",
% http://csclab.murraystate.edu/bob.pilgrim/445/munkres.html
% version 2.0 by Yi Cao at Cranfield University on 10th July 2008
assignment = zeros(1,size(costMat,1));
cost = 0;
costMat(costMat~=costMat)=Inf;
validMat = costMat<Inf;
validCol = any(validMat,1);
validRow = any(validMat,2);
nRows = sum(validRow);
nCols = sum(validCol);
n = max(nRows,nCols);
if ~n
return
end
maxv=10*max(costMat(validMat));
dMat = zeros(n) + maxv;
dMat(1:nRows,1:nCols) = costMat(validRow,validCol);
%*************************************************
% Munkres’ Assignment Algorithm starts here
%*************************************************
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% STEP 1: Subtract the row minimum from each row.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
minR = min(dMat,[],2);
minC = min(bsxfun(@minus, dMat, minR));
%**************************************************************************
% STEP 2: Find a zero of dMat. If there are no starred zeros in its
% column or row start the zero. Repeat for each zero
%**************************************************************************
zP = dMat == bsxfun(@plus, minC, minR);
starZ = zeros(n,1);
while any(zP(:))
[r,c]=find(zP,1);
starZ(r)=c;
zP(r,:)=false;
zP(:,c)=false;
end
while 1
%**************************************************************************
% STEP 3: Cover each column with a starred zero. If all the columns are
% covered then the matching is maximum
%**************************************************************************
if all(starZ>0)
break
end
coverColumn = false(1,n);
coverColumn(starZ(starZ>0))=true;
coverRow = false(n,1);
primeZ = zeros(n,1);
[rIdx, cIdx] = find(dMat(~coverRow,~coverColumn)==bsxfun(@plus,minR(~coverRow),minC(~coverColumn)));
while 1
%**************************************************************************
% STEP 4: Find a noncovered zero and prime it. If there is no starred
% zero in the row containing this primed zero, Go to Step 5.
% Otherwise, cover this row and uncover the column containing
% the starred zero. Continue in this manner until there are no
% uncovered zeros left. Save the smallest uncovered value and
% Go to Step 6.
%**************************************************************************
cR = find(~coverRow);
cC = find(~coverColumn);
rIdx = cR(rIdx);
cIdx = cC(cIdx);
Step = 6;
while ~isempty(cIdx)
uZr = rIdx(1);
uZc = cIdx(1);
primeZ(uZr) = uZc;
stz = starZ(uZr);
if ~stz
Step = 5;
break;
end
coverRow(uZr) = true;
coverColumn(stz) = false;
z = rIdx==uZr;
rIdx(z) = [];
cIdx(z) = [];
cR = find(~coverRow);
z = dMat(~coverRow,stz) == minR(~coverRow) + minC(stz);
rIdx = [rIdx(:);cR(z)];
cIdx = [cIdx(:);stz(ones(sum(z),1))];
end
if Step == 6
% *************************************************************************
% STEP 6: Add the minimum uncovered value to every element of each covered
% row, and subtract it from every element of each uncovered column.
% Return to Step 4 without altering any stars, primes, or covered lines.
%**************************************************************************
[minval,rIdx,cIdx]=outerplus(dMat(~coverRow,~coverColumn),minR(~coverRow),minC(~coverColumn));
minC(~coverColumn) = minC(~coverColumn) + minval;
minR(coverRow) = minR(coverRow) – minval;
else
break
end
end
%**************************************************************************
% STEP 5:
% Construct a series of alternating primed and starred zeros as
% follows:
% Let Z0 represent the uncovered primed zero found in Step 4.
% Let Z1 denote the starred zero in the column of Z0 (if any).
% Let Z2 denote the primed zero in the row of Z1 (there will always
% be one). Continue until the series terminates at a primed zero
% that has no starred zero in its column. Unstar each starred
% zero of the series, star each primed zero of the series, erase
% all primes and uncover every line in the matrix. Return to Step 3.
%**************************************************************************
rowZ1 = find(starZ==uZc);
starZ(uZr)=uZc;
while rowZ1>0
starZ(rowZ1)=0;
uZc = primeZ(rowZ1);
uZr = rowZ1;
rowZ1 = find(starZ==uZc);
starZ(uZr)=uZc;
end
end
% Cost of assignment
rowIdx = find(validRow);
colIdx = find(validCol);
starZ = starZ(1:nRows);
vIdx = starZ <= nCols;
assignment(rowIdx(vIdx)) = colIdx(starZ(vIdx));
cost = trace(costMat(assignment>0,assignment(assignment>0)));
function [minval,rIdx,cIdx]=outerplus(M,x,y)
[nx,ny]=size(M);
minval=inf;
for r=1:nx
x1=x(r);
for c=1:ny
M(r,c)=M(r,c)-(x1+y(c));
if minval>M(r,c)
minval=M(r,c);
end
end
end
[rIdx,cIdx]=find(M==minval);
This code is from SPECTRAL METHODS IN MATLAB by Trefethen. The eigenvalue problem is solved here. But for t>0, how can I calculate eigenvalues? . Dont hasitate to ask me any questien if my problem was mis understood. Thanks in advance. % p40.m – eigenvalues of Orr-Sommerfeld operator (compare p38.m)
R = 5772; clf, [ay,ax] = meshgrid([.56 .04],[.1 .5]);
for N = 40:20:100
% 2nd- and 4th-order differentiation matrices:
[D,x] = cheb(N); D2 = D^2; D2 = D2(2:N,2:N);
S = diag([0; 1 ./(1-x(2:N).^2); 0]);
D4 = (diag(1-x.^2)*D^4 – 8*diag(x)*D^3 – 12*D^2)*S;
D4 = D4(2:N,2:N);
% Orr-Sommerfeld operators A,B and generalized eigenvalues:
I = eye(N-1);
A = (D4-2*D2+I)/R – 2i*I – 1i*diag(1-x(2:N).^2)*(D2-I);
B = D2-I;
ee = eig(A,B);
i = N/20-1; subplot(‘position’,[ax(i) ay(i) .38 .38])
plot(ee,’.’,’markersize’,12)
grid on, axis([-.8 .2 -1 0]), axis square
title([‘N = ‘ int2str(N) ‘ lambda_{max} = ‘ …
num2str(max(real(ee)),’%16.12f’)]), drawnow
end
with the help of eigenshuffle function.
function [Vseq,Dseq] = eigenshuffle(Asequence,Bsequence)
% eigenshuffle: Consistent sorting for an eigenvalue/vector sequence
% [Vseq,Dseq] = eigenshuffle(Asequence)
% [Vseq,Dseq] = eigenshuffle(Asequence,Bsequence)
%
% Includes munkres.m (by gracious permission from Yi Cao)
% to choose the appropriate permutation. This greatly
% enhances the speed of eigenshuffle over my previous
% release.
%
% http://www.mathworks.com/matlabcentral/fileexchange/20652
%
% Arguments: (input)
% Asequence – an array of eigenvalue problems. If
% Asequence is a 3-d numeric array, then each
% plane of Asequence must contain a square
% matrix that will be used to call eig.
%
% Eig will be called on each of these matrices
% to produce a series of eigenvalues/vectors,
% one such set for each eigenvalue problem.
%
% Bsequence – (OPTIONAL) This allows the user to solve
% generalized eigenvalue problems of the form
%
% A*X = lambda*B*x
%
% Bsequence must be the same shape and size as
% Asequence.
%
% ONLY supply Bsequence when generalized eigenvalues
% will be computed.
%
% Arguments: (Output)
% Vseq – a 3-d array (pxpxn) of eigenvectors. Each
% plane of the array will be sorted into a
% consistent order with the other eigenvalue
% problems. The ordering chosen will be one
% that maximizes the energy of the consecutive
% eigensystems relative to each other.
%
% Dseq – pxn array of eigen values, sorted in order
% to be consistent with each other and with the
% eigenvectors in Vseq.
%
% Example:
% Efun = @(t) [1 2*t+1 t^2 t^3;2*t+1 2-t t^2 1-t^3; …
% t^2 t^2 3-2*t t^2;t^3 1-t^3 t^2 4-3*t];
%
% Aseq = zeros(4,4,21);
% for i = 1:21
% Aseq(:,:,i) = Efun((i-11)/10);
% end
% [Vseq,Dseq] = eigenshuffle(Aseq);
%
% To see that eigenshuffle has done its work correctly,
% look at the eigenvalues in sequence, after the shuffle.
%
% t = (-1:.1:1)’;
% [t,Dseq’]
% ans =
% -1 8.4535 5 2.3447 0.20181
% -0.9 7.8121 4.7687 2.3728 0.44644
% -0.8 7.2481 4.56 2.3413 0.65054
% -0.7 6.7524 4.3648 2.2709 0.8118
% -0.6 6.3156 4.1751 2.1857 0.92364
% -0.5 5.9283 3.9855 2.1118 0.97445
% -0.4 5.5816 3.7931 2.0727 0.95254
% -0.3 5.2676 3.5976 2.0768 0.858
% -0.2 4.9791 3.3995 2.1156 0.70581
% -0.1 4.7109 3.2 2.1742 0.51494
% 0 4.4605 3 2.2391 0.30037
% 0.1 4.2302 2.8 2.2971 0.072689
% 0.2 4.0303 2.5997 2.3303 -0.16034
% 0.3 3.8817 2.4047 2.3064 -0.39272
% 0.4 3.8108 2.1464 2.2628 -0.62001
% 0.5 3.8302 1.8986 2.1111 -0.83992
% 0.6 3.9301 1.5937 1.9298 -1.0537
% 0.7 4.0927 1.2308 1.745 -1.2685
% 0.8 4.3042 0.82515 1.5729 -1.5023
% 0.9 4.5572 0.40389 1.4272 -1.7883
% 1 4.8482 -8.0012e-16 1.3273 -2.1755
%
% Here, the columns are the shuffled eigenvalues.
% See that the second eigenvalue goes to zero, but
% the third eigenvalue remains positive. We can plot
% eigenvalues and see that they have crossed, near
% t = 0.35 in Efun.
%
% plot(-1:.1:1,Dseq’)
%
% For a better appreciation of what eigenshuffle did,
% compare the result of eig directly on Efun(.3) and
% Efun(.4). Thus:
%
% [V3,D3] = eig(Efun(.3))
% V3 =
% -0.74139 0.53464 -0.23551 0.3302
% 0.64781 0.4706 -0.16256 0.57659
% 0.0086542 -0.44236 -0.89119 0.10006
% -0.17496 -0.54498 0.35197 0.74061
%
% D3 =
% -0.39272 0 0 0
% 0 2.3064 0 0
% 0 0 2.4047 0
% 0 0 0 3.8817
%
% [V4,D4] = eig(Efun(.4))
% V4 =
% -0.73026 0.19752 0.49743 0.42459
% 0.66202 0.21373 0.35297 0.62567
% 0.013412 -0.95225 0.25513 0.16717
% -0.16815 -0.092308 -0.75026 0.63271
%
% D4 =
% -0.62001 0 0 0
% 0 2.1464 0 0
% 0 0 2.2628 0
% 0 0 0 3.8108
%
% With no sort or shuffle applied, look at V3(:,3). See
% that it is really closest to V4(:,2), but with a sign
% flip. Since the signs on the eigenvectors are arbitrary,
% the sign is changed, and the most consistent sequence
% will be chosen. By way of comparison, see how the
% eigenvectors in Vseq have been shuffled, the signs
% swapped appropriately.
%
% Vseq(:,:,14)
% ans =
% 0.3302 0.23551 -0.53464 0.74139
% 0.57659 0.16256 -0.4706 -0.64781
% 0.10006 0.89119 0.44236 -0.0086542
% 0.74061 -0.35197 0.54498 0.17496
%
% Vseq(:,:,15)
% ans =
% 0.42459 -0.19752 -0.49743 0.73026
% 0.62567 -0.21373 -0.35297 -0.66202
% 0.16717 0.95225 -0.25513 -0.013412
% 0.63271 0.092308 0.75026 0.16815
%
% See also: eig
%
% Author: John D’Errico
% e-mail: woodchips@rochester.rr.com
% Release: 3.0
% Release date: 2/18/09
% Is Asequence a 3-d array?
Asize = size(Asequence);
if (Asize(1)~=Asize(2))
error(‘Asequence must be a (pxpxn) array of eigen-problems, each of size pxp’)
end
% was Bsequence supplied
genflag = false;
if (nargin > 1) & ~isempty(Bsequence)
genflag = true;
if ~isequal(size(Asequence),size(Bsequence))
error(‘If Bsequence is provided to compute generalized eigenvalues, then Asequence and Bsequence must be the same size arrays’)
end
end
p = Asize(1);
if length(Asize)<3
n = 1;
else
n = Asize(3);
end
% the initial eigenvalues/vectors in nominal order
Vseq = zeros(p,p,n);
Dseq = zeros(p,n);
for i = 1:n
if genflag
[V,D] = eig(Asequence(:,:,i),Bsequence(:,:,i));
else
[V,D] = eig(Asequence(:,:,i));
end
D = diag(D);
% initial ordering is purely in decreasing order.
% If any are complex, the sort is in terms of the
% real part.
[junk,tags] = sort(real(D),1,’descend’);
Dseq(:,i) = D(tags);
Vseq(:,:,i) = V(:,tags);
end
% was there only one eigenvalue problem?
if n < 2
% we can quit now, having sorted the eigenvalues
% as best as we could.
return
end
% now, treat each eigenproblem in sequence (after
% the first one.)
for i = 2:n
% compute distance between systems
V1 = Vseq(:,:,i-1);
V2 = Vseq(:,:,i);
D1 = Dseq(:,i-1);
D2 = Dseq(:,i);
dist = (1-abs(V1’*V2)).*sqrt( …
distancematrix(real(D1),real(D2)).^2+ …
distancematrix(imag(D1),imag(D2)).^2);
% Is there a best permutation? use munkres.
% much faster than my own mintrace, munkres
% is used by gracious permission from Yi Cao.
reorder = munkres(dist);
Vseq(:,:,i) = Vseq(:,reorder,i);
Dseq(:,i) = Dseq(reorder,i);
% also ensure the signs of each eigenvector pair
% were consistent if possible
S = squeeze(real(sum(Vseq(:,:,i-1).*Vseq(:,:,i),1))) < 0;
Vseq(:,S,i) = -Vseq(:,S,i);
end
% =================
% end mainline
% =================
% begin subfunctions
% =================
function d = distancematrix(vec1,vec2)
% simple interpoint distance matrix
[vec1,vec2] = ndgrid(vec1,vec2);
d = abs(vec1 – vec2);
function [assignment,cost] = munkres(costMat)
% MUNKRES Munkres (Hungarian) Algorithm for Linear Assignment Problem.
%
% [ASSIGN,COST] = munkres(COSTMAT) returns the optimal column indices,
% ASSIGN assigned to each row and the minimum COST based on the assignment
% problem represented by the COSTMAT, where the (i,j)th element represents the cost to assign the jth
% job to the ith worker.
%
% This is vectorized implementation of the algorithm. It is the fastest
% among all Matlab implementations of the algorithm.
% Examples
% Example 1: a 5 x 5 example
%{
[assignment,cost] = munkres(magic(5));
disp(assignment); % 3 2 1 5 4
disp(cost); %15
%}
% Example 2: 400 x 400 random data
%{
n=400;
A=rand(n);
tic
[a,b]=munkres(A);
toc % about 2 seconds
%}
% Example 3: rectangular assignment with inf costs
%{
A=rand(10,7);
A(A>0.7)=Inf;
[a,b]=munkres(A);
%}
% Reference:
% "Munkres’ Assignment Algorithm, Modified for Rectangular Matrices",
% http://csclab.murraystate.edu/bob.pilgrim/445/munkres.html
% version 2.0 by Yi Cao at Cranfield University on 10th July 2008
assignment = zeros(1,size(costMat,1));
cost = 0;
costMat(costMat~=costMat)=Inf;
validMat = costMat<Inf;
validCol = any(validMat,1);
validRow = any(validMat,2);
nRows = sum(validRow);
nCols = sum(validCol);
n = max(nRows,nCols);
if ~n
return
end
maxv=10*max(costMat(validMat));
dMat = zeros(n) + maxv;
dMat(1:nRows,1:nCols) = costMat(validRow,validCol);
%*************************************************
% Munkres’ Assignment Algorithm starts here
%*************************************************
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% STEP 1: Subtract the row minimum from each row.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
minR = min(dMat,[],2);
minC = min(bsxfun(@minus, dMat, minR));
%**************************************************************************
% STEP 2: Find a zero of dMat. If there are no starred zeros in its
% column or row start the zero. Repeat for each zero
%**************************************************************************
zP = dMat == bsxfun(@plus, minC, minR);
starZ = zeros(n,1);
while any(zP(:))
[r,c]=find(zP,1);
starZ(r)=c;
zP(r,:)=false;
zP(:,c)=false;
end
while 1
%**************************************************************************
% STEP 3: Cover each column with a starred zero. If all the columns are
% covered then the matching is maximum
%**************************************************************************
if all(starZ>0)
break
end
coverColumn = false(1,n);
coverColumn(starZ(starZ>0))=true;
coverRow = false(n,1);
primeZ = zeros(n,1);
[rIdx, cIdx] = find(dMat(~coverRow,~coverColumn)==bsxfun(@plus,minR(~coverRow),minC(~coverColumn)));
while 1
%**************************************************************************
% STEP 4: Find a noncovered zero and prime it. If there is no starred
% zero in the row containing this primed zero, Go to Step 5.
% Otherwise, cover this row and uncover the column containing
% the starred zero. Continue in this manner until there are no
% uncovered zeros left. Save the smallest uncovered value and
% Go to Step 6.
%**************************************************************************
cR = find(~coverRow);
cC = find(~coverColumn);
rIdx = cR(rIdx);
cIdx = cC(cIdx);
Step = 6;
while ~isempty(cIdx)
uZr = rIdx(1);
uZc = cIdx(1);
primeZ(uZr) = uZc;
stz = starZ(uZr);
if ~stz
Step = 5;
break;
end
coverRow(uZr) = true;
coverColumn(stz) = false;
z = rIdx==uZr;
rIdx(z) = [];
cIdx(z) = [];
cR = find(~coverRow);
z = dMat(~coverRow,stz) == minR(~coverRow) + minC(stz);
rIdx = [rIdx(:);cR(z)];
cIdx = [cIdx(:);stz(ones(sum(z),1))];
end
if Step == 6
% *************************************************************************
% STEP 6: Add the minimum uncovered value to every element of each covered
% row, and subtract it from every element of each uncovered column.
% Return to Step 4 without altering any stars, primes, or covered lines.
%**************************************************************************
[minval,rIdx,cIdx]=outerplus(dMat(~coverRow,~coverColumn),minR(~coverRow),minC(~coverColumn));
minC(~coverColumn) = minC(~coverColumn) + minval;
minR(coverRow) = minR(coverRow) – minval;
else
break
end
end
%**************************************************************************
% STEP 5:
% Construct a series of alternating primed and starred zeros as
% follows:
% Let Z0 represent the uncovered primed zero found in Step 4.
% Let Z1 denote the starred zero in the column of Z0 (if any).
% Let Z2 denote the primed zero in the row of Z1 (there will always
% be one). Continue until the series terminates at a primed zero
% that has no starred zero in its column. Unstar each starred
% zero of the series, star each primed zero of the series, erase
% all primes and uncover every line in the matrix. Return to Step 3.
%**************************************************************************
rowZ1 = find(starZ==uZc);
starZ(uZr)=uZc;
while rowZ1>0
starZ(rowZ1)=0;
uZc = primeZ(rowZ1);
uZr = rowZ1;
rowZ1 = find(starZ==uZc);
starZ(uZr)=uZc;
end
end
% Cost of assignment
rowIdx = find(validRow);
colIdx = find(validCol);
starZ = starZ(1:nRows);
vIdx = starZ <= nCols;
assignment(rowIdx(vIdx)) = colIdx(starZ(vIdx));
cost = trace(costMat(assignment>0,assignment(assignment>0)));
function [minval,rIdx,cIdx]=outerplus(M,x,y)
[nx,ny]=size(M);
minval=inf;
for r=1:nx
x1=x(r);
for c=1:ny
M(r,c)=M(r,c)-(x1+y(c));
if minval>M(r,c)
minval=M(r,c);
end
end
end
[rIdx,cIdx]=find(M==minval);
This code is from SPECTRAL METHODS IN MATLAB by Trefethen. The eigenvalue problem is solved here. But for t>0, how can I calculate eigenvalues? . Dont hasitate to ask me any questien if my problem was mis understood. Thanks in advance. eigenvalues, orr-sommerfeld operator, numarical, chebysheb MATLAB Answers — New Questions