Info

This question is locked. Rouvrir pour modifier ou répondre.

How can I calculate Dynamic height and Geostrophic Current?

30 vues (au cours des 30 derniers jours)
Jiuk Hwang
Jiuk Hwang le 27 Juin 2023
Locked: Rena Berman le 24 Oct 2025 à 11:24
I want to calculate Dynamic height and Geostrophic Current, with Vertical Profile T, S data in 2 sites. For example, if i get a Profile like this,
then I want to get the Geostrophic balance like this.
But when I try this things at first, it was so hard that calculate the velocity as each of depth. So I tried just one Velocity value between two sites as whole scale of depth. But I got a bad value, that is very low. 0.0076 m/s. The location of sites are the Drake Passage in Antartica, so the average value is known as over the 1m/s. But I can't find what's wrong in my code. So Please help me, masters of MATLAB and Oceanography....
The Below code is my code... %% Dynamic Height in Antarctic % Calculate the Dynamic Height and Pressure Gradient with Using the T, S Profiles of 2 Sites % Site : Antarctic, Drake Strait
%% Site A & Site B
clc; clear; close all;
temp = zeros(2,8); sal = zeros(2,8); % depth = zeros(1,8);
temp(1,:)=[ 7 4 3 2.4 2 1.7 1.4 1 ]; sal(1,:) = [ 34.1 34.2 34.4 34.6 34.68 34.72 34.72 34.72 ];
temp(2,:) = [ 6 3 2.6 2.25 1.8 1.4 1.25 0.9 ]; sal(2,:) = [ 34.05 34.2 34.5 34.63 34.7 34.72 34.72 34.717 ];
depth = [ 0 500 1000 1500 2000 2500 3000 3500 ];
% %% Contour Figure (just show, not Calculate) % figure(1) % temp2 = [temp(1,:)' temp(2,:)']; sal2 = [sal(1,:)' sal(2,:)']; % c1 = subplot(121); % contourf([1,2], depth, temp2, 8); axis ij; % xticklabels({'A','','B'}); title('Temperature'); % colormap(c1,jet); colorbar; % c2 = subplot(122); % contourf([1,2], depth, sal2); axis ij; % xticklabels({'A','','B'}); title('Salinity'); % load colormap_haline.mat; % loading external colormap. % colrm = flipud(colrm); colormap(c2,colrm); colorbar; % clear c1 c2 colrm temp2 sal2 ;
%% Pressure (Dynamic Height) (Calculate Part)
dens = sw_dens(sal, temp, depth); % Density Calculating
dens_imsi = zeros(2,length(dens)-1); k=1; for i=1:length(dens)-1 dens_imsi(:,k) = (dens(:,k+1)+dens(:,k))/2; % reduce the size 1, because of Array Match below. (8->7) k=k+1; end
deltaP = (1./dens_imsi).*diff(depth); % (diff) dyn = ((-1)/9.8)*sum(deltaP,2); % (sum) rho = mean(dens,2); pres = (-1)*9.8.*rho.*dyn;
disp(['Pressure of Site A : ', num2str(pres(1)), ' (dbar)']); disp(['Pressure of Site B : ', num2str(pres(2)), ' (dbar)']);
%% Geostrophic Current (Calculate Part)
% Define the necessary constants Degrees = -60; theta = Degrees * pi / 180; f = 2 * 7.2921*10^(-5) * sin(theta); % Coriolis parameter (rad/s)
% Convert pressure values from dbar to Pa pres_pa = pres * 10000;
% Calculate the pressure gradient between the two sites distance = 50; % unit : km dp_dy = (pres_pa(1) - pres_pa(2)) / (distance*1000); % pressure gradient (Pa/m)
% Calculate the geostrophic current u_geo = -(1/(mean(rho) * f)) * dp_dy; % geostrophic current in the x-direction (m/s)
disp(['velocity of Geostrophic current : ', num2str(u_geo), '(m/s)']);
The initial setting is like this. temp(1,:)=[ 7 4 3 2.4 2 1.7 1.4 1 ]; sal(1,:) = [ 34.1 34.2 34.4 34.6 34.68 34.72 34.72 34.72 ]; temp(2,:) = [ 6 3 2.6 2.25 1.8 1.4 1.25 0.9 ]; sal(2,:) = [ 34.05 34.2 34.5 34.63 34.7 34.72 34.72 34.717 ]; depth = [ 0 500 1000 1500 2000 2500 3000 3500 ];
thanks.
  1 commentaire
Angelo Yeo
Angelo Yeo le 28 Juin 2023
Can you share the function sw_dens?

Réponses (1)

Ashutosh
Ashutosh le 18 Août 2023
The error of unrecognized function or variable is seen on the function 'sw_dens which is not declared in the code provided. Try to declare the function within the script to remove this error.
One can take reference from the link to understand more about the error:

This question is locked.

Catégories

En savoir plus sur General Physics dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by