Commit 3fbc443d authored by Lena Noack's avatar Lena Noack
Browse files

Add evaluation files Octave

parent 48ca32e2
buffer = -2:0.1:4;
for i=1:length(buffer)
[H2(i), H2O(i), CO(i), CO2(i)]=ortenzi_simultaneous_eq_C_O_H(1800, 1, 0.5, 0.5, 2, buffer(i));
end
f = figure('visible','off');
plot(buffer,H2*100,'r','linewidth',2)
hold on
plot(buffer,H2O*100,'b','linewidth',2)
plot(buffer,CO*100,'r--','linewidth',2)
plot(buffer,CO2*100,'b--','linewidth',2)
hold off
xlabel('From reduced to oxidized','fontsize',16)
%xlabel('Redox variation from IW in log_{10} steps','fontsize',16)
ylabel('Abundance in %','fontsize',16)
%ylabel('Molar gas fraction','fontsize',16)
legend('H2','H2O','CO','CO2','location','east')
text(0,6,'1800 K, 1 bar')
text(0,3,'50% H_2O, 50% CO_2')
%text(0,0.07,'1800 K, 1 bar')
%text(0,0.04,'50% H_2O, 50% CO_2')
filename='/home/noacklen/ownCloud/Conferences/International/2019/09_HearingFWF_Vienna/speciation.png';
print(filename,'-dpng',f);
\ No newline at end of file
function [list,sumbytes,varargout] = DIRR(chemin,varargin)
%
%
% DIRR
% Lists all files in the current directory and sub directories
% recursively.
%
% [LIST] = DIRR(PATH)
% Returns a structure LIST with the same fieldnames as returned
% by LIST = DIR(PATH)
% PATH can contain wildcards * and ? after the last \ or / (filename
% filter)
% The content of each directory in PATH is listed inside its 'isdir'
% field with the same format. The 'bytes' field is NOT zero but the
% sum of all filesizes inside the directory.
%
% [LIST,BYTES] = DIRR(PATH)
% BYTES is a structure with fields 'total' and 'dir'. 'total' is the total
% size of PATH. 'dir' is a recursive substructure that contains the
% same fields ('total' and 'dir') for the subdirectories.
%
% [...] = DIRR(PATH,FILTER)
% Lists only files matching the string FILTER (non case sensitive
% regular expression).
% N.B.: FILTER is optional and must not be equal to a fieldname
% ('name' or 'date' ... will never be interpreted as filters)
%
% [LIST,BYTES,FIELDOUT] = DIRR(PATH,FIELDIN, ...)
% FIELDIN is a string specifying a field (of the structure LIST) that
% will be listed in a separate cell array of strings in FIELDOUT for
% every file with absolute path at the begining of the string.
% Multiple fields can be specified.
%
% [LIST,BYTES,FIELDOUT] = DIRR(PATH,FIELDIN,FILTER, ...)
% Only files for which FIELDIN matches FILTER will be returned.
% Multiple [FIELDIN, FILTER] couples may be specified.
% Recursion can be avoided here by setting 'isdir' filter to '0'.
% For bytes, numeric comparison will be performed.
%
%
% EXAMPLES :
%
% DIRR
% Lists all files (including path) in the current directory and it's
% subdirectories recursively.
%
% DIRR('c:\matlab6p5\work\*.m')
% Lists all M-files in the c:\matlab6p5\work directory and it's
% subdirectories recursively.
%
% Music = DIRR('G:\Ma musique\&Styles\Reggae\Alpha Blondy')
% Returns a structure Music very similar to what DIR returns
% but containing the information on the files stored in
% subdirectories of 'G:\Ma musique\&Styles\Reggae\Alpha Blondy'.
% The structure Music is a bit difficult to explore though.
% See next examples.
%
% [Files,Bytes,Names] = DIRR('c:\matlab6p5\toolbox','\.mex\>','name')
% Lists all MEX-files in the c:\matlab6p5\toolbox directory in the cell
% array of strings Names (including path).
% Note the regexp syntax of the filter string.
% Bytes is a structure with fields "total" and "dir". total is the
% total size of the directory, dir is a recursive substructure with
% the same fields as bytes for the subdirectories.
%
% [Files,Bytes,Names] = DIRR('c:\toto'...
% ,'name','bytes','>50000','isdir','0')
% Lists all files larger than 50000 bytes NOT recursively.
%
% [Files,Bytes,Dates] = DIRR('c:\matlab6p5\work','date','2005')
% Lists all dates of files from year 2005. (With path in front of
% date in the cell array of strings Dates)
%
%
%
% v1.02
% Maximilien Chaumon
% maximilien.chaumon@chups.jussieu.fr
% 2006 06 16
verbose = 0;
% set to 1 to get folders list in command window
if nargin == 0
chemin = cd;
end
if nargout == 0
dum = varargin;
varargin{1} = 'name';
varargin = [varargin(1) dum];
end
fields = {'name' 'date' 'bytes' 'isdir'};
if regexp(chemin,'[\*\?]') % if chemin contains any ? or *
filt = regexprep(chemin,'.*[\\/](.*\>)','$1');% get filter
filt = regexprep(filt,'\.','\.');% in regexp format
filt = regexprep(filt,'\*','.*');
filt = regexprep(filt,'\?','.');
filt = regexprep(filt,'(.*)','\\<$1');
chemin = regexprep(chemin,'(.*)[\\/].*\>','$1');% and chemin
end
if not(isempty(varargin)) % if additional fields were provided after chemin
for i = 1:length(fields)
if strcmp(varargin{1},fields{i})% if first varargin matches a fieldname,
% assume no filter was provided,
if not(exist('filt','var'))% or it was in chemin and was set just before
filt = '.*';% set it to wildcard
break
end
end
end
if not(exist('filt','var'))% else
filt = varargin{1};% first varargin is the filter
varargin(1) = [];
end
else% if no additional fields were provided and filter was not in chemin
if not(exist('filt','var'))
filt = '.*';
end
end
% determine which varargin are fieldnames
whicharefields = zeros(1,length(varargin));
for i = 1:length(varargin)
for j = 1:length(fields)
if strcmp(varargin{i},fields{j})
whicharefields(i) = 1;
break
end
end
end
% set f2out and f2outfilt
f2out = {}; f2outfilt = {};
idx = 0;
if not(isempty(varargin))
for i = 1:length(varargin)
if whicharefields(i)
idx = idx + 1;
f2out{idx} = varargin{i};
f2outfilt{idx} = '';
else % if nargin{i} is not a fieldname, assume it's a filter
f2outfilt{idx} = varargin{i};
end
end
end
%%%%%%%%%%%%%%%%%%%% START
if verbose
disp(chemin);
end
list = dir(chemin);
if isempty(list)
disp([chemin ' not found']);
if nargout == 0
clear list
else
for i = 1:nargout - 2
varargout{i} = [];
end
sumbytes = 0;
end
return
end
% remove . and ..
i_file = 1;
while i_file <= length(list)
if strcmp(list(i_file).name,'.')|strcmp(list(i_file).name,'..')
list(i_file) = [];
else
i_file = i_file + 1;
end
end
% set sumbytes
sumbytes = struct('total',0,'dir',{});
sumbytes(1).total = 0;
i_dir = 0;
% and all output fields
for i = 1:size(f2out,2)
f2out{2,i} = {};
end
filenames = {};
todel = 0;
r = 1;
for i_out = 1:size(f2out,2)
if strcmp(f2out{1,i_out},'isdir')
if strcmp(f2outfilt{i_out},'0') % check if no recursion is wanted
r = 0;
end
end
end
% for each item in list
for i_file = 1:length(list)
for i_out = 1:size(f2out,2) % for every output field
if not(isempty(f2outfilt{i_out}))% if there is a filter
if strcmp(f2out{1,i_out},'bytes') % if field is 'bytes'
line = [num2str(list(i_file).(f2out{1,i_out})) f2outfilt{i_out} ';']; % compare with filter numerically
if eval(line)% if passes the filter
continue % continue to next field
else
todel(end+1) = i_file; % else set to be deleted
end
elseif not(strcmp(f2out{1,i_out},'isdir'))% if field is 'name' or 'date'
if regexpi(list(i_file).(f2out{1,i_out}),f2outfilt{i_out}) % apply filter
continue % continue to next field
else
todel(end+1) = i_file; % else set to be deleted
end
end
end
end
% once checked for every field's filter
if todel(end) == i_file % if one didn't pass,
if not(list(i_file).isdir) % and it's not a directory
continue % skip this file and continue
end
else
if regexpi(list(i_file).name,filt) % else, check for general filter on filename
sumbytes(1).total = sumbytes(1).total + list(i_file).bytes; % sum bytes of that level
for i_out = 1:size(f2out,2)% and assign all output fields with the values of that file
f2out{2,i_out}{end+1} = [chemin filesep num2str(list(i_file).(f2out{1,i_out}))];
end
else
todel(end+1) = i_file; % else the file will be removed from the list structure
end
end
if list(i_file).isdir % if it's a directory
if not(r)
continue
end
i_dir = i_dir + 1;
cheminext = strcat(chemin,filesep,list(i_file).name);
% get it's content by recursion
% write the line to enter eval
line = '[list(i_file).isdir,sumbytes.dir(i_dir)';
for i_out = 1:size(f2out,2)% with all the requested fields as temporary variables
line = [line ',f2outtemp{' num2str(i_out) '}'];
end
line = [line '] = dirr(cheminext,filt'];
for i_out = 1:size(f2out,2)
line = [line ',f2out{1,' num2str(i_out) '}'];
if f2outfilt{i_out}
line = [line ',f2outfilt{' num2str(i_out) '}'];
end
end
line = [line ');'];
eval(line);
for i_out = 1:size(f2out,2)
f2out{2,i_out} = [f2out{2,i_out} f2outtemp{i_out}]; % catenate temporary variables with f2out
end
% sum bytes
sumbytes(1).total = sumbytes(1).total + sumbytes(1).dir(i_dir).total; % that level + the next one
list(i_file).bytes = sumbytes(1).dir(i_dir).total; % and set list(i_file).bytes to that value
if list(i_file).bytes & todel(end) == i_file
todel(end) = [];
end
end
end
todel(1) = [];
list(todel) = [];
for i_out = 1:size(f2out,2)
varargout{i_out} = f2out{2,i_out};
end
if nargout == 0
clear list
disp(char(f2out{2,1}));
end
......@@ -581,7 +581,7 @@ end
%%%%%%%%%%%%%%%%%%%%%%
% extrusive volcanism
%%%%%%%%%%%%%%%%%%%%%%
mu_av_extr = H2_mole*mass_H2 + H2O_mole*mass_H2O + CO_mole*mass_CO + CO2_mole*mass_CO2;
mu_av_extr = cumsum(H2_mole)*mass_H2 + cumsum(H2O_mole)*mass_H2O + cumsum(CO_mole)*mass_CO + cumsum(CO2_mole)*mass_CO2;
M_H2=zeros(1,nt);,M_H2O=zeros(1,nt);,M_CO=zeros(1,nt);,M_CO2=zeros(1,nt);
x = X_H2O_mole~=0; % in Matlab
y = X_CO2_mole~=0; % in Matlab
......@@ -604,7 +604,7 @@ mu_av =Chi_extr*mu_av_extr;
%%%%%%%%%%%%%%%%%%%%%%
% intrusive volcanism - below crust layer
%%%%%%%%%%%%%%%%%%%%%%
mu_av_cru = H2_mole_cru*mass_H2 + H2O_mole_cru*mass_H2O + CO_mole_cru*mass_CO + CO2_mole_cru*mass_CO2;
mu_av_cru = cumsum(H2_mole_cru)*mass_H2 + cumsum(H2O_mole_cru)*mass_H2O + cumsum(CO_mole_cru)*mass_CO + cumsum(CO2_mole_cru)*mass_CO2;
M_H2_c=zeros(1,nt);,M_H2O_c=zeros(1,nt);,M_CO_c=zeros(1,nt);,M_CO2_c=zeros(1,nt);
x = X_H2O_mole_cru~=0;
y = X_CO2_mole_cru~=0;
......@@ -627,7 +627,7 @@ mu_av =mu_av + Chi_intr_cru*mu_av_cru;
%%%%%%%%%%%%%%%%%%%%%%
% intrusive volcanism - inside crust
%%%%%%%%%%%%%%%%%%%%%%
mu_av_mid = H2_mole_mid*mass_H2 + H2O_mole_mid*mass_H2O + CO_mole_mid*mass_CO + CO2_mole_mid*mass_CO2;
mu_av_mid = cumsum(H2_mole_mid)*mass_H2 + cumsum(H2O_mole_mid)*mass_H2O + cumsum(CO_mole_mid)*mass_CO + cumsum(CO2_mole_mid)*mass_CO2;
M_H2_m=zeros(1,nt);,M_H2O_m=zeros(1,nt);,M_CO_m=zeros(1,nt);,M_CO2_m=zeros(1,nt);
x = X_H2O_mole_mid~=0;
y = X_CO2_mole_mid~=0;
......@@ -655,7 +655,7 @@ mu_av =mu_av + Chi_intr_mid*mu_av_mid;
%%%%%%%%%%%%%%%%%%%%%%
% intrusive volcanism - bottom of lithosphere
%%%%%%%%%%%%%%%%%%%%%%
mu_av_lid = H2_mole_lid*mass_H2 + H2O_mole_lid*mass_H2O + CO_mole_lid*mass_CO + CO2_mole_lid*mass_CO2;
mu_av_lid = cumsum(H2_mole_lid)*mass_H2 + cumsum(H2O_mole_lid)*mass_H2O + cumsum(CO_mole_lid)*mass_CO + cumsum(CO2_mole_lid)*mass_CO2;
M_H2_l=zeros(1,nt);,M_H2O_l=zeros(1,nt);,M_CO_l=zeros(1,nt);,M_CO2_l=zeros(1,nt);
x = X_H2O_mole_lid~=0; %in Matlab
y = X_CO2_mole_lid~=0; %in Matlab
......@@ -683,17 +683,24 @@ factor = Chi_intr_lid*(H2_mole_lid + H2O_mole_lid + CO_mole_lid + CO2_mole_lid)
Chi_intr_mid*(H2_mole_mid + H2O_mole_mid + CO_mole_mid + CO2_mole_mid) + ...
Chi_intr_cru*(H2_mole_cru + H2O_mole_cru + CO_mole_cru + CO2_mole_cru) + ...
Chi_extr*(H2_mole + H2O_mole + CO_mole + CO2_mole);
factor_cs = Chi_intr_lid*(cumsum(H2_mole_lid) + cumsum(H2O_mole_lid) + cumsum(CO_mole_lid) + cumsum(CO2_mole_lid)) + ...
Chi_intr_mid*(cumsum(H2_mole_mid) + cumsum(H2O_mole_mid) + cumsum(CO_mole_mid) + cumsum(CO2_mole_mid)) + ...
Chi_intr_cru*(cumsum(H2_mole_cru) + cumsum(H2O_mole_cru) + cumsum(CO_mole_cru) + cumsum(CO2_mole_cru)) + ...
Chi_extr*(cumsum(H2_mole) + cumsum(H2O_mole) + cumsum(CO_mole) + cumsum(CO2_mole));
%if (factor==0)
% factor = 1; % otherwise NaN partial pressures
%end
factor(factor==0)=1;
factor_cs(factor_cs==0)=1; % should only be zero if no outgassing in first timesteps, since sum up of all outgassing
H2_m_av =H2_m_av ./ factor;
H2O_m_av=H2O_m_av./ factor;
CO_m_av =CO_m_av ./ factor;
CO2_m_av=CO2_m_av./ factor;
mu_av =mu_av ./ factor;
H2_m_av =cumsum(H2_m_av)./factor_cs; %H2_m_av ./ factor;
H2O_m_av=cumsum(H2O_m_av)./factor_cs; %H2O_m_av./ factor;
CO_m_av =cumsum(CO_m_av)./factor_cs; %CO_m_av ./ factor;
CO2_m_av=cumsum(CO2_m_av)./factor_cs; %CO2_m_av./ factor;
%mu_av =mu_av ./ factor_cs;
mu_av = H2_m_av*mass_H2 + H2O_m_av*mass_H2O + CO_m_av*mass_CO + CO2_m_av*mass_CO2;
%H2_mole_lid=H2_mole_lid ./factor;, H2O_mole_lid=H2O_mole_lid ./factor;, CO_mole_lid=CO_mole_lid ./factor;, CO2_mole_lid=CO2_mole_lid ./factor;
%H2_mole_cru=H2_mole_cru ./factor;, H2O_mole_cru=H2O_mole_cru ./factor;, CO_mole_cru=CO_mole_cru ./factor;, CO2_mole_cru=CO2_mole_cru ./factor;
......@@ -853,7 +860,7 @@ cd(path_write);
fid=fopen(new_name,'w');
fprintf(fid,['time(Gyr) p_int_lid(bar) p_int_cru p_int_mid d_cr(km) d_lith(km) P_H2(bar) P_H2O P_CO P_CO2 mu_av M_tot_acc(kg) ', ...
'frac_H2_av frac_H2O_av frac_CO_av frac_CO2_av M_H2_in_l(kg) M_H2O_in_l M_CO_in_l M_CO2_in_l M_H2_in_c M_H2O_in_c M_CO_in_c M_CO2_in_c ',...
'frac_H2_atm frac_H2O_atm frac_CO_atm frac_CO2_atm M_H2_in_l(kg) M_H2O_in_l M_CO_in_l M_CO2_in_l M_H2_in_c M_H2O_in_c M_CO_in_c M_CO2_in_c ',...
'M_H2_in_m M_H2O_in_m M_CO_in_m M_CO2_in_m M_H2_extr M_H2O_extr M_CO_extr M_CO2_extr ',...
'Mt_H2_in_l(kg/yr) Mt_H2O_in_l Mt_CO_in_l Mt_CO2_in_l Mt_H2_in_c Mt_H2O_in_c Mt_CO_in_c Mt_CO2_in_c ',...
'Mt_H2_in_m Mt_H2O_in_m Mt_CO_in_m Mt_CO2_in_m Mt_H2_extr Mt_H2O_extr Mt_CO_extr Mt_CO2_extr d_atm(km) d_atm(Rp) P_tot(bar) \n']);
......
This diff is collapsed.
%dirname = uigetdir
[fname, fpath, fltidx] = uigetfile("data_atmosphere.res");
input = read_input(fpath); %PROBLEM: input values (e.g. rho, kappa etc.) are not the actual values used for non-dimensionalization in code if profiles are read-in
%Here one actually would need to start to read one of the snapshots until "ND" to get the non-dimensionalization coefficients!!!
[Rp,Rc,input.D,rho,grav]=get_profiles(fpath);
program_dir = cd(); % store octave path to be able to return
cd(fpath);
%data = load('-ascii',fname);
data = dlmread("data_atmosphere.res", "", 4, 0);
% time in Gyr, T_mean in K, maxval(df), mass_H2O, total_mass_H2O, mass_CO2, total_mass_CO2, mass_H2, total_mass_H2, mass_CO, total_mass_CO
% 1 2 3 4 5 6 7 8 9 10 11
% p_H2O, p_CO2, p_H2, p_CO, EGL H2O in m, frac_H2O,frac_CO2,frac_H2,frac_CO
% 12 13 14 15 16 17 18 19 20
figure
subplot(2,2,1)
plot(data(:,1),data(:,12),data(:,1),data(:,13),data(:,1),data(:,14),data(:,1),data(:,15))
xlabel('Time in Gyr')
ylabel('Partial pressures')
legend('H2O','CO2','CO','H2')
subplot(2,2,2)
plot(data(:,1),data(:,3))
xlabel('Time in Gyr')
ylabel('Max DF')
subplot(2,2,3)
plot(data(:,1),data(:,5),data(:,1),data(:,7),data(:,1),data(:,9),data(:,1),data(:,11))
xlabel('Time in Gyr')
ylabel('Mass in kg/yr')
legend('H2O','CO2','CO','H2')
subplot(2,2,4)
plot(data(:,1),data(:,4),data(:,1),data(:,6),data(:,1),data(:,8),data(:,1),data(:,10))
xlabel('Time in Gyr')
ylabel('Total mass in kg')
legend('H2O','CO2','CO','H2')
\ No newline at end of file
function [varargout] = rdir(rootdir,varargin)
% Lists the files in a directory and its sub directories.
%
% function [D] = rdir(ROOT,TEST)
%
% Recursive directory listing.
%
% ROOT is the directory starting point and includes the
% wildcard specification.
% The function returns a structure D similar to the one
% returned by the built-in dir command.
% There is one exception, the name field will include
% the relative path as well as the name to the file that
% was found.
% Pathnames and wildcards may be used. Wild cards can exist
% in the pathname too. A special case is the double * that
% will match multiple directory levels, e.g. c:\**\*.m.
% Otherwise a single * will only match one directory level.
% e.g. C:\Program Files\Windows *\
%
% TEST is an optional test that can be performed on the
% files. Two variables are supported, datenum & bytes.
% Tests are strings similar to what one would use in a
% if statement. e.g. 'bytes>1024 & datenum>now-7'
%
% If not output variables are specified then the output is
% sent to the screen.
%
% See also DIR
%
% examples:
% D = rdir('*.m');
% for ii=1:length(D), disp(D(ii).name); end;
%
% % to find all files in the current directory and sub directories
% D = rdir('**\*')
%
% % If no output is specified then the files are sent to
% % the screen.
% rdir('c:\program files\windows *\*.exe');
% rdir('c:\program files\windows *\**\*.dll');
%
% % Using the test function to find files modified today
% rdir('c:\win*\*','datenum>floor(now)');
% % Using the test function to find files of a certain size
% rdir('c:\program files\win*\*.exe','bytes>1024 & bytes<1048576');
%
% use the current directory if nothing is specified
if ~exist('rootdir','var'),
rootdir = '*';
end;
% split the file path around the wild card specifiers
prepath = ''; % the path before the wild card
wildpath = ''; % the path wild card
postpath = rootdir; % the path after the wild card
I = find(rootdir==filesep,1,'last');
if ~isempty(I),
prepath = rootdir(1:I);
postpath = rootdir(I+1:end);
I = find(prepath=='*',1,'first');
if ~isempty(I),
postpath = [prepath(I:end) postpath];
prepath = prepath(1:I-1);
I = find(prepath==filesep,1,'last');
if ~isempty(I),
wildpath = prepath(I+1:end);
prepath = prepath(1:I);
end;
I = find(postpath==filesep,1,'first');
if ~isempty(I),
wildpath = [wildpath postpath(1:I-1)];
postpath = postpath(I:end);
end;
end;
end;
% disp([' "' prepath '" ~ "' wildpath '" ~ "' postpath '" ']);
if isempty(wildpath),
% if no directory wildcards then just get file list
D = dir([prepath postpath]);
D([D.isdir]==1) = [];
for ii = 1:length(D),
if (~D(ii).isdir),
D(ii).name = [prepath D(ii).name];
end;
end;
% disp(sprintf('Scanning "%s" %g files found',[prepath postpath],length(D)));
elseif strcmp(wildpath,'**'), % a double wild directory means recurs down into sub directories
% first look for files in the current directory (remove extra filesep)
D = rdir([prepath postpath(2:end)]);
% then look for sub directories
Dt = dir('');
tmp = dir([prepath '*']);
% process each directory
for ii = 1:length(tmp),
if (tmp(ii).isdir && ~strcmpi(tmp(ii).name,'.') && ~strcmpi(tmp(ii).name,'..') ),
Dt = [Dt; rdir([prepath tmp(ii).name filesep wildpath postpath])];
end;
end;
D = [D; Dt];
else
% Process directory wild card looking for sub directories that match
tmp = dir([prepath wildpath]);
D = dir('');
% process each directory found
for ii = 1:length(tmp),
if (tmp(ii).isdir && ~strcmpi(tmp(ii).name,'.') && ~strcmpi(tmp(ii).name,'..') ),
D = [D; rdir([prepath tmp(ii).name postpath])];
end;
end;
end;
% Apply filter
if (nargin>=2 && ~isempty(varargin{1})),
date = [D.date];
datenum = [D.datenum];
bytes = [D.bytes];
try
eval(sprintf('D((%s)==0) = [];',varargin{1}));
catch
warning('Error: Invalid TEST "%s"',varargin{1});
end;
end;
% display listing if no output variables are specified
if nargout==0,
pp = {'' 'k' 'M' 'G' 'T'};
for ii=1:length(D),
sz = D(ii).bytes;
if sz<=0,
disp(sprintf(' %31s %-64s','',D(ii).name));
else
ss = min(4,floor(log2(sz)/10));
disp(sprintf('%4.0f %1sb %20s %-64s ',sz/1024^ss,pp{ss+1},D(ii).date,D(ii).name));
end;
end;
else
% send list out
varargout{1} = D;
end;
......@@ -76,4 +76,5 @@ H2O_diss(p_i) = 1-dX_H2O/X_H2O;
end
figure
semilogx(10.^(ln_p),CO2_diss,'r-',10.^(ln_p),H2O_diss,'b-')
\ No newline at end of file
File added
ifndef server
server=local
else
ifneq ($(server),local) #planeto, odin, FU linux pc
ifneq ($(server),hlrn)
ifneq ($(server),hpc)
ifneq ($(server),plato)
ifneq ($(server),asteria)
ifneq ($(server),soroban)
$(warning *** Wrong value server=$(server))
$(warning *** The correct values for server are local, asteria, soroban, plato, hlrn or hpc)
$(error )
endif
endif
endif
endif
endif
endif
endif