From 51d319df342e47052a241f205dcbce7059da2473 Mon Sep 17 00:00:00 2001 From: Kate Hedstrom Date: Fri, 2 Oct 2009 11:29:59 -0800 Subject: [PATCH] Initial commit --- Bin/cpp_clean | 44 + Bin/sfmakedepend | 783 ++++++++++++++++++ Caribbean/bathy.h | 36 + Caribbean/coast.h | 9 + Caribbean/coast.in | 4 + Caribbean/fort.60 | 12 + Caribbean/grid.h | 75 ++ Caribbean/grid.in | 12 + Caribbean/griddefs.h | 67 ++ Caribbean/gridid.h | 6 + Caribbean/gridparam.h | 12 + Caribbean/proj.h | 9 + Compilers/AIX-xlf.mk | 81 ++ Compilers/CYGWIN-df.mk | 91 ++ Compilers/CYGWIN-g95.mk | 59 ++ Compilers/Darwin-f90.mk | 64 ++ Compilers/Darwin-xlf.mk | 67 ++ Compilers/IRIX64-f90.mk | 74 ++ Compilers/Linux-f95.mk | 77 ++ Compilers/Linux-ftn.mk | 64 ++ Compilers/Linux-g95.mk | 64 ++ Compilers/Linux-gfortran.mk | 82 ++ Compilers/Linux-ifc.mk | 73 ++ Compilers/Linux-ifort.mk | 74 ++ Compilers/Linux-mpif90.mk | 68 ++ Compilers/Linux-path.mk | 65 ++ Compilers/Linux-pgi.mk | 67 ++ Compilers/MakeDepend | 115 +++ Compilers/OSF1-f90.mk | 69 ++ Compilers/SunOS-f95.mk | 74 ++ Compilers/SunOS-ftn.mk | 64 ++ Compilers/UNICOS-mk-f90.mk | 63 ++ Compilers/UNICOS-mp-ftn.mk | 64 ++ Compilers/UNICOS-sn-f90.mk | 64 ++ Drivers/Module.mk | 61 ++ Drivers/bathsoap.F | 304 +++++++ Drivers/bathsuds.F | 415 ++++++++++ Drivers/bathtub.F | 564 +++++++++++++ Drivers/coast.F | 232 ++++++ Drivers/grid.F | 1233 +++++++++++++++++++++++++++ Drivers/sphere.F | 506 ++++++++++++ Drivers/sqgrid.F | 676 +++++++++++++++ Drivers/tolat.F | 261 ++++++ External/coast.in | 41 + External/grid.in | 56 ++ External/grid_1.in | 12 + External/sqgrid.in | 440 ++++++++++ Include/bathy.h | 37 + Include/coast.h | 9 + Include/grid.h | 75 ++ Include/griddefs.h | 53 ++ Include/gridid.h | 6 + Include/gridparam.h | 2 + Include/ncgrid.h | 43 + Include/proj.h | 9 + Include/sphereflags.h | 14 + Obsolete/README | 71 ++ Obsolete/README.4 | 132 +++ Obsolete/README.Compilers | 21 + Obsolete/automask | 111 +++ Obsolete/bloc.F | 80 ++ Obsolete/combbathy.F | 145 ++++ Obsolete/lectgrid.F | 51 ++ Obsolete/mapbath.F | 444 ++++++++++ Obsolete/maptst.F | 349 ++++++++ USwest/bathy.h | 36 + USwest/grid.h | 75 ++ USwest/grid.in | 50 ++ USwest/griddefs.h | 67 ++ USwest/gridid.h | 6 + USwest/gridparam.h | 12 + USwest/proj.h | 9 + USwest/sandwell-6.2.nc | Bin 0 -> 1330888 bytes USwest/uswest_1 | 39 + USwest/uswest_1.M | 50 ++ USwest/uswest_1.proj | 9 + USwest/uswest_1.uv | 53 ++ Utility/Module.mk | 8 + Utility/blktri.F | 1556 +++++++++++++++++++++++++++++++++++ Utility/checkdefs.F | 105 +++ Utility/comf.F | 206 +++++ Utility/cpsfill.F | 514 ++++++++++++ Utility/def_grid.F | 572 +++++++++++++ Utility/drawcoast.F | 49 ++ Utility/extract.F | 96 +++ Utility/genbun.F | 1370 ++++++++++++++++++++++++++++++ Utility/geodesic_dist.F | 195 +++++ Utility/get_date.F | 287 +++++++ Utility/get_h.F | 103 +++ Utility/get_lat.F | 191 +++++ Utility/get_mn.F | 98 +++ Utility/get_rmask.F | 81 ++ Utility/get_xy.F | 190 +++++ Utility/gnbnaux.F | 337 ++++++++ Utility/opencdf.F | 158 ++++ Utility/ploth.F | 318 +++++++ Utility/sepaux.F | 406 +++++++++ Utility/sepeli.F | 1084 ++++++++++++++++++++++++ Utility/sepx4.F | 1012 +++++++++++++++++++++++ Utility/start_plot.F | 34 + Utility/uv_mask.F | 39 + Utility/vminmax.F | 31 + Utility/wrt_all.F | 293 +++++++ Utility/wrt_fhmn.F | 135 +++ Utility/wrt_h.F | 82 ++ Utility/wrt_lat.F | 151 ++++ Utility/wrt_mask.F | 97 +++ makefile | 346 ++++++++ 108 files changed, 19655 insertions(+) create mode 100755 Bin/cpp_clean create mode 100755 Bin/sfmakedepend create mode 100644 Caribbean/bathy.h create mode 100644 Caribbean/coast.h create mode 100644 Caribbean/coast.in create mode 100644 Caribbean/fort.60 create mode 100644 Caribbean/grid.h create mode 100644 Caribbean/grid.in create mode 100644 Caribbean/griddefs.h create mode 100644 Caribbean/gridid.h create mode 100644 Caribbean/gridparam.h create mode 100644 Caribbean/proj.h create mode 100644 Compilers/AIX-xlf.mk create mode 100644 Compilers/CYGWIN-df.mk create mode 100644 Compilers/CYGWIN-g95.mk create mode 100644 Compilers/Darwin-f90.mk create mode 100644 Compilers/Darwin-xlf.mk create mode 100644 Compilers/IRIX64-f90.mk create mode 100644 Compilers/Linux-f95.mk create mode 100644 Compilers/Linux-ftn.mk create mode 100644 Compilers/Linux-g95.mk create mode 100644 Compilers/Linux-gfortran.mk create mode 100644 Compilers/Linux-ifc.mk create mode 100644 Compilers/Linux-ifort.mk create mode 100644 Compilers/Linux-mpif90.mk create mode 100644 Compilers/Linux-path.mk create mode 100644 Compilers/Linux-pgi.mk create mode 100644 Compilers/MakeDepend create mode 100644 Compilers/OSF1-f90.mk create mode 100644 Compilers/SunOS-f95.mk create mode 100644 Compilers/SunOS-ftn.mk create mode 100644 Compilers/UNICOS-mk-f90.mk create mode 100644 Compilers/UNICOS-mp-ftn.mk create mode 100644 Compilers/UNICOS-sn-f90.mk create mode 100644 Drivers/Module.mk create mode 100644 Drivers/bathsoap.F create mode 100644 Drivers/bathsuds.F create mode 100644 Drivers/bathtub.F create mode 100644 Drivers/coast.F create mode 100644 Drivers/grid.F create mode 100644 Drivers/sphere.F create mode 100644 Drivers/sqgrid.F create mode 100644 Drivers/tolat.F create mode 100644 External/coast.in create mode 100644 External/grid.in create mode 100644 External/grid_1.in create mode 100644 External/sqgrid.in create mode 100644 Include/bathy.h create mode 100644 Include/coast.h create mode 100644 Include/grid.h create mode 100644 Include/griddefs.h create mode 100644 Include/gridid.h create mode 100644 Include/gridparam.h create mode 100644 Include/ncgrid.h create mode 100644 Include/proj.h create mode 100644 Include/sphereflags.h create mode 100644 Obsolete/README create mode 100644 Obsolete/README.4 create mode 100644 Obsolete/README.Compilers create mode 100755 Obsolete/automask create mode 100644 Obsolete/bloc.F create mode 100644 Obsolete/combbathy.F create mode 100644 Obsolete/lectgrid.F create mode 100644 Obsolete/mapbath.F create mode 100644 Obsolete/maptst.F create mode 100644 USwest/bathy.h create mode 100644 USwest/grid.h create mode 100644 USwest/grid.in create mode 100644 USwest/griddefs.h create mode 100644 USwest/gridid.h create mode 100644 USwest/gridparam.h create mode 100644 USwest/proj.h create mode 100644 USwest/sandwell-6.2.nc create mode 100644 USwest/uswest_1 create mode 100644 USwest/uswest_1.M create mode 100644 USwest/uswest_1.proj create mode 100644 USwest/uswest_1.uv create mode 100644 Utility/Module.mk create mode 100644 Utility/blktri.F create mode 100644 Utility/checkdefs.F create mode 100644 Utility/comf.F create mode 100644 Utility/cpsfill.F create mode 100644 Utility/def_grid.F create mode 100644 Utility/drawcoast.F create mode 100644 Utility/extract.F create mode 100644 Utility/genbun.F create mode 100644 Utility/geodesic_dist.F create mode 100644 Utility/get_date.F create mode 100644 Utility/get_h.F create mode 100644 Utility/get_lat.F create mode 100644 Utility/get_mn.F create mode 100644 Utility/get_rmask.F create mode 100644 Utility/get_xy.F create mode 100644 Utility/gnbnaux.F create mode 100644 Utility/opencdf.F create mode 100644 Utility/ploth.F create mode 100644 Utility/sepaux.F create mode 100644 Utility/sepeli.F create mode 100644 Utility/sepx4.F create mode 100644 Utility/start_plot.F create mode 100644 Utility/uv_mask.F create mode 100644 Utility/vminmax.F create mode 100644 Utility/wrt_all.F create mode 100644 Utility/wrt_fhmn.F create mode 100644 Utility/wrt_h.F create mode 100644 Utility/wrt_lat.F create mode 100644 Utility/wrt_mask.F create mode 100644 makefile diff --git a/Bin/cpp_clean b/Bin/cpp_clean new file mode 100755 index 0000000..c479009 --- /dev/null +++ b/Bin/cpp_clean @@ -0,0 +1,44 @@ +#!/usr/bin/perl +# +# This script is used to clean CPP files. It removes: +# +# 1) Lines with '#' in column 1 (lines inserted by CPP). +# 2) Lines with '!!' in columns 1:2 (double commented lines). +# 3) Lines with '!$!' in columns 1:3 (removes OpenMP directives). +# 4) Blank lines. +# 5) Fixes placement of trailing '&' +# + +my $file = $ARGV[0]; +my $tmp = "tmp.$$"; +open(FILE, "$file"); +open(TMP, ">$tmp") || die "Can't open tmp file"; + +while () { + next if /^#/; + next if /^!!/; + next if /^!\$\!/; + next if /^\s*$/; + $a=rindex($_,"&"); + if(/\&(\ )*$/ && $a!=72){ + $l=length(); + if($a<72){ + $t=($a-1)-72; + $t2=-$t; + $sp=""; + for($i=1;$i<$t2;$i++){ + $sp=$sp . " "; + } + substr($_,-2,-$t-1)="$sp&\n"; + } + if($a>72){ + $t=72-($l); + substr($_,$t,-$t-1) = "&"; + } + } + print TMP; +} +close(FILE); +close(TMP); + +rename($tmp, $file); diff --git a/Bin/sfmakedepend b/Bin/sfmakedepend new file mode 100755 index 0000000..f6fd870 --- /dev/null +++ b/Bin/sfmakedepend @@ -0,0 +1,783 @@ +#!/usr/bin/env perl +# +# svn $Id: sfmakedepend 1012 2009-07-07 20:52:45Z kate $ +####################################################################### +# Copyright (c) 2002-2009 The ROMS/TOMS Group # +# Licensed under a MIT/X style license # +# See License_ROMS.txt # +##################################################### Kate Hedstrom ### +# # +# Fortran 90/77 dependency checker, version 2007b. # +# # +####################################################################### + +use 5.6.0; +use strict; +use File::Basename; +use Getopt::Long; +use Pod::Usage; +use Getopt::Long; +use File::Copy; + +my ($opt_help, $opt_man, $opt_file, @incdirs, @srcdirs, @defines, + $opt_modext, $opt_case, $compiler, $opt_depend, $drop_circ); +our ($cpp, $add_ext, $mod_dir, $libdeps, $longpath, $obj_dir, %defines, + $silent); +our $obj_ext = 'o'; +our $ext = 'f'; + +# Parse the arguments, do the right thing for --help, --man. +Getopt::Long::Configure( "bundling" ); +GetOptions("help" => \$opt_help, "man" => \$opt_man, + "file=s" => \$opt_file, "I=s@" => \@incdirs, + "srcdir=s@" => \@srcdirs, "moddir=s" => \$mod_dir, + "fext=s" => \$ext, "objext=s" => \$obj_ext, + "modext=s" => \$opt_modext, "addext=s" => \$add_ext, + "case=s" => \$opt_case, "compiler=s" => \$compiler, + "depend=s" => \$opt_depend, "cpp" => \$cpp, + "libdeps" => \$libdeps, "drop" => \$drop_circ, + "longpath" => \$longpath, "objdir=s" => \$obj_dir, + "D=s@" => \@defines, "silent" => \$silent ) + or pod2usage("Try '$0 --help' for more information"); +pod2usage(-verbose => 1) if $opt_help; +pod2usage(-verbose => 2) if $opt_man; + +our @suffixes = qw( .c .C .cc .cxx .cpp .f .F .f90 .F90 .f95 .F95 .for); +our @mod_files = (); + +my $mf = 'Makefile'; +if ($opt_file) { + $mf = $opt_file; +} elsif (-f "makefile") { + $mf = 'makefile'; +} +if ( !(-f $mf) && ($mf ne '-')) { + system "touch $mf"; +} + +if (@defines) { + my $foo; + foreach $foo (@defines) { + my($before, $after) = split /=/, $foo; + $defines{$before} = $after; + } +} + +# extension used for compiler's private module information +our $mod_ext = "mod"; +our $depend = "obj"; +our $case = "lower"; +our $obj_dep_flag; +my $ll = 79; # maximum line length in Makefile +my $cray; +my $parasoft; +my $nothing = "\n"; + +# Check the compiler first, then override the compiler-specific defaults +if ($compiler) { + if ($compiler eq "crayold") { + $cray = 1; + $case = "lower"; + $depend = "obj"; + $obj_dep_flag = "-p"; + } elsif ($compiler eq "cray") { + $case = "upper"; + } elsif ($compiler eq "parasoft") { + $parasoft = 1; + $case = "lower"; + $depend = "obj"; + $obj_dep_flag = "-module"; + } elsif ($compiler eq "sgiold") { + $mod_ext = "kmo"; + $case = "upper"; + } elsif ($compiler eq "sgi" or $compiler eq "hp" or + $compiler eq "absoft") { + $case = "upper"; + } elsif ($compiler eq "nag" or $compiler eq "ibm" or + $compiler eq "sun") { + $case = "lower"; + } else { + warn "Unknown compiler: $compiler\n"; + } +} + +$depend = $opt_depend if defined($opt_depend); +if ($depend eq "obj") { + $drop_circ = 1; +} + +$case = $opt_case if defined($opt_case); + +# extension used for compiler's private module information +if ($opt_modext) { + $mod_ext = $opt_modext; +} + +# need to add some more dependencies so the .f file gets created +our $need_f; +if ($cpp and $depend eq "obj") { + $need_f = 1; +} + +my $mystring = '# DO NOT DELETE THIS LINE - used by make depend'; + +# Search for the includes in all the files +my $file; +my %sources; +foreach $file (@ARGV) { + my $filesrc = findsrc($file); + $sources{$file} = new Source_File($file, $filesrc, $filesrc); + $sources{$file}->find_includes(); +} + +# Create new Makefile with new dependencies. + +if ($mf ne "-") { + copy( "$mf", "$mf.old"); + open(MFILE, "$mf.old") || die "can't read Makefile $mf.old: $!\n"; + open(NMFILE, "> $mf") || die "can't write $mf: $!\n"; + select(NMFILE); + + while () { + if (!/$mystring/) { + print; + } else { + last; + } + } + print $mystring, "\n"; +} + +# Now print out include and use dependencies in sorted order. +my $target; +foreach $target (sort keys(%sources)) { + $sources{$target}->print(); +# Hernan hack + print $nothing; +} + +# print out module dependencies +if ( !( $cray || $parasoft) ) { + my $modname; + foreach $modname (sort keys(%main::mod_files)) { + my ($name, $path, $suffix) = fileparse( + $sources{$main::mod_files{$modname}}->{'filepath'}, @suffixes); + my $object = $name . "." . $obj_ext; + if (!( $drop_circ && lc($modname) eq lc($name)) ) { + $object =~ s#^\./##; + print "$modname.$mod_ext: $object\n"; + } + } +} + +# +# End of main +# + +sub findfile { +# Let's see if we can find the included file. Look in current +# directory first, then in directories from -I arguments. + my $file = shift; + my ($found, $i, $filepath); + + $found = 0; + + if ( -f $file ) { + $found = 1; + $file =~ s#^\./##; # convert ./foo.h to foo.h + return $file; + } + foreach $i (0 .. $#incdirs) { + $filepath = $incdirs[$i]."/".$file; + if ( -f $filepath ) { + $found = 1; + $filepath =~ s#^\./##; # convert ./foo.h to foo.h + return $filepath; + } + } + if ( ! $found ) { + $filepath = ""; + } + $filepath; +} +#----------------------------------------------------------------------- +sub findsrc { +# Let's see if we can find the source-file. Look in current +# directory first, then in directories from --srcdir arguments. + my $src = shift; + my($found, $i, $srcpath); + + $found = 0; + + if ( -f $src ) { + $found = 1; + $src =~ s#^\./##; # convert ./foo.h to foo.h + return $src; + } + foreach $i (0 .. $#srcdirs) { + $srcpath = $srcdirs[$i]."/".$src; + if ( -f $srcpath ) { + $found = 1; + $srcpath =~ s#^\./##; # convert ./foo.h to foo.h + return $srcpath; + } + } + if ( ! $found ) { + $srcpath = ""; + } + $srcpath; +} + +################################################################# +package Source_File; + +# hash containing names of included files +my %inc_files = (); +my %flist; + +# Constructor +sub new { + my $type = shift; + my $filename = shift; + my $path = shift; + my $parent = shift; + my $self = {}; + $self->{'Source_File'} = $filename; + $self->{'filepath'} = $path; + $self->{'parent'} = $parent; + $self->{'includes'} = {}; + $self->{'uses'} = {}; + $self->{'modules'} = {}; + bless $self; +} + +sub find_includes { + my $self = shift; + my $file = $self->{'filepath'}; + my $parent = $self->{'parent'}; + my($after, $filepath, $ref, $included, $use, $modname); + local(*FILE); + local($_); + + if (-f $file) { + open(FILE, $file) || $silent || warn "Can't open $file: $!\n"; + } else { + return; + } + while () { + $included = ""; + $use = ""; + # look for Fortran style includes + if (/^\s*include\s*['"]([^"']*)["']/i) { + $included = $1; + $after = $'; + # C preprocessor style includes + } elsif (/^#\s*include\s*["<]([^">]*)[">]/) { + $included = $1; + $after = $'; + # Fortran 90 "use" + } elsif (/^\s*use\s+(\w+)/i) { + # Gavin Salam attempt at dealing with multiple uses on one line + # remove trailing comments (do not take uses after a comment!) + s/\!.*//; + # try and get multiple use commands + my @commands = split(';',$_); + while (my $command = shift @commands) { + if ($command =~ /^\s*use\s+(\w+)/i) { + $use = $1; + # Change the case as needed - compiler dependent. + if ($main::case eq "upper") { + $use = uc($use); + } elsif ($main::case eq "lower") { + $use = lc($use); + } + $self->{'uses'}{$use} = 1; + } + } + # Fortran 90 module + } elsif (/^\s*module\s+(\w+)/i) { + $modname = $1; + if ($main::case eq "upper") { + $modname = uc($modname); + } elsif ($main::case eq "lower") { + $modname = lc($modname); + } + # Skip "module procedure" in interface blocks + next if (lc($modname) eq "procedure"); + + $main::mod_files{$modname} = $parent; + $self->{'modules'}{$modname} = 1; + } + # C preprocessor style includes of a -DROMS_HEADER sort + my $key; + foreach $key (keys(%defines)) { + if (/^#\s*include\s*($key)/) { + $included = $defines{$key}; + $after = $'; + } + } + if ($included) { + # See if we've already searched this file + if ( $inc_files{$included} ) { + $filepath = $inc_files{$included}{'filepath'}; + } else { + $filepath = main::findfile($included); + $ref = new Source_File($included, $filepath, $parent); + $inc_files{$included} = $ref; +# Search included file for includes + $ref->find_includes(); + } + if ( $filepath ) { + $self->{'includes'}{$included} = 1; + } else { + if ($after !~ /bogus/i) { + $silent || warn "Can't find file: $included\n"; + } + } + } + } + close FILE; +} + +sub print_includes { + my $self = shift; + my $target = shift; + my $len_sum = shift; + my $file; + my $len; + + foreach $file (keys %{$self->{'includes'}}) { + if (!$flist{$file}) { + $flist{$file} = 1; + my $ref = $inc_files{$file}; + if ($longpath) { + $len = length($ref->{'filepath'}) + 1; + } else { + $len = length($ref->{'Source_File'}) + 1; + } + if (($len_sum + $len > $ll) && + (length($target) + 1 < $len_sum)) { + print "\n$target:"; + $len_sum = length($target) + 1; + } + if ($longpath) { + print " " . $ref->{'filepath'}; + } else { + print " " . $ref->{'Source_File'}; + } + $len_sum += $len; + $len_sum = $ref->print_includes($target, $len_sum); + } + } + $len_sum; +} + +# return list of modules used by included files +sub inc_mods { + my $self = shift; + my($file, $ref, $mod, @sub_list); + my @list = (); + + foreach $mod (keys %{$self->{'uses'}}) { + push(@list, $mod); + } + + foreach $file (keys %{$self->{'includes'}}) { + $ref = $inc_files{$file}; + @sub_list = $ref->inc_mods(); + @list = (@list, @sub_list); + } + @list; +} + +# filenames containing the modules used by file and all its includes +sub find_mods { + my $self = shift; + my($modname, $file); + my @module_files = (); + my @mod_list = (); + +# find modules used by include files + if (%{$self->{'includes'}}) { + foreach $file (keys %{$self->{'includes'}}) { + my $ref = $inc_files{$file}; + my @list = $ref->inc_mods(); + @mod_list = (@mod_list, @list); + } + } + +# add them to the uses list (hash ensures uniqueness) + foreach $modname (@mod_list) { + $self->{'uses'}{$modname} = 1; + } + +# now find the filename that contains the module information + foreach $modname (keys %{$self->{'uses'}}) { + if ($main::depend eq "obj") { + if ($file = $main::mod_files{$modname}) { + my $base = main::basename($file, @main::suffixes); + $file = $base . "." . $main::obj_ext; + push(@module_files, $file); + } elsif ( !$silent ) { + warn "Don't know where module $modname lives.\n"; + } + } else { + if ($main::libdeps or defined($main::mod_files{$modname})) { + $modname .= "." . $main::mod_ext; + push(@module_files, $modname); + } elsif ( !$silent ) { + warn "Couldn't locate source for module $modname\n"; + } + } + } + sort(@module_files); +} + +sub print { + my $self = shift; + my $source = $self->{'Source_File'}; + my $compile_string = "\t" . '$(F90) $(F90FLAGS) -c'; + my($len_sum, $len); + my($base, $object, $modname, $flag, $target, $ftarget); + + $base = main::basename($source, @main::suffixes); + $base = $main::obj_dir . '/' . $base if $main::obj_dir; + $target = $base . "." . $main::obj_ext; + if ($main::cpp) { + $ftarget = $base . "." . $main::ext; + } + + $flag = $main::obj_dep_flag; + +# print out "include" dependencies + %flist = (); + if (%{$self->{'includes'}}) { + $len_sum = length($target) + 1; + if ($main::add_ext) { + print "$base.$main::add_ext "; + $len_sum += length($base) + length($main::add_ext) + 2; + } + print "$target:"; + $self->print_includes($target, $len_sum); + print "\n"; + if ($main::cpp) { + %flist = (); + $len_sum = length($ftarget) + 1; + print "$ftarget:"; + $self->print_includes($ftarget, $len_sum); + print "\n"; + } + } + +# clean out "use" of modules in own file + my $mod; + foreach $mod ( keys %{$self->{'uses'}} ) { + if ( ${$self->{'modules'}}{$mod} ) { + delete ${$self->{'uses'}}{$mod}; + } + } + +# print out "use" dependencies + if (%{$self->{'uses'}} || %{$self->{'includes'}}) { + my @module_files = $self->find_mods(); + $len_sum = 0; + my $file; + foreach $file (@module_files) { + $file = $main::mod_dir . '/' . $file if $main::mod_dir; + if( $len_sum < 1 ) { + $len_sum = length($target) + 1; + print "$target:"; + } + $len = length($file) + 1; + if (($len_sum + $len > $ll) && + (length($target) + 1 < $len_sum)) { + print "\n$target:"; + $len_sum = length($target) + 1; + } + $len_sum += $len; + print " " . $file; + } + if ($main::need_f) { + $len = length($ftarget) + 1; + if (($len_sum + $len > $ll) && + (length($target) + 1 < $len_sum)) { + print "\n$target:"; + $len_sum = length($target) + 1; + } + print " " . $ftarget if $len_sum; + } + print "\n" if $len_sum; +# extra Cray / Parasoft stuff + if ($flag) { + print $compile_string; + foreach $file (@module_files) { + print $flag . $file; + } + if ($main::cpp) { + print " " . $ftarget . "\n"; + } else { + print " " . $source . "\n"; + } + } + } +} + +__END__ + +sfmakedepend - Fortran Dependency Checker + +=head1 SYNOPSIS + +sfmakedepend [--help] [--man] [--file=file] [-I dir] + [--srcdir dir] [--objdir dir] [--moddir dir] + [--fext ext] [--objext ext] [--modext ext] + [-D TAG=file] [--addext ext] [--case=up|down|asis] + [--compiler=crayold|cray|sgiold|sgi|nag|ibm| + parasoft|hp|absoft|sun] + [--depend=mod|obj] [--cpp] [--libdeps] [--drop] + [--silent] file ... + +=head1 DESCRIPTION + +This is a makedepend script for Fortran, including Fortran 90. +It searches for Fortran style includes, C preprocessor includes, +and module dependencies to the extent that I understand them. + +Your files must have an extension listed in the @suffixes list +in the code. You might also want to modify $compile_string; +the compiler is called $(F90). + +=head1 OPTIONS AND ARGUMENTS + +=over 4 + +=item I<--help> + +Print more details about the arguments. + +=item I<--man> + +Print a full man page. + +=item I<--file file> + +Change the name of the current Makefile (default is Makefile). +Use "--file -" to write to stdout. + +=item I<-I dir> + +Look in alternate directories for the include files. There can be +several "-I dir" options used at once. The current directory is +still searched first. + +=item I<--srcdir dir> + +Look in alternate directories for the source files, much like VPATH. +It can be used multiple times to search in more than one directory. + +=item I<--objdir dir> + +Tells sfmakedepend to prepend objdir to all object references (and +cpp output files if used). This is required if you use a build +directory that isn't your current directory. + +=item I<--moddir dir> + +Tells sfmakedepend to prepend moddir to all module references. This +is required if you use a common module library directory for a +multi-directory project (+moddir= .. option on HP, eg.). + +=item I<--fext> + +This is used with the --cpp switch for compilers +which expect an extension other than .f on source files. For +instance, one might choose to use "--fext f90". + +=item I<--objext ext> + +Tells sfmakedepend what extension to use for object files. The +default is "o", but "obj", for instance, is +appropriate on MS-DOG etc. + +=item I<--modext ext> + +Specifies the extension to use for Fortran 90 module files. The default +extension is "mod" since this seems to be an emerging standard. Let +me know if other compilers use a different filename for the module +information (keep that --compiler option up to date). + +=item I<--D tag=file> + +Tells sfmakedepend to search the source files for lines such as: + + #include MY_CHEESE + +Where MY_CHEESE is set with a -DMY_CHEESE="wensleydale.h". + +=item I<--addext ext> + +Tells sfmakedepend to add targets with extension add_ext to the rules +for object files. For instance, to operate with (f77) ftnchek .prj +files, you could use + +`--addext prj' to get rules like: +foo.prj foo.o: ... + +=item I<--case up|down|asis> + +Controls case of module names when generating module file names. Only +relevant where the module file name is named after the module rather +than after the source file. + +=item I<--compiler=crayold|cray|sgiold|sgi|nag|ibm|parasoft|hp|absoft|sun> + +Controls the type of target compiler, setting the module name and other +options appropriately. The cray option assumes that FFLAGS includes +-e m for creating the .mod file, while crayold refers to the default of +including that information in the object file. + +=item I<--depend=mod|obj> + +Whether to use the module information file or the module object file +in dependencies. + +=item I<--cpp> + +There are times when one might choose to run .F files through cpp and +to keep the .f files (for the debugger or for a custom preprocessor). +In that case, make must be told about the cpp include dependencies of +the .f files. This option will provide those dependencies. + +=item I<--libdeps> + +Generate dependencies on modules for which source code is not +available. Otherwise a warning is issued, but the dependency is not +listed. + +=item I<--longpath> + +Keep the full path to the include files in the dependency. Otherwise, +just print the filename and use VPATH to provide the directory +information. + +=item I<--drop> + +Drop module dependencies (my_mod.mod: my_mod.o). This is also done when +--depend=obj. + +=item I<--silent> + +The default is to warn about unfound files. This option causes those +warnings to not be printed. + +=item I<[file ...]> + +The list of source files to search for dependencies. + +=back + +=head1 EXAMPLE + +Search for include files in /usr/local/include: + + sfmakedepend --cpp --fext=f90 -I /usr/local/include *.F + +Example usage in gnuMakefile: + + SRCDIRS= srcdir1 srcdir2 srcdir3 ... + FSRCS0 := $(foreach DIR, . $(SRCDIRSH),$(wildcard $(DIR)/*.f)) + FSRCS := $(sort $(notdir $(FSRCS0))) + + F_makedepend=sfmakedepend --file - $(addprefix --srcdir ,$(SRCDIRSH)) \ + $(subst -I,-I ,$(Includes)) + depend $(MAKEFILE_INC): + $(F_makedepend) $(FSRCS) >> $(MAKEFILE_INC) + + include $(MAKEFILE_INC) + +=head1 AUTHOR + +Kate Hedstrom (kate@arsc.edu) + First Perl 5 Fortran 90 version November 1994. + +=head1 CONTRIBUTORS + + Dave Love (d.love@dl.ac.uk) + Added the --objext and --addext options (1996). + + Patrick Jessee + Added hp support (1997, now in --compiler option). + + Sergio Gelato (gelato@tac.dk) + Added the --compiler, --depend, --case options, and + --(no)libdeps (1998). + + Tobias Buchal (buchal@ifh.bau-verm.uni-karlsruhe.de) + Added the --srcdir and --file - options (1999). + + Klaus Ramstock (klaus@tdm234.el.utwente.nl) + Added the --moddir option (1999). + + Sandra Schroedter (sandra@fsg-ship.de) + Fix to preserve Makefile links (1999). + + Holger Bauer (bauer@itsm.uni-stuttgart.de) + Added the --drop option (2000). + + Gavin Salam (salam@lpthe.jussieu.fr) + Made it recognize multiple "use"s on one line (2005). + +Others I've doubtless forgotten. + +=cut +# +# NOTES +# This makedepend script is my first attempt at using perl 5 +# objects. Therefore, it may not be the best example of how +# to do this. Also, it requires perl 5 and will die if you +# to use it with an older perl. The latest version is +# available from: +# +# http://www.arsc.edu/~kate/Perl/ +# ftp://ahab.rutgers.edu/pub/perl/sfmakedepend +# +# Fortran 90 introduces some interesting dependencies. Two +# compilers I have access to (NAG f90 and IBM xlf) produce a +# private "mod_name.mod" file if you define "module mod_name" +# in your code. This file is used by the compiler when you +# use the module as a consistency check (type-safe). On the +# other hand, the Cray and Parasoft compilers store the module +# information in the object file and then files which use the +# modules need to be compiled with extra flags pointing to the +# module object files. +# +# This script assumes that all the files using and defining +# modules are in the same directory and are all in the list of +# files to be searched. It seems that the industry has not +# settled on a practical way to deal with a separate modules +# directory, anyway. +# +# I sometimes include non-existent files as a compile time +# consistency check: +# +# #ifndef PLOTS +# #include "must_define_PLOTS" /* bogus include */ +# #endif +# +# This program warns about include files it can't find, but +# not if there is a "bogus" on the same line. +# +# * The f90 module dependencies can confuse some versions of +# make, especially of the System V variety. We use gnu +# make because it has no problems with these dependencies. +# +# BUGS +# It can sometimes produce duplicate dependencies. +# +# It treats C preprocessor includes the same as Fortran +# includes. This can add unnecessary dependencies if you +# use the -s flag and both kinds of includes. +# +# Please let me know if you find any others. +# Kate Hedstrom +# kate@arsc.edu diff --git a/Caribbean/bathy.h b/Caribbean/bathy.h new file mode 100644 index 0000000..94b8024 --- /dev/null +++ b/Caribbean/bathy.h @@ -0,0 +1,36 @@ +#include "gridparam.h" + integer Lm, Mm, Lp, Mp, L2d + parameter ( Lm=L-1 , Mm=M-1 , Lp=L+1, Mp=M+1 ) + parameter ( L2d=Lp*Mp ) +! lcflag tells which color bar to use, 1 - 3 (so far). If negative +! then black outlines are drawn over the color contour regions. + integer lcflag + parameter ( lcflag=-5 ) + real x_v(0:L+2,0:M+2), y_v(0:L+2,0:M+2) + common /xxyys/ x_v, y_v + BIGREAL xp(L,M), yp(L,M), xr(0:L,0:M), yr(0:L,0:M), & + & xu(L,0:M), yu(L,0:M), xv(0:L,M), yv(0:L,M), & + & xl, el + real xmin, ymin, xmax, ymax + common /grdpts/ xp, yp, xr, yr, xu, yu, xv, yv, xl, el, & + & xmin, ymin, xmax, ymax + BIGREAL f(0:L,0:M), h(0:L,0:M) + common /parm/ f, h + BIGREAL pm(0:L,0:M), pn(0:L,0:M), & + & dndx(0:L,0:M), dmde(0:L,0:M) + common /pmpn/ pm, pn, dndx, dmde + BIGREAL lat_psi(L,M), lon_psi(L,M), & + & lat_rho(0:L,0:M), lon_rho(0:L,0:M), & + & lat_u(L,0:M), lon_u(L,0:M), & + & lat_v(0:L,M), lon_v(0:L,M) + common /latlon/ lat_psi, lon_psi, lat_rho, lon_rho, & + & lat_u, lon_u, lat_v, lon_v + BIGREAL mask_rho(0:L,0:M), mask_u(L,0:M), & + & mask_v(0:L,M), mask_psi(L,M) + common /rmask/ mask_rho, mask_u, mask_v, mask_psi + BIGREAL angle(0:L,0:M) + common /angles/ angle + integer*2 depthmin, depthmax + common /hmins/ depthmin, depthmax + logical spherical + common /logic/ spherical diff --git a/Caribbean/coast.h b/Caribbean/coast.h new file mode 100644 index 0000000..d6d0fbf --- /dev/null +++ b/Caribbean/coast.h @@ -0,0 +1,9 @@ + integer IBIG + parameter ( IBIG = 300) + real clat(IBIG), clong(IBIG) + common /coast/ clat, clong +! backward is a logical variable which is true if you read in the +! data in the direction opposite to the direction it should be +! written out for the grid program. + logical backward + parameter ( backward = .false. ) diff --git a/Caribbean/coast.in b/Caribbean/coast.in new file mode 100644 index 0000000..c58b5ff --- /dev/null +++ b/Caribbean/coast.in @@ -0,0 +1,4 @@ + 30. -98. + 9. -98. + 9. -60. + 30. -60. diff --git a/Caribbean/fort.60 b/Caribbean/fort.60 new file mode 100644 index 0000000..2d85d28 --- /dev/null +++ b/Caribbean/fort.60 @@ -0,0 +1,12 @@ + 2 + -2001420.500 3499475.250 + -2001420.500 1004851.062 + 2 + -2001420.500 1004851.062 + 2223800.500 1004851.062 + 2 + 2223800.500 1004851.062 + 2223800.500 3499475.250 + 2 + 2223800.500 3499475.250 + -2001420.500 3499475.250 diff --git a/Caribbean/grid.h b/Caribbean/grid.h new file mode 100644 index 0000000..7097627 --- /dev/null +++ b/Caribbean/grid.h @@ -0,0 +1,75 @@ +#include "griddefs.h" +#include "bathy.h" + integer ITMAX, IBIG + parameter ( ITMAX=8, IBIG=400 ) +! ITMAX is the number of iterations to perform +! IBIG is the largest number of points to be read in for one +! boundary. +! +! original distribution of x,y points is preserved on boundary kb1 +! and kb2: + integer kb1, kb2 + parameter ( kb1 = 1, kb2 = 4 ) + + integer L2, M2, L2big, M2big, nwrk + integer N, N1, N2, N3, N4 + parameter ( L2=2*(L-1), M2=2*(M-1) ) + parameter ( L2big=2*Lm, M2big=2*Mm ) + parameter ( N1=M2, N2=M2+L2, N3=M2+L2+M2, & + & N4=M2+L2+M2+L2, N=N4 ) + integer KK + parameter ( KK = 9 ) + parameter ( nwrk = 2*(KK-2)*(2**(KK+1)) + KK + 10*M2big + & + & 12*L2big + 27 ) + BIGREAL sxi(0:L2big), seta(0:M2big) + common / xiej / sxi, seta + BIGREAL x1spl(IBIG),x2spl(IBIG),x3spl(IBIG),x4spl(IBIG), & + & y1spl(IBIG),y2spl(IBIG),y3spl(IBIG),y4spl(IBIG), & + & s1spl(IBIG),s2spl(IBIG),s3spl(IBIG),s4spl(IBIG), & + & b1spl(IBIG),b2spl(IBIG),b3spl(IBIG),b4spl(IBIG), & + & c1spl(IBIG),c2spl(IBIG),c3spl(IBIG),c4spl(IBIG) + integer nb1pts,nb2pts,nb3pts,nb4pts + common / bdata/ x1spl, x2spl, x3spl, x4spl, & + & y1spl, y2spl, y3spl, y4spl, & + & s1spl, s2spl, s3spl, s4spl, & + & b1spl, b2spl, b3spl, b4spl, & + & c1spl, c2spl, c3spl, c4spl, & + & nb1pts, nb2pts, nb3pts, nb4pts +! The boundary values are read from stdin for edges which have +! rbnd true. For boundaries which are read in, the grid spacing +! is proportional to distance along the boundary if even? is true. +! Otherwise, it is proportional to the spacing of the supplied +! boundary points. + logical rbnd1, rbnd2, rbnd3, rbnd4, & + & even1, even2, even3, even4 + parameter ( rbnd1=.true., rbnd2=.true., & + & rbnd3=.true., rbnd4=.true., & + & even1=.false., even2=.true., & + & even3=.true., even4=.true. ) + +! The following are used when you need to fit a boundary with +! bumps on opposite sides and need to make intermediate partial +! grids. Set pleft1 or pbot1 to true to print out the boundaries +! of a partial left or bottom grid. Set pleft2 or pbot2 to true +! to print out the new left or bottom boundary. Lmiddle or Mmiddle +! gives the position of the interior boundary for the intermediate +! grid. The boundaries are written out to iout1 or iout2. +! +! Don't forget to adjust the evenx flags, kb1 and kb2 accordingly. + logical pleft1, pleft2, pbot1, pbot2 + integer Lmiddle, Mmiddle, iout1, iout2 + parameter ( pleft1=.false., pleft2=.false., & + & pbot1=.false., pbot2=.false., & + & Lmiddle=49, Mmiddle=25, & + & iout1=13, iout2=14 ) + +! These variables are used for writing out a subset of the psi points +! to be used in generating a nested domain. + logical subset + integer Lwest, Least, Msouth, Mnorth, iout3 + parameter ( subset = .false., Lwest = 144, Least = 272, & + & Msouth = 160, Mnorth = 248, iout3 = 15 ) + +! xpots unit numbers + integer ipot1, ipot2, ipot3, ipot4 + parameter ( ipot1=41, ipot2=42, ipot3=43, ipot4=44 ) diff --git a/Caribbean/grid.in b/Caribbean/grid.in new file mode 100644 index 0000000..f58c306 --- /dev/null +++ b/Caribbean/grid.in @@ -0,0 +1,12 @@ +2 + -2001414.25 3499465. + -2001414.25 1004847.94 +2 + -2001414.25 1004847.94 + 2223793.5 1004847.94 +2 + 2223793.5 1004847.94 + 2223793.5 3499465. +2 + 2223793.5 3499465. + -2001414.25 3499465. diff --git a/Caribbean/griddefs.h b/Caribbean/griddefs.h new file mode 100644 index 0000000..6df1a9a --- /dev/null +++ b/Caribbean/griddefs.h @@ -0,0 +1,67 @@ +! define as 1 for ETOPO5 bathymetry +#define ETOPO5 1 +! define as 1 for ETOPO2 bathymetry +#undef ETOPO2 +#undef GEBCO + +! for 64-bit output +#define DBLEPREC 1 + +! to draw coastlines on some plots +#define DRAW_COASTS 1 + +! to keep ellipsoidal terms in Earth's shape +#define ELLIPSOID 1 + +! for averaging bathymetry in gridbox (for EW/NS grids only) +#undef IMG_AVG + +#undef KEEP_SHALLOW + +! for NCAR graphics (3.2 or better) */ +#define PLOTS 1 +! for X windows rather than metafile */ +#undef X_WIN + +#undef SYS_POTS /* unimplimented system calls */ +#undef XPOTS1 /* read ipot1 file */ +#undef XPOTS2 /* read ipot2 file */ +#undef XPOTS3 /* read ipot3 file */ +#undef XPOTS4 /* read ipot4 file */ + +#ifdef cray +#undef DCOMPLEX +#define DBLEPREC 1 /* for 64-bit output */ +#define BIGREAL real +#define SMALLREAL real +#define BIGCOMPLEX complex +#define FLoaT float +#else +#if DBLEPREC +#define DCOMPLEX 1 /* for compilers which support complex*16 */ +#define SMALLREAL real +#define BIGREAL real*8 +#define BIGCOMPLEX complex*16 +#define FLoaT dfloat +#else +#undef DCOMPLEX +#define BIGREAL real +#define SMALLREAL real +#define BIGCOMPLEX complex +#define FLoaT float +#endif /* DBLEPREC */ +#endif /* cray */ + +#if DBLEPREC +#define nf_get_var_FLoaT nf_get_var_double +#define nf_get_vara_FLoaT nf_get_vara_double +#define nf_put_att_FLoaT nf_put_att_double +#define nf_put_var_FLoaT nf_put_var_double +#define nf_put_vara_FLoaT nf_put_vara_double +#else +#define nf_get_var_FLoaT nf_get_var_real +#define nf_get_vara_FLoaT nf_get_vara_real +#define nf_put_att_FLoaT nf_put_att_real +#define nf_put_var_FLoaT nf_put_var_real +#define nf_put_vara_FLoaT nf_put_vara_real +#endif /* DBLEPREC */ diff --git a/Caribbean/gridid.h b/Caribbean/gridid.h new file mode 100644 index 0000000..675d613 --- /dev/null +++ b/Caribbean/gridid.h @@ -0,0 +1,6 @@ +! gridid is an 80 character string, the first 40 of which are +! used as a plot label. +! gridfile is the name of the netCDF file produced by the +! grid/sqgrid programs + gridid = 'Gulf of Mexico #1' + gridfile = 'grid_gom.nc' diff --git a/Caribbean/gridparam.h b/Caribbean/gridparam.h new file mode 100644 index 0000000..7987bb2 --- /dev/null +++ b/Caribbean/gridparam.h @@ -0,0 +1,12 @@ + integer L, M + parameter ( L=72 , M=43 ) +! +! mud2 requires that these values satisfy +! +! L = NXL*2**(NSTEP-1)+1 +! M = NYL*2**(NSTEP-1)+1 +! +! where NXL, NYL and NSTEP are integers. Try to have NSTEP as large as +! possible (see mud2 documentation). +! +! subroutine 'factor' now takes care of passing NXL, NYL and NSTEP to mud2. diff --git a/Caribbean/proj.h b/Caribbean/proj.h new file mode 100644 index 0000000..c174c20 --- /dev/null +++ b/Caribbean/proj.h @@ -0,0 +1,9 @@ + character*2 JPRJ, JLTS + real PLAT, PLONG, ROTA, P1, P2, P3, P4, XOFF, YOFF + integer JGRD + parameter ( JPRJ = 'ME', PLAT = 0.000000, & + & PLONG = -80.000000, ROTA = 0.000000, & + & JLTS = 'CO', P1 = 5.000000, & + & P2 = -100.000000, P3 = 33.000000, & + & P4 = -57.000000, JGRD = 10) + parameter ( XOFF = 0., YOFF = 0.) diff --git a/Compilers/AIX-xlf.mk b/Compilers/AIX-xlf.mk new file mode 100644 index 0000000..91ce5d1 --- /dev/null +++ b/Compilers/AIX-xlf.mk @@ -0,0 +1,81 @@ +# +# Include file for IBM xlf95_r Fortran Compiler +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := xlf95_r + FFLAGS := -qsuffix=f=f90 -qmaxmem=-1 -qarch=auto -qtune=auto + CPP := /usr/lib/cpp + CPPFLAGS := -P -DAIX + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + +ifdef LARGE + FFLAGS += -q64 + ARFLAGS += -X 64 + LDFLAGS += -bmaxdata:0x200000000 + NETCDF_INCDIR ?= /usr/local/pkg/netcdf/netcdf-3.5.0_64/include + NETCDF_LIBDIR ?= /usr/local/pkg/netcdf/netcdf-3.5.0_64/lib +else + LDFLAGS += -bmaxdata:0x70000000 + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib +endif + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI + FC := mpxlf95_r +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP + FFLAGS += -qsmp=omp +endif + +ifdef DEBUG + FFLAGS += -g -qfullpath +else + FFLAGS += -O3 -qstrict +endif + +# +# Use full path of compiler. +# + FC := $(shell which ${FC}) + LD := $(FC) + diff --git a/Compilers/CYGWIN-df.mk b/Compilers/CYGWIN-df.mk new file mode 100644 index 0000000..c68c327 --- /dev/null +++ b/Compilers/CYGWIN-df.mk @@ -0,0 +1,91 @@ +# +# Include file for Compaq Visual Fortran compiler on Cygwin +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + + BIN := $(BIN).exe + + FC := df + FFLAGS := /stand:f95 + CPP := /usr/bin/cpp + CPPFLAGS := -P -DCYGWIN + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := /nodefaultlib:libcmt /stack:67108864 + AR := ar + ARFLAGS := r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# These are be specified in Unix form and will be converted as +# necessary to Windows form for Windows-native commands. The default +# values below assume that Cygwin mounts have been defined pointing to +# the NETCDF and ARPACK library locations. +# + +# NETCDF_INCDIR ?= /netcdf-win32/include +# NETCDF_LIBDIR ?= /netcdf-win32/lib + + NETCDF_INCDIR ?= 'C:\\include\\' + NETCDF_LIBDIR ?= 'C:\\lib\\' + + CPPFLAGS += -I$(NETCDF_INCDIR) + NETCDF_LIB := $(NETCDF_LIBDIR)/netcdfs.lib + +ifdef ARPACK + ARPACK_LIBDIR ?= /arpack-win32/lib + ARPACK_LIB := $(ARPACK_LIBDIR)/arpack.lib +endif + +# +# Compiler flags +# + +ifdef DEBUG + FFLAGS += /debug:full /traceback +else + FFLAGS += /fast +endif + +# +# For a Windows compiler, create variables pointing to the Windows +# file names needed when linking. Use of the "=" sign means that +# variables will be evaluated only when needed. +# + + BIN_WIN32 = "$$(cygpath --windows $(BIN))" + LIBS_WIN32 = "$$(cygpath --windows $(NETCDF_LIB))" +ifdef ARPACK + LIBS_WIN32 += "$$(cygpath --windows $(ARPACK_LIB))" +endif + +# +# For a Windows compiler, override the compilation rule +# + +%.o: %.f90 + $(FC) $(FFLAGS) /compile $< /object:$@ + + diff --git a/Compilers/CYGWIN-g95.mk b/Compilers/CYGWIN-g95.mk new file mode 100644 index 0000000..0244eb6 --- /dev/null +++ b/Compilers/CYGWIN-g95.mk @@ -0,0 +1,59 @@ +# +# Include file for GNU g95 on Cygwin +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + + BIN := $(BIN).exe + + FC := g95 + FFLAGS := + CPP := /usr/bin/cpp + CPPFLAGS := -P -traditional -DCYGWIN + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /usr/include + NETCDF_LIBDIR ?= /usr/local/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef DEBUG + FFLAGS += -g -fbounds-check +else + FFLAGS += -O3 -ffast-math +endif diff --git a/Compilers/Darwin-f90.mk b/Compilers/Darwin-f90.mk new file mode 100644 index 0000000..5c91118 --- /dev/null +++ b/Compilers/Darwin-f90.mk @@ -0,0 +1,64 @@ +# +# Include file for Absoft compiler on Mac (Darwin) +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := f90 + FFLAGS := -N11 -YEXT_NAMES=LCS -YEXT_SFX=_ -YCFRL=1 -w + CPP := /usr/bin/cpp + CPPFLAGS := -P -DMAC -traditional + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf -lU77 + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP +endif + +ifdef DEBUG + FFLAGS += -g +else + FFLAGS += -O3 +endif diff --git a/Compilers/Darwin-xlf.mk b/Compilers/Darwin-xlf.mk new file mode 100644 index 0000000..8709e70 --- /dev/null +++ b/Compilers/Darwin-xlf.mk @@ -0,0 +1,67 @@ +# +# Include file for IBM xlf95_r Fortran Compiler on the Macintosh +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := xlf95_r + FFLAGS := -qsuffix=f=f90 -qmaxmem=-1 -qextname + CPP := /usr/bin/cpp + CPPFLAGS := -P -DMAC -traditional + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + +# NETCDF_INCDIR ?= /usr/local/include +# NETCDF_LIBDIR ?= /usr/local/lib + NETCDF_INCDIR ?= ${HOME}/include + NETCDF_LIBDIR ?= ${HOME}/lib + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI + FC := mpxlf95_r +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP + FFLAGS += -qsmp=omp +endif + +ifdef DEBUG + FFLAGS += -g -qfullpath +else + FFLAGS += -O3 -qstrict +endif diff --git a/Compilers/IRIX64-f90.mk b/Compilers/IRIX64-f90.mk new file mode 100644 index 0000000..9191c4c --- /dev/null +++ b/Compilers/IRIX64-f90.mk @@ -0,0 +1,74 @@ +# +# Include file for IRIX F90 compiler on SGI +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LDR Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := f90 + FFLAGS := -mips4 -u -TENV:X=3 + CPP := /usr/lib32/cmplrs/cpp + CPPFLAGS := -P -DSGI + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := touch + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + +ifdef LARGE + FFLAGS += -64 + NETCDF_INCDIR ?= $(HOME)/netcdf/include + NETCDF_LIBDIR ?= $(HOME)/netcdf/lib64 +else + FFLAGS += -n32 + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib +endif + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI + FFLAGS += -LANG:recursive=on + LDFLAGS += -mp -mp_schedtype=simple + LIBS += -lmpi +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP + FFLAGS += -mp -MP:open_mp=ON +endif + +ifdef DEBUG + FFLAGS += -g -C +else + FFLAGS += -O3 -OPT:Olimit=4038 +endif diff --git a/Compilers/Linux-f95.mk b/Compilers/Linux-f95.mk new file mode 100644 index 0000000..4717c05 --- /dev/null +++ b/Compilers/Linux-f95.mk @@ -0,0 +1,77 @@ +# +# Include file for Sun F95 compiler on Linux +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := f95 + FFLAGS := -native -u + CPP := /usr/bin/cpp + CPPFLAGS := -P -traditional + CLEAN := Bin/cpp_clean + LD := $(FC) + LDFLAGS := + AR := ar + ARFLAGS := r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + +ifdef LARGE + FFLAGS += -m64 + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib64 +else + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib +endif + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ifdef MPI + PARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(PARPACK_LIBDIR) -lparpack + endif + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI + FC := tmf90 + LD := $(FC) + LIBS += -lmpi +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP + FFLAGS += -openmp +endif + +ifdef DEBUG + FFLAGS += -g -C +else + FFLAGS += -O3 +endif diff --git a/Compilers/Linux-ftn.mk b/Compilers/Linux-ftn.mk new file mode 100644 index 0000000..41d2491 --- /dev/null +++ b/Compilers/Linux-ftn.mk @@ -0,0 +1,64 @@ +# +# Include file for CRAY FTN cross-compiler with Linux +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := ftn + FFLAGS := -e I -e m + CPP := /usr/bin/cpp + CPPFLAGS := -P -traditional -DCRAYX1 -DCRAY + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := touch + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= $(HOME)/include + NETCDF_LIBDIR ?= $(HOME)/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP +endif + +ifdef DEBUG + FFLAGS += -G 0 +else + FFLAGS += -O 3,aggress +endif diff --git a/Compilers/Linux-g95.mk b/Compilers/Linux-g95.mk new file mode 100644 index 0000000..db3d4b0 --- /dev/null +++ b/Compilers/Linux-g95.mk @@ -0,0 +1,64 @@ +# +# Include file for GNU G95 compiler on Linux +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := g95 + FFLAGS := + CPP := /usr/bin/cpp + CPPFLAGS := -P -traditional -DLINUX + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP +endif + +ifdef DEBUG + FFLAGS += -g -fbounds-check +else + FFLAGS += -O3 -ffast-math +endif diff --git a/Compilers/Linux-gfortran.mk b/Compilers/Linux-gfortran.mk new file mode 100644 index 0000000..9da8506 --- /dev/null +++ b/Compilers/Linux-gfortran.mk @@ -0,0 +1,82 @@ +# +# Include file for GNU G95 compiler on Linux +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := gfortran + FFLAGS := -frepack-arrays + CPP := /usr/bin/cpp + CPPFLAGS := -P -traditional + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + +# NETCDF_INCDIR ?= /usr/local/include +# NETCDF_LIBDIR ?= /usr/local/lib + HDF5_LIBDIR ?= /u1/uaf/kate/lib + NETCDF_INCDIR := /archive/u1/uaf/kate/netcdf/include + NETCDF_LIBDIR := /archive/u1/uaf/kate/netcdf/lib + USE_NETCDF4 := on + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf +ifdef USE_NETCDF4 + LIBS += -L$(HDF5_LIBDIR) -lhdf5_hl -lhdf5 -lz +endif + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI + ifdef MPIF90 + FC := mpif90 + LD := $(FC) + else + LIBS += -lfmpi -lmpi + endif +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP +endif + +ifdef DEBUG + FFLAGS += -g -fbounds-check -Wall -Wno-unused-variable -Wno-unused-labels +else + FFLAGS += -O3 -ffast-math +endif + +# Turn off bounds checking for function def_var, as "dimension(*)" +# declarations confuse Gnu Fortran 95 bounds-checking code. + +def_var.o: FFLAGS += -fno-bounds-check diff --git a/Compilers/Linux-ifc.mk b/Compilers/Linux-ifc.mk new file mode 100644 index 0000000..1cdd2ca --- /dev/null +++ b/Compilers/Linux-ifc.mk @@ -0,0 +1,73 @@ +# +# Include file for Intel IFC (version 7.x) compiler on Linux +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := ifc + FFLAGS := + CPP := /usr/bin/cpp + CPPFLAGS := -P -traditional -DLINUX + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := -Vaxlib + AR := ar + ARFLAGS := r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /opt/intel/compiler70/ia32/include + NETCDF_LIBDIR ?= /opt/intel/compiler70/ia32/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /opt/intelsoft//ARPACK + LIBS += -L$(ARPACK_LIBDIR) -larpack_LINUX +endif + +ifdef MPI + CPPFLAGS += -DMPI +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP + FFLAGS += -openmp +endif + +ifdef DEBUG + FFLAGS += -g -CA -CB -CS -CU +else + FFLAGS += -ip -O3 + ifeq ($(CPU),i686) + FFLAGS += -pc80 -xW + endif + ifeq ($(CPU),x86_64) + FFLAGS += -xW + endif +endif + + clean_list += ifc* work.pc* diff --git a/Compilers/Linux-ifort.mk b/Compilers/Linux-ifort.mk new file mode 100644 index 0000000..619c4b3 --- /dev/null +++ b/Compilers/Linux-ifort.mk @@ -0,0 +1,74 @@ +# +# Include file for Intel IFORT (version 8.x) compiler on Linux +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := ifort + FFLAGS := + CPP := /usr/bin/cpp + CPPFLAGS := -P -traditional -DLINUX + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := -Vaxlib + AR := ar + ARFLAGS := r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /opt/intel/netcdf/include + NETCDF_LIBDIR ?= /opt/intel/netcdf/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /opt/intelsoft/ARPACK + LIBS += -L$(ARPACK_LIBDIR) -larpack_LINUX +endif + +ifdef MPI + CPPFLAGS += -DMPI + LIBS += -lfmpi-pgi -lmpi-pgi +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP + FFLAGS += -openmp +endif + +ifdef DEBUG + FFLAGS += -g -check bounds +else + FFLAGS += -ip -O3 + ifeq ($(CPU),i686) + FFLAGS += -pc80 -xW + endif + ifeq ($(CPU),x86_64) + FFLAGS += -xW + endif +endif + + clean_list += ifc* work.pc* diff --git a/Compilers/Linux-mpif90.mk b/Compilers/Linux-mpif90.mk new file mode 100644 index 0000000..593dcb7 --- /dev/null +++ b/Compilers/Linux-mpif90.mk @@ -0,0 +1,68 @@ +# +# Include file for MPIF90 compiler on Linux +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := mpif90 + FFLAGS := + CPP := /usr/bin/cpp + CPPFLAGS := -P -traditional -DLINUX + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := -Vaxlib + AR := ar + ARFLAGS := r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /opt/intel/netcdf/include + NETCDF_LIBDIR ?= /opt/intel/netcdf/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /opt/intelsoft/ARPACK + LIBS += -L$(ARPACK_LIBDIR) -larpack_LINUX +endif + +ifdef MPI + CPPFLAGS += -DMPI + LIBS += +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP + FFLAGS += -openmp +endif + +ifdef DEBUG + FFLAGS += -g -check bounds +else + FFLAGS += -O3 +endif + + clean_list += ifc* work.pc* diff --git a/Compilers/Linux-path.mk b/Compilers/Linux-path.mk new file mode 100644 index 0000000..72b4233 --- /dev/null +++ b/Compilers/Linux-path.mk @@ -0,0 +1,65 @@ +# +# Include file for PathScale compiler on Linux +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := pathf90 + FFLAGS := -fno-second-underscore + CPP := /usr/bin/cpp + CPPFLAGS := -P -traditional -DLINUX -I/usr/include -DpgiFortran + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /opt/netcdf-3.6.0-pathscale/include + NETCDF_LIBDIR ?= /opt/netcdf-3.6.0-pathscale/include + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /opt/pathscalesoft/ARPACK + LIBS += -L$(ARPACK_LIBDIR) -larpack_LINUX +endif + +ifdef MPI + CPPFLAGS += -DMPI + LIBS += -lfmpi-pgi -lmpi-pgi +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP +endif + +ifdef DEBUG + FFLAGS += -g -C +else + FFLAGS += -Ofast +endif diff --git a/Compilers/Linux-pgi.mk b/Compilers/Linux-pgi.mk new file mode 100644 index 0000000..cb2b100 --- /dev/null +++ b/Compilers/Linux-pgi.mk @@ -0,0 +1,67 @@ +# +# Include file for PGI Fortran compiler on Linux +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := pgf90 + FFLAGS := + CPP := /usr/bin/cpp + CPPFLAGS := -P -traditional -DLINUX + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /opt/pgi/netcdf/include + NETCDF_LIBDIR ?= /opt/pgi/netcdf/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /opt/pgisoft/ARPACK + LIBS += -L$(ARPACK_LIBDIR) -larpack_LINUX +endif + +ifdef MPI + CPPFLAGS += -DMPI + LIBS += -lfmpi-pgi -lmpi-pgi +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP +endif + +ifdef DEBUG + FFLAGS += -g +else + FFLAGS += -u -Bstatic -fastsse -Mipa=fast +endif + + clean_list += ifc* work.pc* diff --git a/Compilers/MakeDepend b/Compilers/MakeDepend new file mode 100644 index 0000000..dffcd5e --- /dev/null +++ b/Compilers/MakeDepend @@ -0,0 +1,115 @@ +bathsoap.o: ncgrid.h bathy.h gridparam.h griddefs.h gridid.h proj.h +bathsoap.f90: ncgrid.h bathy.h gridparam.h griddefs.h gridid.h proj.h + +bathsuds.o: ncgrid.h bathy.h gridparam.h griddefs.h gridid.h proj.h +bathsuds.f90: ncgrid.h bathy.h gridparam.h griddefs.h gridid.h proj.h + +bathtub.o: ncgrid.h bathy.h gridparam.h griddefs.h gridid.h +bathtub.f90: ncgrid.h bathy.h gridparam.h griddefs.h gridid.h + +coast.o: coast.h proj.h +coast.f90: coast.h proj.h + +grid.o: ncgrid.h griddefs.h gridid.h grid.h bathy.h gridparam.h griddefs.h +grid.f90: ncgrid.h griddefs.h gridid.h grid.h bathy.h gridparam.h griddefs.h + +mapbath.o: griddefs.h +mapbath.f90: griddefs.h + +sphere.o: sphereflags.h ncgrid.h bathy.h gridparam.h griddefs.h gridid.h proj.h +sphere.f90: sphereflags.h ncgrid.h bathy.h gridparam.h griddefs.h gridid.h +sphere.f90: proj.h + +sqgrid.o: ncgrid.h griddefs.h gridid.h grid.h bathy.h gridparam.h griddefs.h +sqgrid.f90: ncgrid.h griddefs.h gridid.h grid.h bathy.h gridparam.h griddefs.h + +tolat.o: ncgrid.h bathy.h gridparam.h griddefs.h gridid.h proj.h +tolat.f90: ncgrid.h bathy.h gridparam.h griddefs.h gridid.h proj.h + +blktri.o: griddefs.h +blktri.f90: griddefs.h + +checkdefs.o: ncgrid.h grid.h bathy.h gridparam.h griddefs.h +checkdefs.f90: ncgrid.h grid.h bathy.h gridparam.h griddefs.h + +comf.o: griddefs.h +comf.f90: griddefs.h + +cpsfill.o: griddefs.h +cpsfill.f90: griddefs.h + +def_grid.o: ncgrid.h griddefs.h grid.h bathy.h gridparam.h griddefs.h +def_grid.f90: ncgrid.h griddefs.h grid.h bathy.h gridparam.h griddefs.h + +drawcoast.o: griddefs.h +drawcoast.f90: griddefs.h + +extract.o: griddefs.h +extract.f90: griddefs.h + +genbun.o: griddefs.h +genbun.f90: griddefs.h + +geodesic_dist.o: griddefs.h +geodesic_dist.f90: griddefs.h + +get_date.o: griddefs.h +get_date.f90: griddefs.h + +get_h.o: ncgrid.h bathy.h gridparam.h griddefs.h +get_h.f90: ncgrid.h bathy.h gridparam.h griddefs.h + +get_lat.o: ncgrid.h bathy.h gridparam.h griddefs.h +get_lat.f90: ncgrid.h bathy.h gridparam.h griddefs.h + +get_mn.o: ncgrid.h bathy.h gridparam.h griddefs.h +get_mn.f90: ncgrid.h bathy.h gridparam.h griddefs.h + +get_rmask.o: ncgrid.h bathy.h gridparam.h griddefs.h +get_rmask.f90: ncgrid.h bathy.h gridparam.h griddefs.h + +get_xy.o: ncgrid.h bathy.h gridparam.h griddefs.h +get_xy.f90: ncgrid.h bathy.h gridparam.h griddefs.h + +gnbnaux.o: griddefs.h +gnbnaux.f90: griddefs.h + +opencdf.o: ncgrid.h bathy.h gridparam.h griddefs.h +opencdf.f90: ncgrid.h bathy.h gridparam.h griddefs.h + +ploth.o: bathy.h gridparam.h griddefs.h +ploth.f90: bathy.h gridparam.h griddefs.h + +sepaux.o: griddefs.h +sepaux.f90: griddefs.h + +sepeli.o: griddefs.h +sepeli.f90: griddefs.h + +sepx4.o: griddefs.h +sepx4.f90: griddefs.h + +start_plot.o: griddefs.h +start_plot.f90: griddefs.h + +uv_mask.o: ncgrid.h bathy.h gridparam.h griddefs.h gridid.h +uv_mask.f90: ncgrid.h bathy.h gridparam.h griddefs.h gridid.h + +vminmax.o: griddefs.h +vminmax.f90: griddefs.h + +wrt_all.o: ncgrid.h bathy.h gridparam.h griddefs.h proj.h +wrt_all.f90: ncgrid.h bathy.h gridparam.h griddefs.h proj.h + +wrt_fhmn.o: ncgrid.h bathy.h gridparam.h griddefs.h proj.h +wrt_fhmn.f90: ncgrid.h bathy.h gridparam.h griddefs.h proj.h + +wrt_h.o: ncgrid.h bathy.h gridparam.h griddefs.h proj.h +wrt_h.f90: ncgrid.h bathy.h gridparam.h griddefs.h proj.h + +wrt_lat.o: ncgrid.h bathy.h gridparam.h griddefs.h proj.h +wrt_lat.f90: ncgrid.h bathy.h gridparam.h griddefs.h proj.h + +wrt_mask.o: ncgrid.h bathy.h gridparam.h griddefs.h +wrt_mask.f90: ncgrid.h bathy.h gridparam.h griddefs.h + diff --git a/Compilers/OSF1-f90.mk b/Compilers/OSF1-f90.mk new file mode 100644 index 0000000..3212317 --- /dev/null +++ b/Compilers/OSF1-f90.mk @@ -0,0 +1,69 @@ +# +# Include file for OSF1 F90 compiler on the Alpha +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := f90 + FFLAGS := + CPP := /lib/cpp + CPPFLAGS := -P + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI + MPI_INCDIR := /usr/include + MPI_LIBDIR := /usr/lib + LIBS += -L$(MPI_LIBDIR) -lmpi + CPPFLAGS += -I$(MPI_INCDIR) +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP + FFLAGS += -omp +endif + +ifdef DEBUG + FFLAGS += -g +else + FFLAGS += -fast +endif diff --git a/Compilers/SunOS-f95.mk b/Compilers/SunOS-f95.mk new file mode 100644 index 0000000..c551a05 --- /dev/null +++ b/Compilers/SunOS-f95.mk @@ -0,0 +1,74 @@ +# +# Include file for Solaris F95 compiler on SUN +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := f95 + FFLAGS := -u -U + CPP := /usr/lib/cpp + CPPFLAGS := -P -DSUN + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + +ifdef LARGE + FFLAGS += -xarch=v9 + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib64 +else + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib +endif + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack_LINUX +endif + +ifdef MPI + CPPFLAGS += -DMPI + FC := tmf90 + LIBS += -lmpi +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP + FFLAGS += -openmp +endif + +ifdef DEBUG + FFLAGS += -g +else + FFLAGS += -O3 +endif + + LIBS += -lnsl diff --git a/Compilers/SunOS-ftn.mk b/Compilers/SunOS-ftn.mk new file mode 100644 index 0000000..448f6ce --- /dev/null +++ b/Compilers/SunOS-ftn.mk @@ -0,0 +1,64 @@ +# +# Include file for CRAY FTN cross-compiler with SUN +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := ftn + FFLAGS := -e I -e m + CPP := $(HOME)/bin/cpp + CPPFLAGS := -P -DCRAYX1 -DCRAY + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -rv + MKDIR := mkdir -p + RM := rm -f + RANLIB := touch + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /usr/local/pkg/netcdf/netcdf-3.5.1-x1/include + NETCDF_LIBDIR ?= /usr/local/pkg/netcdf/netcdf-3.5.1-x1/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP +endif + +ifdef DEBUG + FFLAGS += -G 0 +else + FFLAGS += -O 3,aggress +endif diff --git a/Compilers/UNICOS-mk-f90.mk b/Compilers/UNICOS-mk-f90.mk new file mode 100644 index 0000000..de48635 --- /dev/null +++ b/Compilers/UNICOS-mk-f90.mk @@ -0,0 +1,63 @@ +# +# Include file for UNICOS F90 compiler on CRAY +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := f90 + FFLAGS := -e I -e m + CPP := /opt/ctl/bin/cpp + CPPFLAGS := -P -N -DCRAY + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := ranlib + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP +endif + +ifdef DEBUG + FFLAGS += -g +else + FFLAGS += -O3 +endif diff --git a/Compilers/UNICOS-mp-ftn.mk b/Compilers/UNICOS-mp-ftn.mk new file mode 100644 index 0000000..121d0c6 --- /dev/null +++ b/Compilers/UNICOS-mp-ftn.mk @@ -0,0 +1,64 @@ +# +# Include file for UNICOS FTN compiler on CRAY X1 +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := ftn + FFLAGS := -e I -e m + CPP := $(HOME)/bin/cpp + CPPFLAGS := -P -DCRAYX1 -DCRAY + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := touch + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /usr/local/pkg/netcdf/netcdf-3.5.1-x1/include + NETCDF_LIBDIR ?= /usr/local/pkg/netcdf/netcdf-3.5.1-x1/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP +endif + +ifdef DEBUG + FFLAGS += -G 0 +else + FFLAGS += -O 3,aggress +endif diff --git a/Compilers/UNICOS-sn-f90.mk b/Compilers/UNICOS-sn-f90.mk new file mode 100644 index 0000000..6a41f12 --- /dev/null +++ b/Compilers/UNICOS-sn-f90.mk @@ -0,0 +1,64 @@ +# +# Include file for UNICOS F90 compiler on CRAY T3D +# ----------------------------------------------------------------- +# +# ARPACK_LIBDIR ARPACK libary directory +# FC Name of the fortran compiler to use +# FFLAGS Flags to the fortran compiler +# CPP Name of the C-preprocessor +# CPPFLAGS Flags to the C-preprocessor +# CLEAN Name of cleaning executable after C-preprocessing +# NETCDF_INCDIR NetCDF include directory +# NETCDF_LIBDIR NetCDF libary directory +# LD Program to load the objects into an executable +# LDFLAGS Flags to the loader +# RANLIB Name of ranlib command +# MDEPFLAGS Flags for sfmakedepend (-s if you keep .f files) +# +# First the defaults +# + FC := f90 + FFLAGS := -e Im + CPP := /opt/ctl/bin/cpp + CPPFLAGS := -P -N -DCRAY + CLEAN := Bin/cpp_clean + LD := ncargf90 + LDFLAGS := + AR := ar + ARFLAGS := -r + MKDIR := mkdir -p + RM := rm -f + RANLIB := touch + PERL := perl + TEST := test + + MDEPFLAGS := --cpp --fext=f90 --file=- + +# +# Library locations, can be overridden by environment variables. +# + + NETCDF_INCDIR ?= /usr/local/include + NETCDF_LIBDIR ?= /usr/local/lib + + CPPFLAGS += -I$(NETCDF_INCDIR) + LIBS := -L$(NETCDF_LIBDIR) -lnetcdf + +ifdef ARPACK + ARPACK_LIBDIR ?= /usr/local/lib + LIBS += -L$(ARPACK_LIBDIR) -larpack +endif + +ifdef MPI + CPPFLAGS += -DMPI +endif + +ifdef OpenMP + CPPFLAGS += -D_OPENMP +endif + +ifdef DEBUG + FFLAGS += -g -O 0 -e in -R abcnp +else + FFLAGS += -O3 +endif diff --git a/Drivers/Module.mk b/Drivers/Module.mk new file mode 100644 index 0000000..dbde200 --- /dev/null +++ b/Drivers/Module.mk @@ -0,0 +1,61 @@ +local_sub := Drivers + +local_src := $(wildcard $(local_sub)/*.F) +local_objs := $(subst .F,.o,$(local_src)) +local_objs := $(addprefix $(SCRATCH_DIR)/, $(notdir $(local_objs))) + +sources += $(local_src) + +ifeq ($(OS)-$(strip $(FORT)),CYGWIN-df) +$(COAST): $(libraries) $(SCRATCH_DIR)/coast.o + $(LD) $(FFLAGS) $(SCRATCH_DIR)/coast.o $(libraries) \ + $(LIBS_WIN32) /exe:$(BIN_WIN32) /link $(LDFLAGS) +$(GRID): $(libraries) $(SCRATCH_DIR)/grid.o + $(LD) $(FFLAGS) $(SCRATCH_DIR)/grid.o $(libraries) \ + $(LIBS_WIN32) /exe:$(BIN_WIN32) /link $(LDFLAGS) +$(SQGRID): $(libraries) $(SCRATCH_DIR)/sqgrid.o + $(LD) $(FFLAGS) $(SCRATCH_DIR)/sqgrid.o $(libraries) \ + $(LIBS_WIN32) /exe:$(BIN_WIN32) /link $(LDFLAGS) +$(TOLAT): $(libraries) $(SCRATCH_DIR)/tolat.o + $(LD) $(FFLAGS) $(SCRATCH_DIR)/tolat.o $(libraries) \ + $(LIBS_WIN32) /exe:$(BIN_WIN32) /link $(LDFLAGS) +$(BATHTUB): $(libraries) $(SCRATCH_DIR)/bathtub.o + $(LD) $(FFLAGS) $(SCRATCH_DIR)/bathtub.o $(libraries) \ + $(LIBS_WIN32) /exe:$(BIN_WIN32) /link $(LDFLAGS) +$(BATHSUDS): $(libraries) $(SCRATCH_DIR)/bathsuds.o + $(LD) $(FFLAGS) $(SCRATCH_DIR)/bathsuds.o $(libraries) \ + $(LIBS_WIN32) /exe:$(BIN_WIN32) /link $(LDFLAGS) +$(BATHSOAP): $(libraries) $(SCRATCH_DIR)/bathsoap.o + $(LD) $(FFLAGS) $(SCRATCH_DIR)/bathsoap.o $(libraries) \ + $(LIBS_WIN32) /exe:$(BIN_WIN32) /link $(LDFLAGS) +$(SPHERE): $(libraries) $(SCRATCH_DIR)/sphere.o + $(LD) $(FFLAGS) $(SCRATCH_DIR)/sphere.o $(libraries) \ + $(LIBS_WIN32) /exe:$(BIN_WIN32) /link $(LDFLAGS) +else +$(COAST): $(libraries) $(SCRATCH_DIR)/coast.o + $(LD) $(FFLAGS) $(LDFLAGS) $(SCRATCH_DIR)/coast.o -o $@ \ + $(libraries) $(LIBS) +$(GRID): $(libraries) $(SCRATCH_DIR)/grid.o + $(LD) $(FFLAGS) $(LDFLAGS) $(SCRATCH_DIR)/grid.o -o $@ \ + $(libraries) $(LIBS) +$(SQGRID): $(libraries) $(SCRATCH_DIR)/sqgrid.o + $(LD) $(FFLAGS) $(LDFLAGS) $(SCRATCH_DIR)/sqgrid.o -o $@ \ + $(libraries) $(LIBS) +$(TOLAT): $(libraries) $(SCRATCH_DIR)/tolat.o + $(LD) $(FFLAGS) $(LDFLAGS) $(SCRATCH_DIR)/tolat.o -o $@ \ + $(libraries) $(LIBS) +$(BATHTUB): $(libraries) $(SCRATCH_DIR)/bathtub.o + $(LD) $(FFLAGS) $(LDFLAGS) $(SCRATCH_DIR)/bathtub.o -o $@ \ + $(libraries) $(LIBS) +$(BATHSUDS): $(libraries) $(SCRATCH_DIR)/bathsuds.o + $(LD) $(FFLAGS) $(LDFLAGS) $(SCRATCH_DIR)/bathsuds.o -o $@ \ + $(libraries) $(LIBS) +$(BATHSOAP): $(libraries) $(SCRATCH_DIR)/bathsoap.o + $(LD) $(FFLAGS) $(LDFLAGS) $(SCRATCH_DIR)/bathsoap.o -o $@ \ + $(libraries) $(LIBS) +$(SPHERE): $(libraries) $(SCRATCH_DIR)/sphere.o + $(LD) $(FFLAGS) $(LDFLAGS) $(SCRATCH_DIR)/sphere.o -o $@ \ + $(libraries) $(LIBS) +endif + +$(eval $(compile-rules)) diff --git a/Drivers/bathsoap.F b/Drivers/bathsoap.F new file mode 100644 index 0000000..664019f --- /dev/null +++ b/Drivers/bathsoap.F @@ -0,0 +1,304 @@ + program bathsoap + +! *** In gridpak version 5.4 ***** October 18, 2001 **************** +! Kate Hedstrom (kate@arsc.edu) +! John Wilkin (wilkin@imcs.rutgers.edu) +! ****************************************************************** +! +! This program reads and writes to the hraw variable in +! the grid netCDF file. +! +! It uses a Shapiro filter to smooth the bathymetry +! ******************************************************************* + +#include "griddefs.h" +#include "bathy.h" +#include "proj.h" +#include "ncgrid.h" + BIGREAL wrk1(L2d), wrk2(L2d) + + logical colour, grover + integer i, j, k, ii, jj, imap, npass + BIGREAL vmin, vmax, rmax, rv + real U1, U2, V1, V2 + BIGREAL udeg, uscale, DTOR, RTOD, & + & REarth, enlarge + parameter ( REarth=6.3708e6 ) + data DTOR / .017453292519943 / + data RTOD / 57.2957795130823 / + +#include "gridid.h" + + call get_xy + call get_mn + call get_h + call get_rmask + +! Plot after each pass of Shapiro filter + + xmin = vmin(xp,L*M) + ymin = vmin(yp,L*M) + xmax = vmax(xp,L*M) + ymax = vmax(yp,L*M) + + el = ymax-ymin + xl = xmax-xmin + +! true for colour fill plots (false gives contours) + colour = .true. + +! true to draw grid over colour plots + grover = .false. + +#if PLOTS + call start_plot +#if DRAW_COASTS +! put things on EZMAP space: + call mapsti('GR',JGRD) + call mapstc('OU','PS') + call maproj(JPRJ,PLAT,PLONG,ROTA) + call mapset(JLTS,P1,P2,P3,P4) + call mapint + +! rescale xp, yp, xr, yr (from Roberta Young) + call maptrn((PLAT+.5),PLONG,U2,V2) + call maptrn((PLAT-.5),PLONG,U1,V1) + udeg = sqrt((U2-U1)*(U2-U1) + (V2-V1)*(V2-V1)) + uscale=DTOR*REarth/udeg + write(6,*)' udeg =',udeg + write(6,*)' uscale =',uscale + + do j=1,M + do i=1,L + xp(i,j)=(xp(i,j)-XOFF)/uscale + yp(i,j)=(yp(i,j)-YOFF)/uscale + enddo + enddo + + do j=0,M + do i=0,L + xr(i,j)=(xr(i,j)-XOFF)/uscale + yr(i,j)=(yr(i,j)-YOFF)/uscale + enddo + enddo + +! find minimum x and y locations: + xmin = vmin(xp,L*M) + ymin = vmin(yp,L*M) + xmax = vmax(xp,L*M) + ymax = vmax(yp,L*M) + el = ymax-ymin + xl = xmax-xmin + +! make them larger for the plots + enlarge = 0.03 + xmin = xmin - xl*enlarge + ymin = ymin - el*enlarge + xmax = xmax + xl*enlarge + ymax = ymax + el*enlarge +#endif /* DRAW_COASTS */ + +! set foreground to black, background to white + if (colour) then + call gscr(1,0,1.,1.,1.) + call gscr(1,1,0.,0.,0.) + end if + + imap = 3 + call cpseti('MAP',imap) + call getxxyy + call pcseti('QUALITY',1) +#endif /* PLOTS */ + + print * + print *, 'How many passes of the shapiro filter?' + read *, npass + +#if PLOTS +! call ploth(gridid(1:40),colour,grover) +#endif /* PLOTS */ + + do k=1,npass + call shapiro(h,Lp,Mp,2,wrk1,wrk2,mask_rho) + rmax = 0. + ii = 1 + jj = 1 + do j=1,M-1 + do i=1,L-1 + if (rv(i,j) .gt. rmax) then + rmax = rv(i,j) + ii = i + jj = j + endif + enddo + enddo + print *,k,' rmax = ',rmax,' at (i,j): ',ii,jj + enddo + +! Write the final filtered bathymetry to netCDF file + call wrt_h + +#if PLOTS +! Plot the final bathymetry + call ploth(gridid(1:40),colour,grover) + call end_plot +#endif /* PLOTS */ + +#if NO_EXIT + stop +#else + call exit(0) +#endif /* NO_EXIT */ + 100 call crash('bathsoap: read or write error', 0) + end + +! ******************************************************************** + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + return + end + +! **************************************************************** + + subroutine shapiro(u,Lp,Mp,N,tmp,tmp2,mask) + integer Lp, Mp, N + BIGREAL u(0:Lp-1,0:Mp-1) + BIGREAL mask(0:Lp-1,0:Mp-1) + BIGREAL tmp(0:Lp-1,0:Mp-1), tmp2(0:Lp-1,0:Mp-1) + +! **************************************************************** + +! Version 1.0 April 27,1988 by Kate Hedstrom + +! **************************************************************** + +! The user must supply two work arrays, tmp and tmp2, dimensioned +! the same as the u array. + +! This subroutine will apply a Shapiro filter of order n (defined +! as twice the order in Shapiro (1970), with N even) to an +! array u. The order of the filter is reduced at the boundaries. +! The size of the u array is 0-L by 0-M. + +! This filter can be used for any rectangular grid. If the grid +! spacing is non-uniform then you have to scale by the grid spacing +! before filtering and scale back after filtering in order to +! conserve the quantity. If conservation is not important then the +! filter can be used as is even for non-uniform spacing. + + integer d, L, M, Lm, Mm, i, j, k + + L = Lp-1 + M = Mp-1 + Lm = Lp-2 + Mm = Mp-2 + + if (mod(N,2).ne.0) then + print *,'N must be even in the shapiro filter' +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + end if + +! Do the first y pass to initialize the temporary array + + do 100 i=0,L + do 100 j=1,M-1 + tmp(i,j) = 0.25 * (u(i,j-1)*mask(i,j-1) + u(i,j+1)*mask(i,j+1) & + & - 2*u(i,j)*mask(i,j)) * & + & mask(i,j-1) * mask(i,j+1) * mask(i,j) + 100 continue + +! Other passes in the y direction. + + do 120 k=4,N,2 + d = k/2 + do 110 j=d,M-d + do 110 i=0,L + tmp2(i,j) = - 0.25 * (tmp(i,j-1)*mask(i,j-1) & + & + tmp(i,j+1)*mask(i,j+1) & + & - 2*tmp(i,j)*mask(i,j)) * & + & mask(i,j-1) * mask(i,j+1) * mask(i,j) + 110 continue + do 120 j=d,M-d + do 120 i=0,L + tmp(i,j) = tmp2(i,j) + 120 continue + +! Add the changes to u + + do 130 j=1,M-1 + do 130 i=0,L + u(i,j) = u(i,j) + tmp(i,j) + 130 continue + +! Initialize tmp to filter in the x direction. + + do 140 j=0,M + do 140 i=1,L-1 + tmp(i,j) = 0.25 * (u(i-1,j)*mask(i-1,j) + u(i+1,j)*mask(i+1,j) & + & - 2*u(i,j)*mask(i,j)) * & + & mask(i-1,j) * mask(i+1,j) * mask(i,j) + 140 continue + +! Other x passes + + do 160 k=4,N,2 + d = k/2 + do 160 j=0,M + do 150 i=d,L-d + tmp2(i,j) = - 0.25 * (tmp(i-1,j)*mask(i-1,j) & + & + tmp(i+1,j)*mask(i+1,j) & + & - 2*tmp(i,j)*mask(i,j)) * & + & mask(i-1,j) * mask(i+1,j) * mask(i,j) + 150 continue + do 160 i=d,L-d + tmp(i,j) = tmp2(i,j) + 160 continue + +! Add changes to u + + do 170 j=0,M + do 170 i=1,L-1 + u(i,j) = u(i,j) + tmp(i,j) + 170 continue + +! Make edge values like interior + do 180 j=1,Mm + u(0,j) = u(1,j) + u(L,j) = u(Lm,j) + 180 continue + do 190 i=0,L + u(i,0) = u(i,1) + u(i,M) = u(i,Mm) + 190 continue + + return + end + + BIGREAL function rv(i,j) + integer i, j + +! calculate the SPEM r-value +#include "bathy.h" + BIGREAL dhdxx, dhdyy + + dhdxx = abs((h(i,j) - h(i-1,j)) / (h(i,j) + h(i-1,j))) & + & * mask_rho(i,j) * mask_rho(i-1,j) + dhdyy = abs((h(i,j) - h(i,j-1)) / (h(i,j) + h(i,j-1))) & + & * mask_rho(i,j) * mask_rho(i,j-1) + rv = max(dhdxx,dhdyy) + return + end diff --git a/Drivers/bathsuds.F b/Drivers/bathsuds.F new file mode 100644 index 0000000..1e3a921 --- /dev/null +++ b/Drivers/bathsuds.F @@ -0,0 +1,415 @@ +#include "griddefs.h" + program bathsuds + +! *** In gridpak version 5.4 ***** October 18, 2001 **************** +! Kate Hedstrom (kate@arsc.edu) +! John Wilkin (wilkin@imcs.rutgers.edu) +! ****************************************************************** +! +! bathsuds (Selective User-Defined Smoothing) is a variation on +! bathsoap (Smooth Over All Points) which allows the user to fiddle +! endlessly with a set of weights applied to the Shapiro filter. +! functions rvwgt{x,y} weight the correction term over the Shapiro +! filter (whicyh are usually 1). For example, if repeated sweeps of +! the filter are being used to eliminate isolated steep regions of the +! bathymetry, the rvwgt{x,y} weights can be set to zero over the +! already smooth region to avoid needlessly reducing the domain to a +! flat abyssal plain. +! +! The present set of weights does this by computing Aike's r-value +! and setting the weights to rvwmin where r-value is less than rv0, +! and rvwmax where r-value is greater than rv0 (with a smooth tanh +! transition between the two). rvwmax > 1.0 amounts to a successive +! over-relaxation of the fliter weights. Alternatively, making rvwgt +! simple functions of i,j will apply the filtering to predetermined +! regions of the domain. +! +! There is now a KEEP_SHALLOW option to uplift the shallow areas after +! each pass of the filter. There are tunable parameters to specify +! the shallow depths which are being attempted to be kept - the +! shallower the values you pick, the harder it is to get to a useful +! r-value. With KEEP_SHALLOW defined, you are likely to need many +! more passes of the filter. For instance, a domain in which you +! achieved a reasonable r-value after 20 passes may now require +! several hundred or a thousand passes. Note that you can do +! something similar to keep deep areas deep. This can be useful +! in regions surrounded by a coasts that would otherwise get too +! shallow, such as in the Caribbean. +! +! This program reads and writes to the hraw variable in the +! grid netCDF file. +! +! ******************************************************************* + +#include "bathy.h" +#include "ncgrid.h" +#include "proj.h" + BIGREAL wrk1(L2d), wrk2(L2d) + logical colour, grover + integer imap, npasses, i, j, k, ii, jj + BIGREAL vmin, vmax, rv, rmax + real U1, U2, V1, V2 + BIGREAL udeg, uscale, DTOR, RTOD, & + & REarth, enlarge + parameter ( REarth=6.3708e6 ) + integer np, Lm2, Mm2 + common /bidul/ np +#if KEEP_SHALLOW + logical mask1(0:L,0:M), mask2(0:L,0:M), mask3(0:L,0:M) + BIGREAL depth1, depth2, depth3 + parameter ( depth1=200, depth2=400, depth3=1000 ) +#endif /* KEEP_SHALLOW */ + parameter ( Lm2=L-2, Mm2=M-2 ) + data DTOR / .017453292519943 / + data RTOD / 57.2957795130823 / + +#include "gridid.h" + + call get_xy + call get_mn + call get_h + call get_rmask + + xmin = vmin(xr,Lp*Mp) + ymin = vmin(yr,Lp*Mp) + xmax = vmax(xr,Lp*Mp) + ymax = vmax(yr,Lp*Mp) + + el = ymax-ymin + xl = xmax-xmin + +! true for colour fill plots (false gives contours) + colour = .true. + +! true to draw grid over colour plots + grover = .false. + +#if PLOTS + call start_plot +#if DRAW_COASTS +! put things on EZMAP space: + call mapsti('GR',JGRD) + call mapstc('OU','PS') + call maproj(JPRJ,PLAT,PLONG,ROTA) + call mapset(JLTS,P1,P2,P3,P4) + call mapint + +! rescale xp, yp, xr, yr (from Roberta Young) + call maptrn((PLAT+.5),PLONG,U2,V2) + call maptrn((PLAT-.5),PLONG,U1,V1) + udeg = sqrt((U2-U1)*(U2-U1) + (V2-V1)*(V2-V1)) + uscale=DTOR*REarth/udeg + write(6,*)' udeg =',udeg + write(6,*)' uscale =',uscale + + do j=1,M + do i=1,L + xp(i,j)=(xp(i,j)-XOFF)/uscale + yp(i,j)=(yp(i,j)-YOFF)/uscale + enddo + enddo + + do j=0,M + do i=0,L + xr(i,j)=(xr(i,j)-XOFF)/uscale + yr(i,j)=(yr(i,j)-YOFF)/uscale + enddo + enddo + +! find minimum x and y locations: + xmin = vmin(xp,L*M) + ymin = vmin(yp,L*M) + xmax = vmax(xp,L*M) + ymax = vmax(yp,L*M) + el = ymax-ymin + xl = xmax-xmin + +! make them larger for the plots + enlarge = 0.03 + xmin = xmin - xl*enlarge + ymin = ymin - el*enlarge + xmax = xmax + xl*enlarge + ymax = ymax + el*enlarge +#endif /* DRAW_COASTS */ + +! set foreground to black, background to white + if (colour) then + call gscr(1,0,1.,1.,1.) + call gscr(1,1,0.,0.,0.) + end if + + imap = 3 + call cpseti('MAP',imap) + call getxxyy + call pcseti('QUALITY',1) + + call ploth(gridid(1:40),colour,grover) +#endif /* PLOTS */ + +#if KEEP_SHALLOW + do j=0,M + do i=0,L + mask1(i,j) = .false. + mask2(i,j) = .false. + mask3(i,j) = .false. + enddo + enddo + do j=0,M + do i=0,L + if (h(i,j) .lt. depth1) mask1(i,j) = .true. + if (h(i,j) .lt. depth2) mask2(i,j) = .true. + if (h(i,j) .lt. depth3) mask3(i,j) = .true. + enddo + enddo +#endif /* KEEP_SHALLOW */ + + print *,' Enter number of passes of filter:' + read(5,*) npasses + + do 120 k=1,npasses + +#if KEEP_SHALLOW +! Keep shallow areas shallow + if (k .le. npasses-2) then + do j=0,M + do i=0,L + if (h(i,j) .gt. depth1 .and. mask1(i,j)) h(i,j) = depth1 + if (h(i,j) .gt. depth2 .and. mask2(i,j)) h(i,j) = depth2 + if (h(i,j) .gt. depth3 .and. mask3(i,j)) h(i,j) = depth3 + enddo + enddo + endif +#endif /* KEEP_SHALLOW */ + + call shapiro(h,Lp,Mp,2,wrk1,wrk2) +! call ploth(gridid(1:40),colour,grover) +! zero slope on h at boundaries + do i=1,Lm + h(i,0) = h(i,1) + h(i,M) = h(i,Mm) + enddo + do j=0,M + h(0,j) = h(1,j) + h(L,j) = h(Lm,j) + enddo + + rmax = 0. + ii = 1 + jj = 1 + do j=1,M-1 + do i=1,L-1 + if (rv(i,j) .gt. rmax) then + rmax = rv(i,j) + ii = i + jj = j + endif + enddo + enddo + print *,k,' rmax = ',rmax,' at (i,j): ',ii,jj + + 120 continue + +! Write the final filtered bathymetry to netCDF file + + call wrt_h + +#if PLOTS +! Plot the final bathymetry + call ploth(gridid(1:40),colour,grover) + call end_plot +#endif /* PLOTS */ + +#if NO_EXIT + stop +#else + call exit(0) +#endif /* NO_EXIT */ + 130 call crash('bathsuds: read or write error ',0) + end + +! ******************************************************************** + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + return + end + +! **************************************************************** + + subroutine shapiro(u,Lp,Mp,N,tmp,tmp2) + integer Lp, Mp, N + BIGREAL u(0:Lp-1,0:Mp-1) + BIGREAL tmp(0:Lp-1,0:Mp-1), tmp2(0:Lp-1,0:Mp-1) + +! **************************************************************** + +! Version 1.0 April 27,1988 by Kate Hedstrom +! hacked about by John Wilkin 28 June 29, 1991 + +! **************************************************************** + +! The user must supply two work arrays, tmp and tmp2, dimensioned +! the same as the u array. + +! This subroutine will apply a Shapiro filter of order n (defined +! as twice the order in Shapiro (1970), with N even) to an +! array u. The order of the filter is reduced at the boundaries. +! The size of the u array is 0-L by 0-M. + +! This filter can be used for any rectangular grid. If the grid +! spacing is non-uniform then you have to scale by the grid spacing +! before filtering and scale back after filtering in order to +! conserve the quantity. If conservation is not important then the +! filter can be used as is even for non-uniform spacing. + + integer d, L, M, i, j, k + BIGREAL rvwgtx, rvwgty + + L = Lp-1 + M = Mp-1 + + if (mod(N,2).ne.0) then + print *,'N must be even in the shapiro filter' +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + end if + +! Do the first y pass to initialize the temporary array + + do 100 i=0,L + do 100 j=1,M-1 + tmp(i,j) = 0.25 * (u(i,j-1) + u(i,j+1) - 2*u(i,j)) + 100 continue + +! Other passes in the y direction. + + do 120 k=4,N,2 + d = k/2 + do 110 j=d,M-d + do 110 i=0,L + tmp2(i,j) = - 0.25 * (tmp(i,j-1) + tmp(i,j+1) & + & - 2*tmp(i,j)) + 110 continue + do 120 j=d,M-d + do 120 i=0,L + tmp(i,j) = tmp2(i,j) + 120 continue + +! Add the changes to u + + do 130 j=1,M-1 + do 130 i=0,L + u(i,j) = u(i,j) + rvwgty(i,j)*tmp(i,j) + 130 continue + +! Initialize tmp to filter in the x direction. + + do 140 j=0,M + do 140 i=1,L-1 + tmp(i,j) = 0.25 * (u(i-1,j) + u(i+1,j) - 2*u(i,j)) + 140 continue + +! Other x passes + + do 160 k=4,N,2 + d = k/2 + do 160 j=0,M + do 150 i=d,L-d + tmp2(i,j) = - 0.25 * (tmp(i-1,j) + tmp(i+1,j) & + & - 2*tmp(i,j)) + 150 continue + do 160 i=d,L-d + tmp(i,j) = tmp2(i,j) + 160 continue + +! Add changes to u + + do 170 j=0,M + do 170 i=1,L-1 + u(i,j) = u(i,j) + rvwgtx(i,j)*tmp(i,j) + 170 continue + + return + end + +! ******************************************************************** + + BIGREAL function rvwgtx(i,j) + integer i, j + BIGREAL rv0, rvwscl,rvwmin, rvwmax, dhdxx1, dhdxx2, dhdxx, & + & rvwavg, rvwrng + +#include "bathy.h" + + rv0 = 0.15 + rvwscl = 0.04 + rvwmin = 0.0 + rvwmax = 1.2 + rvwavg = 0.5*(rvwmin+rvwmax) + rvwrng = 0.5*(rvwmax-rvwmin) + + dhdxx1 = abs((h(i,j) - h(i-1,j)) / (h(i,j) + h(i-1,j))) & + & * mask_rho(i,j) * mask_rho(i-1,j) + dhdxx2 = abs((h(i+1,j) - h(i,j)) / (h(i,j) + h(i+1,j))) & + & * mask_rho(i,j) * mask_rho(i+1,j) + dhdxx = max(dhdxx1,dhdxx2) + + rvwgtx = rvwavg + rvwrng*(tanh((dhdxx-rv0)/rvwscl)) +! if (i .ge. 60) rvwgtx = max(rvwgtx,1.6) + return + end + +! ******************************************************************** + + BIGREAL function rvwgty(i,j) + integer i, j + BIGREAL rv0, rvwscl,rvwmin, rvwmax, & + & rvwavg, rvwrng, dhdyy1, dhdyy2, dhdyy + +#include "bathy.h" + + rv0 = 0.15 + rvwscl = 0.04 + rvwmin = 0.0 + rvwmax = 1.2 + rvwavg = 0.5*(rvwmin+rvwmax) + rvwrng = 0.5*(rvwmax-rvwmin) + dhdyy1 = abs((h(i,j) - h(i,j-1)) / (h(i,j) + h(i,j-1))) & + & * mask_rho(i,j) * mask_rho(i,j-1) + dhdyy2 = abs((h(i,j+1) - h(i,j)) / (h(i,j) + h(i,j+1))) & + & * mask_rho(i,j) * mask_rho(i,j+1) + dhdyy = max(dhdyy1,dhdyy2) + + rvwgty = rvwavg + rvwrng*(tanh((dhdyy-rv0)/rvwscl)) +! if (i .ge. 60) rvwgty = max(rvwgty,1.6) + return + end + +! ******************************************************************** + + BIGREAL function rv(i,j) + integer i, j + +! calculate the SPEM r-value +#include "bathy.h" + BIGREAL dhdxx, dhdyy + + dhdxx = abs((h(i,j) - h(i-1,j)) / (h(i,j) + h(i-1,j))) & + & * mask_rho(i,j) * mask_rho(i-1,j) + dhdyy = abs((h(i,j) - h(i,j-1)) / (h(i,j) + h(i,j-1))) & + & * mask_rho(i,j) * mask_rho(i,j-1) + rv = max(dhdxx,dhdyy) + return + end diff --git a/Drivers/bathtub.F b/Drivers/bathtub.F new file mode 100644 index 0000000..c006c8f --- /dev/null +++ b/Drivers/bathtub.F @@ -0,0 +1,564 @@ + program bathtub + +! *** In gridpak version 5.4 ***** October 18, 2001 **************** +! Kate Hedstrom (kate@arsc.edu) +! John Wilkin (wilkin@imcs.rutgers.edu) +! ****************************************************************** +! +! This program reads in the bathymetric data as well as the lat,long +! points at which depth is carried in SPEM. It interpolates the +! bathymetry to those grid points by a bilinear fit from the four +! nearest neighbors. The bathymetry data used is the ETOPO5 +! bathymetry read from the netCDF file. It is stored at +! 5 minute intervals (1/12 degrees = DELTA_X, DELTA_Y). +! +! ILAT is # of latitude grid points; +! ILON is # of longitude grid points. +! NSUB decimates the input data -- solely for plotting purposes to +! avoid overflowing conpack work arrays. +!******************************************************************** + +#include "griddefs.h" +#include "bathy.h" +#include "ncgrid.h" + integer Lm2, Mm2 + parameter ( Lm2=L-2, Mm2=M-2 ) + integer ILON, ILAT + BIGREAL DELTA_X, DELTA_Y + logical evenflag +#if NJB + parameter ( evenflag = .true. ) + parameter ( ILAT=1319, ILON=2600 ) + parameter ( DELTA_X=1/120.d0, DELTA_Y=1/120.d0 ) +#elif ETOPO5 + parameter ( evenflag = .true. ) + parameter ( ILON=360*12+1, ILAT=180*12+1 ) + parameter ( DELTA_X=1/12.d0, DELTA_Y=1/12.d0 ) + integer*2 bathy2(ILON-1,ILAT) +#elif ETOPO2 + parameter ( evenflag = .true. ) + parameter ( ILON=360*30+1, ILAT=180*30+1 ) + parameter ( DELTA_X=1/30.d0, DELTA_Y=1/30.d0 ) + integer*2 bathy2(ILON-1,ILAT) +#elif GEBCO + parameter ( evenflag = .true. ) + parameter ( ILON=360*60+1, ILAT=180*60+1 ) + parameter ( DELTA_X=1/60.d0, DELTA_Y=1/60.d0 ) +#else + parameter ( evenflag = .true. ) +! Seth's AK bathy + parameter ( ILON=6601, ILAT=3601) + parameter ( DELTA_X=1/60.d0, DELTA_Y=1/120.d0) +! parameter ( ILON=2601, ILAT=1401, DELTA=1/30.d0) +! Hank's CGOA +! parameter ( ILON=1861, ILAT=1093, DELTA=1/60.d0) +! Smith and Sandwell +! parameter ( evenflag = .false. ) +! parameter ( ILON=1771, ILAT=1978) + +#endif /* DAMEE */ + integer*2 bathy(ILON,ILAT) + BIGREAL lat(ILAT), lon(ILON) + common /ll/ lat, lon + BIGREAL corner(2,2), dx, dy + BIGREAL minlat, minlon, maxlat, maxlon + + integer NSUB, LONSUB, LATSUB + parameter(NSUB = ILON/250+ILAT/250) + parameter(LONSUB=(ILON-1)/NSUB, LATSUB=(ILAT-1)/NSUB ) + real tmp(LONSUB,LATSUB), htmp(0:L,0:M) + character*24 lbl + real alatn, alats, alonw, alone + BIGREAL depthmxr, depthmnr, & + & htmp1, htmp2, x1, y1 + BIGREAL vmin, vmax + integer*2 vsimin, vsimax + integer i, j, i1, j1 + BIGREAL zero, one + parameter ( zero=0.d0, one=1.d0 ) + integer find_i, find_j + logical mask_flag +#if IMG_AVG + integer i2, j2, ii, jj, np + BIGREAL aa, bb, cc, dd +#endif /* IMG_AVG */ + +#include "gridid.h" + +! depths less than depthmin will be set to depthmin + print *, 'minimum depth (negative is land elevation)' + read(5,*) depthmin +! depths greater than depthmax will be set to depthmax + print *, 'maximum depth' + read(5,*) depthmax + print *, 'apply mask? (T/F)' + read(5,*) mask_flag + +#if ETOPO5 || ETOPO2 + call extract(lon,lat,bathy2,ILON-1,ILAT) + +! Longitudes between 0 and 360 + lon(ILON) = 180. + do i=1,ILON + if (lon(i) .lt. 0.) lon(i) = lon(i) + 360. + enddo + +! Copy value at one end of the Earth to other end + do i=1,ILON-1 + do j=1,ILAT + bathy(i,j) = bathy2(i,j) + enddo + enddo + do j=1,ILAT + bathy(ILON,j) = bathy(1,j) + enddo +#else + call extract(lon,lat,bathy,ILON,ILAT) + +! Longitudes between 0 and 360 + do i=1,ILON + if (lon(i) .lt. 0.) lon(i) = lon(i) + 360. + enddo +#endif /* ETOPO5 || ETOPO2 */ + +! Our convention has been negative for land elevations + do j=1,ILAT + do i=1,ILON + bathy(i,j) = -bathy(i,j) + enddo + enddo + + alatn = lat(ILAT) + alats = lat(1) + alonw = vmin(lon,ILON) + alone = vmax(lon,ILON) + + depthmxr = vsimax(bathy,ILON*ILAT) + print *,' Maximum depth read is ',depthmxr + depthmnr = vsimin(bathy,ILON*ILAT) + print *,' Minimum depth read is ',depthmnr + + call get_lat + + minlat = vmin(lat_rho,Lp*Mp) + minlon = vmin(lon_rho,Lp*Mp) + maxlat = vmax(lat_rho,Lp*Mp) + maxlon = vmax(lon_rho,Lp*Mp) + +#if ETOPO5 + if (minlon .lt. 0.) then +#endif /* ETOPO5 */ + do j=0,M + do i=0,L + if (lon_rho(i,j) .lt. 0.) lon_rho(i,j) = lon_rho(i,j) + 360. + enddo + enddo + minlon = vmin(lon_rho,Lp*Mp) + maxlon = vmax(lon_rho,Lp*Mp) +#if ETOPO5 + endif +#endif /* ETOPO5 */ + + print *,'latitude range of grid ',minlat,maxlat + print *,'latitude range of data ',alats,alatn + print *,'longitute range of grid ',minlon,maxlon + print *,'longitute range of data ',alonw,alone + if (minlat .lt. alats .or. maxlat .gt. alatn) then + print *,'Insufficient latitude range of data' + print *,'try again ... ' +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + end if + if (minlon .lt. alonw .or. maxlon .gt. alone) then + print *,'Insufficient longitute range of data' + print *,'try again ... ' +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + end if + +! h at lat_rho, lon_rho, before h is clipped + +#if IMG_AVG +! h at lat_rho, lon_rho + + do j=1,Mm + do i=1,Lm + aa = lat_v(i,j) + bb = lat_v(i,j+1) + cc = lon_u(i,j) + dd = lon_u(i+1,j) + + call locate(lon,ILON,cc,i1) + call locate(lon,ILON,dd,i2) + call locate(lat,ILAT,aa,j1) + call locate(lat,ILAT,bb,j2) + + np=0 + h(i,j) = 0. + do jj=j1+1,j2 + do ii=i1+1,i2 + h(i,j)=h(i,j)+bathy(ii,jj) + if(bathy(ii,jj).ne.0.) np=np+1 + enddo + enddo + if (np .ne. 0) h(i,j)=h(i,j)/float(np) + enddo + enddo + +! Valeurs au bord + do i=1,Lm + h(i,0)=h(i,1) + h(i,M)=h(i,Mm) + enddo + do j=0,M + h(0,j)=h(1,j) + h(L,j)=h(Lm,j) + enddo +#else + if (evenflag) then + do i=0,L + do j=0,M + i1 = int((lon_rho(i,j) - alonw)/DELTA_X) + 1 + j1 = int((lat_rho(i,j) - alats)/DELTA_Y) + 1 + x1 = lon_rho(i,j) - (alonw + (i1-1.)*DELTA_X) + y1 = lat_rho(i,j) - (alats + (j1-1.)*DELTA_Y) + corner(1,1) = bathy(i1,j1) + corner(1,2) = bathy(i1,j1+1) + corner(2,1) = bathy(i1+1,j1) + corner(2,2) = bathy(i1+1,j1+1) + htmp1 = corner(1,1) + (corner(2,1)-corner(1,1))*x1/DELTA_X + htmp2 = corner(1,2) + (corner(2,2)-corner(1,2))*x1/DELTA_X + h(i,j) = htmp1 + (htmp2-htmp1)*y1/DELTA_Y + enddo + enddo + else + do i=0,L + do j=0,M + i1 = find_i(lon_rho(i,j),ILON,lon) + j1 = find_j(lat_rho(i,j),ILAT,lat) + x1 = lon_rho(i,j) - lon(i1) + y1 = lat_rho(i,j) - lat(j1) + corner(1,1) = bathy(i1,j1) + corner(1,2) = bathy(i1,j1+1) + corner(2,1) = bathy(i1+1,j1) + corner(2,2) = bathy(i1+1,j1+1) + dx = lon(i1+1) - lon(i1) + dy = lat(j1+1) - lat(j1) + htmp1 = corner(1,1) + (corner(2,1)-corner(1,1))*x1/dx + htmp2 = corner(1,2) + (corner(2,2)-corner(1,2))*x1/dx + h(i,j) = htmp1 + (htmp2-htmp1)*y1/dy + enddo + enddo + endif +#endif /* IMG_AVG */ + +! calculate mask from bathymetry + if (mask_flag) then + do i=0,L + do j=0,M + if (h(i,j) .le. 0.) then + mask_rho(i,j) = zero + else + mask_rho(i,j) = one + endif + enddo + enddo + call uv_mask + +! Write mask + call wrt_mask + endif +! Write unclipped bathymetry + call wrt_h + +! Now clip bathy values before interpolating h again + if (depthmnr .lt. depthmin) then + do j=1,ILAT + do i=1,ILON + bathy(i,j) = max(depthmin,bathy(i,j)) + enddo + enddo + print *,' There were depths less than ',depthmin + print *,' These were set to ',depthmin + endif + if (depthmxr .gt. depthmax) then + do j=1,ILAT + do i=1,ILON + bathy(i,j) = min(depthmax,bathy(i,j)) + enddo + enddo + print *,' There were depths greater than ',depthmax + print *,' These were set to ',depthmax + endif + +! h at lat_rho, lon_rho, take 2 +#if IMG_AVG +! h at lat_rho, lon_rho + do j=1,Mm + do i=1,Lm + aa = lat_v(i,j) + bb = lat_v(i,j+1) + cc = lon_u(i,j) + dd = lon_u(i+1,j) + + call locate(lon,ILON,cc,i1) + call locate(lon,ILON,dd,i2) + call locate(lat,ILAT,aa,j1) + call locate(lat,ILAT,bb,j2) + + np=0 + h(i,j) = 0. + do jj=j1+1,j2 + do ii=i1+1,i2 + h(i,j)=h(i,j)+bathy(ii,jj) + if(bathy(ii,jj).ne.0.) np=np+1 + enddo + enddo + if (np .ne. 0) h(i,j)=h(i,j)/float(np) + enddo + enddo + +! Valeurs au bord + do i=1,Lm + h(i,0)=h(i,1) + h(i,M)=h(i,Mm) + enddo + do j=0,M + h(0,j)=h(1,j) + h(L,j)=h(Lm,j) + enddo +#else + if (evenflag) then + do i=0,L + do j=0,M + i1 = int((lon_rho(i,j) - alonw)/DELTA_X) + 1 + j1 = int((lat_rho(i,j) - alats)/DELTA_Y) + 1 + x1 = lon_rho(i,j) - (alonw + (i1-1.)*DELTA_X) + y1 = lat_rho(i,j) - (alats + (j1-1.)*DELTA_Y) + corner(1,1) = bathy(i1,j1) + corner(1,2) = bathy(i1,j1+1) + corner(2,1) = bathy(i1+1,j1) + corner(2,2) = bathy(i1+1,j1+1) + htmp1 = corner(1,1) + (corner(2,1)-corner(1,1))*x1/DELTA_X + htmp2 = corner(1,2) + (corner(2,2)-corner(1,2))*x1/DELTA_X + h(i,j) = htmp1 + (htmp2-htmp1)*y1/DELTA_Y + enddo + enddo + else + do i=0,L + do j=0,M + i1 = find_i(lon_rho(i,j),ILON,lon) + j1 = find_j(lat_rho(i,j),ILAT,lat) + x1 = lon_rho(i,j) - lon(i1) + y1 = lat_rho(i,j) - lat(j1) + corner(1,1) = bathy(i1,j1) + corner(1,2) = bathy(i1,j1+1) + corner(2,1) = bathy(i1+1,j1) + corner(2,2) = bathy(i1+1,j1+1) + dx = lon(i1+1) - lon(i1) + dy = lat(j1+1) - lat(j1) + htmp1 = corner(1,1) + (corner(2,1)-corner(1,1))*x1/dx + htmp2 = corner(1,2) + (corner(2,2)-corner(1,2))*x1/dx + h(i,j) = htmp1 + (htmp2-htmp1)*y1/dy + enddo + enddo + endif +#endif /* IMG_AVG */ + +! write clipped bathymetry + call wrt_h + +#if PLOTS +! Plot the original topography + call start_plot + +! set foreground to black, background to white + call gscr(1,0,1.,1.,1.) + call gscr(1,1,0.,0.,0.) + + call pcseti('QUALITY',1) + write(lbl,200) + 200 format('Bottom Topography') + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(0.5,0.98,lbl,.012,0.,0.) + do j=1,LATSUB + do i=1,LONSUB + tmp(i,j)=bathy(NSUB*i,NSUB*j) + enddo + enddo + call set(.05,.95,.25,.95,1.,float(LONSUB),1.,float(LATSUB),1) + call perim(1,ILON/12,1,ILAT/12) + call cpseti('SET',0) + call cpshift(tmp,LONSUB,LONSUB,LATSUB,0.,.false.,1.) + call frame +! set foreground to black, background to white + call gscr(1,0,1.,1.,1.) + call gscr(1,1,0.,0.,0.) + call cpsfill(tmp,LONSUB,LONSUB,LATSUB,5,2,.false.,.false.) + call frame + +! Plot the topography on the grid + + do j=0,M + do i=0,L + htmp(i,j)=h(i,j) + enddo + enddo + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(0.5,0.98,lbl,.012,0.,0.) + call set(.05,.95,.05,.95,1.,float(Lp),1.,float(Mp),1) + call perim(1,L,1,M) + call cpcnrc(htmp,Lp,Lp,Mp,0.,0.,0.,1,-1,-682) + call frame + call end_plot +#endif /* PLOTS */ + +#if NO_EXIT + stop +#else + call exit(0) +#endif /* NO_EXIT */ + 220 call crash('bathtub: read error', 0) + end + +! ****************************************************************** + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + return + end + +! *********************************************************** + + integer*2 function vsimax(vect,N) + integer N + integer*2 vect(N) + integer*2 tmp + integer i + + tmp = vect(1) + do i=2,N + tmp = max(tmp,vect(i)) + enddo + vsimax = tmp + return + end + + integer*2 function vsimin(vect,N) + integer N + integer*2 vect(N) + integer*2 tmp + integer i + + tmp = vect(1) + do i=2,N + tmp = min(tmp,vect(i)) + enddo + vsimin = tmp + return + end + +! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + subroutine locate(xx,n,x,j) + + integer j,n + BIGREAL xx(n) + BIGREAL x + integer jl,jm,ju + + jl=0 + ju=n+1 + 10 if (ju-jl .gt. 1) then + jm=(ju+jl)/2 + if((xx(n).gt.xx(1)).eqv.(x.gt.xx(jm)))then + jl=jm + else + ju=jm + endif + goto 10 + endif + j=jl + return + end + +! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + function find_i(lon_rho,ILON,lon) + integer find_i + BIGREAL lon_rho + integer ILON + real lon(ILON) + integer mid, high, low + + low = 1 + high = ILON + mid = (high+low)/2 + + do while (.true.) + if (lon_rho .gt. lon(mid)) then + low = mid + mid = (high+low)/2 + if (high - low .eq. 1) then + find_i = low + return + endif + else + high = mid + mid = (high+low)/2 + if (high - low .eq. 1) then + find_i = low + return + endif + endif + enddo + + end + +! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + function find_j(lat_rho,ILAT,lat) + integer find_j + BIGREAL lat_rho + integer ILAT + real lat(ILAT) + integer mid, high, low + + low = 1 + high = ILAT + mid = (high+low)/2 + + do while (.true.) + if (lat_rho .gt. lat(mid)) then + low = mid + mid = (high+low)/2 + if (high - low .eq. 1) then + find_j = low + return + endif + else + high = mid + mid = (high+low)/2 + if (high - low .eq. 1) then + find_j = low + return + endif + endif + enddo + + end diff --git a/Drivers/coast.F b/Drivers/coast.F new file mode 100644 index 0000000..25da802 --- /dev/null +++ b/Drivers/coast.F @@ -0,0 +1,232 @@ + program coast1 + +! *** In gridpak version 5.4 ***** October 18, 2001 **************** +! Kate Hedstrom (kate@arsc.edu) +! John Wilkin (wilkin@imcs.rutgers.edu) +! +! This program converts a coastline given in Latitude-Longitude pairs +! into meters on a plane for use by the grid generation program. +! The plane projection is any one of the ten provided by the +! NCAR Graphics routines in EZMAP. See the EZMAP manual for a +! description of its (many) subroutines and their parameters. +! +! backward is a logical variable which is true if you read in the +! data in the direction opposite to the direction it should be +! written out for the grid program. +! ******************************************************************* + +#include "coast.h" +#include "proj.h" + +! Earth angular frequency and radius of sphere of equal volume + real Aomega, REarth + parameter ( Aomega=7.292115e-5 , REarth=6.3708e6 ) + + real s(IBIG), u(IBIG), v(IBIG), x(IBIG), y(IBIG) + real xwrk(IBIG), ywrk(IBIG) + character*21 ident + real DTOR, RTOD + integer i, nn + real u1, v1, u2, v2, udeg, s1 + + data DTOR / .017453292519943 / + data RTOD / 57.2957795130823 / + + call opngks + call pcseti('QUALITY',1) + +! The map of the coastline database + + write(ident,100) + 100 format(' EZMAP Coast Database') + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(0.5,0.98,ident,.012,0.,0.) + call mapsti('GR',JGRD) + call mapstc('OU','PS') + call maproj(JPRJ,PLAT,PLONG,ROTA) + call mapset(JLTS,P1,P2,P3,P4) + call mapdrw + call frame + +! The map of your coastline + + call cstiput(nn) + write(ident,110) + 110 format('Digitized Coastline') + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(0.5,0.98,ident,.012,0.,0.) + call mapstc('OU','NO') + call mapset(JLTS,P1,P2,P3,P4) + call mapdrw + + call mapit(clat(1),clong(1),0) + do i=2,nn + call mapit(clat(i),clong(i),2) + enddo + call mapiq + call frame + + call maptrn(PLAT+.5,PLONG,u2,v2) + call maptrn(PLAT-.5,PLONG,u1,v1) + udeg = sqrt((u2-u1)*(u2-u1) + (v2-v1)*(v2-v1)) + do i=1,nn + call maptrn(clat(i),clong(i),u(i),v(i)) + x(i) = u(i)*DTOR*REarth/udeg + XOFF + y(i) = v(i)*DTOR*REarth/udeg + YOFF + enddo + + open(unit=60,form='FORMATTED') + write(60,*) nn + if (backward) then + do i=nn,1,-1 + write(60,*) x(i),' ',y(i) + enddo + else + do i=1,nn + write(60,*) x(i),' ',y(i) + enddo + end if + close(60) + +! Everything up to this point is generic. What follows should +! use the same interpolation scheme that the grid program uses. + +! The map of your coastline, interpolated by cubic splines + + write(ident,120) + 120 format('Spline Smoothed Coast') + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(0.5,0.98,ident,.012,0.,0.) + call mapset(JLTS,P1,P2,P3,P4) + call mapdrw + + do i=1,nn + s(i) = (i-1.)/(nn-1.) + enddo + call spline(s,u,nn,1.e30,1.e30,xwrk) + call spline(s,v,nn,0.,0.,ywrk) + + call frstd(u(1),v(1)) + do i=1,400 + s1 = i/400. + call splint(s,u,xwrk,nn,s1,u1) + call splint(s,v,ywrk,nn,s1,v1) + call vectd(u1,v1) + enddo + call mapiq + call frame + + call clsgks +#if NO_EXIT + stop +#else + call exit(0) +#endif /* NO_EXIT */ + end + +!********************************************************************* + + subroutine cstiput(nn) + integer nn +#include "coast.h" + +! I want a "while (scanf() != EOF)", but I have to fake it. + do nn=1,IBIG + read(5,*,err=120,end=110) clat(nn),clong(nn) + enddo + +! If you get here then you have not reached the EOF mark + print *,'Array size too small for the number of points' + print *,'in coastline data file. Only the first ',IBIG + print *,'points will be used.' + + 110 continue + nn = nn-1 + print *,'Number of points read = ',nn + return + 120 print *,'read error in cstiput' +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + end + +! ********************************************************************** + + subroutine spline(x,y,N,yp1,ypn,y2) + integer N + real x(N), y(N), yp1, ypn, y2(N) + +! The following two subroutines are used to perform a cubic spline +! interpolation. The routines are taken from Press,W.H., B.P. +! Flannery, S.A.Teukolsky and W.T.Vetterling: "Numerical Recipes, +! the Art of Scientific Computing" Cambridge University Press, 1986. + +#include "coast.h" + real u(IBIG), sig, p, qn, un + integer i, k + + if (yp1.gt..99e30) then + y2(1)=0. + u(1)=0. + else + y2(1)=-0.5 + u(1)=(3./(x(2)-x(1)))*((y(2)-y(1))/(x(2)-x(1))-yp1) + endif + do 100 i=2,N-1 + sig=(x(i)-x(i-1))/(x(i+1)-x(i-1)) + p=sig*y2(i-1)+2. + y2(i)=(sig-1.)/p + u(i)=(6.*((y(i+1)-y(i))/(x(i+1)-x(i))-(y(i)-y(i-1)) & + & /(x(i)-x(i-1)))/(x(i+1)-x(i-1))-sig*u(i-1))/p + 100 continue + if (ypn.gt..99e30) then + qn=0. + un=0. + else + qn=0.5 + un=(3./(x(N)-x(N-1)))*(ypn-(y(N)-y(N-1))/(x(N)-x(N-1))) + endif + y2(N)=(un-qn*u(N-1))/(qn*y2(N-1)+1.) + do 110 k=N-1,1,-1 + y2(k)=y2(k)*y2(k+1)+u(k) + 110 continue + return + end + +! ********************************************************************** + + subroutine splint(xa,ya,y2a,N,x,y) + integer N + real xa(N), ya(N), y2a(N), x, y + + integer klo, khi, k + real h, a, b + + klo=1 + khi=N + 100 if (khi-klo.gt.1) then + k=(khi+klo)/2 + if(xa(k).gt.x)then + khi=k + else + klo=k + endif + goto 100 + endif + h=xa(khi)-xa(klo) + if (h.eq.0.) then + print *,'problem in splint' +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + end if + a=(xa(khi)-x)/h + b=(x-xa(klo))/h + y=a*ya(klo)+b*ya(khi)+ & + & ((a**3-a)*y2a(klo)+(b**3-b)*y2a(khi))*(h**2)/6. + return + end diff --git a/Drivers/grid.F b/Drivers/grid.F new file mode 100644 index 0000000..c944281 --- /dev/null +++ b/Drivers/grid.F @@ -0,0 +1,1233 @@ + program gridmain + +! *** In gridpak version 5.4 ***** October 18, 2001 **************** +! Kate Hedstrom (kate@arsc.edu) +! John Wilkin (wilkin@imcs.rutgers.edu) +! ****************************************************************** +! +! This version reads digitized coastal and offshore boundaries and +! computes an orthogonal curvilinear coordinate grid for use with +! the Haidvogel Semi-spectral Primitive Equation Model (SPEM). +! The algorithm used is from David C.Ives and Robert M.Zacharias: +! "Conformal Mapping and Orthogonal Grid Generation", +! paper no. 87-2057, AIAA/SAE/ASME/ASEE 23rd Joint Propulsion +! Conference, San Diego, California, June 1987. +! +! It now uses mud2 version 3.0 or sepeli. +! +! This version uses double precision complex arithmetic. If your +! compiler does not support double precision complex, undefine +! DCOMPLEX in griddefs.h. Conversion +! to single precision will produce a significant degradation in +! performance. It will probably cause 'tracking error' problems in +! the conformal mapping calculation unless the machine you are using +! (e.g. a Cray) has a greater than 32-bit word length. + +! Direct any question/problems (and reports of errors!) to: +! John Wilkin +! CSIRO Division of Oceanography +! GPO Box 1538, Hobart +! Tasmania 7001, Australia +! email: wilkin@flood.ml.csiro.au + +! ITMAX is the number of iterations to perform +! IBIG is the largest number of points to be read in for one +! boundary + +#include "griddefs.h" +#include "grid.h" +#include "ncgrid.h" +#if DCOMPLEX + complex*16 zwrk(M2+L2+M2+L2) +#endif /* DCOMPLEX */ + BIGCOMPLEX z(M2+L2+M2+L2) + integer i, j, k, ikb, ierr + BIGREAL xb(M2+L2+M2+L2), yb(M2+L2+M2+L2), wrk(0:M2+L2), & + & wxi(0:L2), weta(0:M2), s1(0:L2), s2(0:M2), & + & xint(0:M2+L2), yint(0:M2+L2), & + & x(0:L2big,0:M2big), y(0:L2big,0:M2big), & + & rhs(0:L2big,0:M2big), ewrk(nwrk), huge + parameter ( huge = 1.e+35 ) + BIGREAL pertrb, dum, t1, t2, zero + parameter ( zero = 0.d0 ) + character*40 lbl + BIGREAL errplt(Lm,Mm), stmp, error, area, tarea + equivalence (rhs,errplt) + external coef, bndyc, cofx, cofy + +! label for grid +#include "gridid.h" + write(lbl,100) gridid(1:40) + 100 format(40a) + +#if PLOTS + call start_plot +#endif /* PLOTS */ + +! original distribution of x,y points is preserved on boundary kb1 +! and kb2: + if(kb1.ne.1.and.kb1.ne.3) & + & call crash('boundary index kb1 must be 1 or 3', kb1) + if(kb2.ne.2.and.kb2.ne.4) & + & call crash('boundary index kb2 must be 2 or 4', kb2) + +! set up boundary spline interpolation arrays + call readbndy + +! initialize vector z (complex) with contour of physical boundary + call z_init(z, xb, yb) + +#if FOO +#if DCOMPLEX +! On 32-bit machines things work much better if the conformal mapping +! is done in double precision complex arithmetic + + do i=1,N4 + zwrk(i)=dcmplx(real(z(i)),aimag(z(i))) + enddo +#endif /* DCOMPLEX */ +#endif + +! Map physical boundary to a rectangle + do 120 k=1,ITMAX +#if DCOMPLEX +! call rect(zwrk,N,N1,N2,N3,N4) + call rect(z,N,N1,N2,N3,N4) +#else + call rects(z,N,N1,N2,N3,N4) +#endif /* DCOMPLEX */ + +#if FOO +#if DCOMPLEX +! Convert back to single precision complex for all other calculations + do i=1,N4 + z(i)=cmplx(sngl(dreal(zwrk(i))),sngl(dimag(zwrk(i)))) + enddo +#endif /* DCOMPLEX */ +#endif + +! Calculate departure of contour from rectangular + error = 0. +#if DBLEPREC + do i=1,N1 + error = error + dabs(dreal(z(i))-dreal(z(1))) + enddo + do i=N1+1,N2 + error = error + dabs(dimag(z(i))-dimag(z(N1+1))) + enddo + do i=N2+1,N3 + error = error + dabs(dreal(z(i))-dreal(z(N2+1))) + enddo + do i=N3+1,N4 + error = error + dabs(dimag(z(i))-dimag(z(N3+1))) + enddo +#else + do i=1,N1 + error = error + abs(real(z(i))-real(z(1))) + enddo + do i=N1+1,N2 + error = error + abs(aimag(z(i))-aimag(z(N1+1))) + enddo + do i=N2+1,N3 + error = error + abs(real(z(i))-real(z(N2+1))) + enddo + do i=N3+1,N4 + error = error + abs(aimag(z(i))-aimag(z(N3+1))) + enddo +#endif /* DBLEPREC */ + error = error/FLoaT(N4) + write(6,110)k,error + 110 format(' rectangularity error in mapped contour at', & + & ' iteration ',i2,' is ',1pe10.4) + 120 continue + +! Store distribution of xi,eta points along boundaries (used to +! compute coefficients of elliptic equation) + do i=0,L2 +#if DBLEPREC + if (kb2 .eq. 2) sxi(i) = dreal(z(N1+i)) + if (kb2 .eq. 4) sxi(i) = dreal(z(N4-i)) +#else + if (kb2 .eq. 2) sxi(i) = real(z(N1+i)) + if (kb2 .eq. 4) sxi(i) = real(z(N4-i)) +#endif /* DBLEPREC */ + enddo + + do j=0,M2-1 +#if DBLEPREC + if (kb1 .eq. 1) seta(j) = dimag(z(N1-j)) + if (kb1 .eq. 3) seta(j) = dimag(z(N2+j)) +#else + if (kb1 .eq. 1) seta(j) = aimag(z(N1-j)) + if (kb1 .eq. 3) seta(j) = aimag(z(N2+j)) +#endif /* DBLEPREC */ + enddo +#if DBLEPREC + seta(M2) = dimag(z(N4)) +#else + seta(M2) = aimag(z(N4)) +#endif /* DBLEPREC */ + +! Cubic spline interpolation of mapping on boundaries 3 and 4 to +! match distribution of points with those on boundaries 1 and 2 +! This also does the interpolation when Lsmall and L are different. +! It actually does too much work when L==Lsmall. + +! boundary 1 + do j=0,M2-1 + ikb = N1-j +#if DBLEPREC + weta(j) = dimag(z(ikb)) +#else + weta(j) = aimag(z(ikb)) +#endif /* DBLEPREC */ + xint(j) = xb(ikb) + yint(j) = yb(ikb) + enddo + ikb = N4 +#if DBLEPREC + weta(N1) = dimag(z(ikb)) +#else + weta(N1) = aimag(z(ikb)) +#endif /* DBLEPREC */ + xint(N1) = xb(ikb) + yint(N1) = yb(ikb) + call spline(weta,xint,M2+1,huge,huge,wrk) + do j=0,M2big + call splint(weta,xint,wrk,M2+1,seta(j),x(0,j)) + enddo + call spline(weta,yint,M2+1,huge,huge,wrk) + do j=0,M2big + call splint(weta,yint,wrk,M2+1,seta(j),y(0,j)) + enddo + +! boundary 3 + do j=0,M2 + ikb = N2+j +#if DBLEPREC + weta(j) = dimag(z(ikb)) +#else + weta(j) = aimag(z(ikb)) +#endif /* DBLEPREC */ + xint(j) = xb(ikb) + yint(j) = yb(ikb) + enddo + call spline(weta,xint,M2+1,huge,huge,wrk) + do j=0,M2big + call splint(weta,xint,wrk,M2+1,seta(j),x(L2big,j)) + enddo + call spline(weta,yint,M2+1,huge,huge,wrk) + do j=0,M2big + call splint(weta,yint,wrk,M2+1,seta(j),y(L2big,j)) + enddo + +! boundary 2 + do i=0,L2 + ikb = N1+i +#if DBLEPREC + wxi(i) = dreal(z(ikb)) +#else + wxi(i) = real(z(ikb)) +#endif /* DBLEPREC */ + xint(i) = xb(ikb) + yint(i) = yb(ikb) + enddo + call spline(wxi,xint,L2+1,huge,huge,wrk) + do i=0,L2big + call splint(wxi,xint,wrk,L2+1,sxi(i),x(i,0)) + enddo + call spline(wxi,yint,L2+1,huge,huge,wrk) + do i=0,L2big + call splint(wxi,yint,wrk,L2+1,sxi(i),y(i,0)) + enddo + +! boundary 4 + do i=0,L2 + ikb = N4-i +#if DBLEPREC + wxi(i) = dreal(z(ikb)) +#else + wxi(i) = real(z(ikb)) +#endif /* DBLEPREC */ + xint(i) = xb(ikb) + yint(i) = yb(ikb) + enddo + call spline(wxi,xint,L2+1,huge,huge,wrk) + do i=0,L2big + call splint(wxi,xint,wrk,L2+1,sxi(i),x(i,M2big)) + enddo + call spline(wxi,yint,L2+1,huge,huge,wrk) + do i=0,L2big + call splint(wxi,yint,wrk,L2+1,sxi(i),y(i,M2big)) + enddo + +! Set right hand side of elliptic equation to zero + do j=1,M2big-1 + do i=1,L2big-1 + x(i,j) = 0. + y(i,j) = 0. + rhs(i,j) = 0. + enddo + enddo + + ewrk(1) = nwrk + t1 = L2big + t2 = M2big + call sepeli(0,2,zero,t1,L2big,1,dum,dum,dum,dum, & + & zero,t2,M2big,1,dum,dum,dum,dum, & + & cofx,cofy,rhs,x,L2big+1,ewrk,pertrb,ierr) + if (ierr .gt. 0) then + call crash('sepeli failed while computing x solution', ierr) + end if + ewrk(1) = nwrk + call sepeli(0,2,zero,t1,L2big,1,dum,dum,dum,dum, & + & zero,t2,M2big,1,dum,dum,dum,dum, & + & cofx,cofy,rhs,y,L2big+1,ewrk,pertrb,ierr) + if (ierr .gt. 0) then + call crash('sepeli failed while computing y solution', ierr) + end if + +! Compute pm,pn factors + do j = 1,Mm + do i = 1,Lm + pm(i,j) = 1.0/sqrt( ( x(2*i,2*j-1)-x(2*i-2,2*j-1) )**2 & + & + ( y(2*i,2*j-1)-y(2*i-2,2*j-1) )**2 ) + pn(i,j) = 1.0/sqrt( ( x(2*i-1,2*j)-x(2*i-1,2*j-2) )**2 & + & + ( y(2*i-1,2*j)-y(2*i-1,2*j-2) )**2 ) + enddo + enddo + +! M,N factors outside the boundaries + do j=1,Mm + pm(0,j) = pm(1,j) + pn(0,j) = pn(1,j) + pm(L,j) = pm(Lm,j) + pn(L,j) = pn(Lm,j) + enddo + do i=0,L + pm(i,0) = pm(i,1) + pn(i,0) = pn(i,1) + pm(i,M) = pm(i,Mm) + pn(i,M) = pn(i,Mm) + enddo + +! Compute dndx,dmde + do i=1,Lm + do j=1,Mm + dndx(i,j) = (1./pn(i+1,j) - 1./pn(i-1,j))/2. + enddo + enddo + do i=1,Lm + do j=1,Mm + dmde(i,j) = (1./pm(i,j+1) - 1./pm(i,j-1))/2. + enddo + enddo + do j=1,Mm + dndx(0,j) = 0. + dmde(0,j) = 0. + dndx(L,j) = 0. + dmde(L,j) = 0. + enddo + do i=0,L + dndx(i,0) = 0. + dmde(i,0) = 0. + dndx(i,M) = 0. + dmde(i,M) = 0. + enddo + +! Split up grid solution into separate arrays for the coordinates +! of the four locations on the Arakawa C grid corresponding to rho, +! psi, u and v points. + +! psi points + do j=1,M + do i=1,L + xp(i,j) = x(2*i-2,2*j-2) + yp(i,j) = y(2*i-2,2*j-2) + enddo + enddo + + if (pleft1) then + write (iout1,*) nb1pts + do j=1,nb1pts + write (iout1,*) x1spl(j),y1spl(j) + enddo + write (iout1,*) Lmiddle + do i=1,Lmiddle + write (iout1,*) xp(i,1),yp(i,1) + enddo + write (iout1,*) M + do j=1,M + write (iout1,*) xp(Lmiddle,j),yp(Lmiddle,j) + enddo + write (iout1,*) Lmiddle + do i=Lmiddle,1,-1 + write (iout1,*) xp(i,M),yp(i,M) + enddo + end if + if (pleft2) then + write (iout2,*) M + do j=M,1,-1 + write (iout2,*) xp(1,j),yp(1,j) + enddo + end if + + if (pbot1) then + write (iout1,*) Mmiddle + do j=Mmiddle,1,-1 + write (iout1,*) xp(1,j),yp(1,j) + enddo + write (iout1,*) nb2pts + do i=1,nb2pts + write (iout1,*) x2spl(i),y2spl(i) + enddo + write (iout1,*) Mmiddle + do j=1,Mmiddle + write (iout1,*) xp(L,j),yp(L,j) + enddo + write (iout1,*) L + do i=L,1,-1 + write (iout1,*) xp(i,Mmiddle),yp(i,Mmiddle) + enddo + end if + if (pbot2) then + write (iout2,*) L + do i=1,L + write (iout2,*) xp(i,1),yp(i,1) + enddo + end if + + if (subset) then + write (iout3,*) Mnorth-Msouth+1 + do j=Mnorth,Msouth,-1 + write (iout3,*) xp(Lwest,j),yp(Lwest,j) + enddo + write (iout3,*) Least-Lwest+1 + do i=Lwest,Least + write (iout3,*) xp(i,Msouth),yp(i,Msouth) + enddo + write (iout3,*) Mnorth-Msouth+1 + do j=Msouth,Mnorth + write (iout3,*) xp(Least,j),yp(Least,j) + enddo + write (iout3,*) Least-Lwest+1 + do i=Least,Lwest,-1 + write (iout3,*) xp(i,Mnorth),yp(i,Mnorth) + enddo + end if + +! u points + do j=1,Mm + do i=1,L + xu(i,j) = x(2*i-2,2*j-1) + yu(i,j) = y(2*i-2,2*j-1) + enddo + enddo + do i=1,L + xu(i,0) = 2*xp(i,1) - xu(i,1) + xu(i,M) = 2*xp(i,M) - xu(i,Mm) + yu(i,0) = 2*yp(i,1) - yu(i,1) + yu(i,M) = 2*yp(i,M) - yu(i,Mm) + enddo + +! vpoints + do j=1,M + do i=1,Lm + xv(i,j) = x(2*i-1,2*j-2) + yv(i,j) = y(2*i-1,2*j-2) + enddo + enddo + do j=1,M + xv(0,j) = 2*xp(1,j) - xv(1,j) + xv(L,j) = 2*xp(L,j) - xv(Lm,j) + yv(0,j) = 2*yp(1,j) - yv(1,j) + yv(L,j) = 2*yp(L,j) - yv(Lm,j) + enddo + +! rho points + do j=1,Mm + do i=1,Lm + xr(i,j) = x(2*i-1,2*j-1) + yr(i,j) = y(2*i-1,2*j-1) + enddo + enddo + do j=1,Mm + xr(L,j) = 2*xu(L,j) - xr(Lm,j) + xr(0,j) = 2*xu(1,j) - xr(1,j) + yr(L,j) = 2*yu(L,j) - yr(Lm,j) + yr(0,j) = 2*yu(1,j) - yr(1,j) + enddo + do i=0,L + xr(i,M) = 2*xv(i,M) - xr(i,Mm) + yr(i,M) = 2*yv(i,M) - yr(i,Mm) + xr(i,0) = 2*xv(i,1) - xr(i,1) + yr(i,0) = 2*yv(i,1) - yr(i,1) + enddo + +! Diagnostics: +! Compute area of domain from m,n factors + area = 0. + do j = 1,Mm + do i = 1,Lm + area = area + 1./(pm(i,j)*pn(i,j)) + enddo + enddo + write(6,130)area + 130 format(5x,'area ',g10.4) + +! Check orthogonality by evaluating dx/dxi*dx/deta+dy/dxi*dy/deta +! everywhere. Normalize with respect to local grid cell area. +! Store result in errplt and pass to gridplot. + do j=1,Mm + do i=1,Lm + errplt(i,j) = ((x(2*i,2*j-1)-x(2*i-2,2*j-1))* & + & (x(2*i-1,2*j)-x(2*i-1,2*j-2))+ & + & (y(2*i,2*j-1)-y(2*i-2,2*j-1))* & + & (y(2*i-1,2*j)-y(2*i-1,2*j-2)))* & + & pm(i,j)*pn(i,j) + enddo + enddo + +! Output solution +! (This output format parallels the input format assumed by +! subroutine getgrid in pemodel) + call checkdefs + call def_grid +#if PLOTS + call gridplot(lbl,area,tarea,errplt) + call end_plot +#endif /* PLOTS */ + +#if NO_EXIT + stop +#else + call exit(0) +#endif /* NO_EXIT */ + 140 call crash('grid: error while outputing solution', 0) + end + +! ******************************************************************* + + subroutine bndyc (kbdy,xory,alfa,gbdy) + integer kbdy + BIGREAL xory, alfa, gbdy + write (6,100) + 100 format (' you are in bndyc: tut tut.') + stop + end + +! ******************************************************************* + + subroutine coef (x,y,cxx,cyy,cx,cy,c) + BIGREAL x, y, cxx, cyy, cx, cy, c +#include "grid.h" + integer i, j + BIGREAL dxdi, dedj + + i = nint(x) + j = nint(y) + dxdi = 0.5*(sxi(i+1)-sxi(i-1)) + dedj = 0.5*(seta(j+1)-seta(j-1)) + cxx = 1./dxdi**2 + cyy = 1./dedj**2 + cx = (-sxi(i+1)+2.*sxi(i)-sxi(i-1))/dxdi**3 + cy = (-seta(j+1)+2.*seta(j)-seta(j-1))/dedj**3 + c = 0. + return + end + +! ******************************************************************* + + subroutine cofx(xx,afun,bfun,cfun) + BIGREAL xx, afun, bfun, cfun + +! subroutine to compute the coefficients of the elliptic equation +! solved to fill in the grid. it is passed (along with cofy) to +! the elliptic solver sepeli. + +#include "grid.h" + integer i + BIGREAL dxdi + i = int(xx) + dxdi = 0.5 * (sxi(i+1)-sxi(i-1)) + afun = 1. / dxdi ** 2 + bfun = (-sxi(i+1)+2.*sxi(i)-sxi(i-1)) / dxdi ** 3 + cfun = 0. + return + end + +! ******************************************************************* + + subroutine cofy(yy,dfun,efun,ffun) + BIGREAL yy, dfun, efun, ffun +#include "grid.h" + integer j + BIGREAL dedj + j = int(yy) + dedj = 0.5 * (seta(j+1)-seta(j-1)) + dfun = 1. / dedj ** 2 + efun = (-seta(j+1)+2.*seta(j)-seta(j-1)) / dedj ** 3 + ffun = 0. + return + end + +! ******************************************************************* + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(ierr) +#endif /* NO_EXIT */ + return + end + +! ******************************************************************* +! subroutine factor: +! factors grid size to return the coefficients needed +! by mud2. +! +! John D. McCalpin (mccalpin@perelandra.cms.udel.edu) +! Mon Apr 1 12:13:44 EST 1991 +! +! Here is a short test code: +! write (*,'(a,$)') 'Enter NX, NY : ' +! read (*,*) nx,ny +! call factor (nx,ny,nxl,nyl,npow2x,npow2y) +! write (*,*) nxl,nyl,npow2x,npow2y +! end +!-------------------------------------------------------------- + + subroutine factor (nx,ny,nxl,nyl,ix,iy) +! -- input args -- + integer nx,ny +! -- output args -- + integer nxl,nyl,ix,iy + integer n2facts + +! get number of factors of 2 in nx and ny and correct to make +! sure remaining coefficient is greater than 1 + + ix = n2facts(nx) + if (ix .lt. 0) then + call crash('BAD NX IN FACTOR2', 1) + end if + if (nx/2**ix.eq.1) ix = ix-1 + iy = n2facts(ny) + if (iy .lt. 0) then + call crash('BAD NY IN FACTOR2', 1) + end if + if (ny/2**iy.eq.1) iy = iy-1 + +! now nxl and nyl are guaranteed to be consistent +! with respect to npow2 + + nxl = nx/2**ix + nyl = ny/2**iy + + return + end + +! +! integer function n2facts: +! returns the number of 2's in the prime factorization +! of a number +! + integer function n2facts(input) + integer input + integer n, npow2, i + + if (input.lt.0) goto 110 + + n = input + npow2 = 0 + do 100 i=1,64 + if (mod(n,2).eq.0) then + npow2 = npow2+1 + n = n/2 + else + goto 120 + endif + 100 continue + +! error return: n<0 or n>2**64 : the latter should not be possible! + 110 npow2 = -1 + + 120 n2facts = npow2 + return + end + +! ******************************************************************* + +#if PLOTS + subroutine gridplot(lbl,area,tarea,errplt) +#include "grid.h" + character*40 lbl + character*5 lbls + BIGREAL area, tarea + BIGREAL errplt(Lm,Mm) + SMALLREAL tmp(0:L,0:M), xlow, xhigh, ylow, yhigh, & + & x1, x2, y1, y2, dxmin, tmp2(Lm,Mm) + integer i, j + BIGREAL vmin, vmax + + call pcseti('QUALITY',1) + + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(.5,.98,lbl,.012,0.,0.) + write(lbl,100)area + 100 format(' Sum 1/MN=',g10.4) + call plchhq(.5,.03,lbl,.012,0.,0.) + +! Draw the psi points grid (boundaries coincide with channel walls) + xlow = vmin(xp,L*M) + xhigh = vmax(xp,L*M) + yhigh = vmax(yp,L*M) + ylow = vmin(yp,L*M) + xl = xhigh-xlow + el = yhigh-ylow + if (xl .ge. el) then + x1 = 0.05 + x2 = 0.95 + y1 = -.45*el/xl + .5 + y2 = y1 + el/xl*.9 + else + y1 = 0.05 + y2 = 0.95 + x1 = -.45*xl/el + .5 + x2 = x1 + xl/el*.9 + end if + call set(x1,x2,y1,y2,xlow,xhigh,ylow,yhigh,1) +#if DBLEPREC + do j = 1,M + call frstpt(sngl(xp(1,j)),sngl(yp(1,j))) + do i = 2,L + call vector(sngl(xp(i,j)),sngl(yp(i,j))) + enddo + enddo + do i = 1,L + call frstpt(sngl(xp(i,1)),sngl(yp(i,1))) + do j = 2,M + call vector(sngl(xp(i,j)),sngl(yp(i,j))) + enddo + enddo +#else + do j = 1,M + call frstpt(xp(1,j),yp(1,j)) + do i = 2,L + call vector(xp(i,j),yp(i,j)) + enddo + enddo + do i = 1,L + call frstpt(xp(i,1),yp(i,1)) + do j = 2,M + call vector(xp(i,j),yp(i,j)) + enddo + enddo +#endif /* DBLEPREC */ + call frame + +! Plot m and n + write(lbls,110) + 110 format('DX') + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(.5,.98,lbls(1:2),.012,0.,0.) + do j=0,M + do i=0,L + tmp(i,j) = 1/pm(i,j) + enddo + enddo + dxmin = vmax(pm,Lp*Mp) + dxmin = 1/dxmin + print *, 'minimum dx = ',dxmin + call set(.05,.95,.1,.9,1.,float(Lp),1.,float(Mp),1) + call perim(1,L,1,M) + call cpseti('SET',0) + call cpcnrc(tmp,Lp,Lp,Mp,0.0,0.0,0.0,1,-1,-682) + call frame + write(lbls,120) + 120 format('DY') + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(.5,.98,lbls(1:2),.012,0.,0.) + do j=0,M + do i=0,L + tmp(i,j) = 1/pn(i,j) + enddo + enddo + dxmin = vmax(pn,Lp*Mp) + dxmin = 1/dxmin + print *, 'minimum dy = ',dxmin + call set(.05,.95,.1,.9,1.,float(Lp),1.,float(Mp),1) + call perim(1,L,1,M) + call cpseti('SET',0) + call cpcnrc(tmp,Lp,Lp,Mp,0.0,0.0,0.0,1,-1,-682) + call frame + +! plot error in grid + do j=1,Mm + do i=1,Lm + tmp2(i,j) = errplt(i,j) + enddo + enddo + write(lbls,130) + 130 format('Error') + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(.5,.98,lbls,.012,0.,0.) + call set(.05,.95,.1,.9,1.,float(Lm),1.,float(Mm),1) + call perim(1,Lm-1,1,Mm-1) + call cpseti('SET',0) + call cpcnrc(tmp2,Lm,Lm,Mm,0.0,0.0,0.0,1,-1,-682) + call frame + return + end +#endif /* PLOTS */ + +! ******************************************************************* + + subroutine readbndy +#include "grid.h" + BIGREAL arcs(IBIG), huge + parameter (huge = 1.e+35 ) + integer i + +! Read x,y data points describing boundary 1 + read(5,*) nb1pts + if (nb1pts .gt. IBIG) then + call crash('readbndy: Need to make IBIG at least', nb1pts) + end if + do i=1,nb1pts + read(5,*) x1spl(i),y1spl(i) + enddo + if (.not. even1) then + do i=1,nb1pts + s1spl(i) = (i-1.)/(nb1pts-1.) + enddo + else + arcs(1) = 0 + do i = 2,nb1pts + arcs(i) = arcs(i-1) + sqrt((x1spl(i)-x1spl(i-1))**2 + & + & (y1spl(i)-y1spl(i-1))**2) + enddo + do i=1,nb1pts + s1spl(i) = arcs(i)/arcs(nb1pts) + enddo + end if + + call spline(s1spl,x1spl,nb1pts,huge,huge,b1spl) + call spline(s1spl,y1spl,nb1pts,huge,huge,c1spl) + +! Read x,y data points describing boundary 2 + read(5,*) nb2pts + if (nb2pts .gt. IBIG) then + call crash('readbndy: Need to make IBIG at least', nb2pts) + end if + do i=1,nb2pts + read(5,*) x2spl(i),y2spl(i) + enddo + if (.not. even2) then + do i=1,nb2pts + s2spl(i) = (i-1.)/(nb2pts-1.) + enddo + else + arcs(1) = 0 + do i = 2,nb2pts + arcs(i) = arcs(i-1) + sqrt((x2spl(i)-x2spl(i-1))**2 + & + & (y2spl(i)-y2spl(i-1))**2) + enddo + do i=1,nb2pts + s2spl(i) = arcs(i)/arcs(nb2pts) + enddo + end if + + call spline(s2spl,x2spl,nb2pts,huge,huge,b2spl) + call spline(s2spl,y2spl,nb2pts,huge,huge,c2spl) + +! Read x,y data points describing boundary 3 + read(5,*) nb3pts + if (nb3pts .gt. IBIG) then + call crash('readbndy: Need to make IBIG at least', nb3pts) + end if + do i=1,nb3pts + read(5,*) x3spl(i),y3spl(i) + enddo + if (.not. even3) then + do i=1,nb3pts + s3spl(i) = (i-1.)/(nb3pts-1.) + enddo + else + arcs(1) = 0 + do i = 2,nb3pts + arcs(i) = arcs(i-1) + sqrt((x3spl(i)-x3spl(i-1))**2 + & + & (y3spl(i)-y3spl(i-1))**2) + enddo + do i=1,nb3pts + s3spl(i) = arcs(i)/arcs(nb3pts) + enddo + end if + + call spline(s3spl,x3spl,nb3pts,huge,huge,b3spl) + call spline(s3spl,y3spl,nb3pts,huge,huge,c3spl) + +! Read x,y data points describing boundary 4 + read(5,*) nb4pts + if (nb4pts .gt. IBIG) then + call crash('readbndy: Need to make IBIG at least', nb4pts) + end if + do i=1,nb4pts + read(5,*) x4spl(i),y4spl(i) + enddo + if (.not. even4) then + do i=1,nb4pts + s4spl(i) = (i-1.)/(nb4pts-1.) + enddo + else + arcs(1) = 0 + do i = 2,nb4pts + arcs(i) = arcs(i-1) + sqrt((x4spl(i)-x4spl(i-1))**2 + & + & (y4spl(i)-y4spl(i-1))**2) + enddo + do i=1,nb4pts + s4spl(i) = arcs(i)/arcs(nb4pts) + enddo + end if + + call spline(s4spl,x4spl,nb4pts,huge,huge,b4spl) + call spline(s4spl,y4spl,nb4pts,huge,huge,c4spl) + return + end + +! ******************************************************************* + +#if DCOMPLEX + subroutine rect(z,N,N1,N2,N3,N4) + integer N, N1, N2, N3, N4 + +! This subroutine is taken directly from Ives, D.C. and +! R.M. Zacharias "Conformal Mapping and Orthogonal Grid Generation" +! AIAA-87-2057. + + complex*16 z(N), z0, zd + integer BIG + parameter (BIG=3000) + double precision r(BIG), t(BIG), pi, alpha, pwr, pmin, & + & pmax, tp + integer i, j, k, im, ip + +! Check on work array size + if (N .gt. BIG) then + call crash('BIG in rect must be at least ', N) + endif + pi = 4.d0*datan(1.d0) + do 160 i=1,N + im = N-mod(N-i+1,N) + ip = 1+mod(i,N) + zd = (z(im)-z(i))/(z(ip)-z(i)) + alpha = datan2(dimag(zd),dreal(zd)) + if(alpha.lt.0)alpha = alpha+pi+pi + pwr = pi/alpha + if(i.ne.N1.and.i.ne.N2.and.i.ne.N3.and.i.ne.N4) goto 110 + zd = (z(im)-z(i))/cdabs(z(im)-z(i)) + do 100 j=1,N + z(j) = dcmplx(0.d0,1.d0)*z(j)/zd + 100 continue + pwr = pwr/2. + 110 pmin = 100. + pmax =-100. + tp = 0. + do 140 j=2,N + zd = z(mod(j+i-2,N)+1)-z(i) + r(j) = cdabs(zd) + t(j) = datan2(dimag(zd),dreal(zd))-pi-pi-pi-pi-pi-pi + do 120 k=1,7 + if(dabs(t(j)-tp).lt.pi)goto 130 + t(j) = t(j)+pi+pi + 120 continue +! pause ' warning - tracking error ' + call crash('rect: tracking error', 0) + 130 tp = t(j) + pmax = dmax1(pmax,t(j)*pwr) + pmin = dmin1(pmin,t(j)*pwr) + 140 continue + pwr = dmin1(pwr,1.98d0*pi*pwr/(pmax-pmin)) + z(i) = dcmplx(0.d0,0.d0) + do 150 j=2,N +#if __sgi + z(mod(j+i-2,N)+1) = r(j)**pwr*zexp(dcmplx(0.d0,t(j)*pwr)) +#else + z(mod(j+i-2,N)+1) = r(j)**pwr*cdexp(dcmplx(0.d0,t(j)*pwr)) +#endif + 150 continue + zd = 1./(z(N2)-z(N1)) + z0 = z(N1) + do 160 j=1,N + z(j) = (z(j)-z0)*zd + 160 continue + return + end + +#else +! ******************************************************************* + + subroutine rects(z,N,N1,N2,N3,N4) + integer N, N1, N2, N3, N4 + +! Single precision version of subroutine rect from Ives,D.C. and +! R.M.Zacharias "Conformal Mapping and Orthogonal Grid Generation" +! AIAA-87-2057. + complex z(N), z0, zd + integer BIG + parameter (BIG=3000) + real r(BIG), t(BIG), pi, alpha, pwr, pmin, & + & pmax, tp + integer i, j, k, im, ip + +! Check on work array size + if (N .gt. BIG) then + call crash('BIG in rect must be at least ', N) + endif + pi = 4.*atan(1.) + do 160 i=1,N + im = N-mod(N-i+1,N) + ip = 1+mod(i,N) + zd = (z(im)-z(i))/(z(ip)-z(i)) + alpha = atan2(aimag(zd),real(zd)) + if(alpha.lt.0)alpha = alpha+pi+pi + pwr = pi/alpha + if(i.ne.N1.and.i.ne.N2.and.i.ne.N3.and.i.ne.N4)goto 110 + zd = (z(im)-z(i))/cabs(z(im)-z(i)) + do 100 j=1,N + z(j) = cmplx(0.,1.)*z(j)/zd + 100 continue + pwr = pwr/2. + 110 pmin = 100. + pmax =-100. + tp = 0. + do 140 j=2,N + zd = z(mod(j+i-2,N)+1)-z(i) + r(j) = cabs(zd) + t(j) = atan2(aimag(zd),real(zd))-pi-pi-pi-pi-pi-pi + do 120 k=1,7 + if(abs(t(j)-tp).lt.pi)goto 130 + t(j) = t(j)+pi+pi + 120 continue +! pause ' warning - tracking error ' + call crash('rects: tracking error', 0) + 130 tp = t(j) + pmax = max(pmax,t(j)*pwr) + pmin = min(pmin,t(j)*pwr) + 140 continue + pwr = min(pwr,1.98*pi*pwr/(pmax-pmin)) + z(i) = cmplx(0.,0.) + do 150 j=2,N + z(mod(j+i-2,N)+1) = r(j)**pwr*cexp(cmplx(0.,t(j)*pwr)) + 150 continue + zd = 1./(z(N2)-z(N1)) + z0 = z(N1) + do 160 j=1,N + z(j) = (z(j)-z0)*zd + 160 continue + return + end +#endif /* DCOMPLEX */ + +! ******************************************************************* + + subroutine spline(x,y,NN,yp1,ypn,y2) + integer NN + BIGREAL x(NN), y(NN), yp1, ypn, y2(NN) + +! The following two subroutines are used to perform the cubic spline +! interpolation required to match up the distribution of points on +! opposite sides of the transformed plane rectangle. The routines +! are taken from Press,W.H., B.P.Flannery, S.A.Teukolsky and +! W.T.Vetterling: "Numerical Recipes, the Art of Scientific Computing" +! Cambridge University Press, 1986. +#include "grid.h" + integer nmax + parameter ( nmax=M2+L2 ) + BIGREAL u(nmax), qn, un, sig, p + integer i, k + + if (yp1 .gt. .99e30) then + y2(1)=0. + u(1)=0. + else + y2(1)=-0.5 + u(1)=(3./(x(2)-x(1)))*((y(2)-y(1))/(x(2)-x(1))-yp1) + endif + do i=2,NN-1 + sig=(x(i)-x(i-1))/(x(i+1)-x(i-1)) + p=sig*y2(i-1)+2. + y2(i)=(sig-1.)/p + u(i)=(6.*((y(i+1)-y(i))/(x(i+1)-x(i))-(y(i)-y(i-1)) & + & /(x(i)-x(i-1)))/(x(i+1)-x(i-1))-sig*u(i-1))/p + enddo + if (ypn .gt. .99e30) then + qn=0. + un=0. + else + qn=0.5 + un=(3./(x(NN)-x(NN-1)))*(ypn-(y(NN)-y(NN-1))/(x(NN)-x(NN-1))) + endif + y2(NN)=(un-qn*u(NN-1))/(qn*y2(NN-1)+1.) + do k=NN-1,1,-1 + y2(k)=y2(k)*y2(k+1)+u(k) + enddo + return + end + +! ******************************************************************* + + subroutine splint(xa,ya,y2a,N,x,y) + integer N + BIGREAL xa(N), ya(N), y2a(N), x, y + integer klo, khi, k + BIGREAL h, a, b + + klo=1 + khi=N + 100 if (khi-klo.gt.1) then + k=(khi+klo)/2 + if(xa(k).gt.x)then + khi=k + else + klo=k + endif + goto 100 + endif + h=xa(khi)-xa(klo) + if (h.eq.0.) call crash('splint: bad xa input', 0) + a=(xa(khi)-x)/h + b=(x-xa(klo))/h + y=a*ya(klo)+b*ya(khi)+ & + & ((a**3-a)*y2a(klo)+(b**3-b)*y2a(khi))*(h**2)/6. + return + end + +! ******************************************************************* + + subroutine z1(s1,x,y,z) + BIGREAL s1, s2, s3, s4, x, y + BIGCOMPLEX z +#include "grid.h" + +! Subroutines which specify the boundaries of the physical +! domain. They are defined as functions of the variable s which +! ranges from 0 to 1 on each boundary, proceeding anti-clockwise. + + call splint(s1spl,x1spl,b1spl,nb1pts,s1,x) + call splint(s1spl,y1spl,c1spl,nb1pts,s1,y) +#if DBLEPREC + z = dcmplx(x,y) +#else + z = cmplx(x,y) +#endif /* DBLEPREC */ + return + + entry z2(s2,x,y,z) + call splint(s2spl,x2spl,b2spl,nb2pts,s2,x) + call splint(s2spl,y2spl,c2spl,nb2pts,s2,y) +#if DBLEPREC + z = dcmplx(x,y) +#else + z = cmplx(x,y) +#endif /* DBLEPREC */ + return + + entry z3(s3,x,y,z) + call splint(s3spl,x3spl,b3spl,nb3pts,s3,x) + call splint(s3spl,y3spl,c3spl,nb3pts,s3,y) +#if DBLEPREC + z = dcmplx(x,y) +#else + z = cmplx(x,y) +#endif /* DBLEPREC */ + return + + entry z4(s4,x,y,z) + call splint(s4spl,x4spl,b4spl,nb4pts,s4,x) + call splint(s4spl,y4spl,c4spl,nb4pts,s4,y) +#if DBLEPREC + z = dcmplx(x,y) +#else + z = cmplx(x,y) +#endif /* DBLEPREC */ + return + end + +! ******************************************************************* + + subroutine z_init(z, xb, yb) +#include "grid.h" + BIGCOMPLEX z(M2+L2+M2+L2) + BIGREAL xb(M2+L2+M2+L2), yb(M2+L2+M2+L2) + BIGREAL stmp + integer i + +#if XPOTS1 + read(ipot1,*) stmp +#endif /* XPOTS1 */ + do i=1,N1 +#if XPOTS1 + read(ipot1,*) stmp + call z1(stmp,xb(i),yb(i),z(i)) +#else + stmp = FLoaT(i)/FLoaT(N1) + call z1(stmp,xb(i),yb(i),z(i)) +#endif /* XPOTS1 */ + enddo +#if XPOTS1 + close(ipot1) +#endif /* XPOTS1 */ +#if XPOTS2 + read(ipot2,*) stmp +#endif /* XPOTS2 */ + do i=N1+1,N2 +#if XPOTS2 + read(ipot2,*) stmp + call z2(stmp,xb(i),yb(i),z(i)) +#else + stmp = FLoaT(i-N1)/FLoaT(N2-N1) + call z2(stmp,xb(i),yb(i),z(i)) +#endif /* XPOTS2 */ + enddo +#if XPOTS2 + close(ipot2) +#endif /* XPOTS2 */ +#if XPOTS3 + read(ipot3,*) stmp +#endif /* XPOTS3 */ + do i=N2+1,N3 +#if XPOTS3 + read(ipot3,*) stmp + call z3(stmp,xb(i),yb(i),z(i)) +#else + stmp = FLoaT(i-N2)/FLoaT(N3-N2) + call z3(stmp,xb(i),yb(i),z(i)) +#endif /* XPOTS3 */ + enddo +#if XPOTS3 + close(ipot3) +#endif /* XPOTS3 */ +#if XPOTS4 + read(ipot4,*) stmp +#endif /* XPOTS4 */ + do i=N3+1,N4 +#if XPOTS4 + read(ipot4,*) stmp + call z4(stmp,xb(i),yb(i),z(i)) +#else + stmp = FLoaT(i-N3)/FLoaT(N4-N3) + call z4(stmp,xb(i),yb(i),z(i)) +#endif /* XPOTS4 */ + enddo +#if XPOTS4 + close(ipot4) +#endif /* XPOTS4 */ + return + end diff --git a/Drivers/sphere.F b/Drivers/sphere.F new file mode 100644 index 0000000..80cc5e0 --- /dev/null +++ b/Drivers/sphere.F @@ -0,0 +1,506 @@ + program spheres + +! *** In gridpak version 5.4 ***** October 18, 2001 **************** +! Kate Hedstrom (kate@arsc.edu) +! John Wilkin (wilkin@imcs.rutgers.edu) +! ****************************************************************** +! +! This program reads in the x,y grid, the lat,long grid, +! and the topography from the netCDF grid file. It uses the +! latitude information to calculate f = 2*Omega*sin(lat). The +! results are placed into the netCDF grid file. +! +! Logicals: +! hflat - true for constant depth of h0 - don't read in topography. +! sphere - true for spherical geometry in pm's and pn's or false +! for planar geometry. +! colour - true for colour fill plots (false gives contours) +! grover - true to draw grid over colour filled plots +! readlat - true to read in the lat, long file produced by tolat. +! ******************************************************************* + +#include "griddefs.h" +#include "bathy.h" +#include "ncgrid.h" +#include "proj.h" + BIGREAL h0, f0, beta + parameter ( h0 = 800. ) + parameter ( f0=9.e-4, beta=2.e-11 ) +#if DRAW_COASTS +! Earth angular frequency and radius of sphere of equal volume + real U1, U2, V1, V2, udeg, uscale + BIGREAL enlarge +#endif /* DRAW_COASTS */ + real DTOR, RTOD + BIGREAL Aomega, REarth, pi + parameter ( Aomega=7.292115e-5 , REarth=6.3708e6 ) + parameter ( pi = 3.14159265 ) + logical hflat, colour, grover, readlat + BIGREAL el2, sum, dxmin, dist, galpha + integer i, j, imap + BIGREAL a1, a2, av2, vmin, vmax + + av2(a1,a2) = .5*(a1+a2) + + data DTOR / .017453292519943 / + data RTOD / 57.2957795130823 / + +#include "sphereflags.h" +#include "gridid.h" + + call get_xy + call get_mn + call get_rmask + + if (readlat) then + call get_lat +! calculate the angle between the xi-eta grid and the lon-lat grid +! at rho points. + + do j = 1, Mm + do i = 1, Lm + a1 = lat_u(i+1, j) - lat_u(i, j) + a2 = lon_u(i+1, j) - lon_u(i, j) + if (abs(a2) .gt. 180.) then + if (a2 .lt. -180. ) then + a2 = a2 + 360. + else + a2 = a2 - 360. + endif + endif + a2 = a2 * cos(0.5*DTOR*(lat_u(i, j) + lat_u(i+1, j))) + angle(i, j) = atan2(a1, a2) + enddo + enddo + do j = 1, Mm + do i = 1, Lm + a2 = lat_v(i, j) - lat_v(i, j+1) + a1 = (lon_v(i, j) - lon_v(i, j+1)) + if (abs(a1) .gt. 180.) then + if (a1 .lt. -180. ) then + a1 = a1 + 360. + else + a1 = a1 - 360. + endif + endif + a1 = a1 * cos(0.5*DTOR*(lat_v(i, j) + lat_v(i, j+1))) + angle(i, j) = 0.5*(angle(i, j) + atan2(a1, -a2)) + enddo + enddo + else +! calculate the angle between the xi-eta grid and the lon-lat grid +! at rho points. + do j = 1, Mm + do i = 1, Lm + a1 = yu(i+1, j) - yu(i, j) + a2 = xu(i+1, j) - xu(i, j) + angle(i, j) = atan2(a1, a2) + a2 = yv(i, j) - yv(i, j+1) + a1 = xv(i, j) - xv(i, j+1) + angle(i, j) = 0.5*(angle(i, j) + atan2(a1, -a2)) + enddo + enddo + endif + + do i = 1, Lm + angle(i, 0) = angle(i, 1) + angle(i, M) = angle(i, Mm) + enddo + + do j = 0, M + angle(0, j) = angle(1, j) + angle(L, j) = angle(Lm, j) + enddo + + if (hflat) then + do j=0,M + do i=0,L + h(i,j) = h0 + enddo + enddo + else + call get_h + end if + +! If on a sphere then compute spherical pm,pn factors + if (spherical .and. readlat) then + + do j = 1,Mm + do i = 1,Lm + call geodesic_dist(lon_u(i,j),lat_u(i,j),lon_u(i+1,j), & + & lat_u(i+1,j),1,dist,galpha) + pm(i,j) = 1./dist + call geodesic_dist(lon_v(i,j),lat_v(i,j),lon_v(i,j+1), & + & lat_v(i,j+1),1,dist,galpha) + pn(i,j) = 1./dist + enddo + enddo + +! M,N factors outside the boundaries + do j=1,Mm + pm(0,j) = pm(1,j) + pn(0,j) = pn(1,j) + pm(L,j) = pm(Lm,j) + pn(L,j) = pn(Lm,j) + enddo + do i=0,L + pm(i,0) = pm(i,1) + pn(i,0) = pn(i,1) + pm(i,M) = pm(i,Mm) + pn(i,M) = pn(i,Mm) + enddo + +! Compute dndx,dmde + do i=1,Lm + do j=1,Mm + dndx(i,j) = (1./pn(i+1,j) - 1./pn(i-1,j))/2. + enddo + enddo + do i=1,Lm + do j=1,Mm + dmde(i,j) = (1./pm(i,j+1) - 1./pm(i,j-1))/2. + enddo + enddo + do j=1,Mm + dndx(0,j) = 0. + dmde(0,j) = 0. + dndx(L,j) = 0. + dmde(L,j) = 0. + enddo + do i=0,L + dndx(i,0) = 0. + dmde(i,0) = 0. + dndx(i,M) = 0. + dmde(i,M) = 0. + enddo + end if + +! Coriolis parameter + if (readlat) then + do i=0,L + do j=0,M + f(i,j) = 2*Aomega*sin(DTOR*lat_rho(i,j)) + enddo + enddo + else + el2 = yp(1,M/2) + do i=0,L + do j=0,M + f(i,j) = f0 + beta*(yr(1,j) - el2) + enddo + enddo + end if + +! Output for the SPEM + + call wrt_fhmn(spherical,f0,beta) + +#if PLOTS +! Plots just to be sure + + xmin = vmin(xr,Lp*Mp) + ymin = vmin(yr,Lp*Mp) + xmax = vmax(xr,Lp*Mp) + ymax = vmax(yr,Lp*Mp) + + el = ymax-ymin + xl = xmax-xmin + + call start_plot +! set foreground to black, background to white + if (colour) then + call gscr(1,0,1.,1.,1.) + call gscr(1,1,0.,0.,0.) + end if + +#if DRAW_COASTS +! put things on EZMAP space: + call mapsti('GR',JGRD) + call mapstc('OU','NO') + call maproj(JPRJ,PLAT,PLONG,ROTA) + call mapset(JLTS,P1,P2,P3,P4) + call mapint + +! rescale xp, yp, xr, yr (from Roberta Young) + call maptrn((PLAT+.5),PLONG,U2,V2) + call maptrn((PLAT-.5),PLONG,U1,V1) + udeg = sqrt((U2-U1)*(U2-U1) + (V2-V1)*(V2-V1)) + uscale=DTOR*REarth/udeg + write(6,*)' udeg =',udeg + write(6,*)' uscale =',uscale + + do j=1,M + do i=1,L + xp(i,j)=(xp(i,j)-XOFF)/uscale + yp(i,j)=(yp(i,j)-YOFF)/uscale + enddo + enddo + + do j=0,M + do i=0,L + xr(i,j)=(xr(i,j)-XOFF)/uscale + yr(i,j)=(yr(i,j)-YOFF)/uscale + enddo + enddo + +! find minimum x and y locations: + xmin = vmin(xp,L*M) + ymin = vmin(yp,L*M) + xmax = vmax(xp,L*M) + ymax = vmax(yp,L*M) + el = ymax-ymin + xl = xmax-xmin + +! make them larger for the plots + enlarge = 0.03 + xmin = xmin - xl*enlarge + ymin = ymin - el*enlarge + xmax = xmax + xl*enlarge + ymax = ymax + el*enlarge +#endif /* DRAW_COASTS */ + + imap = 3 + call cpseti('MAP',imap) + call getxxyy + call pcseti('QUALITY',1) + call ploth(gridid(1:40),colour,grover) + call plotmnf(gridid(1:40),colour,grover) + + call end_plot +#endif /* PLOTS */ + + sum = 0 + do j=1,Mm + do i=1,Lm + sum = sum + 1/pm(i,j) + enddo + enddo + print *,'average dx ',sum/(Lm*Mm) + dxmin = vmax(pm,Lp*Mp) + dxmin = 1/dxmin + print *, 'minimum dx = ',dxmin + sum = 0 + do j=1,Mm + do i=1,Lm + sum = sum + 1/pn(i,j) + enddo + enddo + print *,'average dy ',sum/(Lm*Mm) + dxmin = vmax(pn,Lp*Mp) + dxmin = 1/dxmin + print *, 'minimum dy = ',dxmin + +#if NO_EXIT + stop +#else + call exit(0) +#endif /* NO_EXIT */ + 200 call crash('sphere: read or write error', 0) + end + +! ******************************************************************** + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(ierr) +#endif /* NO_EXIT */ + return + end + +!**************************************************************** + + subroutine plotmnf(gridid,colour,grover) +#include "bathy.h" + real tmp(L,M), htmp(0:L,0:M) + character*20 ltit + character*24 lnote, lnote2 + character*40 gridid + logical colour, grover, tallflg + real x1, x2, y1, y2, dxmin, dxmax, dymin, dymax + integer i, j + real vsmin, vsmax + +! find shape of domain to plot + if (xl .ge. el) then + x1 = 0.05 + x2 = 0.95 + y1 = -.45*el/xl + .5 + y2 = y1 + el/xl*.9 + tallflg = .false. + else + if (colour) then + y1 = 0.02 + y2 = 0.92 + else + y1 = 0.04 + y2 = 0.94 + end if + x1 = -.45*xl/el + .45 + x2 = x1 + xl/el*.9 + tallflg = .true. + end if + + call getxxyy + + write (ltit,100) + 100 format ('DX') + + do j=1,M + do i=1,L + tmp(i,j) = 4./(pm(i,j) + pm(i-1,j) + pm(i,j-1) + & + & pm(i-1,j-1)) + enddo + enddo + + dxmin = vsmin(tmp,L*M) + write (lnote,120) dxmin + 120 format ('MIN DX =',f9.0) + dxmax = vsmax(tmp,L*M) + write (lnote2,130) dxmax + 130 format ('MAX DX =',f9.0) + + call set (0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(.5,.98,ltit,.012,0.,0.) + if (colour) then + call plchhq(.85,.98,lnote(1:17),.012,0.,0.) + call plchhq(.85,.95,lnote2(1:17),.012,0.,0.) + endif + call set (x1,x2,y1,y2,xmin,xmax,ymin,ymax,1) + if (colour) then + call cpsfill(tmp,L,L,M,8,lcflag,tallflg,.false.) + if (grover) call grdplt(x1,x2,y1,y2,gridid) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + else + call cpshift(tmp,L,L,M,-20.,.false.,1.) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + endif + call frame + + write (ltit,140) + 140 format ('DY') + + do j=1,M + do i=1,L + tmp(i,j) = 4./(pn(i,j) + pn(i-1,j) + pn(i,j-1) + & + & pn(i-1,j-1)) + enddo + enddo + + dymin = vsmin(tmp,L*M) + write (lnote,160) dymin + 160 format ('MIN DY =',f9.0) + dymax = vsmax(tmp,L*M) + write (lnote2,170) dymax + 170 format ('MAX DY =',f9.0) + + call set (0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(.5,.98,ltit,.012,0.,0.) + if (colour) then + call plchhq(.85,.98,lnote(1:17),.012,0.,0.) + call plchhq(.85,.95,lnote2(1:17),.012,0.,0.) + endif + call set (x1,x2,y1,y2,xmin,xmax,ymin,ymax,1) + if (colour) then + call cpsfill (tmp,L,L,M,8,lcflag,tallflg,.false.) + if (grover) call grdplt(x1,x2,y1,y2,gridid) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + else + call cpshift(tmp,L,L,M,-20.,.false.,1.) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + endif + call frame + + write (ltit,180) + 180 format ('F') + + do j=1,M + do i=1,L + tmp(i,j) = 0.25*(f(i,j) + f(i-1,j) + f(i,j-1) + f(i-1,j-1)) + enddo + enddo + + call set (0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq (0.5,0.98,ltit(1:1),.012,0.,0.) + call set (x1,x2,y1,y2,xmin,xmax,ymin,ymax,1) + if (colour) then + call cpsfill (tmp,L,L,M,8,lcflag,tallflg,.false.) + if (grover) call grdplt(x1,x2,y1,y2,gridid) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + else + call cpshift(tmp,L,L,M,-20.,.false.,1.) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + endif + call frame + + write (ltit,190) + 190 format ('RHO MASK') + + call getxyh + do j=0,M + do i=0,L + htmp(i,j) = mask_rho(i,j) + enddo + enddo + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(0.5,0.98,ltit(1:8),.012,0.,0.) + call set(x1,x2,y1,y2,xmin,xmax,ymin,ymax,1) + if (colour) then + call cpsfill(htmp,Lp,Lp,Mp,2,lcflag,tallflg,.false.) + call grdplt(x1,x2,y1,y2,gridid) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + else + call cpshift(htmp,Lp,Lp,Mp,0.,.false.,1.) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + endif + call frame + + write (ltit,200) + 200 format ('ANGLE') + + call getxyh + do j=0,M + do i=0,L + htmp(i,j) = angle(i,j) + enddo + enddo + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(0.5,0.98,ltit(1:5),.012,0.,0.) + call set(x1,x2,y1,y2,xmin,xmax,ymin,ymax,1) + if (colour) then + call cpsfill(htmp,Lp,Lp,Mp,8,lcflag,tallflg,.false.) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + else + call cpshift(htmp,Lp,Lp,Mp,0.,.false.,1.) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + endif + call frame + + return + end diff --git a/Drivers/sqgrid.F b/Drivers/sqgrid.F new file mode 100644 index 0000000..a213c69 --- /dev/null +++ b/Drivers/sqgrid.F @@ -0,0 +1,676 @@ + program Wgrid + +! *** In gridpak version 5.4 ***** October 18, 2001 **************** +! Kate Hedstrom (kate@arsc.edu) +! John Wilkin (wilkin@imcs.rutgers.edu) +! ******************************************************************* +! This version reads digitized rectangular boundaries, uses +! splines to interpolate to the grid resolution, and fills in +! the interior. +! +! Direct any question/problems (and reports of errors!) to: +! Kate Hedstrom +! kate@ahab.rutgers.edu +! +! IBIG is the largest number of points to be read in for one +! boundary + +#include "griddefs.h" +#include "grid.h" +#include "ncgrid.h" + integer i, j + BIGCOMPLEX z(M2+L2+M2+L2) + BIGREAL stmp, area, tarea + BIGREAL xb(M2+L2+M2+L2),yb(M2+L2+M2+L2), & + & x(0:L2,0:M2),y(0:L2,0:M2) + character*40 lbl + +! label for grid +#include "gridid.h" + write(lbl,100) gridid(1:40) + 100 format(40a) + +! original distribution of x,y points is preserved on boundary kb1 +! and kb2: + if(kb1.ne.1.and.kb1.ne.3) & + & call crash('boundary index kb1 must be 1 or 3', kb1) + if(kb2.ne.2.and.kb2.ne.4) & + & call crash('boundary index kb2 must be 2 or 4', kb2) + +! set up boundary spline interpolation arrays + call readbndy + +! initialize vector z (complex) with contour of physical boundary +#if XPOTS1 + read(ipot1,*) stmp +#endif /* XPOTS1 */ + do i=1,N1 +#if XPOTS1 + read(ipot1,*) stmp + call z1(stmp,xb(i),yb(i),z(i)) +#else + stmp = FLoaT(i)/FLoaT(N1) + call z1(stmp,xb(i),yb(i),z(i)) +#endif /* XPOTS1 */ + enddo +#if XPOTS2 + read(ipot2,*) stmp +#endif /* XPOTS2 */ + do i=N1+1,N2 +#if XPOTS2 + read(ipot2,*) stmp + call z2(stmp,xb(i),yb(i),z(i)) +#else + stmp = FLoaT(i-N1)/FLoaT(N2-N1) + call z2(stmp,xb(i),yb(i),z(i)) +#endif /* XPOTS2 */ + enddo +#if XPOTS3 + read(ipot3,*) stmp +#endif /* XPOTS3 */ + do i=N2+1,N3 +#if XPOTS3 + read(ipot3,*) stmp + call z3(stmp,xb(i),yb(i),z(i)) +#else + stmp = FLoaT(i-N2)/FLoaT(N3-N2) + call z3(stmp,xb(i),yb(i),z(i)) +#endif /* XPOTS3 */ + enddo +#if XPOTS4 + read(ipot4,*) stmp +#endif /* XPOTS4 */ + do i=N3+1,N4 +#if XPOTS4 + read(ipot4,*) stmp + call z4(stmp,xb(i),yb(i),z(i)) +#else + stmp = FLoaT(i-N3)/FLoaT(N4-N3) + call z4(stmp,xb(i),yb(i),z(i)) +#endif /* XPOTS4 */ + enddo + +! Set boundary values of the grid + do i=1,N1 + x(0,N1-i) = xb(i) + y(0,N1-i) = yb(i) + enddo + do i=N1+1,N2 + x(i-N1,0) = xb(i) + y(i-N1,0) = yb(i) + enddo + do i=N2+1,N3 + x(L2,i-N2) = xb(i) + y(L2,i-N2) = yb(i) + enddo + do i=N3+1,N4 + x(N4-i,M2) = xb(i) + y(N4-i,M2) = yb(i) + enddo + +! interior of the grid + if (kb1 .eq. 1 .and. kb2 .eq. 2) then + do j=1,M2 + do i=1,L2 + x(i,j) = x(i,0) + x(0,j) - x(0,0) + y(i,j) = y(i,0) + y(0,j) - y(0,0) + enddo + enddo + else if (kb1 .eq. 1 .and. kb2 .eq. 4) then + do j=0,M2-1 + do i=1,L2 + x(i,j) = x(i,M2) + x(0,j) - x(0,M2) + y(i,j) = y(i,M2) + y(0,j) - y(0,M2) + enddo + enddo + else if (kb1 .eq. 3 .and. kb2 .eq. 2) then + do j=1,M2 + do i=0,L2-1 + x(i,j) = x(i,0) + x(L2,j) - x(L2,0) + y(i,j) = y(i,0) + y(L2,j) - y(L2,0) + enddo + enddo + else if (kb1 .eq. 3 .and. kb2 .eq. 4) then + do j=0,M2-1 + do i=0,L2-1 + x(i,j) = x(i,M2) + x(L2,j) - x(L2,M2) + y(i,j) = y(i,M2) + y(L2,j) - y(L2,M2) + enddo + enddo + endif + +! Compute pm,pn factors + do j = 1,Mm + do i = 1,Lm + pm(i,j) = 1.0/sqrt( ( x(2*i,2*j-1)-x(2*i-2,2*j-1) )**2 & + & + ( y(2*i,2*j-1)-y(2*i-2,2*j-1) )**2 ) + pn(i,j) = 1.0/sqrt( ( x(2*i-1,2*j)-x(2*i-1,2*j-2) )**2 & + & + ( y(2*i-1,2*j)-y(2*i-1,2*j-2) )**2 ) + enddo + enddo + +! M,N factors outside the boundaries + do j=1,Mm + pm(0,j) = pm(1,j) + pn(0,j) = pn(1,j) + pm(L,j) = pm(Lm,j) + pn(L,j) = pn(Lm,j) + enddo + do i=0,L + pm(i,0) = pm(i,1) + pn(i,0) = pn(i,1) + pm(i,M) = pm(i,Mm) + pn(i,M) = pn(i,Mm) + enddo + +! Compute dndx,dmde + do i=1,Lm + do j=1,Mm + dndx(i,j) = (1./pn(i+1,j) - 1./pn(i-1,j))/2. + enddo + enddo + do i=1,Lm + do j=1,Mm + dmde(i,j) = (1./pm(i,j+1) - 1./pm(i,j-1))/2. + enddo + enddo + do j=1,Mm + dndx(0,j) = 0. + dmde(0,j) = 0. + dndx(L,j) = 0. + dmde(L,j) = 0. + enddo + do i=0,L + dndx(i,0) = 0. + dmde(i,0) = 0. + dndx(i,M) = 0. + dmde(i,M) = 0. + enddo + +! Split up grid solution into separate arrays for the coordinates +! of the four locations on the Arakawa C grid corresponding to rho, +! psi, u and v points. + +! psi points + do j=1,M + do i=1,L + xp(i,j) = x(2*i-2,2*j-2) + yp(i,j) = y(2*i-2,2*j-2) + enddo + enddo + + if (subset) then + write (iout3,*) Mnorth-Msouth+1 + do j=Mnorth,Msouth,-1 + write (iout3,*) xp(Lwest,j),yp(Lwest,j) + enddo + write (iout3,*) Least-Lwest+1 + do i=Lwest,Least + write (iout3,*) xp(i,Msouth),yp(i,Msouth) + enddo + write (iout3,*) Mnorth-Msouth+1 + do j=Msouth,Mnorth + write (iout3,*) xp(Least,j),yp(Least,j) + enddo + write (iout3,*) Least-Lwest+1 + do i=Least,Lwest,-1 + write (iout3,*) xp(i,Mnorth),yp(i,Mnorth) + enddo + end if + + xl = xp(L,1) - xp(1,1) + el = yp(1,M) - yp(1,1) + +! u points + do j=1,Mm + do i=1,L + xu(i,j) = x(2*i-2,2*j-1) + yu(i,j) = y(2*i-2,2*j-1) + enddo + enddo + do i=1,L + xu(i,0) = 2*xp(i,1) - xu(i,1) + xu(i,M) = 2*xp(i,M) - xu(i,Mm) + yu(i,0) = 2*yp(i,1) - yu(i,1) + yu(i,M) = 2*yp(i,M) - yu(i,Mm) + enddo + +! vpoints + do j=1,M + do i=1,Lm + xv(i,j) = x(2*i-1,2*j-2) + yv(i,j) = y(2*i-1,2*j-2) + enddo + enddo + do j=1,M + xv(0,j) = 2*xp(1,j) - xv(1,j) + xv(L,j) = 2*xp(L,j) - xv(Lm,j) + yv(0,j) = 2*yp(1,j) - yv(1,j) + yv(L,j) = 2*yp(L,j) - yv(Lm,j) + enddo + +! rho points + do j=1,Mm + do i=1,Lm + xr(i,j) = x(2*i-1,2*j-1) + yr(i,j) = y(2*i-1,2*j-1) + enddo + enddo + do j=1,Mm + xr(L,j) = 2*xu(L,j) - xr(Lm,j) + xr(0,j) = 2*xu(1,j) - xr(1,j) + yr(L,j) = 2*yu(L,j) - yr(Lm,j) + yr(0,j) = 2*yu(1,j) - yr(1,j) + enddo + do i=0,L + xr(i,M) = 2*xv(i,M) - xr(i,Mm) + yr(i,M) = 2*yv(i,M) - yr(i,Mm) + xr(i,0) = 2*xv(i,1) - xr(i,1) + yr(i,0) = 2*yv(i,1) - yr(i,1) + enddo + +! Diagnostics: +! Compute area of domain from m,n factors + area = 0. + do j = 1,Mm + do i = 1,Lm + area = area + 1./(pm(i,j)*pn(i,j)) + enddo + enddo + + write(6,460)area + 460 format(5x,'area ',g10.4) + +! Output solution +! (This output format parallels the input format assumed by +! subroutine getgrid in pemodel) + call checkdefs + call def_grid +#if PLOTS + call start_plot + call gridplot(lbl,area,tarea) + call end_plot +#endif /* PLOTS */ +#if NO_EXIT + stop +#else + call exit(0) +#endif /* NO_EXIT */ + end + +! ******************************************************************* + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(ierr) +#endif /* NO_EXIT */ + return + end + +! ******************************************************************* + +#if PLOTS + subroutine gridplot(lbl,area,tarea) +#include "grid.h" + character*20 lbl + BIGREAL area, tarea + + character*5 lbls + integer i, j + SMALLREAL tmp(0:L,0:M), xlow, xhigh, ylow, yhigh + SMALLREAL x1, x2, y1, y2 + BIGREAL vmin, vmax + BIGREAL dxmin + + call pcseti('QUALITY',1) + + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(.5,.98,lbl,.012,0.,0.) + write(lbl,100)area + 100 format(' Sum 1/MN=',g10.4) + call plchhq(.5,.03,lbl,.012,0.,0.) + +! Draw the psi points grid (boundaries coincide with channel walls) + xlow = vmin(xp,L*M) + xhigh = vmax(xp,L*M) + yhigh = vmax(yp,L*M) + ylow = vmin(yp,L*M) + xl = xhigh-xlow + el = yhigh-ylow + if (xl .ge. el) then + x1 = 0.05 + x2 = 0.95 + y1 = -.45*el/xl + .5 + y2 = y1 + el/xl*.9 + else + y1 = 0.05 + y2 = 0.95 + x1 = -.45*xl/el + .5 + x2 = x1 + xl/el*.9 + end if + call set(x1,x2,y1,y2,xlow,xhigh,ylow,yhigh,1) +#if DBLEPREC + do j = 1,M + call frstpt(sngl(xp(1,j)),sngl(yp(1,j))) + do i = 2,L + call vector(sngl(xp(i,j)),sngl(yp(i,j))) + enddo + enddo + do i = 1,L + call frstpt(sngl(xp(i,1)),sngl(yp(i,1))) + do j = 2,M + call vector(sngl(xp(i,j)),sngl(yp(i,j))) + enddo + enddo +#else + do j = 1,M + call frstpt(xp(1,j),yp(1,j)) + do i = 2,L + call vector(xp(i,j),yp(i,j)) + enddo + enddo + do i = 1,L + call frstpt(xp(i,1),yp(i,1)) + do j = 2,M + call vector(xp(i,j),yp(i,j)) + enddo + enddo +#endif /* DBLEPREC */ + call frame + +! Plot m and n + write(lbls,130) + 130 format('DX') + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(.5,.98,lbls(1:2),.012,0.,0.) + do j=0,M + do i=0,L + tmp(i,j) = 1/pm(i,j) + enddo + enddo + dxmin = vmax(pm,Lp*Mp) + dxmin = 1/dxmin + print *, 'minimum dx = ',dxmin + call set(x1,x2,y1,y2,1.,float(Lp),1.,float(Mp),1) + call perim(1,L,1,M) + call cpseti('SET',0) + call cpcnrc(tmp,Lp,Lp,Mp,0.0,0.0,0.0,1,-1,-682) + call frame + write(lbls,150) + 150 format('DY') + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(.5,.98,lbls(1:2),.012,0.,0.) + do j=0,M + do i=0,L + tmp(i,j) = 1/pn(i,j) + enddo + enddo + dxmin = vmax(pn,Lp*Mp) + dxmin = 1/dxmin + print *, 'minimum dy = ',dxmin + call set(x1,x2,y1,y2,1.,float(Lp),1.,float(Mp),1) + call perim(1,L,1,M) + call cpseti('SET',0) + call cpcnrc(tmp,Lp,Lp,Mp,0.0,0.0,0.0,1,-1,-682) + call frame + + return + end +#endif /* PLOTS */ + +! ******************************************************************* + + subroutine readbndy +#include "grid.h" + BIGREAL arcs(IBIG), huge + parameter ( huge = 1.e35 ) + integer i + + if (rbnd1) then +! Read x,y data points describing boundary 1 + read(5,*) nb1pts + if (nb1pts .gt. IBIG) then + call crash('readbndy: Need to make IBIG at least', nb1pts) + end if + do i=1,nb1pts + read(5,*) x1spl(i),y1spl(i) + enddo + if (.not. even1) then + do i=1,nb1pts + s1spl(i) = (i-1.)/(nb1pts-1.) + enddo + else + arcs(1) = 0 + do i = 2,nb1pts + arcs(i) = arcs(i-1) + sqrt((x1spl(i)-x1spl(i-1))**2 + & + & (y1spl(i)-y1spl(i-1))**2) + enddo + do i=1,nb1pts + s1spl(i) = arcs(i)/arcs(nb1pts) + enddo + end if + + call spline(s1spl,x1spl,nb1pts,huge,huge,b1spl) + call spline(s1spl,y1spl,nb1pts,huge,huge,c1spl) + end if + + if (rbnd2) then +! Read x,y data points describing boundary 2 + read(5,*) nb2pts + if (nb2pts .gt. IBIG) then + call crash('readbndy: Need to make IBIG at least', nb2pts) + end if + do i=1,nb2pts + read(5,*) x2spl(i),y2spl(i) + enddo + if (.not. even2) then + do i=1,nb2pts + s2spl(i) = (i-1.)/(nb2pts-1.) + enddo + else + arcs(1) = 0 + do i = 2,nb2pts + arcs(i) = arcs(i-1) + sqrt((x2spl(i)-x2spl(i-1))**2 + & + & (y2spl(i)-y2spl(i-1))**2) + enddo + do i=1,nb2pts + s2spl(i) = arcs(i)/arcs(nb2pts) + enddo + end if + + call spline(s2spl,x2spl,nb2pts,huge,huge,b2spl) + call spline(s2spl,y2spl,nb2pts,huge,huge,c2spl) + end if + + if (rbnd3) then +! Read x,y data points describing boundary 3 + read(5,*) nb3pts + if (nb3pts .gt. IBIG) then + call crash('readbndy: Need to make IBIG at least', nb3pts) + end if + do i=1,nb3pts + read(5,*) x3spl(i),y3spl(i) + enddo + if (.not. even3) then + do i=1,nb3pts + s3spl(i) = (i-1.)/(nb3pts-1.) + enddo + else + arcs(1) = 0 + do i = 2,nb3pts + arcs(i) = arcs(i-1) + sqrt((x3spl(i)-x3spl(i-1))**2 + & + & (y3spl(i)-y3spl(i-1))**2) + enddo + do i=1,nb3pts + s3spl(i) = arcs(i)/arcs(nb3pts) + enddo + end if + + call spline(s3spl,x3spl,nb3pts,huge,huge,b3spl) + call spline(s3spl,y3spl,nb3pts,huge,huge,c3spl) + end if + + if (rbnd4) then +! Read x,y data points describing boundary 4 + read(5,*) nb4pts + if (nb4pts .gt. IBIG) then + call crash('readbndy: Need to make IBIG at least', nb4pts) + end if + do i=1,nb4pts + read(5,*) x4spl(i),y4spl(i) + enddo + if (.not. even4) then + do i=1,nb4pts + s4spl(i) = (i-1.)/(nb4pts-1.) + enddo + else + arcs(1) = 0 + do i = 2,nb4pts + arcs(i) = arcs(i-1) + sqrt((x4spl(i)-x4spl(i-1))**2 + & + & (y4spl(i)-y4spl(i-1))**2) + enddo + do i=1,nb4pts + s4spl(i) = arcs(i)/arcs(nb4pts) + enddo + end if + + call spline(s4spl,x4spl,nb4pts,huge,huge,b4spl) + call spline(s4spl,y4spl,nb4pts,huge,huge,c4spl) + end if + return + end + +! ******************************************************************* + + subroutine spline(x,y,NN,yp1,ypn,y2) + +! The following two subroutines are used to perform the cubic spline +! interpolation required to match up the distribution of points on +! opposite sides of the transformed plane rectangle. The routines +! are taken from Press,W.H., B.P.Flannery, S.A.Teukolsky and +! W.T.Vetterling: "Numerical Recipes, the Art of Scientific Computing" +! Cambridge University Press, 1986. +#include "grid.h" + integer NN + BIGREAL x(NN), y(NN), y2(NN), yp1, ypn + + integer nmax + parameter ( nmax=M2+L2 ) + BIGREAL u(nmax), sig, p, qn, un + integer i, k + + if (yp1 .gt. .99e30) then + y2(1)=0. + u(1)=0. + else + y2(1)=-0.5 + u(1)=(3./(x(2)-x(1)))*((y(2)-y(1))/(x(2)-x(1))-yp1) + endif + do i=2,NN-1 + sig=(x(i)-x(i-1))/(x(i+1)-x(i-1)) + p=sig*y2(i-1)+2. + y2(i)=(sig-1.)/p + u(i)=(6.*((y(i+1)-y(i))/(x(i+1)-x(i))-(y(i)-y(i-1)) & + & /(x(i)-x(i-1)))/(x(i+1)-x(i-1))-sig*u(i-1))/p + enddo + if (ypn .gt. .99e30) then + qn=0. + un=0. + else + qn=0.5 + un=(3./(x(NN)-x(NN-1)))*(ypn-(y(NN)-y(NN-1))/(x(NN)-x(NN-1))) + endif + y2(NN)=(un-qn*u(NN-1))/(qn*y2(NN-1)+1.) + do k=NN-1,1,-1 + y2(k)=y2(k)*y2(k+1)+u(k) + enddo + return + end + +! ******************************************************************* + + subroutine splint(xa,ya,y2a,NN,x,y) + integer NN + BIGREAL xa(NN), ya(NN), y2a(NN), x, y + + integer klo, khi, k + BIGREAL h, a, b + + klo=1 + khi=NN + 100 if (khi-klo.gt.1) then + k=(khi+klo)/2 + if(xa(k).gt.x)then + khi=k + else + klo=k + endif + goto 100 + endif + h=xa(khi)-xa(klo) + if (h.eq.0.) call crash('splint: bad xa input', 0) + a=(xa(khi)-x)/h + b=(x-xa(klo))/h + y=a*ya(klo)+b*ya(khi)+ & + & ((a**3-a)*y2a(klo)+(b**3-b)*y2a(khi))*(h**2)/6. + return + end + +! ******************************************************************* + + subroutine z1(s1,x,y,z) + BIGREAL s1, s2, s3, s4, x, y + BIGCOMPLEX z +#include "grid.h" + +! Subroutines which specify the boundaries of the physical +! domain. They are defined as functions of the variable s which +! ranges from 0 to 1 on each boundary, proceeding anti-clockwise. + + call splint(s1spl,x1spl,b1spl,nb1pts,s1,x) + call splint(s1spl,y1spl,c1spl,nb1pts,s1,y) +#if DBLEPREC + z = dcmplx(x,y) +#else + z = cmplx(x,y) +#endif /* DBLEPREC */ + return + + entry z2(s2,x,y,z) + call splint(s2spl,x2spl,b2spl,nb2pts,s2,x) + call splint(s2spl,y2spl,c2spl,nb2pts,s2,y) +#if DBLEPREC + z = dcmplx(x,y) +#else + z = cmplx(x,y) +#endif /* DBLEPREC */ + return + + entry z3(s3,x,y,z) + call splint(s3spl,x3spl,b3spl,nb3pts,s3,x) + call splint(s3spl,y3spl,c3spl,nb3pts,s3,y) +#if DBLEPREC + z = dcmplx(x,y) +#else + z = cmplx(x,y) +#endif /* DBLEPREC */ + return + + entry z4(s4,x,y,z) + call splint(s4spl,x4spl,b4spl,nb4pts,s4,x) + call splint(s4spl,y4spl,c4spl,nb4pts,s4,y) +#if DBLEPREC + z = dcmplx(x,y) +#else + z = cmplx(x,y) +#endif /* DBLEPREC */ + return + end + diff --git a/Drivers/tolat.F b/Drivers/tolat.F new file mode 100644 index 0000000..bc14df9 --- /dev/null +++ b/Drivers/tolat.F @@ -0,0 +1,261 @@ + program tolat + +! *** In gridpak version 5.4 ***** October 18, 2001 **************** +! Kate Hedstrom (kate@arsc.edu) +! John Wilkin (wilkin@imcs.rutgers.edu) +! ****************************************************************** +! +! This is a program to convert from the coordinate system in coast.f +! to back to latitude and longitude. If you change the parameters +! in coast.f you have to change them here as well, including HINIT +! and DH. This program writes out the four lat,long grids to the +! grid netCDF file. +! ****************************************************************** + +#include "griddefs.h" +#include "proj.h" +#include "bathy.h" +#include "ncgrid.h" + BIGREAL REarth + parameter ( REarth = 6.3708e6 ) + integer i, j + BIGREAL minlat, minlon, maxlat, maxlon + character*40 ident + logical dateline + BIGREAL DTOR, RTOD + BIGREAL udeg, vmin, vmax, addphase + real U1, U2, V1, V2, u, v, lat, lon + + data DTOR / .017453292519943 / + data RTOD / 57.2957795130823 / + +#include "gridid.h" + + call get_xy +#ifndef PLOTS + call crash('This program depends on NCAR graphics', 1) +#endif /* PLOTS */ + call start_plot + +! Initialize the mapping variables + + call pcseti('QUALITY',1) + write(ident,100) gridid(1:40) + 100 format(40a) + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(0.5,0.98,ident,.012,0.,0.) + call mapsti('GR',JGRD) + call mapstc('OU','NO') + call maproj(JPRJ,PLAT,PLONG,ROTA) + call mapset(JLTS,P1,P2,P3,P4) + call mapdrw + call plotit(0,0,0) + call drawcoast + call mapiq + call maptrn(PLAT+.5,PLONG,U2,V2) + call maptrn(PLAT-.5,PLONG,U1,V1) + udeg = sqrt((U2-U1)*(U2-U1) + (V2-V1)*(V2-V1)) + +! Calculate the lat,long of the psi points + + do i=1,L + do j=1,M + u = (xp(i,j)-XOFF)*udeg*RTOD/REarth + v = (yp(i,j)-YOFF)*udeg*RTOD/REarth + call maptri(u,v,lat,lon) + lat_psi(i,j) = lat + lon_psi(i,j) = lon + enddo + enddo + +! Plot the grid in lat,long space + +#if DBLEPREC + do j = 1,M + call mapit(sngl(lat_psi(1,j)),sngl(lon_psi(1,j)),0) + do i = 2,L + call mapit(sngl(lat_psi(i,j)),sngl(lon_psi(i,j)),2) + enddo + enddo + do i = 1,L + call mapit(sngl(lat_psi(i,1)),sngl(lon_psi(i,1)),0) + do j = 2,M + call mapit(sngl(lat_psi(i,j)),sngl(lon_psi(i,j)),2) + enddo + enddo +#else + do j = 1,M + call mapit(lat_psi(1,j),lon_psi(1,j),0) + do i = 2,L + call mapit(lat_psi(i,j),lon_psi(i,j),2) + enddo + enddo + do i = 1,L + call mapit(lat_psi(i,1),lon_psi(i,1),0) + do j = 2,M + call mapit(lat_psi(i,j),lon_psi(i,j),2) + enddo + enddo +#endif /* DBLEPREC */ + call mapiq + call frame + call end_plot + +! Calculate the lat,long of the u points + + do i=1,L + do j=0,M + u = (xu(i,j)-XOFF)*udeg*RTOD/REarth + v = (yu(i,j)-YOFF)*udeg*RTOD/REarth + call maptri(u,v,lat,lon) + lat_u(i,j) = lat + lon_u(i,j) = lon + enddo + enddo + +! Calculate the lat,long of the v points + + do i=0,L + do j=1,M + u = (xv(i,j)-XOFF)*udeg*RTOD/REarth + v = (yv(i,j)-YOFF)*udeg*RTOD/REarth + call maptri(u,v,lat,lon) + lat_v(i,j) = lat + lon_v(i,j) = lon + enddo + enddo + +! Calculate the lat,long of the rho points + + do i=0,L + do j=0,M + u = (xr(i,j)-XOFF)*udeg*RTOD/REarth + v = (yr(i,j)-YOFF)*udeg*RTOD/REarth + call maptri(u,v,lat,lon) + lat_rho(i,j) = lat + lon_rho(i,j) = lon + enddo + print *,i,lat_rho(i,0),lon_rho(i,0),lat_rho(i,M),lon_rho(i,M) + enddo + + maxlat = vmax(lat_rho,Lp*Mp) + minlat = vmin(lat_rho,Lp*Mp) + maxlon = vmax(lon_rho,Lp*Mp) + minlon = vmin(lon_rho,Lp*Mp) + print *,'Latitude range ', minlat, maxlat + print *,'Longitude range ', minlon, maxlon + if (maxlat .eq. 1.e12 .or. maxlon .eq. 1.e12) then + call crash('need to modify proj.h plot range', 1) + end if + +! Write out the lat,long information + +! First check that grid doesn't span the international dateline +! If so this can mess up things in topo and sphere +! Beware: This test might not trap some nasty cases + + dateline = .false. + + addphase = 0.0 + do j = 1,M + do i = 2,L + if (abs(lon_psi(i,j)-lon_psi(i-1,j)) .gt. 270.) then + if (lon_psi(i,j) .lt. lon_psi(i-1,j)) then + addphase = 360.0 + else + addphase = -360.0 + endif + dateline = .true. + else + addphase = 0.0 + endif + lon_psi(i,j) = lon_psi(i,j) + addphase + enddo + enddo + + addphase = 0.0 + do j = 0,M + do i = 1,L + if (abs(lon_rho(i,j)-lon_rho(i-1,j)) .gt. 270.) then + if (lon_rho(i,j) .lt. lon_rho(i-1,j)) then + addphase = 360.0 + else + addphase = -360.0 + endif + dateline = .true. + else + addphase = 0.0 + endif + lon_rho(i,j) = lon_rho(i,j) + addphase + enddo + enddo + + addphase = 0.0 + do j = 0,M + do i = 2,L + if (abs(lon_u(i,j)-lon_u(i-1,j)) .gt. 270.) then + if (lon_u(i,j) .lt. lon_u(i-1,j)) then + addphase = 360.0 + else + addphase = -360.0 + endif + dateline = .true. + else + addphase = 0.0 + endif + lon_u(i,j) = lon_u(i,j) + addphase + enddo + enddo + + addphase = 0.0 + do j = 1,M + do i = 1,L + if (abs(lon_v(i,j)-lon_v(i-1,j)) .gt. 270.) then + if (lon_v(i,j) .lt. lon_v(i-1,j)) then + addphase = 360.0 + else + addphase = -360.0 + endif + dateline = .true. + else + addphase = 0.0 + endif + lon_v(i,j) = lon_v(i,j) + addphase + enddo + enddo + if(dateline) then + print *,'tolat: grid crosses Dateline (?)' + print *,' recovery attempted... check' + maxlat = vmax(lat_rho,Lp*Mp) + minlat = vmin(lat_rho,Lp*Mp) + maxlon = vmax(lon_rho,Lp*Mp) + minlon = vmin(lon_rho,Lp*Mp) + print *,'Latitude range ', minlat, maxlat + print *,'Longitude range ', minlon, maxlon + endif + + call wrt_lat + +#if NO_EXIT + stop +#else + call exit(0) +#endif /* NO_EXIT */ + 150 call crash('read or write error while outputing solution',0) + end + +!---------------------------------------------------------------------- + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(ierr) +#endif /* NO_EXIT */ + return + end diff --git a/External/coast.in b/External/coast.in new file mode 100644 index 0000000..5080f4a --- /dev/null +++ b/External/coast.in @@ -0,0 +1,41 @@ + 42.83 -124.54 + 42.57 -124.41 + 42.45 -124.44 + 42.34 -124.44 + 42.09 -124.33 + 42 -124.20 + 41.74 -124.17 + 41.57 -124.09 + 41.45 -124.06 + 41.11 -124.15 + 41.02 -124.10 + 40.92 -124.12 + 40.55 -124.35 + 40.44 -124.38 + 40.25 -124.35 + 40 -124.03 + 39.82 -123.82 + 39.55 -123.76 + 39.36 -123.81 + 39.20 -123.77 + 38.93 -123.74 + 38.57 -123.34 + 38.43 -123.11 + 38.23 -123 + 38 -122.86 + 37.86 -122.74 + 37.77 -122.53 + 37.57 -122.53 + 37.45 -122.46 + 37.18 -122.43 + 37 -122.20 + 36.93 -122.14 + 36.59 -121.97 + 36.30 -121.92 + 36 -121.50 + 35.68 -121.28 + 35.45 -121 + 35.24 -120.89 + 34.92 -120.64 + 34.58 -120.64 + 34.45 -120.60 diff --git a/External/grid.in b/External/grid.in new file mode 100644 index 0000000..b046a80 --- /dev/null +++ b/External/grid.in @@ -0,0 +1,56 @@ + 46 + -3.86718E+06 -1.68723E+06 + -3.86718E+06 -1.75871E+06 + -3.84716E+06 -1.86285E+06 + -3.79268E+06 -1.93138E+06 + -3.77711E+06 -2.04102E+06 + -3.74709E+06 -2.12657E+06 + -3.69261E+06 -2.18656E+06 + -3.61366E+06 -2.21131E+06 + -3.55362E+06 -2.26683E+06 + -3.48468E+06 -2.30236E+06 + -3.44910E+06 -2.38075E+06 + -3.40018E+06 -2.45472E+06 + -3.37016E+06 -2.54822E+06 + -3.33569E+06 -2.53860E+06 + -3.27565E+06 -2.57348E+06 + -3.25563E+06 -2.62774E+06 + -3.21561E+06 -2.71373E+06 + -3.14111E+06 -2.76359E+06 + -3.09218E+06 -2.83930E+06 + -3.03659E+06 -2.90924E+06 + -2.99767E+06 -3.00177E+06 + -2.99211E+06 -3.13981E+06 + -2.95765E+06 -3.23386E+06 + -2.95320E+06 -3.36408E+06 + -2.98322E+06 -3.46485E+06 + -3.01213E+06 -3.57028E+06 + -3.03770E+06 -3.68833E+06 + -3.07217E+06 -3.78649E+06 + -3.12221E+06 -3.87089E+06 + -3.18670E+06 -3.94125E+06 + -3.22116E+06 -4.04155E+06 + -3.26119E+06 -4.14410E+06 + -3.31123E+06 -4.22847E+06 + -3.34125E+06 -4.34382E+06 + -3.35126E+06 -4.46042E+06 + -3.41019E+06 -4.53887E+06 + -3.51026E+06 -4.90974E+06 + -3.53027E+06 -5.01534E+06 + -3.52471E+06 -5.17743E+06 + -3.57475E+06 -5.24667E+06 + -3.63479E+06 -5.31186E+06 + -3.68371E+06 -5.38670E+06 + -3.68371E+06 -5.61497E+06 + -3.68371E+06 -5.93514E+06 + -3.68371E+06 -6.26754E+06 + -3.68371E+06 -6.43876E+06 + 2 + -3.68371E+06 -6.43876E+06 + 3.33569E+06 -6.43876E+06 + 2 + 3.33569E+06 -6.43876E+06 + 3.33569E+06 -1.68723E+06 + 2 + 3.33569E+06 -1.68723E+06 + -3.86718E+06 -1.68723E+06 diff --git a/External/grid_1.in b/External/grid_1.in new file mode 100644 index 0000000..4d9ff66 --- /dev/null +++ b/External/grid_1.in @@ -0,0 +1,12 @@ +2 + -5281526.173 6438778.733 + -5281526.173 668362.837 +2 + -5281526.173 668362.837 + 5448311.210 668362.837 +2 + 5448311.210 668362.837 + 5448311.210 6438778.733 +2 + 5448311.210 6438778.733 + -5281526.173 6438778.733 diff --git a/External/sqgrid.in b/External/sqgrid.in new file mode 100644 index 0000000..6d20d1f --- /dev/null +++ b/External/sqgrid.in @@ -0,0 +1,440 @@ + 89 + -22944.18979578849 -3531683.793859726 + -22944.18979578849 -3534637.728235140 + -22944.18979578849 -3537591.662610555 + -22944.18979578849 -3540545.596985968 + -22944.18979578849 -3543499.531361382 + -22944.18979578849 -3546453.465736797 + -22944.18979578849 -3549407.400112211 + -22944.18979578849 -3552361.334487624 + -22944.18979578849 -3555315.268863039 + -22944.18979578849 -3558269.203238453 + -22944.18979578849 -3561223.137613867 + -22944.18979578849 -3564177.071989281 + -22944.18979578849 -3567131.006364696 + -22944.18979578849 -3570084.940740108 + -22944.18979578849 -3573038.875115523 + -22944.18979578849 -3575992.809490938 + -22944.18979578849 -3578946.743866351 + -22944.18979578849 -3581900.678241765 + -22944.18979578849 -3584854.612617180 + -22944.18979578849 -3587808.546992593 + -22944.18979578849 -3590762.481368008 + -22944.18979578849 -3593716.415743422 + -22944.18979578849 -3596670.350118836 + -22944.18979578849 -3599624.284494250 + -22944.18979578849 -3602578.218869664 + -22944.18979578849 -3605532.153245078 + -22944.18979578849 -3608486.087620492 + -22944.18979578849 -3611440.021995906 + -22944.18979578849 -3614393.956371320 + -22944.18979578849 -3617347.890746734 + -22944.18979578849 -3620301.825122148 + -22944.18979578849 -3623255.759497562 + -22944.18979578849 -3626209.693872977 + -22944.18979578849 -3629163.628248391 + -22944.18979578849 -3632117.562623804 + -22944.18979578849 -3635071.496999219 + -22944.18979578849 -3638025.431374633 + -22944.18979578849 -3640979.365750046 + -22944.18979578849 -3643933.300125461 + -22944.18979578849 -3646887.234500875 + -22944.18979578849 -3649841.168876288 + -22944.18979578849 -3652795.103251703 + -22944.18979578849 -3655749.037627117 + -22944.18979578849 -3658702.972002531 + -22944.18979578849 -3661656.906377945 + -22944.18979578849 -3664610.840753360 + -22944.18979578849 -3667564.775128773 + -22944.18979578849 -3670518.709504187 + -22944.18979578849 -3673472.643879602 + -22944.18979578849 -3676426.578255015 + -22944.18979578849 -3679380.512630429 + -22944.18979578849 -3682334.447005844 + -22944.18979578849 -3685288.381381257 + -22944.18979578849 -3688242.315756672 + -22944.18979578849 -3691196.250132086 + -22944.18979578849 -3694150.184507500 + -22944.18979578849 -3697104.118882914 + -22944.18979578849 -3700058.053258328 + -22944.18979578849 -3703011.987633742 + -22944.18979578849 -3705965.922009156 + -22944.18979578849 -3708919.856384570 + -22944.18979578849 -3711873.790759984 + -22944.18979578849 -3714827.725135398 + -22944.18979578849 -3717781.659510813 + -22944.18979578849 -3720735.593886226 + -22944.18979578849 -3723689.528261641 + -22944.18979578849 -3726643.462637055 + -22944.18979578849 -3729597.397012468 + -22944.18979578849 -3732551.331387883 + -22944.18979578849 -3735505.265763297 + -22944.18979578849 -3738459.200138710 + -22944.18979578849 -3741413.134514125 + -22944.18979578849 -3744367.068889539 + -22944.18979578849 -3747321.003264953 + -22944.18979578849 -3750274.937640367 + -22944.18979578849 -3753228.872015782 + -22944.18979578849 -3756182.806391195 + -22944.18979578849 -3759136.740766609 + -22944.18979578849 -3762090.675142024 + -22944.18979578849 -3765044.609517437 + -22944.18979578849 -3767998.543892851 + -22944.18979578849 -3770952.478268266 + -22944.18979578849 -3773906.412643679 + -22944.18979578849 -3776860.347019093 + -22944.18979578849 -3779814.281394508 + -22944.18979578849 -3782768.215769921 + -22944.18979578849 -3785722.150145336 + -22944.18979578849 -3788676.084520750 + -22944.18979578849 -3791630.018896164 + 129 + -22944.18979578849 -3791630.018896164 + -19990.25542037445 -3791630.018896164 + -17036.32104496041 -3791630.018896164 + -14082.38666954637 -3791630.018896164 + -11128.45229413221 -3791630.018896164 + -8174.517918718222 -3791630.018896164 + -5220.583543304121 -3791630.018896164 + -2266.649167890078 -3791630.018896164 + 687.2852075239643 -3791630.018896164 + 3641.219582938007 -3791630.018896164 + 6595.153958352108 -3791630.018896164 + 9549.088333766151 -3791630.018896164 + 12503.02270918025 -3791630.018896164 + 15456.95708459435 -3791630.018896164 + 18410.89146000834 -3791630.018896164 + 21364.82583542250 -3791630.018896164 + 24318.76021083648 -3791630.018896164 + 27272.69458625058 -3791630.018896164 + 30226.62896166462 -3791630.018896164 + 33180.56333707873 -3791630.018896164 + 36134.49771249277 -3791630.018896164 + 39088.43208790687 -3791630.018896164 + 42042.36646332091 -3791630.018896164 + 44996.30083873495 -3791630.018896164 + 47950.23521414906 -3791630.018896164 + 50904.16958956304 -3791630.018896164 + 53858.10396497720 -3791630.018896164 + 56812.03834039124 -3791630.018896164 + 59765.97271580528 -3791630.018896164 + 62719.90709121933 -3791630.018896164 + 65673.84146663337 -3791630.018896164 + 68627.77584204753 -3791630.018896164 + 71581.71021746157 -3791630.018896164 + 74535.64459287561 -3791630.018896164 + 77489.57896828966 -3791630.018896164 + 80443.51334370382 -3791630.018896164 + 83397.44771911786 -3791630.018896164 + 86351.38209453190 -3791630.018896164 + 89305.31646994594 -3791630.018896164 + 92259.25084535999 -3791630.018896164 + 95213.18522077415 -3791630.018896164 + 98167.11959618813 -3791630.018896164 + 101121.0539716022 -3791630.018896164 + 104074.9883470163 -3791630.018896164 + 107028.9227224304 -3791630.018896164 + 109982.8570978445 -3791630.018896164 + 112936.7914732585 -3791630.018896164 + 115890.7258486726 -3791630.018896164 + 118844.6602240866 -3791630.018896164 + 121798.5945995008 -3791630.018896164 + 124752.5289749147 -3791630.018896164 + 127706.4633503288 -3791630.018896164 + 130660.3977257429 -3791630.018896164 + 133614.3321011569 -3791630.018896164 + 136568.2664765710 -3791630.018896164 + 139522.2008519851 -3791630.018896164 + 142476.1352273992 -3791630.018896164 + 145430.0696028132 -3791630.018896164 + 148384.0039782273 -3791630.018896164 + 151337.9383536413 -3791630.018896163 + 154291.8727290554 -3791630.018896164 + 157245.8071044694 -3791630.018896164 + 160199.7414798836 -3791630.018896164 + 163153.6758552977 -3791630.018896164 + 166107.6102307116 -3791630.018896164 + 169061.5446061257 -3791630.018896164 + 172015.4789815398 -3791630.018896164 + 174969.4133569539 -3791630.018896164 + 177923.3477323679 -3791630.018896163 + 180877.2821077820 -3791630.018896164 + 183831.2164831961 -3791630.018896164 + 186785.1508586101 -3791630.018896164 + 189739.0852340242 -3791630.018896164 + 192693.0196094383 -3791630.018896164 + 195646.9539848523 -3791630.018896164 + 198600.8883602664 -3791630.018896164 + 201554.8227356804 -3791630.018896164 + 204508.7571110945 -3791630.018896163 + 207462.6914865086 -3791630.018896164 + 210416.6258619227 -3791630.018896164 + 213370.5602373368 -3791630.018896164 + 216324.4946127508 -3791630.018896164 + 219278.4289881649 -3791630.018896164 + 222232.3633635789 -3791630.018896164 + 225186.2977389930 -3791630.018896164 + 228140.2321144070 -3791630.018896164 + 231094.1664898211 -3791630.018896164 + 234048.1008652352 -3791630.018896164 + 237002.0352406492 -3791630.018896164 + 239955.9696160633 -3791630.018896164 + 242909.9039914774 -3791630.018896164 + 245863.8383668915 -3791630.018896164 + 248817.7727423055 -3791630.018896164 + 251771.7071177196 -3791630.018896164 + 254725.6414931336 -3791630.018896164 + 257679.5758685477 -3791630.018896164 + 260633.5102439618 -3791630.018896164 + 263587.4446193759 -3791630.018896164 + 266541.3789947899 -3791630.018896164 + 269495.3133702039 -3791630.018896164 + 272449.2477456180 -3791630.018896164 + 275403.1821210322 -3791630.018896164 + 278357.1164964461 -3791630.018896164 + 281311.0508718602 -3791630.018896163 + 284264.9852472743 -3791630.018896164 + 287218.9196226884 -3791630.018896164 + 290172.8539981025 -3791630.018896164 + 293126.7883735165 -3791630.018896164 + 296080.7227489306 -3791630.018896164 + 299034.6571243446 -3791630.018896164 + 301988.5914997587 -3791630.018896164 + 304942.5258751728 -3791630.018896164 + 307896.4602505869 -3791630.018896164 + 310850.3946260009 -3791630.018896164 + 313804.3290014150 -3791630.018896164 + 316758.2633768291 -3791630.018896164 + 319712.1977522431 -3791630.018896164 + 322666.1321276572 -3791630.018896164 + 325620.0665030712 -3791630.018896164 + 328574.0008784853 -3791630.018896164 + 331527.9352538994 -3791630.018896163 + 334481.8696293134 -3791630.018896164 + 337435.8040047275 -3791630.018896164 + 340389.7383801416 -3791630.018896164 + 343343.6727555557 -3791630.018896164 + 346297.6071309697 -3791630.018896164 + 349251.5415063837 -3791630.018896164 + 352205.4758817978 -3791630.018896164 + 355159.4102572119 -3791630.018896164 + 89 + 355159.4102572119 -3791630.018896164 + 355159.4102572119 -3788676.084520750 + 355159.4102572119 -3785722.150145336 + 355159.4102572119 -3782768.215769921 + 355159.4102572119 -3779814.281394508 + 355159.4102572119 -3776860.347019093 + 355159.4102572119 -3773906.412643679 + 355159.4102572119 -3770952.478268266 + 355159.4102572119 -3767998.543892851 + 355159.4102572119 -3765044.609517437 + 355159.4102572119 -3762090.675142024 + 355159.4102572119 -3759136.740766609 + 355159.4102572119 -3756182.806391195 + 355159.4102572119 -3753228.872015782 + 355159.4102572119 -3750274.937640367 + 355159.4102572119 -3747321.003264953 + 355159.4102572119 -3744367.068889539 + 355159.4102572119 -3741413.134514125 + 355159.4102572119 -3738459.200138710 + 355159.4102572119 -3735505.265763297 + 355159.4102572119 -3732551.331387883 + 355159.4102572119 -3729597.397012468 + 355159.4102572119 -3726643.462637055 + 355159.4102572119 -3723689.528261641 + 355159.4102572119 -3720735.593886226 + 355159.4102572119 -3717781.659510813 + 355159.4102572119 -3714827.725135398 + 355159.4102572119 -3711873.790759984 + 355159.4102572119 -3708919.856384570 + 355159.4102572119 -3705965.922009156 + 355159.4102572119 -3703011.987633742 + 355159.4102572119 -3700058.053258328 + 355159.4102572119 -3697104.118882914 + 355159.4102572119 -3694150.184507500 + 355159.4102572119 -3691196.250132086 + 355159.4102572119 -3688242.315756672 + 355159.4102572119 -3685288.381381257 + 355159.4102572119 -3682334.447005844 + 355159.4102572119 -3679380.512630429 + 355159.4102572119 -3676426.578255015 + 355159.4102572119 -3673472.643879602 + 355159.4102572119 -3670518.709504187 + 355159.4102572119 -3667564.775128773 + 355159.4102572119 -3664610.840753360 + 355159.4102572119 -3661656.906377945 + 355159.4102572119 -3658702.972002531 + 355159.4102572119 -3655749.037627117 + 355159.4102572119 -3652795.103251703 + 355159.4102572119 -3649841.168876288 + 355159.4102572119 -3646887.234500875 + 355159.4102572119 -3643933.300125461 + 355159.4102572119 -3640979.365750046 + 355159.4102572119 -3638025.431374633 + 355159.4102572119 -3635071.496999219 + 355159.4102572119 -3632117.562623804 + 355159.4102572119 -3629163.628248391 + 355159.4102572119 -3626209.693872977 + 355159.4102572119 -3623255.759497562 + 355159.4102572119 -3620301.825122148 + 355159.4102572119 -3617347.890746734 + 355159.4102572119 -3614393.956371320 + 355159.4102572119 -3611440.021995906 + 355159.4102572119 -3608486.087620492 + 355159.4102572119 -3605532.153245078 + 355159.4102572119 -3602578.218869664 + 355159.4102572119 -3599624.284494250 + 355159.4102572119 -3596670.350118836 + 355159.4102572119 -3593716.415743422 + 355159.4102572119 -3590762.481368008 + 355159.4102572119 -3587808.546992593 + 355159.4102572119 -3584854.612617180 + 355159.4102572119 -3581900.678241765 + 355159.4102572119 -3578946.743866351 + 355159.4102572119 -3575992.809490938 + 355159.4102572119 -3573038.875115523 + 355159.4102572119 -3570084.940740108 + 355159.4102572119 -3567131.006364696 + 355159.4102572119 -3564177.071989281 + 355159.4102572119 -3561223.137613867 + 355159.4102572119 -3558269.203238453 + 355159.4102572119 -3555315.268863039 + 355159.4102572119 -3552361.334487624 + 355159.4102572119 -3549407.400112211 + 355159.4102572119 -3546453.465736797 + 355159.4102572119 -3543499.531361382 + 355159.4102572119 -3540545.596985968 + 355159.4102572119 -3537591.662610555 + 355159.4102572119 -3534637.728235140 + 355159.4102572119 -3531683.793859726 + 129 + 355159.4102572119 -3531683.793859726 + 352205.4758817978 -3531683.793859726 + 349251.5415063837 -3531683.793859726 + 346297.6071309697 -3531683.793859726 + 343343.6727555557 -3531683.793859727 + 340389.7383801416 -3531683.793859726 + 337435.8040047275 -3531683.793859726 + 334481.8696293134 -3531683.793859726 + 331527.9352538994 -3531683.793859726 + 328574.0008784853 -3531683.793859726 + 325620.0665030712 -3531683.793859726 + 322666.1321276572 -3531683.793859726 + 319712.1977522431 -3531683.793859726 + 316758.2633768291 -3531683.793859727 + 313804.3290014150 -3531683.793859726 + 310850.3946260009 -3531683.793859726 + 307896.4602505869 -3531683.793859726 + 304942.5258751728 -3531683.793859726 + 301988.5914997587 -3531683.793859726 + 299034.6571243446 -3531683.793859726 + 296080.7227489306 -3531683.793859726 + 293126.7883735165 -3531683.793859726 + 290172.8539981025 -3531683.793859726 + 287218.9196226884 -3531683.793859726 + 284264.9852472743 -3531683.793859726 + 281311.0508718602 -3531683.793859726 + 278357.1164964461 -3531683.793859726 + 275403.1821210322 -3531683.793859726 + 272449.2477456180 -3531683.793859726 + 269495.3133702039 -3531683.793859726 + 266541.3789947899 -3531683.793859726 + 263587.4446193759 -3531683.793859726 + 260633.5102439618 -3531683.793859726 + 257679.5758685477 -3531683.793859726 + 254725.6414931336 -3531683.793859726 + 251771.7071177196 -3531683.793859726 + 248817.7727423055 -3531683.793859726 + 245863.8383668915 -3531683.793859726 + 242909.9039914774 -3531683.793859726 + 239955.9696160633 -3531683.793859727 + 237002.0352406492 -3531683.793859726 + 234048.1008652352 -3531683.793859727 + 231094.1664898211 -3531683.793859726 + 228140.2321144070 -3531683.793859726 + 225186.2977389930 -3531683.793859726 + 222232.3633635789 -3531683.793859726 + 219278.4289881649 -3531683.793859726 + 216324.4946127508 -3531683.793859726 + 213370.5602373368 -3531683.793859726 + 210416.6258619227 -3531683.793859726 + 207462.6914865086 -3531683.793859727 + 204508.7571110945 -3531683.793859726 + 201554.8227356804 -3531683.793859726 + 198600.8883602664 -3531683.793859726 + 195646.9539848523 -3531683.793859726 + 192693.0196094383 -3531683.793859726 + 189739.0852340242 -3531683.793859726 + 186785.1508586101 -3531683.793859726 + 183831.2164831961 -3531683.793859726 + 180877.2821077820 -3531683.793859727 + 177923.3477323679 -3531683.793859726 + 174969.4133569539 -3531683.793859726 + 172015.4789815398 -3531683.793859726 + 169061.5446061257 -3531683.793859726 + 166107.6102307116 -3531683.793859726 + 163153.6758552977 -3531683.793859726 + 160199.7414798836 -3531683.793859726 + 157245.8071044694 -3531683.793859726 + 154291.8727290554 -3531683.793859726 + 151337.9383536413 -3531683.793859726 + 148384.0039782273 -3531683.793859726 + 145430.0696028132 -3531683.793859726 + 142476.1352273992 -3531683.793859726 + 139522.2008519851 -3531683.793859726 + 136568.2664765710 -3531683.793859726 + 133614.3321011569 -3531683.793859726 + 130660.3977257429 -3531683.793859726 + 127706.4633503288 -3531683.793859726 + 124752.5289749147 -3531683.793859726 + 121798.5945995008 -3531683.793859727 + 118844.6602240866 -3531683.793859726 + 115890.7258486726 -3531683.793859726 + 112936.7914732585 -3531683.793859726 + 109982.8570978445 -3531683.793859726 + 107028.9227224304 -3531683.793859726 + 104074.9883470163 -3531683.793859726 + 101121.0539716022 -3531683.793859726 + 98167.11959618813 -3531683.793859726 + 95213.18522077415 -3531683.793859726 + 92259.25084535999 -3531683.793859726 + 89305.31646994594 -3531683.793859726 + 86351.38209453190 -3531683.793859726 + 83397.44771911786 -3531683.793859726 + 80443.51334370382 -3531683.793859726 + 77489.57896828966 -3531683.793859726 + 74535.64459287561 -3531683.793859726 + 71581.71021746157 -3531683.793859726 + 68627.77584204753 -3531683.793859726 + 65673.84146663337 -3531683.793859726 + 62719.90709121933 -3531683.793859726 + 59765.97271580528 -3531683.793859726 + 56812.03834039124 -3531683.793859726 + 53858.10396497720 -3531683.793859726 + 50904.16958956304 -3531683.793859726 + 47950.23521414906 -3531683.793859726 + 44996.30083873495 -3531683.793859726 + 42042.36646332091 -3531683.793859726 + 39088.43208790687 -3531683.793859726 + 36134.49771249277 -3531683.793859726 + 33180.56333707873 -3531683.793859726 + 30226.62896166462 -3531683.793859726 + 27272.69458625058 -3531683.793859726 + 24318.76021083648 -3531683.793859726 + 21364.82583542250 -3531683.793859726 + 18410.89146000834 -3531683.793859726 + 15456.95708459435 -3531683.793859726 + 12503.02270918025 -3531683.793859726 + 9549.088333766151 -3531683.793859726 + 6595.153958352108 -3531683.793859726 + 3641.219582938007 -3531683.793859726 + 687.2852075239643 -3531683.793859726 + -2266.649167890078 -3531683.793859726 + -5220.583543304121 -3531683.793859726 + -8174.517918718222 -3531683.793859726 + -11128.45229413221 -3531683.793859726 + -14082.38666954637 -3531683.793859726 + -17036.32104496041 -3531683.793859726 + -19990.25542037445 -3531683.793859726 + -22944.18979578849 -3531683.793859726 diff --git a/Include/bathy.h b/Include/bathy.h new file mode 100644 index 0000000..8934520 --- /dev/null +++ b/Include/bathy.h @@ -0,0 +1,37 @@ +#include "gridparam.h" + integer L, M, Lp, Mp, L2d + parameter ( L=Lm+1, M=Mm+1, Lp=Lm+2, Mp=Mm+2 ) + parameter ( L2d=Lp*Mp ) +! lcflag tells which color bar to use, 1 - 6 (so far). If negative +! then black outlines are drawn over the color contour regions. +! 5 is shades of grey, 2 is John's Gebco chart attempt. + integer lcflag + parameter ( lcflag=-2 ) + real x_v(0:Lm+3,0:Mm+3), y_v(0:Lm+3,0:Mm+3) + common /xxyys/ x_v, y_v + BIGREAL xp(L,M), yp(L,M), xr(0:L,0:M), yr(0:L,0:M), & + & xu(L,0:M), yu(L,0:M), xv(0:L,M), yv(0:L,M), & + & xl, el + real xmin, ymin, xmax, ymax + common /grdpts/ xp, yp, xr, yr, xu, yu, xv, yv, xl, el, & + & xmin, ymin, xmax, ymax + BIGREAL f(0:L,0:M), h(0:L,0:M) + common /parm/ f, h + BIGREAL pm(0:L,0:M), pn(0:L,0:M), & + & dndx(0:L,0:M), dmde(0:L,0:M) + common /pmpn/ pm, pn, dndx, dmde + BIGREAL lat_psi(L,M), lon_psi(L,M), & + & lat_rho(0:L,0:M), lon_rho(0:L,0:M), & + & lat_u(L,0:M), lon_u(L,0:M), & + & lat_v(0:L,M), lon_v(0:L,M) + common /latlon/ lat_psi, lon_psi, lat_rho, lon_rho, & + & lat_u, lon_u, lat_v, lon_v + BIGREAL mask_rho(0:L,0:M), mask_u(L,0:M), & + & mask_v(0:L,M), mask_psi(L,M) + common /rmask/ mask_rho, mask_u, mask_v, mask_psi + BIGREAL angle(0:L,0:M) + common /angles/ angle + integer*2 depthmin, depthmax + common /hmins/ depthmin, depthmax + logical spherical + common /logic/ spherical diff --git a/Include/coast.h b/Include/coast.h new file mode 100644 index 0000000..d6d0fbf --- /dev/null +++ b/Include/coast.h @@ -0,0 +1,9 @@ + integer IBIG + parameter ( IBIG = 300) + real clat(IBIG), clong(IBIG) + common /coast/ clat, clong +! backward is a logical variable which is true if you read in the +! data in the direction opposite to the direction it should be +! written out for the grid program. + logical backward + parameter ( backward = .false. ) diff --git a/Include/grid.h b/Include/grid.h new file mode 100644 index 0000000..e4181c0 --- /dev/null +++ b/Include/grid.h @@ -0,0 +1,75 @@ +#include "griddefs.h" +#include "bathy.h" + integer ITMAX, IBIG + parameter ( ITMAX=8, IBIG=400 ) +! ITMAX is the number of iterations to perform +! IBIG is the largest number of points to be read in for one +! boundary. +! +! original distribution of x,y points is preserved on boundary kb1 +! and kb2: + integer kb1, kb2 + parameter ( kb1 = 1, kb2 = 4 ) + + integer L2, M2, L2big, M2big, nwrk + integer N, N1, N2, N3, N4 + parameter ( L2=2*(L-1), M2=2*(M-1) ) + parameter ( L2big=2*Lm, M2big=2*Mm ) + parameter ( N1=M2, N2=M2+L2, N3=M2+L2+M2, & + & N4=M2+L2+M2+L2, N=N4 ) + integer KK + parameter ( KK = 9 ) + parameter ( nwrk = 2*(KK-2)*(2**(KK+1)) + KK + 10*M2big + & + & 12*L2big + 27 ) + BIGREAL sxi(0:L2big), seta(0:M2big) + common / xiej / sxi, seta + BIGREAL x1spl(IBIG),x2spl(IBIG),x3spl(IBIG),x4spl(IBIG), & + & y1spl(IBIG),y2spl(IBIG),y3spl(IBIG),y4spl(IBIG), & + & s1spl(IBIG),s2spl(IBIG),s3spl(IBIG),s4spl(IBIG), & + & b1spl(IBIG),b2spl(IBIG),b3spl(IBIG),b4spl(IBIG), & + & c1spl(IBIG),c2spl(IBIG),c3spl(IBIG),c4spl(IBIG) + integer nb1pts,nb2pts,nb3pts,nb4pts + common / bdata/ x1spl, x2spl, x3spl, x4spl, & + & y1spl, y2spl, y3spl, y4spl, & + & s1spl, s2spl, s3spl, s4spl, & + & b1spl, b2spl, b3spl, b4spl, & + & c1spl, c2spl, c3spl, c4spl, & + & nb1pts, nb2pts, nb3pts, nb4pts +! The boundary values are read from stdin for edges which have +! rbnd true. For boundaries which are read in, the grid spacing +! is proportional to distance along the boundary if even? is true. +! Otherwise, it is proportional to the spacing of the supplied +! boundary points. + logical rbnd1, rbnd2, rbnd3, rbnd4, & + & even1, even2, even3, even4 + parameter ( rbnd1=.true., rbnd2=.true., & + & rbnd3=.true., rbnd4=.true., & + & even1=.false., even2=.true., & + & even3=.true., even4=.true. ) + +! The following are used when you need to fit a boundary with +! bumps on opposite sides and need to make intermediate partial +! grids. Set pleft1 or pbot1 to true to print out the boundaries +! of a partial left or bottom grid. Set pleft2 or pbot2 to true +! to print out the new left or bottom boundary. Lmiddle or Mmiddle +! gives the position of the interior boundary for the intermediate +! grid. The boundaries are written out to iout1 or iout2. +! +! Don't forget to adjust the evenx flags, kb1 and kb2 accordingly. + logical pleft1, pleft2, pbot1, pbot2 + integer Lmiddle, Mmiddle, iout1, iout2 + parameter ( pleft1=.false., pleft2=.false., & + & pbot1=.false., pbot2=.false., & + & Lmiddle=49, Mmiddle=25, & + & iout1=13, iout2=14 ) + +! These variables are used for writing out a subset of the psi points +! to be used in generating a nested domain. + logical subset + integer Lwest, Least, Msouth, Mnorth, iout3 + parameter ( subset = .false., Lwest = 10, Least = 20, & + & Msouth = 10, Mnorth = 20, iout3 = 15 ) + +! xpots unit numbers + integer ipot1, ipot2, ipot3, ipot4 + parameter ( ipot1=41, ipot2=42, ipot3=43, ipot4=44 ) diff --git a/Include/griddefs.h b/Include/griddefs.h new file mode 100644 index 0000000..bd0aa93 --- /dev/null +++ b/Include/griddefs.h @@ -0,0 +1,53 @@ +! define as 1 for ETOPO5 bathymetry +#undef ETOPO5 +! define as 1 for ETOPO2 bathymetry +#undef ETOPO2 +#define GEBCO 1 + +! for 64-bit output +#define DBLEPREC 1 + +! to draw coastlines on some plots +#define DRAW_COASTS 1 + +! to keep ellipsoidal terms in Earth's shape +#define ELLIPSOID 1 + +! for averaging bathymetry in gridbox (for EW/NS grids only) +#undef IMG_AVG + +#define KEEP_SHALLOW 1 + +! for NCAR graphics (3.2 or better) */ +#define PLOTS 1 +! for X windows rather than metafile */ +#undef X_WIN + +#undef SYS_POTS /* unimplimented system calls */ +#undef XPOTS1 /* read ipot1 file */ +#undef XPOTS2 /* read ipot2 file */ +#undef XPOTS3 /* read ipot3 file */ +#undef XPOTS4 /* read ipot4 file */ + +#ifdef cray +#undef DCOMPLEX +#define DBLEPREC 1 /* for 64-bit output */ +#define BIGREAL real +#define SMALLREAL real +#define BIGCOMPLEX complex +#define FLoaT float +#else +#if DBLEPREC +#define DCOMPLEX 1 /* for compilers which support complex*16 */ +#define SMALLREAL real +#define BIGREAL real*8 +#define BIGCOMPLEX complex*16 +#define FLoaT dfloat +#else +#undef DCOMPLEX +#define BIGREAL real +#define SMALLREAL real +#define BIGCOMPLEX complex +#define FLoaT float +#endif /* DBLEPREC */ +#endif /* cray */ diff --git a/Include/gridid.h b/Include/gridid.h new file mode 100644 index 0000000..675d613 --- /dev/null +++ b/Include/gridid.h @@ -0,0 +1,6 @@ +! gridid is an 80 character string, the first 40 of which are +! used as a plot label. +! gridfile is the name of the netCDF file produced by the +! grid/sqgrid programs + gridid = 'Gulf of Mexico #1' + gridfile = 'grid_gom.nc' diff --git a/Include/gridparam.h b/Include/gridparam.h new file mode 100644 index 0000000..4523f04 --- /dev/null +++ b/Include/gridparam.h @@ -0,0 +1,2 @@ + integer Lm, Mm + parameter ( Lm=72 , Mm=42 ) diff --git a/Include/ncgrid.h b/Include/ncgrid.h new file mode 100644 index 0000000..a384f77 --- /dev/null +++ b/Include/ncgrid.h @@ -0,0 +1,43 @@ +! +!======================================================================= +! Include file "ncscrum.h" +!======================================================================= +! +! maxvar Maximum number of variables for input NetCDF files. +! ncgridid NetCDF ID for grid file. +! nvars Number of variables defined in current input NetCDF file. +! nvdims Number of dimensions for each variables in current input +! NetCDF file. +! rcode Error code returned by NetCDF library (0 for no errors). +! bathsize Size of unlimited time record dimension in current input +! NetCDF file. +! varid Generic ID for arbitrary variables in NetCDF files. +! varnam Names of all variables in current input NetCDF file. +! vdims Dimension IDs for each of the variables in current input +! NetCDF file. +! +!======================================================================= +! + integer maxvar + parameter (maxvar=100) +! + integer bathindex, nvdims(maxvar), & + & vdims(5,maxvar), nvars, ncgridid, rcode, & + & varid, vartyp, bathsize + common /incgrid/ bathindex, nvdims, vdims, nvars, & + & ncgridid, rcode, varid, vartyp, & + & bathsize +! + character*5 version + integer patchlevel, stdout + parameter ( version='5.3 ' ) + parameter ( patchlevel=0 ) + parameter ( stdout=6 ) + + character*44 date_str + character*120 history + character*15 varnam(maxvar) + common /cncgrid/ date_str, history, varnam + character*1024 CPPoptions + character*80 gridfile, grid1_file, gridid, type + common /strings/ CPPoptions, gridfile, grid1_file, gridid, type diff --git a/Include/proj.h b/Include/proj.h new file mode 100644 index 0000000..c174c20 --- /dev/null +++ b/Include/proj.h @@ -0,0 +1,9 @@ + character*2 JPRJ, JLTS + real PLAT, PLONG, ROTA, P1, P2, P3, P4, XOFF, YOFF + integer JGRD + parameter ( JPRJ = 'ME', PLAT = 0.000000, & + & PLONG = -80.000000, ROTA = 0.000000, & + & JLTS = 'CO', P1 = 5.000000, & + & P2 = -100.000000, P3 = 33.000000, & + & P4 = -57.000000, JGRD = 10) + parameter ( XOFF = 0., YOFF = 0.) diff --git a/Include/sphereflags.h b/Include/sphereflags.h new file mode 100644 index 0000000..2cf3cb6 --- /dev/null +++ b/Include/sphereflags.h @@ -0,0 +1,14 @@ +! ******************************************************************* +! Logicals: +! hflat - true for constant depth of h0 - don't read in topography. +! spherical - true for spherical geometry in pm's and pn's or false +! for planar geometry. +! colour - true for colour fill plots (false gives contours) +! grover - true to draw grid over colour filled plots +! readlat - true to read in the lat, long file produced by tolat. +! ******************************************************************* + spherical = .true. + hflat = .false. + colour = .true. + grover = .false. + readlat = .true. diff --git a/Obsolete/README b/Obsolete/README new file mode 100644 index 0000000..f1b9d76 --- /dev/null +++ b/Obsolete/README @@ -0,0 +1,71 @@ +*** In gridpak version 5.4 ***** April 27, 2000 ***************** + Kate Hedstrom (kate@ahab.rutgers.edu) + John Wilkin (jl.wilkin@auckland.ac.nz) +******************************************************************** + +New in 5.4: + +Fixed up stretch to use with the netCDF file. It now reads one grid +file and writes another one. In order to use it, you need to edit +gridparam.h and add 1 to L, you need to edit gridid.h to make +grid1_file point to the old file and gridfile point to the new file, +and you need to edit opencdf.F to cut out the dimension checks on L and +LP. + +Changed mapbath to use the netCDF bathymetry files. + +See ../proj for double precision Coast and Tolat. + +New in 5.3: + +Added KEEP_SHALLOW option - see the manual. +Fixed a few bugs. +Took out MUD2 option and added sepeli to gridpak, so we no longer need +to link to spemlib.a. + +New in 5.2: + +Updated to netcdf 3.4 interface - change Fortran names to lower case. + +New in 5.1: + +Updated to netcdf 3.3 interface - just to try it out. + +New in 5.0: + +Here is the new, improved gridpak. The following programs now all +write to the same netCDF file which gets created by either grid or +sqgrid. A variable called hraw is used for the working bathymetry. +hraw has an unlimited dimension so that a number of different +smoothing options can be tried. + +bathtub now reads a netCDF version of the entire etopo5 file. We +are assuming that you are using a machine with sufficient memory for +this. + +grid: computes an orthogonal boundary fitted grid by conformal mapping + reads from stdin + creates the netCDF grid file and + writes pm,pn,x_psi,y_psi,x_rho,y_rho,x_u,y_u,x_v,y_v +sqgrid: computes a rectangular grid + reads from stdin + creates the netCDF grid file and + writes pm,pn,x_psi,y_psi,x_rho,y_rho,x_u,y_u,x_v,y_v +tolat: converts the cartesian grid coordinates back to lat,lon +bathtub: inTerpolate User Bathymetry from etopo5 at lan,lon points +bathsoap: Smooth Over All Points using a Shapiro filter +bathsuds: User Defined Smoothing using a modified Shapiro filter +sphere: recalculates pm,pn and f if required on a sphere, writes + the requested version of hraw into the h variable in + the netCDF file. +mask_fill: read the rho mask and write out consistent u,v,psi masks. +mapbath: read the bathymetry file (etopo5) and find one contour, + write out the lat, lon values of that contour to fort.58. +stretch: reads a grid file and writes a new one which has L=L+1 + and is periodic (assuming the original one matched at the edges + + +These programs have not been updated: + +coast: converts lat,lon points to x,y coordinates + reads from stdin diff --git a/Obsolete/README.4 b/Obsolete/README.4 new file mode 100644 index 0000000..1fe8d07 --- /dev/null +++ b/Obsolete/README.4 @@ -0,0 +1,132 @@ +New in version 4.0: + +1. This directory now follows the convension of using .F as the + filename extension and using the C preprocessor. Also, there are + Makefiles for the computer architectures to which I have access. + It now passes the "implicit none" compiler flags. + +2. The bathsuds smoother is included. This is an attempt at reducing + the slope parameter defined in Beckmann and Haidvogel while + retaining as much structure as possible. The general wisdom on + bathymetry smoothing is that you just do whatever (cheating) is + required to get the model to run. Note that this filter retains + some 2 delta x signal, which you probably want to remove with a + pass of bathsoap. + +3. bathsoap, bathsuds, and sphere now have an option to draw the + coastlines from the xcoast 2.0 database. + +4. grid now uses a 64 bit precision mud2 version 3.0 or sepeli. The + sepeli option requires a spemlib dated 20 Feb. 1995 or newer. + The double precision means that you will no longer need to + generate a single precision spemlib just for the grid package. + + sepeli allows you to make a grid with any value of L, M as long + as both are larger than 5. sepeli also requires 64 bits of + precision for non-trivial grids. + +5. tolat now has a flag for using maptri instead of mapinv, if you + have NCAR graphics version 3.2. maptri is *much* more reliable + and flexible than mapinv. + +6. found and fixed a bug in grid.F when L!=M and when using the + Lsmall!=L option. This should make it easier to generate grids + that are too fine for rect to handle, but not too fine for the + elliptic solver to handle. + +Not yet all there: +7. xpots stuff in grid. Actually, it works but not as nicely as in + Rich Signell's version. This option allows you to control the + grid spacing along two boundaries more easily, using the xpots + X11 program. xpots.tar is in the pub/util directory on ahab. + Example: + + (1) #define XPOTS1 and XPOTS4 to control the grid spacing on sides 1 + and 4. + + (2) run xpots with appropriate arguments. If L=129,M=97 then you + need "-N 257" and "-N 193". + + xpots -F fort.41 -N 193 & # writes fort.41 for side 1 + xpots -F fort.44 -N 257 & # writes fort.44 for side 4 + + (3) set the sliders the way you want. You will just have to try + this and iterate. Click on the "write" button. + + (4) make and run grid. Look at the plots and go back to step (3) + if not satisfied. + + Note: my xpots files are read before rect is called. Rich has + his set up to call rect ITMAX times and then iterate on a loop + containing the xpots read, use the values, and plot. I'll fix + it next time I need a complex grid. + + +8. examples. + +9. a manual. + + +New in version 3.0: + +1. There are now a number of include files, into which we have + isolated most of the variables that a user would be likely to + modify. + +2. We have broken out subroutines which are shared by more than one of + these programs into separate files, so that they only have to be + maintained in one place. + +3. To organize all the include files and shared subroutines, a + Makefile is provided. If you are running on a non-Unix system you + are on your own. + +4. There is a bathymetry dataset in IEEE integer*2 format which can be + read by the bathers program on at least a Sun and an Iris. The + bathymetry file is 18662400 bytes. + +5. bathsoap and sphere now produce color (colour) contour plots if so + desired. + +6. There are now example files for several grids, from which you + should be able to create the grids and the SPEM files (possibly + without bathymetry). Each example has its files in a subdirectory + of this one. Just copy the files to this directory, edit the + Makefile for your system, and run 'make'. The examples are: + + a. The original California coast lat, lon file with a conformal + conic projection. The stereographic inversion in tolat is so + nasty that only the bold should try it. If you need a + stereographic projection, the USGS has a map projection package + which you should look into. A manual for this package is + available from: + + Gerry Evenden + U.S. Geological Survey + Quissett Campus + Woods Hole, MA 02543 + + gctp: available via anonymous ftp + ftp to nmdpow9.er.usgs.gov (128.128.19.24) + cd pub/software/current_software/gctp + + + b. A Tasman sea grid with a Mercator projection. + + c. A rectangular grid used for a periodic channel run. No + projections are used. + Use grid, sphere, and stretch. + + d. A North Atlantic basin grid. The classic example of why this + gridding scheme is not flexible enough. We ran this with a flat + bottom. + + e. A Northeast Atlantic grid. + +7. sphere will now optionally recalculate the pm and pn arrays for a + spherical geometry. This is only valid if you are using a conformal + projection such as Mercator, conformal conic, or stereographic. + +Future improvements: + +1. Bathymetry smoothing in matlab. diff --git a/Obsolete/README.Compilers b/Obsolete/README.Compilers new file mode 100644 index 0000000..9f972c1 --- /dev/null +++ b/Obsolete/README.Compilers @@ -0,0 +1,21 @@ +Sun: + +The grid program uses complex arithmetic and is quite a challenge +for some compilers. I have been having trouble with the current +version of the Sun Solaris f77 - the grid program reports a "tracking +error" for perfectly good inputs. I have been building grids under +SunOS instead, but have also built a grid on Solaris using Sun's +f90. Gnu Fortran (g77) also works. + +Dec: + +One user reported that she needed to "limit stacksize 32m" before +running bathtub. Otherwise, she got "signal Segmentation fault" when +running the very first executable line. + +Gnu: + +Note that with g77, you need to build the netCDF libraries with g77 in +order to link with them. Be sure to use the -Df2cFortran option in +CFLAGS when compiling the netCDF library. If you #define PLOTS, you +also need to build the NCAR graphics libraries with g77. diff --git a/Obsolete/automask b/Obsolete/automask new file mode 100755 index 0000000..c281b0f --- /dev/null +++ b/Obsolete/automask @@ -0,0 +1,111 @@ +#!/work/kate/bin/perl -w +# +# Tool for creating a ROMS landmask from a coastline file. +# For now, we want to work in the longitude range 0 <= lon < 360. + +use strict; +use PDL; +use PDL::NetCDF; + +#my $grid_file = ">tiny.nc"; +my $grid_file = ">PWS_grid_2.nc"; +my $coast_file = $ENV{'XCOASTDATA'}; + +# Read the lat, lon values +my $ncobj = PDL::NetCDF->new($grid_file); +my $grid_lat = $ncobj->get('lat_rho'); +my $grid_lon = $ncobj->get('lon_rho'); +# check longitude range +$grid_lon += 360*($grid_lon < 0); + +my $mask_rho = ones($grid_lat); +my $dims = pdl $grid_lat->dims; +my $imax = $dims->at(0); +my $jmax = $dims->at(1); + +print "coastline = $coast_file\n"; + +# Read the coastline, one chunk at a time +my (@latc, @lonc); + +my $count; +open (COAST, $coast_file); +while () { + my ($lat, $lon) = split(); + if ($lat <= 90.) { + if ($lon < 0) { $lon += 360.; } + push(@latc, $lat); + push(@lonc, $lon); + } else { +# don't want first and last point to be the same + if ($latc[0] == $latc[$#latc] && $lonc[0] == $lonc[$#lonc]) { + $#lonc--; + $#latc--; + } + my ($i, $j); + for ($i = 0; $i < $imax; $i++) { + for ($j = 0; $j < $jmax; $j++) { + my $glat = $grid_lat->at($i,$j); + my $glon = $grid_lon->at($i,$j); + my $in = inside($glon, $glat, \@lonc, \@latc); + if ($in) { + my $mask = $mask_rho->slice("$i,$j"); + $mask .= 0; + } + } + } + $#latc = -1; + $#lonc = -1; + $count++; + print "Done with chunk $count\n"; + } +} + +$ncobj->put('mask_rho', ['eta_rho', 'xi_rho'], $mask_rho); +my $mask_u = $mask_rho->slice("0:-2,:") * $mask_rho->slice("1:-1,:"); +my $mask_v = $mask_rho->slice(":,0:-2") * $mask_rho->slice(":,1:-1"); +my $mask_psi = $mask_rho->slice("0:-2,0:-2") + * $mask_rho->slice("0:-2,1:-1") + * $mask_rho->slice("1:-1,0:-2") + * $mask_rho->slice("1:-1,1:-1"); +$ncobj->put('mask_u', ['eta_u', 'xi_u'], $mask_u); +$ncobj->put('mask_v', ['eta_v', 'xi_v'], $mask_v); +$ncobj->put('mask_psi', ['eta_psi', 'xi_psi'], $mask_psi); + +# end of main + +sub inside { + my ($x, $y, $xr, $yr) = @_; + my @xb = @$xr; + my @yb = @$yr; + if ($#xb < 2) { return 0;} + + my $nc = 0; + my @yc; + for (my $k=0; $k <= $#xb; $k++) { + my $kp1 = int($k + 1 - ($k)*int(($k)/$#xb)); + my $kw = $k; + next if ($xb[$k] == $xb[$kp1]); + if ($xb[$k] > $xb[$kp1]) { + $kw = $kp1; + } + my $ke = $k + $kp1 - $kw; + next if ($x > $xb[$ke]); + next if ($x < $xb[$ke] and $x <= $xb[$kw]); + my $slope = ($yb[$ke] - $yb[$kw]) / ($xb[$ke] - $xb[$kw]); + $yc[$nc] = $yb[$kw] + ($x - $xb[$kw])*$slope; + $nc++; + } + +# count the number of times that the boundary cut sthe meridian +# through ($x,$y) south of ($x,$y). An odd count indicates the point +# is inside, even indicates outside. + + my $ind = 0; + if ($nc > 0) { + for (my $k=0; $k < $nc; $k++) { + if ($yc[$k] < $y) { $ind = (1-$ind); } + } + } + $ind; +} diff --git a/Obsolete/bloc.F b/Obsolete/bloc.F new file mode 100644 index 0000000..99ddd7c --- /dev/null +++ b/Obsolete/bloc.F @@ -0,0 +1,80 @@ +#include "griddefs.h" + program bloc_data +c +#include "bathy.h" +#include "ncgrid.h" + integer incri, incrj, ibloc, jbloc + parameter(incri=22,incrj=33) + parameter(ibloc=4,jbloc=2) + BIGREAL tmp(0:L,0:M) + integer jmin, jmax, imin, imax, nblocj + integer i, j, nbloc + +#include "gridid.h" + +c Lecture de la bathymetrie + call get_h + +c Division par 10 de la bathymetrie + do i=0,L + do j=0,M + tmp(i,j) = h(i,j)/10. + enddo + enddo + +c Ecriture des blocs + open(15,file='Bloc_data.h100m.br',form='formatted') +cm open(15,file='Bloc_mask.etopo5',form='formatted') + jmin=0 + jmax=incrj + nblocj=1 + do while(jmin .lt. jbloc*incrj) + nbloc=nblocj + imin=0 + imax=incri + do while (imin .lt. ibloc*incri) + write(15,99)nbloc + write(15,100)imin,imax + write(15,101)jmin,jmax + write(15,102)(i,i=imin,imax) + write(15,*)' ' + do j = jmax, jmin,-1 + write(15,990) j,(tmp(i,j),i=imin,imax) + enddo + write(15,*)' ' + imin=imax + imax=imax+incri + nbloc=nbloc+1 + if (imax.gt.L) imax=L + enddo + jmin=jmax + jmax=jmax+incrj + nblocj=nbloc + if (jmax.gt.M) jmax=M + enddo + close(15) +99 format('Donnees du bloc No',i3) +100 format('imin=',i3,x,'imax=',i3) +101 format('jmin=',i3,x,'jmax=',i3) +102 format(2x,31(x,i4)) +990 format(x,i3,31(x,f4.0)) +cm --------------------------- +c + call crash(' ', 0) + end + +c ******************************************************************** + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + return + end diff --git a/Obsolete/combbathy.F b/Obsolete/combbathy.F new file mode 100644 index 0000000..7e04d60 --- /dev/null +++ b/Obsolete/combbathy.F @@ -0,0 +1,145 @@ +#include "griddefs.h" + program combl_bathy + +c Ce programme permet de combler : +c - le Gulf du mexique a depthgm +c - la mer des antilles a depthgm +c - le pacifique a depthmin + +#include "bathy.h" +#include "ncgrid.h" + real depthmin, depthgm + parameter (depthmin=200.,depthgm=3000.) +!* Mediterranee + integer imedmin1, imedmax1, jmedmin1, jmedmax1 + parameter (imedmin1=183,imedmax1=L,jmedmin1=48,jmedmax1=70) +!* Pacifique + integer ipmin, ipmax, jpmin, jpmax + parameter (ipmin=0,ipmax=41,jpmin=0,jpmax=78) +!* Gulf du mexique + integer igmmin, igmmax, jgmmin, jgmmax + parameter (igmmin=0,igmmax=35,jgmmin=28,jgmmax=47) +!* Mer des Antilles 1 + integer imamin1, imamax1, jmamin1, jmamax1 + parameter (imamin1=16,imamax1=55,jmamin1=8,jmamax1=27) +!* Mer des Antilles 2 + integer imamin2, imamax2, jmamin2, jmamax2 + parameter (imamin2=56,imamax2=69,jmamin2=8,jmamax2=23) + integer i, j, imax0, jmax0, imaxj + logical pacific_auto + +#include "gridid.h" + + pacific_auto=.true. + +c Lecture des donnees. + call get_h + +c GULF DU MEXIQUE a mettre a 3000 m maxi +c lat : 20N ---> 30N +c lon : 99.8W ---> 80W + do i=igmmin,igmmax + do j=jgmmin,jgmmax + if (h(i,j).gt.depthgm) h(i,j)=depthgm + enddo + enddo + +c MER DES ANTILLES a mettre a 3000 m maxi +c premier cadran +c lat : 10N ---> 20N +c lon : 90W ---> 70W + do i=imamin1,imamax1 + do j=jmamin1,jmamax1 + if (h(i,j).gt.depthgm) h(i,j)=depthgm + enddo + enddo +c deuxieme cadran +c lat : 10N ---> 18N +c lon : 70W ---> 63W + do i=imamin2,imamax2 + do j=jmamin2,jmamax2 + if (h(i,j).gt.depthgm) h(i,j)=depthgm + enddo + enddo + +c DOMAINE DE LA MEDITERRANNEE a mettre a depthmin +c premier cadran +c lat : 30N ---> 40N +c lon : 6W ---> 0W + do i=imedmin1,imedmax1 + do j=jmedmin1,jmedmax1 + if (h(i,j).gt.depthmin) h(i,j)=depthmin + enddo + enddo +c deuxieme cadran +c lat : 30N ---> 45N +c lon : 0W ---> 17.8W +! do i=imedmin2,imedmax2 +! do j=jmedmin2,jmedmax2 +! if (h(i,j).gt.depthmin) h(i,j)=depthmin +! enddo +! enddo + +c DOMAINE DU PACIFIQUE a mettre a 200 m (ou 100m) +c lat : 17.7S ---> 8N +c lon : 99.8W ---> 60W + if (pacific_auto.eq..false.) then + print*,'pacific_auto est faux ' + do i=ipmin,ipmax + do j=jpmin,jpmax + h(i,j)=depthmin + enddo + enddo + + else + + do j=0,M + if(h(0,j).le.depthmin) then + jmax0=j + goto 11 + endif + enddo + 11 print *,'jmax0=',jmax0 + do i=0,L + if(h(i,0).le.depthmin) then + imax0=i + goto 13 + endif + enddo + 13 print *,'imax0=',imax0 + do j=0,jmax0 + do i=0,imax0 + if (h(i,j).le.depthmin) then + imaxj = i +c print*,'imaxj = ',imaxj + goto 22 + endif + enddo + 22 do i=0,imaxj + h(i,j)=depthmin + enddo + enddo + + endif ! pacific_auto + +c Sortie de la bathymetrie comblee + call wrt_h + + call crash(' ', 0) + end + +c ******************************************************************** + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + return + end diff --git a/Obsolete/lectgrid.F b/Obsolete/lectgrid.F new file mode 100644 index 0000000..a48a0d2 --- /dev/null +++ b/Obsolete/lectgrid.F @@ -0,0 +1,51 @@ + program lectgrid +#include "griddefs.h" +#include "bathy.h" +#include "ncgrid.h" + integer i, j + +#include "gridid.h" + + call get_lat + + print*,'rholat(',L,',',M,')=',lat_rho(L,M) + print*,'rholon(0,0)=',lon_rho(0,0) + print*,'psilat(',L,',',M,')=',lat_psi(L,M) + print*,'psilon(1,1)=',lon_psi(1,1) + + open(1,file='rlon.ce',form='formatted') + write(1,110) + do i=0,L + write(1,210) i,lon_rho(i,M) + enddo + do j=0,M + write(1,211) j,lat_rho(L,j) + enddo + close(1) + +100 format('Latitude (degre) des points T : " rholat(j) j=1,353"') +110 format('Longitude (degre) des points T : "rholon(i) i=0,353"') +200 format(7(x,f10.5)) +210 format('i=',i3,2x,'rholon=',f11.4) +211 format('i=',i3,2x,'rholat=',f11.4) +220 continue + + call crash(' ', 0) + end + +c ****************************************************************** + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + return + end + diff --git a/Obsolete/mapbath.F b/Obsolete/mapbath.F new file mode 100644 index 0000000..8854767 --- /dev/null +++ b/Obsolete/mapbath.F @@ -0,0 +1,444 @@ + program mapbath +! ******************************************************************* +! From Ichiro Fukumori, edited by Kate Hedstrom to change +! input file +! +! Map out bathymetry using NCAR contour routine STLINE-DRLINE +! This is accomplished by replacing NCAR's FRSTD, VECTD, LASTD +! to user supplied routines that just print out latitude, +! longitude data to file. Note also that user supplied FX, FY +! functions that map data location to coordinate is needed. +! Output is written to file 59. (58 is scratch file) +! Format is number of points followed by that number of lat, +! long pairs. +! +! Bathymetry data is subset of etopo5 as done by bathers +! +! ******************************************************************* + +#include "griddefs.h" +#include "bath2.h" + +! Bathymetry data + integer*2 bathy(ILON,ILAT) + real bot(ILON,ILAT) + +! Common for functions fx, fy + integer i, j + real depth + +!--------------------------------------------------------------------- + + call extract(lon,lat,bathy,ILON,ILAT) + +! parameters describing grid of bot + xlonmi = lon(1) + xlonma = lon(ILON) + ylatmi = lat(1) + ylatma = lat(ILAT) + + do j=1,ILAT + do i=1,ILON + bot(i,j) = bathy(i,j) + enddo + enddo + + print *,'Print depth of contour (positive is above sea level): ' + read *,depth +! depth = -depth + +! Start NCAR graphics + call opngks + +! Contour + call stline (bot,ILON,ILON,ILAT,depth) + +! End NCAR + call clsgks + +#if NO_EXIT + stop +#else + call exit(0) +#endif /* NO_EXIT */ + 210 call crash('read or write error while outputing solution', 0) + 9999 call crash(' Error reading in topography file ', 1) + end + +!---------------------------------------------------------------------- + + subroutine crash(icrash,ierr) + character*(*) icrash + integer ierr + + print *,icrash + if (ierr .gt. 1) print *,'ierr = ',ierr +#if NO_EXIT + stop +#else + call exit(ierr) +#endif /* NO_EXIT */ + return + end + +!---------------------------------------------------------------------- + + real function fx(x,y) + real x, y +! +#include "bath2.h" + real xlon, ylat + integer i, j +! + if (evenflag) then + xlon=xlonmi+(xlonma-xlonmi)*(x-1.)/(float(ILON)-1.) + ylat=ylatmi+(ylatma-ylatmi)*(y-1.)/(float(ILAT)-1.) + else + i = x + j = y + if (i .eq. ILON) then + xlon = lon(ILON) + else + xlon = lon(i) + (lon(i+1)-lon(i))*(x-i) + ylat = lat(j) + (lat(j+1)-lat(j))*(y-j) + endif + endif + fx=xlon + return + end +!---------------------------------------------------------------------- + real function fy(x,y) + real x, y +! +#include "bath2.h" + real xlon, ylat + integer i, j +! + if (evenflag) then + xlon=xlonmi+(xlonma-xlonmi)*(x-1.)/(float(ILON)-1.) + ylat=ylatmi+(ylatma-ylatmi)*(y-1.)/(float(ILAT)-1.) + else + i = x + j = y + if (j .eq. ILAT) then + ylat = lat(ILAT) + else + xlon = lon(i) + (lon(i+1)-lon(i))*(x-i) + ylat = lat(j) + (lat(j+1)-lat(j))*(y-j) + endif + endif + fy=ylat + return + end +!---------------------------------------------------------------------- + subroutine frstd (x,y) + real x, y + write (58,5901) y,x + 5901 format (2f9.3) + return + end + subroutine vectd (x,y) + real x, y + write (58,5901) y,x + 5901 format (2f9.3) + return + end + subroutine lastd + write (58,5903) + 5903 format (' 999.99 999.99') + return + end +!---------------------------------------------------------------------- + subroutine drline (Z,L,MM,NN) + save + integer L, MM, NN + real Z(L,NN) +! +! THIS ROUTINE TRACES A CONTOUR LINE WHEN GIVEN THE BEGINNING BY STLINE. +! TRANSFORMATIONS CAN BE ADDED BY DELETING THE STATEMENT FUNCTIONS FOR +! FX AND FY IN DRLINE AND MINMAX AND ADDING EXTERNAL FUNCTIONS. +! X=1. AT Z(1,J), X=FLOAT(M) AT Z(M,J). X TAKES ON NON-INTEGER VALUES. +! Y=1. AT Z(I,1), Y=FLOAT(N) AT Z(I,N). Y TAKES ON NON-INTEGER VALUES. +! + integer IX, IY, IDX, IDY, IS, ISS, NP, INX(8), INY(8), & + & IR(50000), NR + real CV + common /conre2/ IX ,IY ,IDX ,IDY , & + & IS ,ISS ,NP ,CV , & + & INX ,INY ,IR ,NR + integer IOFFP + real SPVAL + common /conre1/ IOFFP ,SPVAL + integer IXBITS ,IYBITS + common /conre3/ IXBITS ,IYBITS + logical IPEN ,IPENO + integer IXX, IYY, ishift, M, N, JUMP1, JUMP2, IX0, IY0, & + & IS0, IX2, IY2, ISUB, ISBIG, IX3, IY3, IX4, IY4, & + & IXYPAK + real P1, P2, X, Y, C, fx, fy, XOLD, YOLD +! +! +! STATEMENT FUNCTIONS TO BE REPLACED IF NON-IDENTITY +! TRANSFORMATIONS ARE DESIRED. +! +! fX(X,Y) = X +! fy(X,Y) = Y +! + IXYPAK(IXX,IYY) = ishift(IXX,IYBITS)+IYY + C(P1,P2) = (P1-CV)/(P1-P2) +! + DATA IPEN,IPENO/.TRUE.,.TRUE./ +! + M = MM + N = NN + if (IOFFP .EQ. 0) GO TO 101 + assign 110 to JUMP1 + assign 115 to JUMP2 + go to 102 + 101 assign 112 to JUMP1 + assign 117 to JUMP2 + 102 IX0 = IX + IY0 = IY + IS0 = IS + if (IOFFP .eq. 0) go to 103 + IX2 = IX+INX(IS) + IY2 = IY+INY(IS) + IPEN = Z(IX,IY).ne.SPVAL .and. Z(IX2,IY2).ne.SPVAL + IPENO = IPEN + 103 if (IDX .eq. 0) go to 104 + Y = IY + ISUB = IX+IDX + X = C(Z(IX,IY),Z(ISUB,IY))*float(IDX)+float(IX) + GO TO 105 + 104 X = IX + ISUB = IY+IDY + Y = C(Z(IX,IY),Z(IX,ISUB))*float(IDY)+float(IY) + 105 call frstd (fx(X,Y),fy(X,Y)) + 106 IS = IS+1 + if (IS .gt. 8) IS = IS-8 + IDX = INX(IS) + IDY = INY(IS) + IX2 = IX+IDX + IY2 = IY+IDY + if (ISS .ne. 0) go to 107 + if (IX2.gt.M .or. IY2.gt.N .or. IX2.lt.1 .or. IY2.lt.1) go to 120 + 107 if (CV-Z(IX2,IY2)) 108,108,109 + 108 IS = IS+4 + IX = IX2 + IY = IY2 + go to 106 + 109 if (IS/2*2 .eq. IS) go to 106 + go to JUMP1,(110,112) + 110 ISBIG = IS+(8-IS)/6*8 + IX3 = IX+INX(ISBIG-1) + IY3 = IY+INY(ISBIG-1) + IX4 = IX+INX(ISBIG-2) + IY4 = IY+INY(ISBIG-2) + IPENO = IPEN + if (ISS .ne. 0) go to 111 + if (IX3.gt.M .or. IY3.gt.N .or. IX3.LT.1 .or. IY3.LT.1) go to 120 + if (IX4.gt.M .or. IY4.gt.N .or. IX4.LT.1 .or. IY4.LT.1) go to 120 + 111 IPEN = Z(IX,IY).ne.SPVAL .and. Z(IX2,IY2).ne.SPVAL .and. & + & Z(IX3,IY3).ne.SPVAL .and. Z(IX4,IY4).ne.SPVAL + 112 if (IDX .eq. 0) go to 113 + Y = IY + ISUB = IX+IDX + X = C(Z(IX,IY),Z(ISUB,IY))*float(IDX)+float(IX) + go to 114 + 113 X = IX + ISUB = IY+IDY + Y = C(Z(IX,IY),Z(IX,ISUB))*float(IDY)+float(IY) + 114 go to JUMP2,(115,117) + 115 if (.not.IPEN) go to 118 + if (IPENO) go to 116 +! +! END OF LINE SEGMENT +! + call lastd + call frstd (fx(XOLD,YOLD),fy(XOLD,YOLD)) +! +! CONTINUE LINE SEGMENT +! + 116 continue + 117 call vectd (fx(X,Y),fy(X,Y)) + 118 XOLD = X + YOLD = Y + if (IS .ne. 1) go to 119 + NP = NP+1 + if (NP .gt. NR) go to 120 + IR(NP) = IXYPAK(IX,IY) + 119 if (ISS .eq. 0) go to 106 + if (IX.ne.IX0 .or. IY.ne.IY0 .or. IS.ne.IS0) go to 106 +! +! END OF LINE +! + 120 call lastd + return + end +!---------------------------------------------------------------------- + subroutine stline (Z,LL,MM,NN,CONV) + save + integer LL, MM, NN + real Z(LL,NN), CONV +! +! THIS ROUTINE FINDS THE BEGINNINGS OF ALL CONTOUR LINES AT LEVEL CONV. +! FIRST THE EDGES ARE SEARCHED FOR LINES INTERSECTING THE EDGE (OPEN +! LINES) THEN THE INTERIOR IS SEARCHED FOR LINES WHICH DO NOT INTERSECT +! THE EDGE (CLOSED LINES). BEGINNINGS ARE STORED IN IR TO PREVENT RE- +! TRACING OF LINES. IF IR IS FILLED, THE SEARCH IS STOPPED FOR THIS +! CONV. +! + integer IX, IY, IDX, IDY, IS, ISS, NP, INX(8), INY(8), & + & IR(50000), NR + real CV + common /conre2/ IX ,IY ,IDX ,IDY , & + & IS ,ISS ,NP ,CV , & + & INX ,INY ,IR ,NR + integer IXBITS ,IYBITS + common /conre3/ IXBITS ,IYBITS + integer IXX, IYY, I, J, K, L, M, N, IP1, JP1, IXY, & + & IXYPAK, LTYPE, ishift, IUNIT, i1mach + real VXA, VXB, VYA, VYB, XA, XB, YA, YB, X, Y +! +! +! +! +! +! + IXYPAK(IXX,IYY) = ishift(IXX,IYBITS)+IYY +! + L = LL + M = MM + N = NN + CV = CONV + NP = 0 + ISS = 0 + do 102 IP1=2,M + I = IP1-1 + if (Z(I,1).ge.CV .or. Z(IP1,1).lt.CV) go to 101 + IX = IP1 + IY = 1 + IDX = -1 + IDY = 0 + IS = 1 + call drline (Z,L,M,N) + 101 if (Z(IP1,N).ge.CV .or. Z(I,N).lt.CV) go to 102 + IX = I + IY = N + IDX = 1 + IDY = 0 + IS = 5 + call drline (Z,L,M,N) + 102 continue + do 104 JP1=2,N + J = JP1-1 + if (Z(M,J).ge.CV .or. Z(M,JP1).lt.CV) go to 103 + IX = M + IY = JP1 + IDX = 0 + IDY = -1 + IS = 7 + call drline (Z,L,M,N) + 103 if (Z(1,JP1).ge.CV .or. Z(1,J).lt.CV) go to 104 + IX = 1 + IY = J + IDX = 0 + IDY = 1 + IS = 3 + call drline (Z,L,M,N) + 104 continue + ISS = 1 + do 108 JP1=3,N + J = JP1-1 + do 107 IP1=2,M + I = IP1-1 + if (Z(I,J).ge.CV .or. Z(IP1,J).lt.CV) go to 107 + IXY = IXYPAK(IP1,J) + if (NP .eq. 0) go to 106 + do 105 K=1,NP + if (IR(K) .eq. IXY) go to 107 + 105 continue + 106 NP = NP+1 + if (NP .gt. NR) then +! +! THIS PRINTS AN ERROR MESSAGE IF THE LOCAL ARRAY IR IN SUBROUTINE +! STLINE HAS AN OVERFLOW +! THIS MESSAGE IS WRITTEN BOTH ON THE FRAME AND ON THE STANDARD ERROR +! UNIT +! + IUNIT = i1mach(4) + write(IUNIT,2000) + 2000 format( & + &' WARNING FROM ROUTINE STLINE IN CONREC--WORK ARRAY OVERFLOW') + call getset(VXA,VXB,VYA,VYB,XA,XB,YA,YB,LTYPE) + Y = (YB - YA) / 2. + X = (XB - XA) / 2. + call pwrit(X,Y, & + &'**WARNING--PICTURE INCOMPLETE**', & + & 31,3,0,0) + Y = Y * .7 + call pwrit(X,Y, & + &'WORK ARRAY OVERFLOW IN STLINE', & + & 29,3,0,0) + return + endif + IR(NP) = IXY + IX = IP1 + IY = J + IDX = -1 + IDY = 0 + IS = 1 + call drline (Z,L,M,N) + 107 continue + 108 continue + return + end + blockdata conbd + integer IOFFP + real SPVAL + common /conre1/ IOFFP ,SPVAL + integer IX, IY, IDX, IDY, IS, ISS, NP, INX(8), INY(8), & + & IR(50000), NR + real CV + common /conre2/ IX ,IY ,IDX ,IDY , & + & IS ,ISS ,NP ,CV , & + & INX ,INY ,IR ,NR + integer ISIZEL ,ISIZEM ,ISIZEP ,NREP , & + & NCRT ,ILAB ,NULBLL ,IOFFD , & + & IOFFM ,ISOLID ,NLA ,NLM + real EXT, XLT, YBT, SIDE + common /conre4/ ISIZEL ,ISIZEM ,ISIZEP ,NREP , & + & NCRT ,ILAB ,NULBLL ,IOFFD , & + & EXT ,IOFFM ,ISOLID ,NLA , & + & NLM ,XLT ,YBT ,SIDE + integer IRECMJ ,IRECMN ,IRECTX + common /RECINT/ IRECMJ ,IRECMN ,IRECTX + data IOFFP,SPVAL/1,99999./ + data ISIZEL,ISIZEM,ISIZEP,NLA,NLM,XLT,YBT,SIDE,ISOLID,NREP,NCRT/ & + & 0 , 0, 0, 16, 40,.05,.05, .9, 1023, 6, 4 / + data EXT,IOFFD,NULBLL,IOFFM,ILAB/.25,0,2,1,0/ + data INX(1),INX(2),INX(3),INX(4),INX(5),INX(6),INX(7),INX(8)/ & + & -1 , -1 , 0 , 1 , 1 , 1 , 0 , -1 / + data INY(1),INY(2),INY(3),INY(4),INY(5),INY(6),INY(7),INY(8)/ & + & 0 , 1 , 1 , 1 , 0 , -1 , -1 , -1 / + data NR/50000/ + data IRECMJ,IRECMN,IRECTX/ 1 , 1 , 1/ +! +! REVISION HISTORY--- +! +! JANUARY 1980 ADDED REVISION HISTORY AND CHANGED LIBRARY NAME +! FROM CRAYLIB TO PORTLIB FOR MOVE TO PORTLIB +! +! MAY 1980 ARRAYS IWORK AND ENCSCR, PREVIOUSLY TOO SHORT FOR +! SHORT-WORD-LENGTH MACHINES, LENGTHENED. SOME +! DOCUMENTATION CLARIFIED AND CORRECTED. +! +! JUNE 1984 CONVERTED TO FORTRAN 77 AND TO GKS +! +! JUNE 1985 ERROR HANDLING LINES ADDED; IF OVERFLOW HAPPENS TO +! WORK ARRAY IN STLINE, A WARNING MESSAGE IS WRITTEN +! BOTH ON PLOT FRAME AND ON STANDARD ERROR MESSAGE. +!------------------------------------------------------------------- +! + end + diff --git a/Obsolete/maptst.F b/Obsolete/maptst.F new file mode 100644 index 0000000..a65eb51 --- /dev/null +++ b/Obsolete/maptst.F @@ -0,0 +1,349 @@ + program maptst + +c *** In gridpak version 5.4 ***** October 18, 2001 **************** +c Kate Hedstrom (kate@arsc.edu) +c John Wilkin (wilkin@imcs.rutgers.edu) +c ****************************************************************** +c +c This is a program to convert from the coordinate system in coast.f +c to back to latitude and longitude. If you change the parameters +c in coast.f you have to change them here as well, including HINIT +c and DH. This program writes out the four lat,long grids on unit 62. +c ****************************************************************** + +#include "proj.h" +#include "gridparam.h" + parameter ( REarth = 6.3708e6 ) + character*40 ident + character*80 gridid + + data DTOR / .017453292519943 / + data RTOD / 57.2957795130823 / + + call opngks + +c Initialize the mapping variables + + call pcseti('QUALITY',1) +#include "gridid.h" + write(ident,100) gridid(1:40) + 100 format(40a) + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(0.5,0.98,ident,.012,0.,0.) + call mapsti('GR',JGRD) + call mapstc('OU','PS') + call maproj(JPRJ,PLAT,PLONG,ROTA) + call mapset(JLTS,P1,P2,P3,P4) + call mapdrw + call maptrn(PLAT+.5,PLONG,U2,V2) + call maptrn(PLAT-.5,PLONG,U1,V1) + udeg = sqrt((U2-U1)*(U2-U1) + (V2-V1)*(V2-V1)) + +c Calculate the lat,long of the psi points + + hlat = HINIT + do i=1,100 + print *,'Lat: ' + read *,rmlat + if (rmlat .gt. 90) goto 120 + print *,'Long: ' + read *,rmlon + call maptrn(rmlat,rmlon,u,v) + print *, 'u,v ',u,v + call mapinv(u,v,psilat,psilon,hlat-DH,hlat+DH) + print *, 'lat, long ', psilat, psilon + enddo + 120 continue + call frame + call clsgks + + call exit(0) + 250 call crash('read or write error while outputing solution', 0) + call exit(1) + end + +C---------------------------------------------------------------------- + + subroutine crash(icrash,ierr) + character*(*) icrash + print *,icrash + if (ierr .ne. 0) print *,'ierr = ',ierr + call exit(1) + return + end + +C---------------------------------------------------------------------- + + subroutine fx(A,f,dfdx) + common /MAPKH1/ r + save /MAPKH1/ + + if (A .LE. .0001) then + f = sin(A)/2. - r + dfdx = cos(A)/2. + else + f = (1-cos(A))/sin(A) - r + dfdx = (1-cos(A))/(sin(A)*sin(A)) + end if + return + end + +C---------------------------------------------------------------------- + + subroutine funcd1(lat,f,dfdx) + real lat + COMMON /MAPCM1/ IPRJ,SINO,COSO,SINR,COSR,PHOC + SAVE /MAPCM1/ + common /MAPKH2/ A,B + save /MAPKH2/ + + f = sin(lat)*coso - sqrt(1-(sin(A)*sin(A)*sin(B)*sin(B) + & /cos(lat)/cos(lat)))*cos(lat)*sino - cos(B)*sin(A) + dfdx = cos(lat)*coso + sqrt(1-(sin(A)*sin(A)*sin(B)*sin(B) + & /cos(lat)/cos(lat)))*sin(lat)*sino + & + sin(lat)*sino/sqrt(1-(sin(A)*sin(A)*sin(B)*sin(B) + & /cos(lat)/cos(lat))) *(sin(A)*sin(A)*sin(B)*sin(B) + & /cos(lat)/cos(lat)) + return + end + +C---------------------------------------------------------------------- + + subroutine funcd2(lat,f,dfdx) + real lat + COMMON /MAPCM1/ IPRJ,SINO,COSO,SINR,COSR,PHOC + SAVE /MAPCM1/ + common /MAPKH2/ A,B + save /MAPKH2/ + + f = sin(lat)*sino + sqrt(1-(sin(A)*sin(A)*sin(B)*sin(B) + & /cos(lat)/cos(lat)))*cos(lat)*coso - cos(A) + dfdx = cos(lat)*sino - sqrt(1-(sin(A)*sin(A)*sin(B)*sin(B) + & /cos(lat)/cos(lat)))*sin(lat)*coso + & - sin(lat)*coso/sqrt(1-(sin(A)*sin(A)*sin(B)*sin(B) + & /cos(lat)/cos(lat))) *(sin(A)*sin(A)*sin(B)*sin(B) + & /cos(lat)/cos(lat)) + return + end + +C---------------------------------------------------------------------- + + subroutine gx(A,f,dfdx) + common /MAPKH1/ r + save /MAPKH1/ + + f = (1+cos(A))/sin(A) - r + dfdx = (1+cos(A))/(sin(A)*sin(A)) + return + end + +C---------------------------------------------------------------------- + + subroutine mapinv (u,v,rlat,rlon,MINLAT,MAXLAT) + real MINLAT,MAXLAT + +c Inverse of MAPTRN. Only works for some map projections - +c IPRJ = 1,2,4,5,6,11. +c IPRJ corresponds to the projections as follows: + +C IPRJ PROJECTION TYPE +c 1 Lambert conformal conic conic +c 2 Stereographic azimuthal +c 3 Orthographic or Satellite-view +c 4 Lambert equal area +c 5 Gnomonic +c 6 Azimuthal equidistant +c 7 Cylindrical equidistant cylindrical +c 8 Mercator +c 9 Mollweide +c 10 Fast-path cylindrical equidistant +c 11 Fast-path Mercator +c 12 Fast-path Mollweide + +C Declare required common blocks. See MAPBD for descriptions of these +C common blocks and the variables in them. + + parameter (pi=3.1415926536) + common /MAPCM1/ IPRJ,SINO,COSO,SINR,COSR,PHOC + save /MAPCM1/ + common /MAPCMB/ IIER + save /MAPCMB/ + common /MAPCM4/ INTF,JPRJ,PHIA,PHIO,ROTA,ILTS,PLA1,PLA2,PLA3,PLA4, + & PLB1,PLB2,PLB3,PLB4,PLTR,GRID,IDSH,IDOT,LBLF,PRMF, + & ELPF,XLOW,XROW,YBOW,YTOW,IDTL,GRDR,SRCH,ILCW + logical INTF,LBLF,PRMF,ELPF + save /MAPCM4/ + common /MAPKH1/ r + save /MAPKH1/ + common /MAPKH2/ A,B + save /MAPKH2/ + external fx,gx,funcd1,funcd2 + real lat + +C Define required constants. DTOR is pi over 180, DTRH is half of DTOR +C or pi over 360, and TOPI is 2 over pi. + + data DTOR / .017453292519943 / + data DTRH / .008726646259971 / + data RTOD / 57.2957795130823 / + data TOPI / .636619772367581 / + data PIOT / 1.570796327 / + + if (iprj .eq. 11) then +c Fast-path Mercator. + + print *, 'PHOC ', PHOC, PHIO, PHIA + ph = u + PHIO*DTOR + lat = -PIOT + 2*atan(exp(v)) + + else if (iprj .eq. 1) then +c Lambert Conformal Conic + + tlon = atan(-sino*u/v) + r = sqrt(v*v + u*u) + rlon = RTOD*tlon/coso + chi = 2*RTOD*atan(r**(1/coso)) + rlat = (90-chi)/sino +c Clip to PHOC +- 180 degrees + rlon = rlon-sign(180.,rlon+180.)+sign(180.,180-rlon) + PHOC + return + + else +c Azimuthal projections. + +c Find the radius and angle of the point. + + r = sqrt(u*u + v*v) + B = atan2(u,v) - ROTA*DTOR + + if (iprj .eq. 2) then +C Stereographic. + + if (r .lt. .0001) then + A = asin(2.*r) + else + A = rtsafe(fx,.00001,pi-.00001,.00001) + end if + + else if (iprj .eq. 4) then +C Lambert equal area. + + r = sqrt(4/(r*r) - 1) + A = rtsafe(gx,.0001,pi-.00001,.00001) + if (abs(COS(A)+1.).lt.1.e-6) go to 100 + + else if (iprj .eq. 5) then +C Gnomonic. + + A = atan(R) + + else if (iprj .eq. 6) then +C Azimuthal equidistant. + + A=R + + else +C Projection not allowed + goto 110 + end if + +C rlon is a longitude, in degrees, between -180. and +180., +C inclusive, and rlat is a latitude, in degrees. ph and lat are +C phase (lon) and latitude in radians. + +c Look for North Pole. Change if you need both poles (sorry). + +c if ((abs(B) .le. .0001) .and. abs(SINO - cos(A)) .le .0001) then +c lat = 1./TOPI +c ph = 0. +c else + lat = rtsafe(funcd1,MINLAT*DTOR,MAXLAT*DTOR,.00001) + if (lat .eq. 1.e20) then + lat = rtsafe(funcd2,MINLAT*DTOR,MAXLAT*DTOR,.00001) + if (lat .eq. 1.e20) + & call crash('We have a problem in mapinv', 0) + end if + ph = asin(sin(B)*sin(A)/cos(lat)) +c end if + +c End of Spherical projections + end if + + rlat = RTOD*lat + tmp = RTOD*ph +c Clip to PHOC +- 180 degrees + rlon = tmp - sign(180.,tmp+180.) + sign(180.,180.-tmp) + PHOC + + return + +C Projection of point is invisible or undefined. + + 100 rlat = 90. + rlon = 361. + return + +C Error exit. + + 110 if (IIER.ne.0) go to 100 + IIER=16 + call seter (' mapinv - attempt to use non-existent projection', + & IIER,1) + go to 100 + + end + +C---------------------------------------------------------------------- + + FUNCTION RTSAFE(FUNCD,X1,X2,XACC) + PARAMETER (MAXIT=100) + CALL FUNCD(X1,FL,DF) + CALL FUNCD(X2,FH,DF) +c IF (FL*FH .GE. 0.) PAUSE 'root must be bracketed' + IF (FL*FH .GE. 0.) then +c bogus value - flag that there was a problem + rtsafe = 1.e20 + return + end if + IF (FL .LT. 0.) THEN + XL=X1 + XH=X2 + ELSE + XH=X1 + XL=X2 + SWAP=FL + FL=FH + FH=SWAP + ENDIF + RTSAFE=.5*(X1+X2) + DXOLD=ABS(X2-X1) + DX=DXOLD + CALL FUNCD(RTSAFE,F,DF) + DO 100 J=1,MAXIT + IF(((RTSAFE-XH)*DF-F)*((RTSAFE-XL)*DF-F).GE.0. + & .OR. ABS(2.*F).GT.ABS(DXOLD*DF) ) THEN + DXOLD=DX + DX=0.5*(XH-XL) + RTSAFE=XL+DX + IF(XL.EQ.RTSAFE)RETURN + ELSE + DXOLD=DX + DX=F/DF + TEMP=RTSAFE + RTSAFE=RTSAFE-DX + IF(TEMP.EQ.RTSAFE)RETURN + ENDIF + IF(ABS(DX).LT.XACC) RETURN + CALL FUNCD(RTSAFE,F,DF) + IF(F.LT.0.) THEN + XL=RTSAFE + FL=F + ELSE + XH=RTSAFE + FH=F + ENDIF + 100 CONTINUE + PAUSE 'RTSAFE exceeding maximum iterations' + RETURN + END + +C---------------------------------------------------------------------- diff --git a/USwest/bathy.h b/USwest/bathy.h new file mode 100644 index 0000000..94b8024 --- /dev/null +++ b/USwest/bathy.h @@ -0,0 +1,36 @@ +#include "gridparam.h" + integer Lm, Mm, Lp, Mp, L2d + parameter ( Lm=L-1 , Mm=M-1 , Lp=L+1, Mp=M+1 ) + parameter ( L2d=Lp*Mp ) +! lcflag tells which color bar to use, 1 - 3 (so far). If negative +! then black outlines are drawn over the color contour regions. + integer lcflag + parameter ( lcflag=-5 ) + real x_v(0:L+2,0:M+2), y_v(0:L+2,0:M+2) + common /xxyys/ x_v, y_v + BIGREAL xp(L,M), yp(L,M), xr(0:L,0:M), yr(0:L,0:M), & + & xu(L,0:M), yu(L,0:M), xv(0:L,M), yv(0:L,M), & + & xl, el + real xmin, ymin, xmax, ymax + common /grdpts/ xp, yp, xr, yr, xu, yu, xv, yv, xl, el, & + & xmin, ymin, xmax, ymax + BIGREAL f(0:L,0:M), h(0:L,0:M) + common /parm/ f, h + BIGREAL pm(0:L,0:M), pn(0:L,0:M), & + & dndx(0:L,0:M), dmde(0:L,0:M) + common /pmpn/ pm, pn, dndx, dmde + BIGREAL lat_psi(L,M), lon_psi(L,M), & + & lat_rho(0:L,0:M), lon_rho(0:L,0:M), & + & lat_u(L,0:M), lon_u(L,0:M), & + & lat_v(0:L,M), lon_v(0:L,M) + common /latlon/ lat_psi, lon_psi, lat_rho, lon_rho, & + & lat_u, lon_u, lat_v, lon_v + BIGREAL mask_rho(0:L,0:M), mask_u(L,0:M), & + & mask_v(0:L,M), mask_psi(L,M) + common /rmask/ mask_rho, mask_u, mask_v, mask_psi + BIGREAL angle(0:L,0:M) + common /angles/ angle + integer*2 depthmin, depthmax + common /hmins/ depthmin, depthmax + logical spherical + common /logic/ spherical diff --git a/USwest/grid.h b/USwest/grid.h new file mode 100644 index 0000000..bb02a86 --- /dev/null +++ b/USwest/grid.h @@ -0,0 +1,75 @@ +#include "griddefs.h" +#include "bathy.h" + integer ITMAX, IBIG + parameter ( ITMAX=6, IBIG=400 ) +! ITMAX is the number of iterations to perform +! IBIG is the largest number of points to be read in for one +! boundary. +! +! original distribution of x,y points is preserved on boundary kb1 +! and kb2: + integer kb1, kb2 + parameter ( kb1 = 1, kb2 = 2 ) + + integer L2, M2, L2big, M2big, nwrk + integer N, N1, N2, N3, N4 + parameter ( L2=2*(L-1), M2=2*(M-1) ) + parameter ( L2big=2*Lm, M2big=2*Mm ) + parameter ( N1=M2, N2=M2+L2, N3=M2+L2+M2, & + & N4=M2+L2+M2+L2, N=N4 ) + integer KK + parameter ( KK = 9 ) + parameter ( nwrk = 2*(KK-2)*(2**(KK+1)) + KK + 10*M2big + & + & 12*L2big + 27 ) + BIGREAL sxi(0:L2big), seta(0:M2big) + common / xiej / sxi, seta + BIGREAL x1spl(IBIG),x2spl(IBIG),x3spl(IBIG),x4spl(IBIG), & + & y1spl(IBIG),y2spl(IBIG),y3spl(IBIG),y4spl(IBIG), & + & s1spl(IBIG),s2spl(IBIG),s3spl(IBIG),s4spl(IBIG), & + & b1spl(IBIG),b2spl(IBIG),b3spl(IBIG),b4spl(IBIG), & + & c1spl(IBIG),c2spl(IBIG),c3spl(IBIG),c4spl(IBIG) + integer nb1pts,nb2pts,nb3pts,nb4pts + common / bdata/ x1spl, x2spl, x3spl, x4spl, & + & y1spl, y2spl, y3spl, y4spl, & + & s1spl, s2spl, s3spl, s4spl, & + & b1spl, b2spl, b3spl, b4spl, & + & c1spl, c2spl, c3spl, c4spl, & + & nb1pts, nb2pts, nb3pts, nb4pts +! The boundary values are read from stdin for edges which have +! rbnd true. For boundaries which are read in, the grid spacing +! is proportional to distance along the boundary if even? is true. +! Otherwise, it is proportional to the spacing of the supplied +! boundary points. + logical rbnd1, rbnd2, rbnd3, rbnd4, & + & even1, even2, even3, even4 + parameter ( rbnd1=.true., rbnd2=.true., & + & rbnd3=.true., rbnd4=.true., & + & even1=.true., even2=.true., & + & even3=.true., even4=.true. ) + +! The following are used when you need to fit a boundary with +! bumps on opposite sides and need to make intermediate partial +! grids. Set pleft1 or pbot1 to true to print out the boundaries +! of a partial left or bottom grid. Set pleft2 or pbot2 to true +! to print out the new left or bottom boundary. Lmiddle or Mmiddle +! gives the position of the interior boundary for the intermediate +! grid. The boundaries are written out to iout1 or iout2. +! +! Don't forget to adjust the evenx flags, kb1 and kb2 accordingly. + logical pleft1, pleft2, pbot1, pbot2 + integer Lmiddle, Mmiddle, iout1, iout2 + parameter ( pleft1=.false., pleft2=.false., & + & pbot1=.false., pbot2=.false., & + & Lmiddle=49, Mmiddle=25, & + & iout1=13, iout2=14 ) + +! These variables are used for writing out a subset of the psi points +! to be used in generating a nested domain. + logical subset + integer Lwest, Least, Msouth, Mnorth, iout3 + parameter ( subset = .false., Lwest = 144, Least = 272, & + & Msouth = 160, Mnorth = 248, iout3 = 15 ) + +! xpots unit numbers + integer ipot1, ipot2, ipot3, ipot4 + parameter ( ipot1=41, ipot2=42, ipot3=43, ipot4=44 ) diff --git a/USwest/grid.in b/USwest/grid.in new file mode 100644 index 0000000..daa14a4 --- /dev/null +++ b/USwest/grid.in @@ -0,0 +1,50 @@ +8 + -432031.9 -6541430.3 + -432031.9 -6674953.0 + -425184.6 -6890643.3 + -452573.8 -7120028.3 + -438879.2 -7503477.9 + -312203.9 -7880080.1 + -31464.0 -8242987.7 + 372527.4 -8701757.7 +2 + 372527.4 -8701757.7 + 786789.9 -8345697.4 +34 + 786789.9 -8345697.4 + 749129.7 -8290918.9 + 732011.4 -8239564.0 + 721740.4 -8212174.8 + 673809.2 -8171090.9 + 598488.8 -8119736.1 + 547133.9 -8102617.8 + 499202.7 -8082075.8 + 458118.9 -8078652.2 + 375951.1 -7979366.1 + 307478.0 -7862961.8 + 266394.1 -7791065.0 + 218462.9 -7715744.6 + 184226.3 -7691779.0 + 163684.4 -7647271.4 + 139718.8 -7626729.5 + 115753.2 -7599340.3 + 108905.9 -7575374.7 + 102058.6 -7547985.4 + 105482.2 -7527443.5 + 102058.6 -7513748.8 + 84940.3 -7452123.0 + 78093.0 -7311753.1 + 64398.3 -7256974.6 + 50703.7 -7188501.5 + 47280.1 -7133722.9 + 67822.0 -7058402.5 + 74669.3 -6962540.1 + 81516.6 -6835864.8 + 81516.6 -6777662.7 + 64398.3 -6685223.9 + 43856.4 -6623598.1 + 23314.5 -6585937.9 + 19890.8 -6541430.3 +2 + 19890.8 -6541430.3 + -432031.9 -6541430.3 diff --git a/USwest/griddefs.h b/USwest/griddefs.h new file mode 100644 index 0000000..fbd8553 --- /dev/null +++ b/USwest/griddefs.h @@ -0,0 +1,67 @@ +! define as 1 for ETOPO5 bathymetry +#undef ETOPO5 +! define as 1 for ETOPO2 bathymetry +#undef ETOPO2 +#undef GEBCO + +! for 64-bit output +#define DBLEPREC 1 + +! to draw coastlines on some plots +#define DRAW_COASTS 1 + +! to keep ellipsoidal terms in Earth's shape +#undef ELLIPSOID + +! for averaging bathymetry in gridbox (for EW/NS grids only) +#undef IMG_AVG + +#define KEEP_SHALLOW 1 + +! for NCAR graphics (3.2 or better) */ +#define PLOTS 1 +! for X windows rather than metafile */ +#undef X_WIN + +#undef SYS_POTS /* unimplimented system calls */ +#undef XPOTS1 /* read ipot1 file */ +#undef XPOTS2 /* read ipot2 file */ +#undef XPOTS3 /* read ipot3 file */ +#undef XPOTS4 /* read ipot4 file */ + +#ifdef cray +#undef DCOMPLEX +#define DBLEPREC 1 /* for 64-bit output */ +#define BIGREAL real +#define SMALLREAL real +#define BIGCOMPLEX complex +#define FLoaT float +#else +#if DBLEPREC +#define DCOMPLEX 1 /* for compilers which support complex*16 */ +#define SMALLREAL real +#define BIGREAL real*8 +#define BIGCOMPLEX complex*16 +#define FLoaT dfloat +#else +#undef DCOMPLEX +#define BIGREAL real +#define SMALLREAL real +#define BIGCOMPLEX complex +#define FLoaT float +#endif /* DBLEPREC */ +#endif /* cray */ + +#if DBLEPREC +#define nf_get_var_FLoaT nf_get_var_double +#define nf_get_vara_FLoaT nf_get_vara_double +#define nf_put_att_FLoaT nf_put_att_double +#define nf_put_var_FLoaT nf_put_var_double +#define nf_put_vara_FLoaT nf_put_vara_double +#else +#define nf_get_var_FLoaT nf_get_var_real +#define nf_get_vara_FLoaT nf_get_vara_real +#define nf_put_att_FLoaT nf_put_att_real +#define nf_put_var_FLoaT nf_put_var_real +#define nf_put_vara_FLoaT nf_put_vara_real +#endif /* DBLEPREC */ diff --git a/USwest/gridid.h b/USwest/gridid.h new file mode 100644 index 0000000..7ca21b7 --- /dev/null +++ b/USwest/gridid.h @@ -0,0 +1,6 @@ +! gridid is an 80 character string, the first 40 of which are +! used as a plot label. +! gridfile is the name of the netCDF file produced by the +! grid/sqgrid programs + gridid = 'West Coast of US #1' + gridfile = 'usw_grid_1.nc' diff --git a/USwest/gridparam.h b/USwest/gridparam.h new file mode 100644 index 0000000..7dd2135 --- /dev/null +++ b/USwest/gridparam.h @@ -0,0 +1,12 @@ + integer L, M + parameter ( L=63 , M=255 ) +! +! mud2 requires that these values satisfy +! +! L = NXL*2**(NSTEP-1)+1 +! M = NYL*2**(NSTEP-1)+1 +! +! where NXL, NYL and NSTEP are integers. Try to have NSTEP as large as +! possible (see mud2 documentation). +! +! subroutine 'factor' now takes care of passing NXL, NYL and NSTEP to mud2. diff --git a/USwest/proj.h b/USwest/proj.h new file mode 100644 index 0000000..cecd80b --- /dev/null +++ b/USwest/proj.h @@ -0,0 +1,9 @@ + character*2 JPRJ, JLTS + real PLAT, PLONG, ROTA, P1, P2, P3, P4, XOFF, YOFF + integer JGRD + parameter ( JPRJ = 'LC', PLAT = 35.500000, & + & PLONG = -125.000000, ROTA = 45.500000, & + & JLTS = 'CO', P1 = 28.000000, & + & P2 = -132.000000, P3 = 50.000000, & + & P4 = -110.000000, JGRD = 5) + parameter ( XOFF = 0., YOFF = 0.) diff --git a/USwest/sandwell-6.2.nc b/USwest/sandwell-6.2.nc new file mode 100644 index 0000000000000000000000000000000000000000..5eb911498c7fe700b05a1f273e96a8b2b7145933 GIT binary patch literal 1330888 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 cGtndHCax9p!9GYvT4n9|KCOt4D3qP0o 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

)ZnT{h%y@@7F3W{uJ;tPs$eWRwRqz^ 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 z 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%0AKI;W!LR&nKZH!*-N;SV<0* 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

)0M7MHh+R+>cb1hjn0zoy%bJR_8XHnzhc;u2@&R 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⩔-q{2YuvsG;;h*8U{-=!)$R6xKiO4!g(x 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ź=AfJBQ5VeT__I(g)`PvD@xAjw>Gk+E1V)R# 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 ncolors ... trouble ahead' + endif + call cpseti('CLS - contour level selector',ncontr) + call cpsetr('CIS - contour interval selector',0.) + + else + +! override selection hints +! cpmin, cpmax and nclevels are input to plothist + + call cpseti('CLS - contour level selector',0) + call cpseti('NCL - number of contour levels',nclevels+1) + do i=1,nclevels+1 + clevel = cpmin + float(i-1)/float(nclevels)*(cpmax-cpmin) + call cpseti('PAI - array index',i) + call cpsetr('CLV - contour level',clevel) + call cpseti('CLU - line type',3) + enddo + + endif + endif + +! initialize CONPACK + call cprect(zdat,K,M,N,rwrk,lrwk,iwrk,liwk) + +! draw contour plot + call arinam(iama,lawk) + call cpclam(zdat,rwrk,iwrk,iama) + call arscam(iama,xcra,ycra,lcra,iara,igra,nlevb,colram) + +! find contour levels and enter these in labels for labelbar + call cpgetr('CIU - contour interval used',ciu) + call cpgeti('NCL - number of contour levels',ncl) + if (ncl .gt. ncolor-1) then + print *,' cpsfill: warning -- ran out of colours' + endif + ncused = min(ncolor-1,ncl) + + do 110 i=1,ncused + call cpseti('PAI - array index',i) + call cpgeti('CLU - contour level use flag',iclu) + call cpgetr('CLV - contour level',clev) + write(llbs(i),100)clev + 100 format(1pg9.2) + 110 continue + +! create labelbar + + call sfseti('TYPE of FILL',0) + + call getset(fl,fr,fb,ft,ul,ur,ub,ut,ll) + if (tallflg) then + call lblbar(1,fr+0.01,fr+0.09,fb,ft,ncused+1,.15,1.,lfin,0, & + & llbs,ncused,1) + else + call lblbar(0,fl,fr,fb-0.05,fb-0.01,ncused+1,1.,.333,lfin,0, & + & llbs,ncused,1) + end if + + call gsplci(1) + +! put black contour lines over the colored map + if (lcflag .lt. 0) call cpcldr(zdat,rwrk,iwrk) + +! draw labels +! call gsclip(0) +! call cplbdr(zdat,rwrk,iwrk) +! call gsclip(1) + +! reset min, max + call cpsetr('CMN - contour min',1.) + call cpsetr('CMX - contour max',0.) + + return + end + +! ******************************************************************** + + subroutine defclr(lcflag) + integer lcflag + +! defines the colour indicies + + integer ncolor, krgb, i + parameter ( ncolor=17 ) + real rgb(3,ncolor,6) + real rgb1(3,ncolor),rgb2(3,ncolor),rgb3(3,ncolor), & + & rgb4(3,ncolor),rgb5(3,ncolor),rgb6(3,ncolor) + equivalence (rgb(1,1,1),rgb1(1,1)),(rgb(1,1,2),rgb2(1,1)) + equivalence (rgb(1,1,3),rgb3(1,1)),(rgb(1,1,4),rgb4(1,1)) + equivalence (rgb(1,1,5),rgb5(1,1)),(rgb(1,1,6),rgb6(1,1)) + +! Kate's colors (red to blue) + data rgb1 / 0.00, 0.25, 1.00, & + & 0.00, 0.50, 1.00, & + & 0.00, 0.75, 1.00, & + & 0.00, 1.00, 1.00, & + & 0.25, 1.00, 1.00, & + & 0.50, 1.00, 1.00, & + & 0.90, 0.90, 0.90, & + & 1.00, 0.63, 0.63, & + & 1.00, 0.50, 0.50, & + & 1.00, 0.38, 0.38, & + & 1.00, 0.25, 0.25, & + & 1.00, 0.13, 0.13, & + & 1.00, 0.00, 0.00, & + & 1.00, 0.00, 0.00, & + & 1.00, 0.00, 0.00, & + & 1.00, 0.00, 0.00, & + & 1.00, 0.00, 0.00 / +! John's colours (grey to blue like GEBCO bathymetry charts) +! second attempt -- not so dark on the Tek printer + data rgb2 / 0.65, 0.60, 0.60, & + & 0.65, 0.75, 0.75, & + & 0.65, 0.90, 0.90, & + & 0.60, 1.00, 1.00, & + & 0.50, 1.00, 1.00, & + & 0.40, 1.00, 1.00, & + & 0.25, 1.00, 1.00, & + & 0.10, 1.00, 1.00, & + & 0.05, 0.95, 1.00, & + & 0.00, 0.85, 1.00, & + & 0.00, 0.75, 1.00, & + & 0.00, 0.65, 1.00, & + & 0.00, 0.50, 1.00, & + & 0.00, 0.40, 0.85, & + & 0.00, 0.30, 0.75, & + & 0.00, 0.20, 0.60, & + & 0.00, 0.00, 0.50 / +! John's colours (modified for Dale's printer) + data rgb3 / 0.65, 0.60, 0.60, & + & 0.65, 0.75, 0.75, & + & 0.65, 0.90, 0.90, & + & 0.60, 1.00, 1.00, & + & 0.50, 1.00, 1.00, & + & 0.40, 1.00, 1.00, & + & 0.20, 1.00, 1.00, & + & 0.00, 1.00, 1.00, & + & 0.05, 0.95, 1.00, & + & 0.00, 0.80, 1.00, & + & 0.00, 0.60, 1.00, & + & 0.00, 0.40, 1.00, & + & 0.00, 0.20, 1.00, & + & 0.00, 0.00, 1.00, & + & 0.00, 0.00, 0.80, & + & 0.00, 0.00, 0.60, & + & 0.00, 0.00, 0.40 / +! Kate's colours (for Arctic psi) + data rgb4 / 0.10, 1.00, 0.10, & + & 0.32, 1.00, 0.30, &! -8 to -6 + & 0.47, 1.00, 0.42, & + & 0.62, 1.00, 0.54, &! -4 to -2 + & 0.77, 1.00, 0.66, & + & 1.00, 0.97, 0.70, &! 0 to 2 + & 1.00, 0.84, 0.50, & + & 1.00, 0.72, 0.30, &! 4 to 6 + & 0.90, 0.60, 0.30, & + & 0.86, 0.54, 0.40, &! 8 to 10 + & 0.77, 0.47, 0.50, & + & 0.69, 0.45, 0.64, &! 12 to 14 + & 0.62, 0.41, 0.74, & + & 0.58, 0.32, 0.80, &! 16 to 18 + & 0.50, 0.28, 0.84, & + & 0.44, 0.20, 0.88, &! not used + & 0.00, 0.00, 0.60 / +! shades of grey - light to dark + data rgb5 / 0.94, 0.94, 0.94, & + & 0.88, 0.88, 0.88, & + & 0.82, 0.82, 0.82, & + & 0.76, 0.76, 0.76, & + & 0.70, 0.70, 0.70, & + & 0.64, 0.64, 0.64, & + & 0.58, 0.58, 0.58, & + & 0.52, 0.52, 0.52, & + & 0.46, 0.46, 0.46, & + & 0.40, 0.40, 0.40, & + & 0.34, 0.34, 0.34, & + & 0.28, 0.28, 0.28, & + & 0.22, 0.22, 0.22, & + & 0.16, 0.16, 0.16, & + & 0.10, 0.10, 0.10, & + & 0.05, 0.05, 0.05, & + & 0.00, 0.00, 0.00 / +! shades of grey - dark to light + data rgb6 / 0.16, 0.16, 0.16, & + & 0.22, 0.22, 0.22, & + & 0.28, 0.28, 0.28, & + & 0.34, 0.34, 0.34, & + & 0.40, 0.40, 0.40, & + & 0.46, 0.46, 0.46, & + & 0.52, 0.52, 0.52, & + & 0.58, 0.58, 0.58, & + & 0.64, 0.64, 0.64, & + & 0.70, 0.70, 0.70, & + & 0.76, 0.76, 0.76, & + & 0.82, 0.82, 0.82, & + & 0.88, 0.88, 0.88, & + & 0.94, 0.94, 0.94, & + & 0.96, 0.96, 0.96, & + & 0.98, 0.98, 0.98, & + & 1.00, 1.00, 1.00 / + + krgb = abs(lcflag) + if (krgb .gt. 6) call crash(' cpsfill: invalid lcflag',lcflag) + + do 100 i=1,ncolor + call gscr(1,i+1,rgb(1,i,krgb),rgb(2,i,krgb),rgb(3,i,krgb)) + 100 continue + + return + end + + +! ******************************************************************** + + subroutine colram(xcra,ycra,ncra,iaia,igia,naia) + real xcra(*), ycra(*) + integer iaia(*), igia(*) + integer ncolor, ncra, naia, ifll, i + parameter ( ncolor=17 ) + +! The arrays xcra and ycra, for indices 1 to ncra, contain the x +! and y coordinates of points defining a polygon. The area +! identifiers in the array iaia, each with an associated group +! identifier in the array igia, tell us whether the polygon +! is to be color-filled or not. + + ifll = 1 + +! if any of the area identifiers is negative, don't fill the +! polygon. + do 100 i=1,naia + if (iaia(i) .lt. 0) ifll = 0 + 100 continue + +! otherwise, fill the polygon in the color implied by its area +! identifier relative to edge group 3 (the contour-line group) + + if (ifll .ne. 0) then + ifll = 0 + do 110 i=1,naia + if (igia(i) .eq. 3) ifll = iaia(i) + 110 continue + if (ifll .gt. 0 .and. ifll .le. ncolor) then + call gsfaci(ifll+1) + call gfa(ncra-1, xcra, ycra) + end if + end if +! print *,'in colram' +! do i=1,naia +! print *,'iaia ', i, iaia(i), igia(i) +! enddo +! print *,'ifll', ifll + + return + end diff --git a/Utility/def_grid.F b/Utility/def_grid.F new file mode 100644 index 0000000..09e6a3a --- /dev/null +++ b/Utility/def_grid.F @@ -0,0 +1,572 @@ +#include "griddefs.h" + subroutine def_grid +! +!======================================================================= +! === +! This routine creates a Gridpak NetCDF file, it defines its === +! dimensions, attributes, and variables. === +! === +! === +! Calls: crash, opencdf, plus NetCDF library === +! === +! WARNING: The character argument to the NetCDF routines are === +! (upper/lower) case sensitive. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global variables. +!----------------------------------------------------------------------- +! + use netcdf + +#include "grid.h" +#include "ncgrid.h" +! +!----------------------------------------------------------------------- +! Define local variables. +!----------------------------------------------------------------------- +! + integer bathdim, epdim, erdim, eudim, evdim, & + & onedim, twodim, xpdim, xrdim, xudim, xvdim + integer h2dgrd(3), p2dgrd(2), t2dgrd(2), & + & u2dgrd(2), v2dgrd(2) + BIGREAL c0, c1 + parameter ( c0=0.d0, c1=1.d0 ) + character (len=1) :: char1 +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +!======================================================================= +! Create a new grid NetCDF file. +!======================================================================= +! + rcode = nf90_create(TRIM(gridfile), nf90_clobber, ncgridid) + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,10) TRIM(gridfile) + call crash ('DEF_GRID',1) + endif +! +!----------------------------------------------------------------------- +! Define the dimensions of staggered fields. +!----------------------------------------------------------------------- +! + rcode = nf90_def_dim(ncgridid,'xi_psi',L,xpdim) + rcode = nf90_def_dim(ncgridid,'xi_rho',Lp,xrdim) + rcode = nf90_def_dim(ncgridid,'xi_u',L,xudim) + rcode = nf90_def_dim(ncgridid,'xi_v',Lp,xvdim) + rcode = nf90_def_dim(ncgridid,'eta_psi',M,epdim) + rcode = nf90_def_dim(ncgridid,'eta_rho',Mp,erdim) + rcode = nf90_def_dim(ncgridid,'eta_u',Mp,eudim) + rcode = nf90_def_dim(ncgridid,'eta_v',M,evdim) + rcode = nf90_def_dim(ncgridid,'one',1,onedim) + rcode = nf90_def_dim(ncgridid,'two',2,twodim) + rcode = nf90_def_dim(ncgridid,'bath',nf90_unlimited,bathdim) + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! Define dimension vectors for staggered 2D psi type +! variables. +! + p2dgrd(1)=xpdim + p2dgrd(2)=epdim +! +! Define dimension vectors for staggered 2D tracer type +! variables. +! + t2dgrd(1)=xrdim + t2dgrd(2)=erdim + h2dgrd(1)=xrdim + h2dgrd(2)=erdim + h2dgrd(3)=bathdim +! +! Define dimension vectors for staggered 2D u-momemtum type +! variables. +! + u2dgrd(1)=xudim + u2dgrd(2)=eudim +! +! Define dimension vectors for staggered 2D v-momemtum type +! variables. +! + v2dgrd(1)=xvdim + v2dgrd(2)=evdim +! +!----------------------------------------------------------------------- +! Define type of floating-point variables: single or double precision. +!----------------------------------------------------------------------- +! +#if DBLEPREC || defined cray + vartyp=nf90_double +#else + vartyp=nf90_float +#endif /* DBLEPREC */ +! +!----------------------------------------------------------------------- +! Create history attribute. +!----------------------------------------------------------------------- +! + call get_date (date_str) + if (LEN_TRIM(date_str).gt.0) then + history='Gridpak, Version '//version//', '//TRIM(date_str) + else + history='Gridpak, Version '//version + endif + rcode = nf90_put_att(ncgridid,nf90_global,'type',& + & 'Gridpak file') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! Put global attributes to NetCDF file. +! + rcode = nf90_put_att(ncgridid,nf90_global,'gridid', gridid) + rcode = nf90_put_att(ncgridid,nf90_global,'history', & + & history) + rcode = nf90_put_att(ncgridid,nf90_global,'CPP-options', & + & CPPoptions) + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! Domain Length. +! + rcode = nf90_def_var(ncgridid,'xl',vartyp,varid=varid) + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'domain length in the XI-direction') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif + rcode = nf90_put_att(ncgridid,varid,'units', 'meter') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif + rcode = nf90_def_var(ncgridid,'el',vartyp,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'domain length in the ETA-direction') + rcode = nf90_put_att(ncgridid,varid,'units', 'meter') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! Projection parameters. +! + rcode = nf90_def_var(ncgridid,'JPRJ',nf90_char,(/twodim/),varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Map projection type') + rcode = nf90_put_att(ncgridid,varid,'option_ME', 'Mercator') + rcode = nf90_put_att(ncgridid,varid,'option_ST', 'Stereographic') + rcode = nf90_put_att(ncgridid,varid,'option_LC', & + & 'Lambert conformal conic') + rcode=nf90_def_var(ncgridid,'PLAT',nf90_double,(/twodim/),varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Reference latitude(s) for map projection') + rcode = nf90_put_att(ncgridid,varid,'units', 'degree_north') + rcode=nf90_def_var(ncgridid,'PLONG',nf90_double,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Reference longitude for map projection') + rcode = nf90_put_att(ncgridid,varid,'units', 'degree_east') + rcode=nf90_def_var(ncgridid,'ROTA',nf90_double,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Rotation angle for map projection') + rcode = nf90_put_att(ncgridid,varid,'units', 'degree') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif + + rcode=nf90_def_var(ncgridid,'JLTS',nf90_char,(/twodim/),varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'How limits of map are chosen') + rcode = nf90_put_att(ncgridid,varid,'option_CO', & + & 'P1, .. P4 define two opposite corners of domain') + rcode = nf90_put_att(ncgridid,varid,'option_MA', & + & 'Maximum (whole world)') + rcode = nf90_put_att(ncgridid,varid,'option_AN', & + & 'Angles - P1..P4 define angles to edge of domain') + rcode = nf90_put_att(ncgridid,varid,'option_LI', & + & 'Limits - P1..P4 define limits in u,v space') + rcode=nf90_def_var(ncgridid,'P1',nf90_double,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Map limit parameter number 1') + rcode=nf90_def_var(ncgridid,'P2',nf90_double,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Map limit parameter number 2') + rcode=nf90_def_var(ncgridid,'P3',nf90_double,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Map limit parameter number 3') + rcode=nf90_def_var(ncgridid,'P4',nf90_double,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Map limit parameter number 4') +! rcode=nf90_def_var(ncgridid,'JGRD',nf90_double,varid=varid) +! rcode = nf90_put_att(ncgridid,varid,'long_name', +! & 'Density of lat,lon lines to draw on plots') +! rcode = nf90_put_att(ncgridid,varid,'units', 'degree') + rcode=nf90_def_var(ncgridid,'XOFF',nf90_float,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Offset in x direction') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode = nf90_def_var(ncgridid,'YOFF',nf90_float,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Offset in y direction') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! depthmin and depthmax. +! + rcode = nf90_def_var(ncgridid,'depthmin',vartyp,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Shallow bathymetry clipping depth') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode = nf90_def_var(ncgridid,'depthmax',vartyp,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Deep bathymetry clipping depth') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! Spherical geometry logical flag and beta-plane parameters. +! + rcode=nf90_def_var(ncgridid,'spherical',nf90_char,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Grid type logical switch') + rcode = nf90_put_att(ncgridid,varid,'option_T', 'spherical') + rcode = nf90_put_att(ncgridid,varid,'option_F', 'Cartesian') + rcode=nf90_def_var(ncgridid,'f0',vartyp,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Coriolis parameter central value on a beta-plane') + rcode = nf90_put_att(ncgridid,varid,'_FillValue',c0) + rcode=nf90_def_var(ncgridid,'dfdy',vartyp,varid=varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Coriolis parameter gradient on a beta-plane') + rcode = nf90_put_att(ncgridid,varid,'_FillValue',c0) + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +!----------------------------------------------------------------------- +! Define grid variables. +!----------------------------------------------------------------------- +! +! Bathymetry. +! + rcode=nf90_def_var(ncgridid,'hraw',vartyp,h2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Working bathymetry at RHO-points') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode = nf90_put_att(ncgridid,varid,'field', & + & 'bath, scalar') + rcode=nf90_def_var(ncgridid,'h',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Final bathymetry at RHO-points') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode = nf90_put_att(ncgridid,varid,'field', & + & 'bath, scalar') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! Coriolis Parameter. +! + rcode=nf90_def_var(ncgridid,'f',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'Coriolis parameter at RHO-points') + rcode = nf90_put_att(ncgridid,varid,'units', 'second-1') + rcode = nf90_put_att(ncgridid,varid,'field', & + & 'Coriolis, scalar') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! Curvilinear coordinates metrics. +! + rcode=nf90_def_var(ncgridid,'pm',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'curvilinear coordinate metric in XI') + rcode = nf90_put_att(ncgridid,varid,'units', 'meter-1') + rcode = nf90_put_att(ncgridid,varid,'field', & + & 'pm, scalar') + rcode=nf90_def_var(ncgridid,'pn',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'curvilinear coordinate metric in ETA') + rcode = nf90_put_att(ncgridid,varid,'units', 'meter-1') + rcode = nf90_put_att(ncgridid,varid,'field', & + & 'pn, scalar') + rcode=nf90_def_var(ncgridid,'dndx',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'xi derivative of inverse metric factor pn') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode = nf90_put_att(ncgridid,varid,'field', & + & 'dndx, scalar') + rcode=nf90_def_var(ncgridid,'dmde',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'eta derivative of inverse metric factor pm') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode = nf90_put_att(ncgridid,varid,'field', & + & 'dmde, scalar') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! x,y location on the grids. +! + rcode=nf90_def_var(ncgridid,'x_rho',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'x location of RHO-points') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode=nf90_def_var(ncgridid,'y_rho',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'y location of RHO-points') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode=nf90_def_var(ncgridid,'x_psi',vartyp,p2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'x location of PSI-points') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode=nf90_def_var(ncgridid,'y_psi',vartyp,p2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'y location of PSI-points') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode=nf90_def_var(ncgridid,'x_u',vartyp,u2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'x location of U-points') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode=nf90_def_var(ncgridid,'y_u',vartyp,u2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'y location of U-points') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode=nf90_def_var(ncgridid,'x_v',vartyp,v2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'x location of V-points') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + rcode=nf90_def_var(ncgridid,'y_v',vartyp,v2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'y location of V-points') + rcode = nf90_put_att(ncgridid,varid,'units','meter') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! Latitude, longitude on the grids. +! + rcode=nf90_def_var(ncgridid,'lat_rho',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'latitude of RHO-points') + rcode = nf90_put_att(ncgridid,varid,'units', & + & 'degree_north') + rcode=nf90_def_var(ncgridid,'lon_rho',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'longitude of RHO-points') + rcode = nf90_put_att(ncgridid,varid,'units', & + & 'degree_east') + rcode=nf90_def_var(ncgridid,'lat_psi',vartyp,p2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'latitude of PSI-points') + rcode = nf90_put_att(ncgridid,varid,'units', & + & 'degree_north') + rcode=nf90_def_var(ncgridid,'lon_psi',vartyp,p2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'longitude of PSI-points') + rcode = nf90_put_att(ncgridid,varid,'units', & + & 'degree_east') + rcode=nf90_def_var(ncgridid,'lat_u',vartyp,u2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'latitude of U-points') + rcode = nf90_put_att(ncgridid,varid,'units', & + & 'degree_north') + rcode=nf90_def_var(ncgridid,'lon_u',vartyp,u2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'longitude of U-points') + rcode = nf90_put_att(ncgridid,varid,'units', & + & 'degree_east') + rcode=nf90_def_var(ncgridid,'lat_v',vartyp,v2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'latitude of V-points') + rcode = nf90_put_att(ncgridid,varid,'units', & + & 'degree_north') + rcode=nf90_def_var(ncgridid,'lon_v',vartyp,v2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'longitude of V-points') + rcode = nf90_put_att(ncgridid,varid,'units', & + & 'degree_east') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! 0/1 masks. +! + rcode=nf90_def_var(ncgridid,'mask_rho',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'mask on RHO-points') + rcode = nf90_put_att(ncgridid,varid,'option_0', 'land') + rcode = nf90_put_att(ncgridid,varid,'option_1', 'water') + rcode=nf90_def_var(ncgridid,'mask_u',vartyp,u2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'mask on U-points') + rcode = nf90_put_att(ncgridid,varid,'option_0', 'land') + rcode = nf90_put_att(ncgridid,varid,'option_1', 'water') + rcode=nf90_def_var(ncgridid,'mask_v',vartyp,v2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'mask on V-points') + rcode = nf90_put_att(ncgridid,varid,'option_0', 'land') + rcode = nf90_put_att(ncgridid,varid,'option_1', 'water') + rcode=nf90_def_var(ncgridid,'mask_psi',vartyp,p2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'mask on PSI-points') + rcode = nf90_put_att(ncgridid,varid,'option_0', 'land') + rcode = nf90_put_att(ncgridid,varid,'option_1', 'water') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +! Angle. +! + rcode=nf90_def_var(ncgridid,'angle',vartyp,t2dgrd,varid) + rcode = nf90_put_att(ncgridid,varid,'long_name', & + & 'angle between xi axis and east') + rcode = nf90_put_att(ncgridid,varid,'units','radian') + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +!----------------------------------------------------------------------- +! Leave definition mode. +!----------------------------------------------------------------------- +! + rcode = nf90_enddef(ncgridid) + if (rcode.ne.0) then + print *, trim(nf90_strerror(rcode)) + endif +! +!----------------------------------------------------------------------- +! Write out grid variables. +!----------------------------------------------------------------------- +! +! Curvilinear transformation metrics. +! + spherical = .false. + WRITE (char1,'(l1)') spherical + rcode=nf90_inq_varid(ncgridid,'spherical',varid) + rcode = nf90_put_var(ncgridid,varid,char1) + if (rcode.ne.0) then + write(stdout,20) 'spherical', TRIM(gridfile) + print *, trim(nf90_strerror(rcode)) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'pm',varid) + rcode = nf90_put_var(ncgridid,varid,pm) + if (rcode.ne.0) then + write(stdout,20) 'pm', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'pn',varid) + rcode = nf90_put_var(ncgridid,varid,pn) + if (rcode.ne.0) then + write(stdout,20) 'pn', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'dndx',varid) + rcode = nf90_put_var(ncgridid,varid,dndx) + if (rcode.ne.0) then + write(stdout,20) 'dndx', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'dmde',varid) + rcode = nf90_put_var(ncgridid,varid,dmde) + if (rcode.ne.0) then + write(stdout,20) 'dmde', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif +! +! Domain Length. +! + rcode=nf90_inq_varid(ncgridid,'xl',varid) + rcode = nf90_put_var(ncgridid,varid,xl) + if (rcode.ne.0) then + write(stdout,20) 'xl', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'el',varid) + rcode = nf90_put_var(ncgridid,varid,el) + if (rcode.ne.0) then + write(stdout,20) 'el', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif +! +! x,y grids. +! + rcode=nf90_inq_varid(ncgridid,'x_rho',varid) + rcode = nf90_put_var(ncgridid,varid,xr) + if (rcode.ne.0) then + write(stdout,20) 'x_rho', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'y_rho',varid) + rcode = nf90_put_var(ncgridid,varid,yr) + if (rcode.ne.0) then + write(stdout,20) 'y_rho', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'x_psi',varid) + rcode = nf90_put_var(ncgridid,varid,xp) + if (rcode.ne.0) then + write(stdout,20) 'x_psi', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'y_psi',varid) + rcode = nf90_put_var(ncgridid,varid,yp) + if (rcode.ne.0) then + write(stdout,20) 'y_psi', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'x_u',varid) + rcode = nf90_put_var(ncgridid,varid,xu) + if (rcode.ne.0) then + write(stdout,20) 'x_u', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'y_u',varid) + rcode = nf90_put_var(ncgridid,varid,yu) + if (rcode.ne.0) then + write(stdout,20) 'y_u', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'x_v',varid) + rcode = nf90_put_var(ncgridid,varid,xv) + if (rcode.ne.0) then + write(stdout,20) 'x_v', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif + rcode=nf90_inq_varid(ncgridid,'y_v',varid) + rcode = nf90_put_var(ncgridid,varid,yv) + if (rcode.ne.0) then + write(stdout,20) 'y_v', TRIM(gridfile) + call crash ('DEF_GRID',1) + endif +! +! Close the file. +! + rcode = nf90_close(ncgridid) + if (rcode.ne.0) then + write(stdout,30) TRIM(gridfile) + call crash ('DEF_GRID',1) + endif +! +!======================================================================= +! + 10 format(/' DEF_GRID - unable to create grid NetCDF file: ',a) + 20 format(/' DEF_GRID - error while writing variable: ',a,/,11x, & + & 'into grid NetCDF file: ',a) + 30 format(/' DEF_GRID - unable to close grid NetCDF file: ',a) + return + end diff --git a/Utility/drawcoast.F b/Utility/drawcoast.F new file mode 100644 index 0000000..2324357 --- /dev/null +++ b/Utility/drawcoast.F @@ -0,0 +1,49 @@ +! ********************************************************************* +! Copyright (c) 1991, 1993 Rutgers University +! +! ********************************************************************* + + subroutine drawcoast +#include "griddefs.h" + real lat, lon + +! MAX is maximum number of segments in data file + integer MAX + parameter ( MAX=100000 ) + character*80 datafile + integer icst, nn + + icst = 40 + call getenv('XCOASTDATA', datafile) + open(icst,file=datafile,err=130) + +! I want a "while (scanf() != EOF)", but I have to fake it. + do 100 nn=1,MAX + read (icst,*,err=120,end=110) lat, lon + call mapit(lat, lon, 0) + do while (abs(lat) .lt. 89.99) + call mapit(lat, lon, 2) + read (icst,*,err=120,end=110) lat, lon + enddo + 100 continue + + print *,'Did not reach end of file in drawcoast' + print *,'Increase MAX to draw the rest of your file' + 110 continue + call mapiq + close(icst) + return + + 120 print *,'read error in drawcoast' +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + 130 print *, 'error opening file in drawcoast ', datafile +#if NO_EXIT + stop +#else + call exit(1) +#endif /* NO_EXIT */ + end diff --git a/Utility/extract.F b/Utility/extract.F new file mode 100644 index 0000000..2eb0cff --- /dev/null +++ b/Utility/extract.F @@ -0,0 +1,96 @@ +#include "griddefs.h" + + subroutine extract(lon,lat,topo,im,jm) +! +!======================================================================= +! Define global data. +!======================================================================= +! + use netcdf +! +!======================================================================= +! Define local data. +!======================================================================= +! + integer ncinpid, rcode, i, j + character*60 fname + integer im, jm, stdout, varid + integer count(2), start(2) + integer*2 topo(im,jm) + real c0, c5, c60 + BIGREAL lat(jm), lon(im) + parameter ( c0=0.0,c5=5.0,c60=60.0,stdout=6) +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +#if ETOPO5 + call getenv('ETOPO5',fname) +#elif ETOPO2 + call getenv('ETOPO2',fname) +#elif GEBCO + call getenv('GEBCO',fname) +#else + call getenv('BATHY_FILE',fname) +#endif /* ETOPO5 */ + rcode = nf90_open(fname,nf90_nowrite,ncinpid) +! +!----------------------------------------------------------------------- +! Extract longitudes of the requested area. +!----------------------------------------------------------------------- +! + start(1)=1 + count(1)=im + rcode = nf90_inq_varid(ncinpid,'topo_lon',varid) + if (rcode.eq.0) then + rcode = nf90_get_var(ncinpid,varid,lon) + if (rcode.ne.0) then + write(stdout,900) 'topo_lon' + goto 10 + endif + else + write(stdout,901) 'topo_lon' + endif +! +!----------------------------------------------------------------------- +! Extract latitudes of the requested area. +!----------------------------------------------------------------------- +! + rcode = nf90_inq_varid(ncinpid,'topo_lat',varid) + if (rcode.eq.0) then + rcode = nf90_get_var(ncinpid,varid,lat) + if (rcode.ne.0) then + write(stdout,900) 'topo_lat' + goto 10 + endif + else + write(stdout,901) 'topo_lat' + endif + print *, 'im ', im, jm, lon(1) +! +!----------------------------------------------------------------------- +! Extract bathmetry +!----------------------------------------------------------------------- +! + rcode=nf90_inq_varid(ncinpid,'topo',varid) + if (rcode.eq.0) then + rcode = nf90_get_var(ncinpid,varid,topo) + if(rcode.ne.0) then + write(stdout,900) 'topo' + goto 10 + endif + else + write(stdout,901) 'topo' + endif +! + goto 20 + 10 write(stdout,903) + stop + 20 continue + 900 format(/' EXTRACT - error while reading variable: ',a) + 901 format(/' EXTRACT - cannot find variable: ',a) + 902 format(/' EXTRACT - error while writing variable: ',a) + 903 format(/' EXTRACT - terminated abnormally.') + return + end diff --git a/Utility/genbun.F b/Utility/genbun.F new file mode 100644 index 0000000..f953355 --- /dev/null +++ b/Utility/genbun.F @@ -0,0 +1,1370 @@ + subroutine genbun (nperod,n,mperod,m,a,b,c,idimy,y,ierror,w) +! +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! * * +! * f i s h p a k * +! * * +! * * +! * a package of fortran subprograms for the solution of * +! * * +! * separable elliptic partial differential equations * +! * * +! * (version 3.2 , november 1988) * +! * * +! * by * +! * * +! * john adams, paul swarztrauber and roland sweet * +! * * +! * of * +! * * +! * the national center for atmospheric research * +! * * +! * boulder, colorado (80307) u.s.a. * +! * * +! * which is sponsored by * +! * * +! * the national science foundation * +! * * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! +! +! dimension of a(m),b(m),c(m),y(idimy,n), +! w(see parameter list) +! arguments +! +! latest revision november 1988 +! +! purpose the name of this package is a mnemonic for the +! generalized buneman algorithm. +! +! it solves the real linear system of equations +! +! a(i)*x(i-1,j) + b(i)*x(i,j) + c(i)*x(i+1,j) +! + x(i,j-1) - 2.*x(i,j) + x(i,j+1) = y(i,j) +! +! for i = 1,2,...,m and j = 1,2,...,n. +! +! indices i+1 and i-1 are evaluated modulo m, +! i.e., x(0,j) = x(m,j) and x(m+1,j) = x(1,j), +! and x(i,0) may equal 0, x(i,2), or x(i,n), +! and x(i,n+1) may equal 0, x(i,n-1), or x(i,1) +! depending on an input parameter. +! +! usage call genbun (nperod,n,mperod,m,a,b,c,idimy,y, +! ierror,w) +! +! arguments +! +! on input nperod +! +! indicates the values that x(i,0) and +! x(i,n+1) are assumed to have. +! +! = 0 if x(i,0) = x(i,n) and x(i,n+1) = +! x(i,1). +! = 1 if x(i,0) = x(i,n+1) = 0 . +! = 2 if x(i,0) = 0 and x(i,n+1) = x(i,n-1). +! = 3 if x(i,0) = x(i,2) and x(i,n+1) = +! x(i,n-1). +! = 4 if x(i,0) = x(i,2) and x(i,n+1) = 0. +! +! n +! the number of unknowns in the j-direction. +! n must be greater than 2. +! +! mperod +! = 0 if a(1) and c(m) are not zero +! = 1 if a(1) = c(m) = 0 +! +! m +! the number of unknowns in the i-direction. +! n must be greater than 2. +! +! a,b,c +! one-dimensional arrays of length m that +! specify the coefficients in the linear +! equations given above. if mperod = 0 +! the array elements must not depend upon +! the index i, but must be constant. +! specifically, the subroutine checks the +! following condition . +! +! a(i) = c(1) +! c(i) = c(1) +! b(i) = b(1) +! +! for i=1,2,...,m. +! +! idimy +! the row (or first) dimension of the +! two-dimensional array y as it appears +! in the program calling genbun. +! this parameter is used to specify the +! variable dimension of y. +! idimy must be at least m. +! +! y +! a two-dimensional complex array that +! specifies the values of the right side +! of the linear system of equations given +! above. +! y must be dimensioned at least m*n. +! +! w +! a one-dimensional array that must +! be provided by the user for work +! space. w may require up to 4*n + +! (10 + int(log2(n)))*m locations. +! the actual number of locations used is +! computed by genbun and is returned in +! location w(1). +! +! +! on output y +! +! contains the solution x. +! +! ierror +! an error flag which indicates invalid +! input parameters except for number +! zero, a solution is not attempted. +! +! = 0 no error. +! = 1 m .le. 2 . +! = 2 n .le. 2 +! = 3 idimy .lt. m +! = 4 nperod .lt. 0 or nperod .gt. 4 +! = 5 mperod .lt. 0 or mperod .gt. 1 +! = 6 a(i) .ne. c(1) or c(i) .ne. c(1) or +! b(i) .ne. b(1) for +! some i=1,2,...,m. +! = 7 a(1) .ne. 0 or c(m) .ne. 0 and +! mperod = 1 +! +! w +! w(1) contains the required length of w. +! +! special conditons none +! +! i/o none +! +! precision single +! +! required library comf and gnbnaux from fishpak +! files +! +! language fortran +! +! history written in 1979 by roland sweet of ncar's +! scientific computing division. made available +! on ncar's public libraries in january, 1980. +! +! algorithm the linear system is solved by a cyclic +! reduction algorithm described in the +! reference. +! +! portability fortran 77 -- +! the machine dependent constant pi is +! defined in function pimach. +! +! references sweet, r., "a cyclic reduction algorithm for +! solving block tridiagonal systems of arbitrary +! dimensions," siam j. on numer. anal., 14 (1977) +! pp. 706-720. +! +! accuracy this test was performed on a cdc 7600: +! +! a uniform random number generator was used +! to create a solution array x for the system +! given in the 'purpose' description above +! with +! a(i) = c(i) = -0.5*b(i) = 1, i=1,2,...,m +! +! and, when mperod = 1 +! +! a(1) = c(m) = 0 +! a(m) = c(1) = 2. +! +! the solution x was substituted into the +! given system and, using double precision +! a right side y was computed. +! using this array y, subroutine genbun +! was called to produce approximate +! solution z. then relative error +! e = max(abs(z(i,j)-x(i,j)))/ +! max(abs(x(i,j))) +! was computed, where the two maxima are taken +! over i=1,2,...,m and j=1,...,n. +! +! the value of e is given in the table +! below for some typical values of m and n. +! +! m (=n) mperod nperod t(msecs) e +! ------ ------ ------ -------- ------ +! +! 31 0 0 36 6.e-14 +! 31 1 1 21 4.e-13 +! 31 1 3 41 3.e-13 +! 32 0 0 29 9.e-14 +! 32 1 1 32 3.e-13 +! 32 1 3 48 1.e-13 +! 33 0 0 36 9.e-14 +! 33 1 1 30 4.e-13 +! 33 1 3 34 1.e-13 +! 63 0 0 150 1.e-13 +! 63 1 1 91 1.e-12 +! 63 1 3 173 2.e-13 +! 64 0 0 122 1.e-13 +! 64 1 1 128 1.e-12 +! 64 1 3 199 6.e-13 +! 65 0 0 143 2.e-13 +! 65 1 1 120 1.e-12 +! 65 1 3 138 4.e-13 +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +#include "griddefs.h" + integer nperod, n, mperod, m, idimy, ierror + BIGREAL y(idimy,1) + BIGREAL w(*) ,b(*) ,a(*) ,c(*) + +! local variables + integer i, j, k, np, mp, mh, mp1, iwba, iwbb, iwbc, & + & iwb2, iwb3, iww1, iww2, iww3, iwd, iwp, iwtcos, & + & ipstor, irev, modd, mhm1, mhmi, mhpi, nby2, & + & mskip + BIGREAL a1 + +! + ierror = 0 + if (m .le. 2) ierror = 1 + if (n .le. 2) ierror = 2 + if (idimy .lt. m) ierror = 3 + if (nperod.lt.0 .or. nperod.gt.4) ierror = 4 + if (mperod.lt.0 .or. mperod.gt.1) ierror = 5 + if (mperod .eq. 1) go to 102 + do 101 i=2,m + if (a(i) .ne. c(1)) go to 103 + if (c(i) .ne. c(1)) go to 103 + if (b(i) .ne. b(1)) go to 103 + 101 continue + go to 104 + 102 if (a(1).ne.0. .or. c(m).ne.0.) ierror = 7 + go to 104 + 103 ierror = 6 + 104 if (ierror .ne. 0) return + mp1 = m+1 + iwba = mp1 + iwbb = iwba+m + iwbc = iwbb+m + iwb2 = iwbc+m + iwb3 = iwb2+m + iww1 = iwb3+m + iww2 = iww1+m + iww3 = iww2+m + iwd = iww3+m + iwtcos = iwd+m + iwp = iwtcos+4*n + do 106 i=1,m + k = iwba+i-1 + w(k) = -a(i) + k = iwbc+i-1 + w(k) = -c(i) + k = iwbb+i-1 + w(k) = 2.-b(i) + do 105 j=1,n + y(i,j) = -y(i,j) + 105 continue + 106 continue + mp = mperod+1 + np = nperod+1 + go to (114,107),mp + 107 go to (108,109,110,111,123),np + 108 call poisp2 (m,n,w(iwba),w(iwbb),w(iwbc),y,idimy,w,w(iwb2), & + & w(iwb3),w(iww1),w(iww2),w(iww3),w(iwd),w(iwtcos), & + & w(iwp)) + go to 112 + 109 call poisd2 (m,n,1,w(iwba),w(iwbb),w(iwbc),y,idimy,w,w(iww1), & + & w(iwd),w(iwtcos),w(iwp)) + go to 112 + 110 call poisn2 (m,n,1,2,w(iwba),w(iwbb),w(iwbc),y,idimy,w,w(iwb2), & + & w(iwb3),w(iww1),w(iww2),w(iww3),w(iwd),w(iwtcos), & + & w(iwp)) + go to 112 + 111 call poisn2 (m,n,1,1,w(iwba),w(iwbb),w(iwbc),y,idimy,w,w(iwb2), & + & w(iwb3),w(iww1),w(iww2),w(iww3),w(iwd),w(iwtcos), & + & w(iwp)) + 112 ipstor = w(iww1) + irev = 2 + if (nperod .eq. 4) go to 124 + 113 go to (127,133),mp + 114 continue +! +! reorder unknowns when mp =0 +! + mh = (m+1)/2 + mhm1 = mh-1 + modd = 1 + if (mh*2 .eq. m) modd = 2 + do 119 j=1,n + do 115 i=1,mhm1 + mhpi = mh+i + mhmi = mh-i + w(i) = y(mhmi,j)-y(mhpi,j) + w(mhpi) = y(mhmi,j)+y(mhpi,j) + 115 continue + w(mh) = 2.*y(mh,j) + go to (117,116),modd + 116 w(m) = 2.*y(m,j) + 117 continue + do 118 i=1,m + y(i,j) = w(i) + 118 continue + 119 continue + k = iwbc+mhm1-1 + i = iwba+mhm1 + w(k) = 0. + w(i) = 0. + w(k+1) = 2.*w(k+1) + go to (120,121),modd + 120 continue + k = iwbb+mhm1-1 + w(k) = w(k)-w(i-1) + w(iwbc-1) = w(iwbc-1)+w(iwbb-1) + go to 122 + 121 w(iwbb-1) = w(k+1) + 122 continue + go to 107 +! +! reverse columns when nperod = 4. +! + 123 irev = 1 + nby2 = n/2 + 124 do 126 j=1,nby2 + mskip = n+1-j + do 125 i=1,m + a1 = y(i,j) + y(i,j) = y(i,mskip) + y(i,mskip) = a1 + 125 continue + 126 continue + go to (110,113),irev + 127 continue + do 132 j=1,n + do 128 i=1,mhm1 + mhmi = mh-i + mhpi = mh+i + w(mhmi) = .5*(y(mhpi,j)+y(i,j)) + w(mhpi) = .5*(y(mhpi,j)-y(i,j)) + 128 continue + w(mh) = .5*y(mh,j) + go to (130,129),modd + 129 w(m) = .5*y(m,j) + 130 continue + do 131 i=1,m + y(i,j) = w(i) + 131 continue + 132 continue + 133 continue +! +! return storage requirements for w array. +! + w(1) = ipstor+iwp-1 + return + end + + subroutine poisd2 (mr,nr,istag,ba,bb,bc,q,idimq,b,w,d,tcos,p) +! +! subroutine to solve poisson's equation for dirichlet boundary +! conditions. +! +! istag = 1 if the last diagonal block is the matrix a. +! istag = 2 if the last diagonal block is the matrix a+i. +! + integer mr, nr, istag, idimq + BIGREAL q(idimq,1) ,ba(*) ,bb(*) ,bc(*) , & + & tcos(*) ,b(*) ,d(*) ,w(*) , & + & p(*) +! local variables + integer i, j, l, m, n, jsh, ip, ipstor, kr, irreg, & + & jstsav, lr, nun, jst, jsp, nodd, jp3, jm2, jp2, & + & jm1, jp1, noddpr, jm3, ip1, krpi, ideg, jdeg + BIGREAL fi, t + external merge + BIGREAL half, zero, one + parameter ( half = 0.5, zero = 0., one = 1.0 ) + + m = mr + n = nr + jsh = 0 + fi = 1./float(istag) + ip = -m + ipstor = 0 + go to (101,102),istag + 101 kr = 0 + irreg = 1 + if (n .gt. 1) go to 106 + tcos(1) = 0. + go to 103 + 102 kr = 1 + jstsav = 1 + irreg = 2 + if (n .gt. 1) go to 106 + tcos(1) = -1. + 103 do 104 i=1,m + b(i) = q(i,1) + 104 continue + call trix (1,0,m,ba,bb,bc,b,tcos,d,w) + do 105 i=1,m + q(i,1) = b(i) + 105 continue + go to 183 + 106 lr = 0 + do 107 i=1,m + p(i) = 0. + 107 continue + nun = n + jst = 1 + jsp = n +! +! irreg = 1 when no irregularities have occurred, otherwise it is 2. +! + 108 l = 2*jst + nodd = 2-2*((nun+1)/2)+nun +! +! nodd = 1 when nun is odd, otherwise it is 2. +! + go to (110,109),nodd + 109 jsp = jsp-l + go to 111 + 110 jsp = jsp-jst + if (irreg .ne. 1) jsp = jsp-l + 111 continue +! +! regular reduction +! + call cosgen (jst,1,half,one,tcos) + if (l .gt. jsp) go to 118 + do 117 j=l,jsp,l + jm1 = j-jsh + jp1 = j+jsh + jm2 = j-jst + jp2 = j+jst + jm3 = jm2-jsh + jp3 = jp2+jsh + if (jst .ne. 1) go to 113 + do 112 i=1,m + b(i) = 2.*q(i,j) + q(i,j) = q(i,jm2)+q(i,jp2) + 112 continue + go to 115 + 113 do 114 i=1,m + t = q(i,j)-q(i,jm1)-q(i,jp1)+q(i,jm2)+q(i,jp2) + b(i) = t+q(i,j)-q(i,jm3)-q(i,jp3) + q(i,j) = t + 114 continue + 115 continue + call trix (jst,0,m,ba,bb,bc,b,tcos,d,w) + do 116 i=1,m + q(i,j) = q(i,j)+b(i) + 116 continue + 117 continue +! +! reduction for last unknown +! + 118 go to (119,136),nodd + 119 go to (152,120),irreg +! +! odd number of unknowns +! + 120 jsp = jsp+l + j = jsp + jm1 = j-jsh + jp1 = j+jsh + jm2 = j-jst + jp2 = j+jst + jm3 = jm2-jsh + go to (123,121),istag + 121 continue + if (jst .ne. 1) go to 123 + do 122 i=1,m + b(i) = q(i,j) + q(i,j) = 0. + 122 continue + go to 130 + 123 go to (124,126),noddpr + 124 do 125 i=1,m + ip1 = ip+i + b(i) = .5*(q(i,jm2)-q(i,jm1)-q(i,jm3))+p(ip1)+q(i,j) + 125 continue + go to 128 + 126 do 127 i=1,m + b(i) = .5*(q(i,jm2)-q(i,jm1)-q(i,jm3))+q(i,jp2)-q(i,jp1)+q(i,j) + 127 continue + 128 do 129 i=1,m + q(i,j) = .5*(q(i,j)-q(i,jm1)-q(i,jp1)) + 129 continue + 130 call trix (jst,0,m,ba,bb,bc,b,tcos,d,w) + ip = ip+m + ipstor = max0(ipstor,ip+m) + do 131 i=1,m + ip1 = ip+i + p(ip1) = q(i,j)+b(i) + b(i) = q(i,jp2)+p(ip1) + 131 continue + if (lr .ne. 0) go to 133 + do 132 i=1,jst + krpi = kr+i + tcos(krpi) = tcos(i) + 132 continue + go to 134 + 133 continue + call cosgen (lr,jstsav,zero,fi,tcos(jst+1)) + call merge (tcos,0,jst,jst,lr,kr) + 134 continue + call cosgen (kr,jstsav,zero,fi,tcos) + call trix (kr,kr,m,ba,bb,bc,b,tcos,d,w) + do 135 i=1,m + ip1 = ip+i + q(i,j) = q(i,jm2)+b(i)+p(ip1) + 135 continue + lr = kr + kr = kr+l + go to 152 +! +! even number of unknowns +! + 136 jsp = jsp+l + j = jsp + jm1 = j-jsh + jp1 = j+jsh + jm2 = j-jst + jp2 = j+jst + jm3 = jm2-jsh + go to (137,138),irreg + 137 continue + jstsav = jst + ideg = jst + kr = l + go to 139 + 138 call cosgen (kr,jstsav,zero,fi,tcos) + call cosgen (lr,jstsav,zero,fi,tcos(kr+1)) + ideg = kr + kr = kr+jst + 139 if (jst .ne. 1) go to 141 + irreg = 2 + do 140 i=1,m + b(i) = q(i,j) + q(i,j) = q(i,jm2) + 140 continue + go to 150 + 141 do 142 i=1,m + b(i) = q(i,j)+.5*(q(i,jm2)-q(i,jm1)-q(i,jm3)) + 142 continue + go to (143,145),irreg + 143 do 144 i=1,m + q(i,j) = q(i,jm2)+.5*(q(i,j)-q(i,jm1)-q(i,jp1)) + 144 continue + irreg = 2 + go to 150 + 145 continue + go to (146,148),noddpr + 146 do 147 i=1,m + ip1 = ip+i + q(i,j) = q(i,jm2)+p(ip1) + 147 continue + ip = ip-m + go to 150 + 148 do 149 i=1,m + q(i,j) = q(i,jm2)+q(i,j)-q(i,jm1) + 149 continue + 150 call trix (ideg,lr,m,ba,bb,bc,b,tcos,d,w) + do 151 i=1,m + q(i,j) = q(i,j)+b(i) + 151 continue + 152 nun = nun/2 + noddpr = nodd + jsh = jst + jst = 2*jst + if (nun .ge. 2) go to 108 +! +! start solution. +! + j = jsp + do 153 i=1,m + b(i) = q(i,j) + 153 continue + go to (154,155),irreg + 154 continue + call cosgen (jst,1,half,zero,tcos) + ideg = jst + go to 156 + 155 kr = lr+jst + call cosgen (kr,jstsav,zero,fi,tcos) + call cosgen (lr,jstsav,zero,fi,tcos(kr+1)) + ideg = kr + 156 continue + call trix (ideg,lr,m,ba,bb,bc,b,tcos,d,w) + jm1 = j-jsh + jp1 = j+jsh + go to (157,159),irreg + 157 do 158 i=1,m + q(i,j) = .5*(q(i,j)-q(i,jm1)-q(i,jp1))+b(i) + 158 continue + go to 164 + 159 go to (160,162),noddpr + 160 do 161 i=1,m + ip1 = ip+i + q(i,j) = p(ip1)+b(i) + 161 continue + ip = ip-m + go to 164 + 162 do 163 i=1,m + q(i,j) = q(i,j)-q(i,jm1)+b(i) + 163 continue + 164 continue +! +! start back substitution. +! + jst = jst/2 + jsh = jst/2 + nun = 2*nun + if (nun .gt. n) go to 183 + do 182 j=jst,n,l + jm1 = j-jsh + jp1 = j+jsh + jm2 = j-jst + jp2 = j+jst + if (j .gt. jst) go to 166 + do 165 i=1,m + b(i) = q(i,j)+q(i,jp2) + 165 continue + go to 170 + 166 if (jp2 .le. n) go to 168 + do 167 i=1,m + b(i) = q(i,j)+q(i,jm2) + 167 continue + if (jst .lt. jstsav) irreg = 1 + go to (170,171),irreg + 168 do 169 i=1,m + b(i) = q(i,j)+q(i,jm2)+q(i,jp2) + 169 continue + 170 continue + call cosgen (jst,1,half,zero,tcos) + ideg = jst + jdeg = 0 + go to 172 + 171 if (j+l .gt. n) lr = lr-jst + kr = jst+lr + call cosgen (kr,jstsav,zero,fi,tcos) + call cosgen (lr,jstsav,zero,fi,tcos(kr+1)) + ideg = kr + jdeg = lr + 172 continue + call trix (ideg,jdeg,m,ba,bb,bc,b,tcos,d,w) + if (jst .gt. 1) go to 174 + do 173 i=1,m + q(i,j) = b(i) + 173 continue + go to 182 + 174 if (jp2 .gt. n) go to 177 + 175 do 176 i=1,m + q(i,j) = .5*(q(i,j)-q(i,jm1)-q(i,jp1))+b(i) + 176 continue + go to 182 + 177 go to (175,178),irreg + 178 if (j+jsh .gt. n) go to 180 + do 179 i=1,m + ip1 = ip+i + q(i,j) = b(i)+p(ip1) + 179 continue + ip = ip-m + go to 182 + 180 do 181 i=1,m + q(i,j) = b(i)+q(i,j)-q(i,jm1) + 181 continue + 182 continue + l = l/2 + go to 164 + 183 continue +! +! return storage requirements for p vectors. +! + w(1) = ipstor + return + end + + subroutine poisn2 (m,n,istag,mixbnd,a,bb,c,q,idimq,b,b2,b3,w,w2, & + & w3,d,tcos,p) +! +! subroutine to solve poisson's equation with neumann boundary +! conditions. +! +! istag = 1 if the last diagonal block is a. +! istag = 2 if the last diagonal block is a-i. +! mixbnd = 1 if have neumann boundary conditions at both boundaries. +! mixbnd = 2 if have neumann boundary conditions at bottom and +! dirichlet condition at top. (for this case, must have istag = 1.) +! + integer m, n, istag, mixbnd, idimq + BIGREAL a(*) ,bb(*) ,c(*) ,q(idimq,*) , & + & b(*) ,b2(*) ,b3(*) ,w(*) , & + & w2(*) ,w3(*) ,d(*) ,tcos(*) , & + & p(*) +! local variables + integer i, j, k(4), k1, k2, k3, k4, mr, ipstor, i2r, jr, & + & nr, nlast, kr, lr, jstop, jp3, jp2, i2rby2, jm1, & + & jp1, jm2, jm3, nrodpr, ii, ip, i1, i2, jr2, & + & nlastp, jstep, nrod, jstart + BIGREAL fistag, fnum, fden, fi, t + equivalence (k(1),k1) ,(k(2),k2) ,(k(3),k3) ,(k(4),k4) + external merge + BIGREAL half, zero, one + parameter ( half = 0.5, zero = 0., one = 1.0 ) + + fistag = 3-istag + fnum = 1./float(istag) + fden = 0.5*float(istag-1) + mr = m + ip = -mr + ipstor = 0 + i2r = 1 + jr = 2 + nr = n + nlast = n + kr = 1 + lr = 0 + go to (101,103),istag + 101 continue + do 102 i=1,mr + q(i,n) = .5*q(i,n) + 102 continue + go to (103,104),mixbnd + 103 if (n .le. 3) go to 155 + 104 continue + jr = 2*i2r + nrod = 1 + if ((nr/2)*2 .eq. nr) nrod = 0 + go to (105,106),mixbnd + 105 jstart = 1 + go to 107 + 106 jstart = jr + nrod = 1-nrod + 107 continue + jstop = nlast-jr + if (nrod .eq. 0) jstop = jstop-i2r + call cosgen (i2r,1,half,zero,tcos) + i2rby2 = i2r/2 + if (jstop .ge. jstart) go to 108 + j = jr + go to 116 + 108 continue +! +! regular reduction. +! + do 115 j=jstart,jstop,jr + jp1 = j+i2rby2 + jp2 = j+i2r + jp3 = jp2+i2rby2 + jm1 = j-i2rby2 + jm2 = j-i2r + jm3 = jm2-i2rby2 + if (j .ne. 1) go to 109 + jm1 = jp1 + jm2 = jp2 + jm3 = jp3 + 109 continue + if (i2r .ne. 1) go to 111 + if (j .eq. 1) jm2 = jp2 + do 110 i=1,mr + b(i) = 2.*q(i,j) + q(i,j) = q(i,jm2)+q(i,jp2) + 110 continue + go to 113 + 111 continue + do 112 i=1,mr + fi = q(i,j) + q(i,j) = q(i,j)-q(i,jm1)-q(i,jp1)+q(i,jm2)+q(i,jp2) + b(i) = fi+q(i,j)-q(i,jm3)-q(i,jp3) + 112 continue + 113 continue + call trix (i2r,0,mr,a,bb,c,b,tcos,d,w) + do 114 i=1,mr + q(i,j) = q(i,j)+b(i) + 114 continue +! +! end of reduction for regular unknowns. +! + 115 continue +! +! begin special reduction for last unknown. +! + j = jstop+jr + 116 nlast = j + jm1 = j-i2rby2 + jm2 = j-i2r + jm3 = jm2-i2rby2 + if (nrod .eq. 0) go to 128 +! +! odd number of unknowns +! + if (i2r .ne. 1) go to 118 + do 117 i=1,mr + b(i) = fistag*q(i,j) + q(i,j) = q(i,jm2) + 117 continue + go to 126 + 118 do 119 i=1,mr + b(i) = q(i,j)+.5*(q(i,jm2)-q(i,jm1)-q(i,jm3)) + 119 continue + if (nrodpr .ne. 0) go to 121 + do 120 i=1,mr + ii = ip+i + q(i,j) = q(i,jm2)+p(ii) + 120 continue + ip = ip-mr + go to 123 + 121 continue + do 122 i=1,mr + q(i,j) = q(i,j)-q(i,jm1)+q(i,jm2) + 122 continue + 123 if (lr .eq. 0) go to 124 + call cosgen (lr,1,half,fden,tcos(kr+1)) + go to 126 + 124 continue + do 125 i=1,mr + b(i) = fistag*b(i) + 125 continue + 126 continue + call cosgen (kr,1,half,fden,tcos) + call trix (kr,lr,mr,a,bb,c,b,tcos,d,w) + do 127 i=1,mr + q(i,j) = q(i,j)+b(i) + 127 continue + kr = kr+i2r + go to 151 + 128 continue +! +! even number of unknowns +! + jp1 = j+i2rby2 + jp2 = j+i2r + if (i2r .ne. 1) go to 135 + do 129 i=1,mr + b(i) = q(i,j) + 129 continue + call trix (1,0,mr,a,bb,c,b,tcos,d,w) + ip = 0 + ipstor = mr + go to (133,130),istag + 130 do 131 i=1,mr + p(i) = b(i) + b(i) = b(i)+q(i,n) + 131 continue + tcos(1) = 1. + tcos(2) = 0. + call trix (1,1,mr,a,bb,c,b,tcos,d,w) + do 132 i=1,mr + q(i,j) = q(i,jm2)+p(i)+b(i) + 132 continue + go to 150 + 133 continue + do 134 i=1,mr + p(i) = b(i) + q(i,j) = q(i,jm2)+2.*q(i,jp2)+3.*b(i) + 134 continue + go to 150 + 135 continue + do 136 i=1,mr + b(i) = q(i,j)+.5*(q(i,jm2)-q(i,jm1)-q(i,jm3)) + 136 continue + if (nrodpr .ne. 0) go to 138 + do 137 i=1,mr + ii = ip+i + b(i) = b(i)+p(ii) + 137 continue + go to 140 + 138 continue + do 139 i=1,mr + b(i) = b(i)+q(i,jp2)-q(i,jp1) + 139 continue + 140 continue + call trix (i2r,0,mr,a,bb,c,b,tcos,d,w) + ip = ip+mr + ipstor = max0(ipstor,ip+mr) + do 141 i=1,mr + ii = ip+i + p(ii) = b(i)+.5*(q(i,j)-q(i,jm1)-q(i,jp1)) + b(i) = p(ii)+q(i,jp2) + 141 continue + if (lr .eq. 0) go to 142 + call cosgen (lr,1,half,fden,tcos(i2r+1)) + call merge (tcos,0,i2r,i2r,lr,kr) + go to 144 + 142 do 143 i=1,i2r + ii = kr+i + tcos(ii) = tcos(i) + 143 continue + 144 call cosgen (kr,1,half,fden,tcos) + if (lr .ne. 0) go to 145 + go to (146,145),istag + 145 continue + call trix (kr,kr,mr,a,bb,c,b,tcos,d,w) + go to 148 + 146 continue + do 147 i=1,mr + b(i) = fistag*b(i) + 147 continue + 148 continue + do 149 i=1,mr + ii = ip+i + q(i,j) = q(i,jm2)+p(ii)+b(i) + 149 continue + 150 continue + lr = kr + kr = kr+jr + 151 continue + go to (152,153),mixbnd + 152 nr = (nlast-1)/jr+1 + if (nr .le. 3) go to 155 + go to 154 + 153 nr = nlast/jr + if (nr .le. 1) go to 192 + 154 i2r = jr + nrodpr = nrod + go to 104 + 155 continue +! +! begin solution +! + j = 1+jr + jm1 = j-i2r + jp1 = j+i2r + jm2 = nlast-i2r + if (nr .eq. 2) go to 184 + if (lr .ne. 0) go to 170 + if (n .ne. 3) go to 161 +! +! case n = 3. +! + go to (156,168),istag + 156 continue + do 157 i=1,mr + b(i) = q(i,2) + 157 continue + tcos(1) = 0. + call trix (1,0,mr,a,bb,c,b,tcos,d,w) + do 158 i=1,mr + q(i,2) = b(i) + b(i) = 4.*b(i)+q(i,1)+2.*q(i,3) + 158 continue + tcos(1) = -2. + tcos(2) = 2. + i1 = 2 + i2 = 0 + call trix (i1,i2,mr,a,bb,c,b,tcos,d,w) + do 159 i=1,mr + q(i,2) = q(i,2)+b(i) + b(i) = q(i,1)+2.*q(i,2) + 159 continue + tcos(1) = 0. + call trix (1,0,mr,a,bb,c,b,tcos,d,w) + do 160 i=1,mr + q(i,1) = b(i) + 160 continue + jr = 1 + i2r = 0 + go to 194 +! +! case n = 2**p+1 +! + 161 continue + go to (162,170),istag + 162 continue + do 163 i=1,mr + b(i) = q(i,j)+.5*q(i,1)-q(i,jm1)+q(i,nlast)-q(i,jm2) + 163 continue + call cosgen (jr,1,half,zero,tcos) + call trix (jr,0,mr,a,bb,c,b,tcos,d,w) + do 164 i=1,mr + q(i,j) = .5*(q(i,j)-q(i,jm1)-q(i,jp1))+b(i) + b(i) = q(i,1)+2.*q(i,nlast)+4.*q(i,j) + 164 continue + jr2 = 2*jr + call cosgen (jr,1,zero,zero,tcos) + do 165 i=1,jr + i1 = jr+i + i2 = jr+1-i + tcos(i1) = -tcos(i2) + 165 continue + call trix (jr2,0,mr,a,bb,c,b,tcos,d,w) + do 166 i=1,mr + q(i,j) = q(i,j)+b(i) + b(i) = q(i,1)+2.*q(i,j) + 166 continue + call cosgen (jr,1,half,zero,tcos) + call trix (jr,0,mr,a,bb,c,b,tcos,d,w) + do 167 i=1,mr + q(i,1) = .5*q(i,1)-q(i,jm1)+b(i) + 167 continue + go to 194 +! +! case of general n with nr = 3 . +! + 168 do 169 i=1,mr + b(i) = q(i,2) + q(i,2) = 0. + b2(i) = q(i,3) + b3(i) = q(i,1) + 169 continue + jr = 1 + i2r = 0 + j = 2 + go to 177 + 170 continue + do 171 i=1,mr + b(i) = .5*q(i,1)-q(i,jm1)+q(i,j) + 171 continue + if (nrod .ne. 0) go to 173 + do 172 i=1,mr + ii = ip+i + b(i) = b(i)+p(ii) + 172 continue + go to 175 + 173 do 174 i=1,mr + b(i) = b(i)+q(i,nlast)-q(i,jm2) + 174 continue + 175 continue + do 176 i=1,mr + t = .5*(q(i,j)-q(i,jm1)-q(i,jp1)) + q(i,j) = t + b2(i) = q(i,nlast)+t + b3(i) = q(i,1)+2.*t + 176 continue + 177 continue + k1 = kr+2*jr-1 + k2 = kr+jr + tcos(k1+1) = -2. + k4 = k1+3-istag + call cosgen (k2+istag-2,1,zero,fnum,tcos(k4)) + k4 = k1+k2+1 + call cosgen (jr-1,1,zero,one,tcos(k4)) + call merge (tcos,k1,k2,k1+k2,jr-1,0) + k3 = k1+k2+lr + call cosgen (jr,1,half,zero,tcos(k3+1)) + k4 = k3+jr+1 + call cosgen (kr,1,half,fden,tcos(k4)) + call merge (tcos,k3,jr,k3+jr,kr,k1) + if (lr .eq. 0) go to 178 + call cosgen (lr,1,half,fden,tcos(k4)) + call merge (tcos,k3,jr,k3+jr,lr,k3-lr) + call cosgen (kr,1,half,fden,tcos(k4)) + 178 k3 = kr + k4 = kr + call tri3 (mr,a,bb,c,k,b,b2,b3,tcos,d,w,w2,w3) + do 179 i=1,mr + b(i) = b(i)+b2(i)+b3(i) + 179 continue + tcos(1) = 2. + call trix (1,0,mr,a,bb,c,b,tcos,d,w) + do 180 i=1,mr + q(i,j) = q(i,j)+b(i) + b(i) = q(i,1)+2.*q(i,j) + 180 continue + call cosgen (jr,1,half,zero,tcos) + call trix (jr,0,mr,a,bb,c,b,tcos,d,w) + if (jr .ne. 1) go to 182 + do 181 i=1,mr + q(i,1) = b(i) + 181 continue + go to 194 + 182 continue + do 183 i=1,mr + q(i,1) = .5*q(i,1)-q(i,jm1)+b(i) + 183 continue + go to 194 + 184 continue + if (n .ne. 2) go to 188 +! +! case n = 2 +! + do 185 i=1,mr + b(i) = q(i,1) + 185 continue + tcos(1) = 0. + call trix (1,0,mr,a,bb,c,b,tcos,d,w) + do 186 i=1,mr + q(i,1) = b(i) + b(i) = 2.*(q(i,2)+b(i))*fistag + 186 continue + tcos(1) = -fistag + tcos(2) = 2. + call trix (2,0,mr,a,bb,c,b,tcos,d,w) + do 187 i=1,mr + q(i,1) = q(i,1)+b(i) + 187 continue + jr = 1 + i2r = 0 + go to 194 + 188 continue +! +! case of general n and nr = 2 . +! + do 189 i=1,mr + ii = ip+i + b3(i) = 0. + b(i) = q(i,1)+2.*p(ii) + q(i,1) = .5*q(i,1)-q(i,jm1) + b2(i) = 2.*(q(i,1)+q(i,nlast)) + 189 continue + k1 = kr+jr-1 + tcos(k1+1) = -2. + k4 = k1+3-istag + call cosgen (kr+istag-2,1,zero,fnum,tcos(k4)) + k4 = k1+kr+1 + call cosgen (jr-1,1,zero,one,tcos(k4)) + call merge (tcos,k1,kr,k1+kr,jr-1,0) + call cosgen (kr,1,half,fden,tcos(k1+1)) + k2 = kr + k4 = k1+k2+1 + call cosgen (lr,1,half,fden,tcos(k4)) + k3 = lr + k4 = 0 + call tri3 (mr,a,bb,c,k,b,b2,b3,tcos,d,w,w2,w3) + do 190 i=1,mr + b(i) = b(i)+b2(i) + 190 continue + tcos(1) = 2. + call trix (1,0,mr,a,bb,c,b,tcos,d,w) + do 191 i=1,mr + q(i,1) = q(i,1)+b(i) + 191 continue + go to 194 + 192 do 193 i=1,mr + b(i) = q(i,nlast) + 193 continue + go to 196 + 194 continue +! +! start back substitution. +! + j = nlast-jr + do 195 i=1,mr + b(i) = q(i,nlast)+q(i,j) + 195 continue + 196 jm2 = nlast-i2r + if (jr .ne. 1) go to 198 + do 197 i=1,mr + q(i,nlast) = 0. + 197 continue + go to 202 + 198 continue + if (nrod .ne. 0) go to 200 + do 199 i=1,mr + ii = ip+i + q(i,nlast) = p(ii) + 199 continue + ip = ip-mr + go to 202 + 200 do 201 i=1,mr + q(i,nlast) = q(i,nlast)-q(i,jm2) + 201 continue + 202 continue + call cosgen (kr,1,half,fden,tcos) + call cosgen (lr,1,half,fden,tcos(kr+1)) + if (lr .ne. 0) go to 204 + do 203 i=1,mr + b(i) = fistag*b(i) + 203 continue + 204 continue + call trix (kr,lr,mr,a,bb,c,b,tcos,d,w) + do 205 i=1,mr + q(i,nlast) = q(i,nlast)+b(i) + 205 continue + nlastp = nlast + 206 continue + jstep = jr + jr = i2r + i2r = i2r/2 + if (jr .eq. 0) go to 222 + go to (207,208),mixbnd + 207 jstart = 1+jr + go to 209 + 208 jstart = jr + 209 continue + kr = kr-jr + if (nlast+jr .gt. n) go to 210 + kr = kr-jr + nlast = nlast+jr + jstop = nlast-jstep + go to 211 + 210 continue + jstop = nlast-jr + 211 continue + lr = kr-jr + call cosgen (jr,1,half,zero,tcos) + do 221 j=jstart,jstop,jstep + jm2 = j-jr + jp2 = j+jr + if (j .ne. jr) go to 213 + do 212 i=1,mr + b(i) = q(i,j)+q(i,jp2) + 212 continue + go to 215 + 213 continue + do 214 i=1,mr + b(i) = q(i,j)+q(i,jm2)+q(i,jp2) + 214 continue + 215 continue + if (jr .ne. 1) go to 217 + do 216 i=1,mr + q(i,j) = 0. + 216 continue + go to 219 + 217 continue + jm1 = j-i2r + jp1 = j+i2r + do 218 i=1,mr + q(i,j) = .5*(q(i,j)-q(i,jm1)-q(i,jp1)) + 218 continue + 219 continue + call trix (jr,0,mr,a,bb,c,b,tcos,d,w) + do 220 i=1,mr + q(i,j) = q(i,j)+b(i) + 220 continue + 221 continue + nrod = 1 + if (nlast+i2r .le. n) nrod = 0 + if (nlastp .ne. nlast) go to 194 + go to 206 + 222 continue +! +! return storage requirements for p vectors. +! + w(1) = ipstor + return + end + + subroutine poisp2 (m,n,a,bb,c,q,idimq,b,b2,b3,w,w2,w3,d,tcos,p) +! +! subroutine to solve poisson equation with periodic boundary +! conditions. +! + integer m, n, idimq + BIGREAL a(*) ,bb(*) ,c(*) ,q(idimq,1) , & + & b(*) ,b2(*) ,b3(*) ,w(*) , & + & w2(*) ,w3(*) ,d(*) ,tcos(*) , & + & p(*) +! local variables + integer i, j, mr, nr, nrm1, nrmj, nrpj, ipstor, lh + BIGREAL s, t + + mr = m + nr = (n+1)/2 + nrm1 = nr-1 + if (2*nr .ne. n) go to 107 +! +! even number of unknowns +! + do 102 j=1,nrm1 + nrmj = nr-j + nrpj = nr+j + do 101 i=1,mr + s = q(i,nrmj)-q(i,nrpj) + t = q(i,nrmj)+q(i,nrpj) + q(i,nrmj) = s + q(i,nrpj) = t + 101 continue + 102 continue + do 103 i=1,mr + q(i,nr) = 2.*q(i,nr) + q(i,n) = 2.*q(i,n) + 103 continue + call poisd2 (mr,nrm1,1,a,bb,c,q,idimq,b,w,d,tcos,p) + ipstor = w(1) + call poisn2 (mr,nr+1,1,1,a,bb,c,q(1,nr),idimq,b,b2,b3,w,w2,w3,d, & + & tcos,p) + ipstor = max0(ipstor,int(w(1))) + do 105 j=1,nrm1 + nrmj = nr-j + nrpj = nr+j + do 104 i=1,mr + s = .5*(q(i,nrpj)+q(i,nrmj)) + t = .5*(q(i,nrpj)-q(i,nrmj)) + q(i,nrmj) = s + q(i,nrpj) = t + 104 continue + 105 continue + do 106 i=1,mr + q(i,nr) = .5*q(i,nr) + q(i,n) = .5*q(i,n) + 106 continue + go to 118 + 107 continue +! +! odd number of unknowns +! + do 109 j=1,nrm1 + nrpj = n+1-j + do 108 i=1,mr + s = q(i,j)-q(i,nrpj) + t = q(i,j)+q(i,nrpj) + q(i,j) = s + q(i,nrpj) = t + 108 continue + 109 continue + do 110 i=1,mr + q(i,nr) = 2.*q(i,nr) + 110 continue + lh = nrm1/2 + do 112 j=1,lh + nrmj = nr-j + do 111 i=1,mr + s = q(i,j) + q(i,j) = q(i,nrmj) + q(i,nrmj) = s + 111 continue + 112 continue + call poisd2 (mr,nrm1,2,a,bb,c,q,idimq,b,w,d,tcos,p) + ipstor = w(1) + call poisn2 (mr,nr,2,1,a,bb,c,q(1,nr),idimq,b,b2,b3,w,w2,w3,d, & + & tcos,p) + ipstor = max0(ipstor,int(w(1))) + do 114 j=1,nrm1 + nrpj = nr+j + do 113 i=1,mr + s = .5*(q(i,nrpj)+q(i,j)) + t = .5*(q(i,nrpj)-q(i,j)) + q(i,nrpj) = t + q(i,j) = s + 113 continue + 114 continue + do 115 i=1,mr + q(i,nr) = .5*q(i,nr) + 115 continue + do 117 j=1,lh + nrmj = nr-j + do 116 i=1,mr + s = q(i,j) + q(i,j) = q(i,nrmj) + q(i,nrmj) = s + 116 continue + 117 continue + 118 continue +! +! return storage requirements for p vectors. +! + w(1) = ipstor + return +! +! revision history--- +! +! september 1973 version 1 +! april 1976 version 2 +! january 1978 version 3 +! december 1979 version 3.1 +! february 1985 documentation upgrade +! november 1988 version 3.2, fortran 77 changes +! june 1993 BIGREAL stuff added +!----------------------------------------------------------------------- + end + diff --git a/Utility/geodesic_dist.F b/Utility/geodesic_dist.F new file mode 100644 index 0000000..3a94d04 --- /dev/null +++ b/Utility/geodesic_dist.F @@ -0,0 +1,195 @@ + subroutine geodesic_dist (lon1,lat1,lon2,lat2,flag,dist,alpha) +! +!======================================================================= +! == +! Inverse, non-iterative solutions for distance and geodesic azimuth == +! between two points on the ellipsoid (The Earth) from the equations,== +! second order in spheroidal flatttening, given by: == +! == +! Sodano , E.M., and T. Robinson, 1963: Direct and inverse solutions == +! of geodesics, Army Map Service Technical Report No. 7, AD 657591. == +! == +! On input: Longitude is positive to the east and negative to the == +! west. Latitude is positive to the north and negative == +! to the south. == +! == +! LON1 Longitude point 1 (decimal degrees, real*8) == +! LAT1 Latitude point 1 (decimal degrees, real*8) == +! LON2 Longitude point 2 (decimal degrees, real*8) == +! LAT2 Latitude point 2 (decimal degrees, real*8) == +! FLAG flag for distance units on output (integer) == +! == +! On output: == +! == +! GALPHA Geodesic azimuth from point 1 to point 2 clockwise from == +! North (decimal degrees, real*8) == +! GDIST Geodesic distance between point 1 and point 2 (real*8) == +! == +! Units of distance == +! == +! Flag Units == +! ------ ------- == +! 1 Meters == +! 2 Nautical Miles == +! 3 Feet == +! 4 Kilometers == +! 5 Statute Mile == +! == +!======================================================================= +! +#include "griddefs.h" +! +!----------------------------------------------------------------------- +! Define local data +!----------------------------------------------------------------------- +! + logical first + integer flag + BIGREAL alpha, dist, lat1, lat2, lon1, lon2, r_lat1, r_lat2, & + & delta, l, beta1, beta2, a, b, c, ct, st, t, m, sob, & + & lambda, cott, adist + BIGREAL c0, c1, c4, c90, c180, c360, deg2rad, pi, rad2deg, smin + parameter (c0=0.d0, c1=1.0d0, c4=4.0d0, c90=90.0d0, & + & c180=180.0d0, c360=360.0d0 ) +#if ELLIPSOID + BIGREAL f, smaj, q, w, x, y, z, p5, p0625, p125, p25, c5 + parameter (c5=5.0d0, p5=0.5d0, p25=0.25d0, p125=0.125d0, & + & p0625=0.0625d0 ) + save f, smaj +#endif /* ELLIPSOID */ + save deg2rad, pi, rad2deg, smin + data first /.true./ +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +! Define parameters on first pass (SMIN: Ellipsoid semi-minor axis in +! meters; SMAJ: Ellipsoid semi-major axis in meters; F: spheroidal +! flattening). +! + if (first) then + smin = 6356750.52d0 +#if ELLIPSOID + smaj = 6378135.0d0 + f = c1-(smin/smaj) +#endif /* ELLIPSOID */ + pi = c4*atan(c1) + deg2rad = pi/c180 + rad2deg = c180/pi + first = .false. + endif +! +! Determine proper longitudinal shift. +! + delta = lon2-lon1 + l = abs(delta) + if (l.ge.c180) l = c360-abs(lon1-lon2) +! +! Convert Decimal degrees to radians. +! + r_lat1 = lat1*deg2rad + r_lat2 = lat2*deg2rad + l = l*deg2rad +! +! Calculate S/Bo subformulas. +! +#if ELLIPSOID + beta1 = atan(tan(r_lat1)*(c1-f)) + beta2 = atan(tan(r_lat2)*(c1-f)) + a = sin(beta1)*sin(beta2) + b = cos(beta1)*cos(beta2) + ct = a+b*cos(l) + st = sqrt(((sin(l)*cos(beta2))**2)+(((sin(beta2)*cos(beta1)) & + & -(sin(beta1)*cos(beta2)*cos(l)))**2)) + t = asin(st) + c = (b*sin(l))/st + m = c1-(c*c) +#else + beta1 = r_lat1 + beta2 = r_lat2 + a = sin(beta1)*sin(beta2) + b = cos(beta1)*cos(beta2) + ct = a+b*cos(l) + st = sqrt(((sin(l)*cos(beta2))**2)+(((sin(beta2)*cos(beta1)) & + & -(sin(beta1)*cos(beta2)*cos(l)))**2)) + t = asin(st) + c = (b*sin(l))/st + m = c1-(c*c) +#endif /* ELLIPSOID */ +! +! Calculate S/Bo term. +! +#if ELLIPSOID + q = f+(f*f) + z = f*f*p5 + x = f*f*p0625 + y = f*f*p125 + w = f*f*p25 +! + sob = ((c1+q)*t)+(a*((q*st)-(z*(t*t)*(c1/sin(t))))) & + & +(m*(((-q*p5)*t)-((q*p5)*st*ct)+(z*(t*t)*(c1/tan(t))))) & + & +((a**2)*(-z*st*ct)) & + & +((m**2)*((x*t)+(x*st*ct)-(z*(t*t)*(c1/tan(t))) & + & -(y*st*(ct*ct*ct)))) & + & +((a*m)*((z*(t*t)*(c1/sin(t)))+(z*st*(ct*ct)))) +#else + sob = t +#endif /* ELLIPSOID */ +! +! Compute geodesic azimuth from point 1 to point 2 clockwise from +! North, alpha. +! +#if ELLIPSOID + lambda = q*t+a*(-z*st-f*f*t*t/sin(t)) & + & +m*(-c5*w*t+w*st*cos(t)+f*f*t*t/tan(t)) + lambda = c*lambda+l +#else + lambda = l +#endif /* ELLIPSOID */ + if (lambda.eq.c0) then + if (lat1.lt.lat2) alpha = c0 + if (lat1.gt.lat2) alpha = c180 + goto 1 + endif +! + cott = (sin(beta2)*cos(beta1)- & + & cos(lambda)*sin(beta1)*cos(beta2))/ & + & (sin(lambda)*cos(beta2)) + if (cott.eq.c0) then + alpha = c90 + else + alpha = atan(c1/cott)*rad2deg + endif + +! Compute heading from point#1 to point#2 clockwise from north + + if (delta .gt. 0.d0) then + if (cott .gt. 0.d0) then + alpha = alpha ! first quadrant + else if (cott .lt. 0.d0) then + alpha = 180.d0 + alpha ! second quadrant + end if + end if + if (delta .lt. 0.d0) then + if (cott .lt. 0.d0) then + alpha = 180.d0 - alpha ! third quadrant + else if (cott .gt. 0.d0) then + alpha = 360.d0 - alpha ! fourth quadrant + end if + end if + +! Calculate distance from point 1 to point 2 + + 1 adist = sob * smin + +! Check flag for proper output units + + if (flag .eq. 1) dist = adist ! meters + if (flag .eq. 2) dist = adist * 5.396d-4 ! nautical miles + if (flag .eq. 3) dist = adist * 3.281d0 ! feed + if (flag .eq. 4) dist = adist * 1.d-3 ! kilometers + if (flag .eq. 5) dist = adist * 6.214d-4 ! statute mile + + return + end diff --git a/Utility/get_date.F b/Utility/get_date.F new file mode 100644 index 0000000..9e5c0bb --- /dev/null +++ b/Utility/get_date.F @@ -0,0 +1,287 @@ +#include "griddefs.h" + subroutine get_date (date_str) +! +!======================================================================= +! Copyright (c) 1996 Rutgers University === +!======================================================================= +! === +! This routine gets todays date, day of the week and time called === +! (default month & weekday are December & Saturday respectively). === +! It uses SUN intrinsic date routine by default. === +! === +! On Output: === +! === +! date_str Concatenated string for the day of the week, date === +! (month,day,year), and time (12hr clock) of day === +! (hour:min:sec). === +! === +#ifdef cray +! Calls: day_code === +# else +! Calls: none === +#endif +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define local data. +!----------------------------------------------------------------------- +! + integer dstat, half, hour, iday, imon, len1, len2, len3, min, & + & nday, sec, tstat, year + integer lday(31), lmonth(12) +#if defined cray + integer century + parameter (century=1900) + character*8 tstring +#elif defined sun + character*3 day3, mon + character*28 fdate, tmpday +#elif AIX + character*3 day3, mon + character*28 tmpday +#endif + character*3 ampm(0:1) + character*9 day(0:6),month(12) + character*11 ctime + character*18 today + character*20 fmt + character*44 date_str,wkday + data ampm /' AM',' PM'/ + data day /'Sunday','Monday','Tuesday','Wednesday','Thursday', & + & 'Friday','Saturday'/ + data lmonth, lday /7,8,5,5,3,4,4,6,9,7,8,8,9*1,22*2/ + data month /'January','February','March','April','May','June', & + & 'July','August','September','October','November', & + & 'December'/ +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +!----------------------------------------------------------------------- +! Get weekday, date and time in short format, then extract this +! information. +!----------------------------------------------------------------------- +! +#if defined vax + dstat=0 + call idate (imon,nday,year) + year=year+century + call time (tstring) + read(tstring,'(i2,1x,i2,1x,i2)',iostat=tstat) hour, min, sec + if(tstat.ne.0) ctime=tstring +#elif defined cray + write(tstring,'(a8)') date() + read(tstring,'(i2,1x,i2,1x,i2)',iostat=dstat) imon, nday, year + year=year+century + if(dstat.ne.0) then + wkday=tstring + today=' ' + endif + write(tstring,'(a8)') clock() + read(tstring,'(i2,1x,i2,1x,i2)',iostat=tstat) hour, min, sec + if(tstat.ne.0) ctime=tstring +#elif defined sun + tmpday=fdate() + read(tmpday,'(a3,1x,a3,1x,i2)',iostat=dstat) day3, mon, nday + read(tmpday,'(11x,i2,1x,i2,1x,i2)',iostat=tstat) hour, min, sec + tstat=max(abs(dstat),abs(tstat)) + read(tmpday,'(20x,i4)',iostat=dstat) year + if((dstat.ne.0).or.(tstat.ne.0)) then + dstat=1 + tstat=1 + wkday=tmpday + today=' ' + ctime=' ' + endif +#elif AIX + call fdate_(tmpday) + read(tmpday,'(a3,1x,a3,1x,i2)',iostat=dstat) day3, mon, nday + read(tmpday,'(11x,i2,1x,i2,1x,i2)',iostat=tstat) hour, min, sec + tstat=max(abs(dstat),abs(tstat)) + read(tmpday,'(20x,i4)',iostat=dstat) year + if((dstat.ne.0).or.(tstat.ne.0)) then + dstat=1 + tstat=1 + wkday=tmpday + today=' ' + ctime=' ' + endif +#else + dstat=1 + tstat=1 + wkday=' ' + today=' ' + ctime=' ' +#endif +! +!----------------------------------------------------------------------- +! Convert from 24 hour clock to 12 hour AM/PM clock. +!----------------------------------------------------------------------- +! + if (tstat.eq.0) then + half=hour/12 + hour=hour-half*12 + if (hour.eq.0) hour=12 + if (half.eq.2) half=0 + endif +! + if (dstat.eq.0) then +! +#if defined vax || defined cray +!----------------------------------------------------------------------- +! Get index for the day of the week. +!----------------------------------------------------------------------- +! + call day_code (imon,nday,year,iday) +#elif defined sun || AIX +!----------------------------------------------------------------------- +! Loop to find full day name by comparing DAY3 with first 3 letters +! of day. +!----------------------------------------------------------------------- +! + iday=0 + do while ((day3.ne.day(iday)(1:3)).and.(iday.lt.6)) + iday=iday+1 + enddo +! +!----------------------------------------------------------------------- +! Loop to find full month name by comparing MON with first 3 letters +! of month. +!----------------------------------------------------------------------- +! + imon=1 + do while ((mon.ne.month(imon)(1:3)).and.(imon.lt.12)) + imon=imon+1 + enddo +#endif +! +!----------------------------------------------------------------------- +! Construct date, time and day of the week output string. +!----------------------------------------------------------------------- +! + write(fmt,10) lmonth(imon), lday(nday) + 10 format('(a',i1,',1x,i',i1,',1h,,1x,i4)') + write(today,fmt) month(imon),nday,year + wkday=day(iday) + endif + if(tstat.eq.0) then + write(ctime,20) hour, min, sec, ampm(half) + 20 format(i2,':',i2.2,':',i2.2,a3) + endif +! +! Concatenate date string. +! + date_str=TRIM(wkday) + if (LEN_TRIM(today).gt.0) then + date_str=date_str//' - '//TRIM(today) + endif + if (LEN_TRIM(ctime).gt.0) then + date_str=date_str//' - '//TRIM(ctime) + endif + return + end + + subroutine day_code (month,day,year,code) +! +!======================================================================= +! Copyright (c) 1996 Rutgers University === +!======================================================================= +! === +! This subroutine computes a code for the day of the week, given === +! the date. This code is good for date after: === +! === +! January 1, 1752 AD === +! === +! the year the Gregorian calander was adopted in Britian and the === +! American colonies. === +! === +! On Input: === +! === +! month The month, 1=January, 2=February, ... (integer). === +! day The day of the month (integer). === +! year The year, including the century (integer). === +! === +! On Output: === +! === +! code A code for the corresponding day of the week === +! (integer): === +! code = 0 => Sunday === +! code = 1 => Monday === +! code = 2 => Tuesday === +! code = 3 => Wednesday === +! code = 4 => Thursday === +! code = 5 => Friday === +! code = 6 => Saturday === +! === +! Calls: none === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define local variables. +!----------------------------------------------------------------------- +! + logical leap_flag + integer base_cen, base_qcen, base_qyear, base_year, bym1_dec31, & + & code, day,feb_end, i, leap, month, no_day, no_yr, nqy,nyc, & + & nyqc, year + integer month_day(12) + parameter (base_cen=1700, base_qcen=1600, base_qyear=1748, & + & base_year=1752, bym1_dec31=5, feb_end=59) + data month_day /31,28,31,30,31,30,31,31,30,31,30,31/ +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +!----------------------------------------------------------------------- +! Compute the number of years since the base year, the number of +! years since the beginning of the base century and the number of +! years since the beginning of the base 400 year. +!----------------------------------------------------------------------- +! + no_yr=year-base_year + nqy=year-base_qyear + nyc=year-base_cen + nyqc=year-base_qcen +! +!----------------------------------------------------------------------- +! Compute the number of leapdays in that time. Determine if this +! is a leap year. +!----------------------------------------------------------------------- +! + leap=nqy/4-nyc/100+nyqc/400 + leap_flag=((mod(nqy,4).eq.0).and.(mod(nyc,100).ne.0)).or. & + & (mod(nyqc,400).eq.0) +! +!----------------------------------------------------------------------- +! Compute the number of days this year. The leap year corrections +! are: +! Jan. 1 - Feb. 28 Have not had the leap day counted above. +! Feb.29 Counting leap day twice. +!----------------------------------------------------------------------- +! + no_day=day + do i=1,month-1 + no_day=no_day+month_day(i) + enddo + if (leap_flag.and.(no_day.le.feb_end)) no_day=no_day-1 + if (leap_flag.and.(month.eq.2).and.(day.eq.29)) no_day=no_day-1 +! +!----------------------------------------------------------------------- +! Compute the total number of days since Jan. 1 of the base year, +! exclusive of the 364 day per year which represent an even 52 +! weeks. Actually, only need to do the addition mod 7. +!----------------------------------------------------------------------- +! + no_day=mod(no_day,7)+mod(leap,7)+mod(no_yr,7)+bym1_dec31 +! +!----------------------------------------------------------------------- +! Get the day of the week code. +!----------------------------------------------------------------------- +! + code=mod(no_day,7) + return + end diff --git a/Utility/get_h.F b/Utility/get_h.F new file mode 100644 index 0000000..520de09 --- /dev/null +++ b/Utility/get_h.F @@ -0,0 +1,103 @@ +#include "griddefs.h" + subroutine get_h +! +!======================================================================= +! === +! This subroutine reads bathymetry information from grid NetCDF === +! file. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global variables. +!----------------------------------------------------------------------- +! + use netcdf + +# include "bathy.h" +# include "ncgrid.h" +! +!----------------------------------------------------------------------- +! Define local variables. +!----------------------------------------------------------------------- +! + logical gothraw + integer grdhrid, i, level + integer count(3), start(3) +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +!----------------------------------------------------------------------- +! Inquire about the contents of grid NetCDF file: Inquire about +! the dimensions and variables. Check for consistency. +!----------------------------------------------------------------------- +! + call opencdf (TRIM(gridfile)) + if (bathsize .lt. 1) then + write(stdout,40) TRIM(gridfile) + call crash ('GET_H',1) + endif +! +! Find out which level to read. +! + print *, 'There are ', bathsize, ' bathymetries.' + print *, 'Which level would you like to read?' + read (5,*) level + if (level .lt. 1 .or. level .gt. bathsize) then + call crash('Illegal level', level) + endif +! +! Scan variable list from input NetCDF and check for raw bathymetry. +! + do i=1,nvars + if (TRIM(varnam(i)).eq.'hraw') then + grdhrid=i + gothraw=.true. + endif + enddo +! +! Terminate execution if essential grid variables are not found. +! + if (.not.gothraw) then + write(stdout,10) 'hraw', TRIM(gridfile) + call crash ('GET_H',1) + endif +! +! Open grid NetCDF file for reading. +! + rcode=nf90_open(TRIM(gridfile),nf90_nowrite,ncgridid) + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,20) TRIM(gridfile) + call crash ('GET_H',1) + endif +! +! Read in last bathymetry in hraw. +! + start(1)=1 + count(1)=Lp + start(2)=1 + count(2)=Mp + start(3)=level + count(3)=1 + if (gothraw) then + rcode = nf90_get_var(ncgridid,grdhrid,h,start,count) + if (rcode.ne.0) then + write(stdout,30) 'hraw', TRIM(gridfile) + call crash ('GET_H',1) + endif + endif +! +! Close file +! + rcode = nf90_close(ncgridid) +! + 10 format(/' GET_H - unable to find grid variable: ',a, & + & /12x,'in grid NetCDF file: ',a) + 20 format(/' GET_H - unable to open grid NetCDF file: ',a) + 30 format(/' GET_H - error while reading variable: ',a, & + & /12x,'in grid NetCDF file: ',a) + 40 format(/' GET_H - no bathymetries have been written yet: ',a) + return + end diff --git a/Utility/get_lat.F b/Utility/get_lat.F new file mode 100644 index 0000000..9fecb54 --- /dev/null +++ b/Utility/get_lat.F @@ -0,0 +1,191 @@ +#include "griddefs.h" + subroutine get_lat +! +!======================================================================= +! === +! This subroutine reads lat/lon information from grid NetCDF file. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global variables. +!----------------------------------------------------------------------- +! + use netcdf + +# include "bathy.h" +# include "ncgrid.h" +! +!----------------------------------------------------------------------- +! Define local variables. +!----------------------------------------------------------------------- +! + logical gotlatp, gotlonp, gotlatr, gotlonr, gotlatu, gotlonu, & + & gotlatv, gotlonv + integer grdlapid, grdlopid, grdlauid, grdlouid, grdlavid, & + & grdlovid, grdlarid, grdlorid, i +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +!----------------------------------------------------------------------- +! Inquire about the contents of SCRUM grid NetCDF file: Inquire about +! the dimensions and variables. Check for consistency. +!----------------------------------------------------------------------- +! + call opencdf (TRIM(gridfile)) +! +! Scan variable list from input NetCDF and check for latitude and +! longitude variables. +! + do i=1,nvars + if (TRIM(varnam(i)).eq.'lat_rho') then + grdlarid=i + gotlatr=.true. + elseif (TRIM(varnam(i)).eq.'lon_rho') then + grdlorid=i + gotlonr=.true. + elseif (TRIM(varnam(i)).eq.'lat_psi') then + grdlapid=i + gotlatp=.true. + elseif (TRIM(varnam(i)).eq.'lon_psi') then + grdlopid=i + gotlonp=.true. + elseif (TRIM(varnam(i)).eq.'lat_u') then + grdlauid=i + gotlatu=.true. + elseif (TRIM(varnam(i)).eq.'lon_u') then + grdlouid=i + gotlonu=.true. + elseif (TRIM(varnam(i)).eq.'lat_v') then + grdlavid=i + gotlatv=.true. + elseif (TRIM(varnam(i)).eq.'lon_v') then + grdlovid=i + gotlonv=.true. + endif + enddo +! +! Terminate execution if essential grid variables are not found. +! + if (.not.gotlatr) then + write(stdout,10) 'lat_rho', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + if (.not.gotlonr) then + write(stdout,10) 'lon_rho', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + if (.not.gotlatp) then + write(stdout,10) 'lat_psi', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + if (.not.gotlonp) then + write(stdout,10) 'lon_psi', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + if (.not.gotlatu) then + write(stdout,10) 'lat_u', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + if (.not.gotlonu) then + write(stdout,10) 'lon_u', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + if (.not.gotlatv) then + write(stdout,10) 'lat_v', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + if (.not.gotlonv) then + write(stdout,10) 'lon_v', TRIM(gridfile) + call crash ('GET_LAT',1) + endif +! +! Open grid NetCDF file for reading. +! + rcode = nf90_open(TRIM(gridfile),nf90_nowrite,ncgridid) + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,20) TRIM(gridfile) + call crash ('GET_LAT',1) + endif +! +! Read in lat,lon coordinates at RHO-points. +! + if (gotlatr) then + rcode = nf90_get_var(ncgridid,grdlarid,lat_rho) + if (rcode.ne.0) then + write(stdout,30) 'lat_rho', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + endif + if (gotlonr) then + rcode = nf90_get_var(ncgridid,grdlorid,lon_rho) + if (rcode.ne.0) then + write(stdout,30) 'lon_rho', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + endif +! +! Read in lat,lon coordinates at PSI-points. +! + if (gotlatp) then + rcode = nf90_get_var(ncgridid,grdlapid,lat_psi) + if (rcode.ne.0) then + write(stdout,30) 'lat_psi', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + endif + if (gotlonp) then + rcode = nf90_get_var(ncgridid,grdlopid,lon_psi) + if (rcode.ne.0) then + write(stdout,30) 'lon_psi', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + endif +! +! Read in lat,lon coordinates at U-points. +! + if (gotlatu) then + rcode = nf90_get_var(ncgridid,grdlauid,lat_u) + if (rcode.ne.0) then + write(stdout,30) 'lat_u', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + endif + if (gotlonu) then + rcode = nf90_get_var(ncgridid,grdlouid,lon_u) + if (rcode.ne.0) then + write(stdout,30) 'lon_u', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + endif +! +! Read in lat,lon coordinates at V-points. +! + if (gotlatv) then + rcode = nf90_get_var(ncgridid,grdlavid,lat_v) + if (rcode.ne.0) then + write(stdout,30) 'lat_v', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + endif + if (gotlonv) then + rcode = nf90_get_var(ncgridid,grdlovid,lon_v) + if (rcode.ne.0) then + write(stdout,30) 'lon_v', TRIM(gridfile) + call crash ('GET_LAT',1) + endif + endif +! +! Close file +! + rcode = nf90_close(ncgridid) +! + 10 format(/' GET_LAT - unable to find grid variable: ',a, & + & /12x,'in grid NetCDF file: ',a) + 20 format(/' GET_LAT - unable to open grid NetCDF file: ',a) + 30 format(/' GET_LAT - error while reading variable: ',a, & + & /12x,'in grid NetCDF file: ',a) + return + end diff --git a/Utility/get_mn.F b/Utility/get_mn.F new file mode 100644 index 0000000..e286d3e --- /dev/null +++ b/Utility/get_mn.F @@ -0,0 +1,98 @@ +#include "griddefs.h" + subroutine get_mn +! +!======================================================================= +! === +! This subroutine reads grid metric information from grid NetCDF === +! file. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global variables. +!----------------------------------------------------------------------- +! + use netcdf + +# include "bathy.h" +# include "ncgrid.h" +! +!----------------------------------------------------------------------- +! Define local variables. +!----------------------------------------------------------------------- +! + logical gotpm, gotpn + integer grdpmid, grdpnid, i +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +!----------------------------------------------------------------------- +! Inquire about the contents of grid NetCDF file: Inquire about +! the dimensions and variables. Check for consistency. +!----------------------------------------------------------------------- +! + call opencdf(TRIM(gridfile)) +! +! Scan variable list from input NetCDF and check for pm and pn +! variables. +! + do i=1,nvars + if (TRIM(varnam(i)).eq.'pm') then + grdpmid=i + gotpm=.true. + endif + if (TRIM(varnam(i)).eq.'pn') then + grdpnid=i + gotpn=.true. + endif + enddo +! +! Terminate execution if essential grid variables are not found. +! + if (.not.gotpm) then + write(stdout,10) 'pm', TRIM(gridfile) + call crash ('GET_MN',1) + endif + if (.not.gotpn) then + write(stdout,10) 'pn', TRIM(gridfile) + call crash ('GET_MN',1) + endif +! +! Open grid NetCDF file for reading. +! + rcode=nf90_open(TRIM(gridfile),nf90_nowrite,ncgridid) + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,20) TRIM(gridfile) + call crash ('GET_MN',1) + endif +! +! Read in grid metrics. +! + if (gotpm) then + rcode = nf90_get_var(ncgridid,grdpmid,pm) + if (rcode.ne.0) then + write(stdout,30) 'pm', TRIM(gridfile) + call crash ('GET_MN',1) + endif + endif + if (gotpn) then + rcode = nf90_get_var(ncgridid,grdpnid,pn) + if (rcode.ne.0) then + write(stdout,30) 'pn', TRIM(gridfile) + call crash ('GET_MN',1) + endif + endif +! +! Close file +! + rcode = nf90_close(ncgridid) +! + 10 format(/' GET_MN - unable to find grid variable: ',a, & + & /12x,'in grid NetCDF file: ',a) + 20 format(/' GET_MN - unable to open grid NetCDF file: ',a) + 30 format(/' GET_MN - error while reading variable: ',a, & + & /12x,'in grid NetCDF file: ',a) + return + end diff --git a/Utility/get_rmask.F b/Utility/get_rmask.F new file mode 100644 index 0000000..fb5cf68 --- /dev/null +++ b/Utility/get_rmask.F @@ -0,0 +1,81 @@ +#include "griddefs.h" + subroutine get_rmask +! +!======================================================================= +! === +! This subroutine reads mask information from grid NetCDF file. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global variables. +!----------------------------------------------------------------------- +! + use netcdf + +# include "bathy.h" +# include "ncgrid.h" +! +!----------------------------------------------------------------------- +! Define local variables. +!----------------------------------------------------------------------- +! + logical gotrmask + integer grdrmaskid, i +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +!----------------------------------------------------------------------- +! Inquire about the contents of grid NetCDF file: Inquire about +! the dimensions and variables. Check for consistency. +!----------------------------------------------------------------------- +! + call opencdf (TRIM(gridfile)) +! +! Scan variable list from input NetCDF and check for rho mask. +! + do i=1,nvars + if (TRIM(varnam(i)).eq.'mask_rho') then + grdrmaskid=i + gotrmask=.true. + endif + enddo +! +! Terminate execution if essential grid variables are not found. +! + if (.not.gotrmask) then + write(stdout,10) 'mask_rho', TRIM(gridfile) + call crash ('GET_RMASK',1) + endif +! +! Open grid NetCDF file for reading. +! + rcode=nf90_open(TRIM(gridfile),nf90_nowrite,ncgridid) + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,20) TRIM(gridfile) + call crash ('GET_RMASK',1) + endif +! +! Read in rho mask. +! + if (gotrmask) then + rcode = nf90_get_var(ncgridid,grdrmaskid,mask_rho) + if (rcode.ne.0) then + write(stdout,30) 'mask_rho', TRIM(gridfile) + call crash ('GET_RMASK',1) + endif + endif +! +! Close file +! + rcode = nf90_close(ncgridid) +! + 10 format(/' GET_RMASK - unable to find grid variable: ',a, & + & /12x,'in grid NetCDF file: ',a) + 20 format(/' GET_RMASK - unable to open grid NetCDF file: ',a) + 30 format(/' GET_RMASK - error while reading variable: ',a, & + & /12x,'in grid NetCDF file: ',a) + return + end diff --git a/Utility/get_xy.F b/Utility/get_xy.F new file mode 100644 index 0000000..27fb4af --- /dev/null +++ b/Utility/get_xy.F @@ -0,0 +1,190 @@ +#include "griddefs.h" + subroutine get_xy +! +!======================================================================= +! === +! This subroutine reads x,y grid information from grid NetCDF file. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global variables. +!----------------------------------------------------------------------- +! + use netcdf + +# include "bathy.h" +# include "ncgrid.h" +! +!----------------------------------------------------------------------- +! Define local variables. +!----------------------------------------------------------------------- +! + logical gotxp, gotyp, gotxu, gotyu, gotxv, gotyv, & + & gotxr, gotyr + integer grdxpid, grdypid, grdxuid, grdyuid, grdxvid, grdyvid, & + & grdxrid, grdyrid, i +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +!----------------------------------------------------------------------- +! Inquire about the contents of SCRUM grid NetCDF file: Inquire about +! the dimensions and variables. Check for consistency. +!----------------------------------------------------------------------- +! + call opencdf (TRIM(gridfile)) +! +! Scan variable list from input NetCDF and check for x,y variables. +! + do i=1,nvars + if (TRIM(varnam(i)).eq.'x_rho') then + grdxrid=i + gotxr=.true. + elseif (TRIM(varnam(i)).eq.'y_rho') then + grdyrid=i + gotyr=.true. + elseif (TRIM(varnam(i)).eq.'x_psi') then + grdxpid=i + gotxp=.true. + elseif (TRIM(varnam(i)).eq.'y_psi') then + grdypid=i + gotyp=.true. + elseif (TRIM(varnam(i)).eq.'x_u') then + grdxuid=i + gotxu=.true. + elseif (TRIM(varnam(i)).eq.'y_u') then + grdyuid=i + gotyu=.true. + elseif (TRIM(varnam(i)).eq.'x_v') then + grdxvid=i + gotxv=.true. + elseif (TRIM(varnam(i)).eq.'y_v') then + grdyvid=i + gotyv=.true. + endif + enddo +! +! Terminate execution if essential grid variables are not found. +! + if (.not.gotxr) then + write(stdout,10) 'xr', TRIM(gridfile) + call crash ('GET_XY',1) + endif + if (.not.gotyr) then + write(stdout,10) 'yr', TRIM(gridfile) + call crash ('GET_XY',1) + endif + if (.not.gotxp) then + write(stdout,10) 'xp', TRIM(gridfile) + call crash ('GET_XY',1) + endif + if (.not.gotyp) then + write(stdout,10) 'yp', TRIM(gridfile) + call crash ('GET_XY',1) + endif + if (.not.gotxu) then + write(stdout,10) 'xu', TRIM(gridfile) + call crash ('GET_XY',1) + endif + if (.not.gotyu) then + write(stdout,10) 'yu', TRIM(gridfile) + call crash ('GET_XY',1) + endif + if (.not.gotxv) then + write(stdout,10) 'xv', TRIM(gridfile) + call crash ('GET_XY',1) + endif + if (.not.gotyv) then + write(stdout,10) 'yv', TRIM(gridfile) + call crash ('GET_XY',1) + endif +! +! Open grid NetCDF file for reading. +! + rcode = nf90_open(TRIM(gridfile),nf90_nowrite,ncgridid) + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,20) TRIM(gridfile) + call crash ('GET_XY',1) + endif +! +! Read in (x,y) coordinates at RHO-points. +! + if (gotxr) then + rcode = nf90_get_var(ncgridid,grdxrid,xr) + if (rcode.ne.0) then + write(stdout,30) 'x_rho', TRIM(gridfile) + call crash ('GET_XY',1) + endif + endif + if (gotyr) then + rcode = nf90_get_var(ncgridid,grdyrid,yr) + if (rcode.ne.0) then + write(stdout,30) 'y_rho', TRIM(gridfile) + call crash ('GET_XY',1) + endif + endif +! +! Read in (x,y) coordinates at PSI-points. +! + if (gotxp) then + rcode = nf90_get_var(ncgridid,grdxpid,xp) + if (rcode.ne.0) then + write(stdout,30) 'x_psi', TRIM(gridfile) + call crash ('GET_XY',1) + endif + endif + if (gotyp) then + rcode = nf90_get_var(ncgridid,grdypid,yp) + if (rcode.ne.0) then + write(stdout,30) 'y_psi', TRIM(gridfile) + call crash ('GET_XY',1) + endif + endif +! +! Read in (x,y) coordinates at U-points. +! + if (gotxu) then + rcode = nf90_get_var(ncgridid,grdxuid,xu) + if (rcode.ne.0) then + write(stdout,30) 'x_u', TRIM(gridfile) + call crash ('GET_XY',1) + endif + endif + if (gotyu) then + rcode = nf90_get_var(ncgridid,grdyuid,yu) + if (rcode.ne.0) then + write(stdout,30) 'y_u', TRIM(gridfile) + call crash ('GET_XY',1) + endif + endif +! +! Read in (x,y) coordinates at V-points. +! + if (gotxv) then + rcode = nf90_get_var(ncgridid,grdxvid,xv) + if (rcode.ne.0) then + write(stdout,30) 'x_v', TRIM(gridfile) + call crash ('GET_XY',1) + endif + endif + if (gotyv) then + rcode = nf90_get_var(ncgridid,grdyvid,yv) + if (rcode.ne.0) then + write(stdout,30) 'y_v', TRIM(gridfile) + call crash ('GET_XY',1) + endif + endif +! +! Close file +! + rcode = nf90_close(ncgridid) +! + 10 format(/' GET_XY - unable to find grid variable: ',a, & + & /12x,'in grid NetCDF file: ',a) + 20 format(/' GET_XY - unable to open grid NetCDF file: ',a) + 30 format(/' GET_XY - error while reading variable: ',a, & + & /12x,'in grid NetCDF file: ',a) + return + end diff --git a/Utility/gnbnaux.F b/Utility/gnbnaux.F new file mode 100644 index 0000000..33111dd --- /dev/null +++ b/Utility/gnbnaux.F @@ -0,0 +1,337 @@ +! +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! * * +! * f i s h p a k * +! * * +! * * +! * a package of fortran subprograms for the solution of * +! * * +! * separable elliptic partial differential equations * +! * * +! * (version 3.2 , november 1988) * +! * * +! * by * +! * * +! * john adams, paul swarztrauber and roland sweet * +! * * +! * of * +! * * +! * the national center for atmospheric research * +! * * +! * boulder, colorado (80307) u.s.a. * +! * * +! * which is sponsored by * +! * * +! * the national science foundation * +! * * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! +! package gnbnaux +! +! latest revision november 1988 +! +! purpose to provide auxiliary routines for fishpak +! entries genbun and poistg. +! +! usage there are no user entries in this package. +! the routines in this package are not intended +! to be called by users, but rather by routines +! in packages genbun and poistg. +! +! special conditions none +! +! i/o none +! +! precision single +! +! required library comf from fishpak +! files +! +! language fortran +! +! history written in 1979 by roland sweet of ncar's +! scientific computing division. made available +! on ncar's public libraries in january, 1980. +! +! portability fortran 77 +! ******************************************************************** +#include "griddefs.h" + subroutine cosgen (n,ijump,fnum,fden,a) + integer n, ijump + BIGREAL fnum, fden, a(*) + +! local variables + BIGREAL pi, dum, pimach, pibyn, x, y + integer i, k, k1, k2, k3, k4, k5, np1 +! +! +! this subroutine computes required cosine values in ascending +! order. when ijump .gt. 1 the routine computes values +! +! 2*cos(j*pi/l) , j=1,2,...,l and j .ne. 0(mod n/ijump+1) +! +! where l = ijump*(n/ijump+1). +! +! +! when ijump = 1 it computes +! +! 2*cos((j-fnum)*pi/(n+fden)) , j=1, 2, ... ,n +! +! where +! fnum = 0.5, fden = 0.0, for regular reduction values +! fnum = 0.0, fden = 1.0, for b-r and c-r when istag = 1 +! fnum = 0.0, fden = 0.5, for b-r and c-r when istag = 2 +! fnum = 0.5, fden = 0.5, for b-r and c-r when istag = 2 +! in poisn2 only. +! +! + pi = pimach(dum) + if (n .eq. 0) go to 105 + if (ijump .eq. 1) go to 103 + k3 = n/ijump+1 + k4 = k3-1 + pibyn = pi/float(n+ijump) + do 102 k=1,ijump + k1 = (k-1)*k3 + k5 = (k-1)*k4 + do 101 i=1,k4 + x = k1+i + k2 = k5+i + a(k2) = -2.*cos(x*pibyn) + 101 continue + 102 continue + go to 105 + 103 continue + np1 = n+1 + y = pi/(float(n)+fden) + do 104 i=1,n + x = float(np1-i)-fnum + a(i) = 2.*cos(x*y) + 104 continue + 105 continue + return + end + + subroutine merge (tcos,i1,m1,i2,m2,i3) + integer i1, m1, i2, m2, i3 + BIGREAL tcos(*) +! +! this subroutine merges two ascending strings of numbers in the +! array tcos. the first string is of length m1 and starts at +! tcos(i1+1). the second string is of length m2 and starts at +! tcos(i2+1). the merged string goes into tcos(i3+1). +! +! local variables + integer j, k, l, m, j1, j2 + BIGREAL x, y +! + j1 = 1 + j2 = 1 + j = i3 + if (m1 .eq. 0) go to 107 + if (m2 .eq. 0) go to 104 + 101 j = j+1 + l = j1+i1 + x = tcos(l) + l = j2+i2 + y = tcos(l) + if (x-y) 102,102,103 + 102 tcos(j) = x + j1 = j1+1 + if (j1 .gt. m1) go to 106 + go to 101 + 103 tcos(j) = y + j2 = j2+1 + if (j2 .le. m2) go to 101 + if (j1 .gt. m1) go to 109 + 104 k = j-j1+1 + do 105 j=j1,m1 + m = k+j + l = j+i1 + tcos(m) = tcos(l) + 105 continue + go to 109 + 106 continue + if (j2 .gt. m2) go to 109 + 107 k = j-j2+1 + do 108 j=j2,m2 + m = k+j + l = j+i2 + tcos(m) = tcos(l) + 108 continue + 109 continue + return + end + + subroutine trix (idegbr,idegcr,m,a,b,c,y,tcos,d,w) +! +! subroutine to solve a system of linear equations where the +! coefficient matrix is a rational function in the matrix given by +! tridiagonal ( . . . , a(i), b(i), c(i), . . . ). +! + integer idegbr, idegcr, m + BIGREAL a(*) ,b(*) ,c(*) ,y(*) , & + & tcos(*) ,d(*) ,w(*) + +! local variables + integer i, k, l, ip, lint, mm1, ifb, ifc + BIGREAL x, xx, z + + mm1 = m-1 + ifb = idegbr+1 + ifc = idegcr+1 + l = ifb/ifc + lint = 1 + do 108 k=1,idegbr + x = tcos(k) + if (k .ne. l) go to 102 + i = idegbr+lint + xx = x-tcos(i) + do 101 i=1,m + w(i) = y(i) + y(i) = xx*y(i) + 101 continue + 102 continue + z = 1./(b(1)-x) + d(1) = c(1)*z + y(1) = y(1)*z + do 103 i=2,mm1 + z = 1./(b(i)-x-a(i)*d(i-1)) + d(i) = c(i)*z + y(i) = (y(i)-a(i)*y(i-1))*z + 103 continue + z = b(m)-x-a(m)*d(mm1) + if (z .ne. 0.) go to 104 + y(m) = 0. + go to 105 + 104 y(m) = (y(m)-a(m)*y(mm1))/z + 105 continue + do 106 ip=1,mm1 + i = m-ip + y(i) = y(i)-d(i)*y(i+1) + 106 continue + if (k .ne. l) go to 108 + do 107 i=1,m + y(i) = y(i)+w(i) + 107 continue + lint = lint+1 + l = (lint*ifb)/ifc + 108 continue + return + end + + subroutine tri3 (m,a,b,c,k,y1,y2,y3,tcos,d,w1,w2,w3) + integer m + BIGREAL a(*) ,b(*) ,c(*) ,k(4) , & + & tcos(*) ,y1(*) ,y2(*) ,y3(*) , & + & d(*) ,w1(*) ,w2(*) ,w3(*) +! +! subroutine to solve three linear systems whose common coefficient +! matrix is a rational function in the matrix given by +! +! tridiagonal (...,a(i),b(i),c(i),...) +! +! local variables + integer i, n, k1, k2, k3, k4, mm1, l1, l2, l3, k2k3k4, & + & if1, if2, if3, if4, lint1, lint2, lint3, kint1, & + & kint2, kint3, ip + BIGREAL x, xx, z + + mm1 = m-1 + k1 = k(1) + k2 = k(2) + k3 = k(3) + k4 = k(4) + if1 = k1+1 + if2 = k2+1 + if3 = k3+1 + if4 = k4+1 + k2k3k4 = k2+k3+k4 + if (k2k3k4 .eq. 0) go to 101 + l1 = if1/if2 + l2 = if1/if3 + l3 = if1/if4 + lint1 = 1 + lint2 = 1 + lint3 = 1 + kint1 = k1 + kint2 = kint1+k2 + kint3 = kint2+k3 + 101 continue + do 115 n=1,k1 + x = tcos(n) + if (k2k3k4 .eq. 0) go to 107 + if (n .ne. l1) go to 103 + do 102 i=1,m + w1(i) = y1(i) + 102 continue + 103 if (n .ne. l2) go to 105 + do 104 i=1,m + w2(i) = y2(i) + 104 continue + 105 if (n .ne. l3) go to 107 + do 106 i=1,m + w3(i) = y3(i) + 106 continue + 107 continue + z = 1./(b(1)-x) + d(1) = c(1)*z + y1(1) = y1(1)*z + y2(1) = y2(1)*z + y3(1) = y3(1)*z + do 108 i=2,m + z = 1./(b(i)-x-a(i)*d(i-1)) + d(i) = c(i)*z + y1(i) = (y1(i)-a(i)*y1(i-1))*z + y2(i) = (y2(i)-a(i)*y2(i-1))*z + y3(i) = (y3(i)-a(i)*y3(i-1))*z + 108 continue + do 109 ip=1,mm1 + i = m-ip + y1(i) = y1(i)-d(i)*y1(i+1) + y2(i) = y2(i)-d(i)*y2(i+1) + y3(i) = y3(i)-d(i)*y3(i+1) + 109 continue + if (k2k3k4 .eq. 0) go to 115 + if (n .ne. l1) go to 111 + i = lint1+kint1 + xx = x-tcos(i) + do 110 i=1,m + y1(i) = xx*y1(i)+w1(i) + 110 continue + lint1 = lint1+1 + l1 = (lint1*if1)/if2 + 111 if (n .ne. l2) go to 113 + i = lint2+kint2 + xx = x-tcos(i) + do 112 i=1,m + y2(i) = xx*y2(i)+w2(i) + 112 continue + lint2 = lint2+1 + l2 = (lint2*if1)/if3 + 113 if (n .ne. l3) go to 115 + i = lint3+kint3 + xx = x-tcos(i) + do 114 i=1,m + y3(i) = xx*y3(i)+w3(i) + 114 continue + lint3 = lint3+1 + l3 = (lint3*if1)/if4 + 115 continue + return +! +! revision history--- +! +! september 1973 version 1 +! april 1976 version 2 +! january 1978 version 3 +! december 1979 version 3.1 +! october 1980 changed several divides of floating integers +! to integer divides to accomodate cray-1 arithmetic. +! february 1985 documentation upgrade +! november 1988 version 3.2, fortran 77 changes +! june 1993 BIGREAL stuff added +!----------------------------------------------------------------------- + end + diff --git a/Utility/opencdf.F b/Utility/opencdf.F new file mode 100644 index 0000000..2c0443d --- /dev/null +++ b/Utility/opencdf.F @@ -0,0 +1,158 @@ +#include "griddefs.h" + subroutine opencdf (ncname) +! +!======================================================================= +! === +! This routine opens an existing NetCDF file and inquires about it === +! contents, and checks for consistency with model dimensions. === +! === +! On Input: === +! === +! ncname Input NetCDF file name. === +! === +! Calls: (NetCDF library) === +! crash === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global variables. +!----------------------------------------------------------------------- +! + use netcdf + +#include "bathy.h" +#include "ncgrid.h" +! +!----------------------------------------------------------------------- +! Define local variables. +!----------------------------------------------------------------------- +! + integer attype, dimid, dimsiz, i, ncid, ndims, & + & ngatts, nvatts, recdim + character*20 dimnam + character*(*) ncname +! +!======================================================================= +! Begin executable code. +!======================================================================= +! +! Open input NetCDF file. +! + rcode=nf90_open(TRIM(ncname),nf90_nowrite,ncid) + if ((rcode.ne.0).or.(ncid.eq.-1)) then + write(stdout,10) TRIM(ncname) + call crash ('OPENCDF',1) + endif +! +! Inquire and get global "type" attribute. +! + rcode = nf90_inquire_attribute(ncid,nf90_global,'type',attype) + if (rcode.eq.0) then + rcode = nf90_get_att(ncid,nf90_global,'type',type) + if(rcode.ne.0) then + write(stdout,20) 'type (global)', TRIM(ncname) + call crash ('OPENCDF',1) + endif + else + write(stdout,30) 'type (global)',TRIM(ncname) + endif +! +! Inquire about the contents of input NetCDF file: Inquire about the +! dimensions and variables. +! + rcode = nf90_inquire(ncid,ndims,nvars,ngatts,recdim) + if (nvars.gt.maxvar) then + write(stdout,40) maxvar, nvars + call crash ('OPENCDF',1) + endif + if (rcode.eq.0) then +! +! Inquire about dimensions. Check dimensions for consistency. +! + do i=1,ndims + dimid=i + rcode = nf90_inquire_dimension(ncid,dimid,dimnam,dimsiz) + if (rcode.ne.0) then + write(stdout,50) dimid, TRIM(ncname) + call crash ('OPENCDF',1) + endif + if ((TRIM(dimnam) .eq. 'xi_rho') .or. & + & (TRIM(dimnam) .eq. 'xi_v')) then + if (dimsiz.ne.Lp) then + write(stdout,60) TRIM(dimnam), dimsiz, Lp + call crash ('OPENCDF',1) + endif + elseif ((TRIM(dimnam) .eq. 'xi_u') .or. & + & (TRIM(dimnam) .eq. 'xi_psi')) then + if (dimsiz.ne.L) then + write(stdout,60) TRIM(dimnam), dimsiz, L + call crash ('OPENCDF',1) + endif + elseif ((TRIM(dimnam) .eq. 'eta_rho') .or. & + & (TRIM(dimnam) .eq. 'eta_u')) then + if (dimsiz.ne.Mp) then + write(stdout,60) TRIM(dimnam), dimsiz, Mp + call crash ('OPENCDF',1) + endif + elseif ((TRIM(dimnam) .eq. 'eta_v') .or. & + & (TRIM(dimnam) .eq. 'eta_psi')) then + if (dimsiz.ne.M) then + write(stdout,60) TRIM(dimnam), dimsiz, M + call crash ('OPENCDF',1) + endif + endif + enddo +! +! Inquire about variables. +! + do i=1,nvars + varid=i + rcode = nf90_inquire_variable(ncid,varid,varnam(i),vartyp, & + & nvdims(i),vdims(:,i),nvatts) + if (rcode.ne.0) then + write(stdout,70) varid, TRIM(ncname) + call crash ('OPENCDF',1) + endif + enddo + else + write(stdout,80) TRIM(ncname) + call crash ('OPENCDF',1) + endif +! +!----------------------------------------------------------------------- +! Inquire size of unlimited time record dimension. +!----------------------------------------------------------------------- +! + bathsize=0 + if (recdim.ne.-1) then + rcode = nf90_inquire_dimension(ncid,recdim,len=bathsize) + if (rcode.ne.0) then + write(stdout,90) 'bath', TRIM(ncname) + call crash ('OPENCDF',1) + endif + endif +! +! Close input NetCDF file. +! + rcode = nf90_close(ncid) +! + 10 format(/' OPENCDF - unable to open input NetCDF file: ',a) + 20 format(/' OPENCDF - error while reading attribute: ',a,2x, & + & ' in input NetCDF file: ',a) + 30 format(/' OPENCDF - cannot find attribute: ',a,2x, & + & ' in input NetCDF file: ',a) + 40 format(/' OPENCDF - too small dimension parameter, maxvar = ',2i5, & + & /,11x,'change file ncscrum.h and recompile.') + 50 format(/' OPENCDF - error while reading dimension ID: ',i3,2x, & + & ' in input NetCDF file: ',a) + 60 format(/' OPENCDF - inconsistent size of dimension: ',a,2x, & + & 2i5) + 70 format(/' OPENCDF - error while inquiring information for ', & + & ' variable ID: ',i3,2x,' in input NetCDF file: ',a) + 80 format(/' OPENCDF - unable to inquire about contents of', & + & ' input NetCDF file: ',a) + 90 format(/' OPENCDF - error inquiring dimension: ',a,2x, & + & ' in input NetCDF file: ',a) + return + end diff --git a/Utility/ploth.F b/Utility/ploth.F new file mode 100644 index 0000000..8d0c34c --- /dev/null +++ b/Utility/ploth.F @@ -0,0 +1,318 @@ +#include "griddefs.h" +! ******************************************************************** + + subroutine cpmpxy(imap,x,y,fx,fy) + integer imap + real x, y, fx, fy +#include "bathy.h" +#include "griddefs.h" + + if ( imap .eq. 3) then + fx = x_v(int(x),int(y)) & + & + (x_v(int(x)+1,int(y))-x_v(int(x),int(y)))*(x-aint(x)) & + & + (x_v(int(x),int(y)+1)-x_v(int(x),int(y)))*(y-aint(y)) & + & + (x_v(int(x)+1,int(y)+1)-x_v(int(x),int(y)+1) & + & - x_v(int(x)+1,int(y))+x_v(int(x),int(y))) & + & *(x-aint(x))*(y-aint(y)) + fy = y_v(int(x),int(y)) & + & + (y_v(int(x)+1,int(y))-y_v(int(x),int(y)))*(x-aint(x)) & + & + (y_v(int(x),int(y)+1)-y_v(int(x),int(y)))*(y-aint(y)) & + & + (y_v(int(x)+1,int(y)+1)-y_v(int(x),int(y)+1) & + & - y_v(int(x)+1,int(y))+y_v(int(x),int(y))) & + & *(x-aint(x))*(y-aint(y)) + end if + return + end + +!*******************************************************************c + + subroutine getxxyy +#include "bathy.h" + integer i, j + + do 100 i = 1,L + do 100 j = 1,M + x_v(i,j) = xp(i,j) + y_v(i,j) = yp(i,j) + 100 continue + do 110 i=1,L + x_v(i,Mp) = x_v(i,M) + y_v(i,Mp) = y_v(i,M) + 110 continue + do 120 j=1,Mp + x_v(Lp,j) = x_v(L,j) + y_v(Lp,j) = y_v(L,j) + 120 continue + return + end + +!*******************************************************************c + + subroutine getxyh +#include "bathy.h" + integer i, j + + do 100 i = 1,Lp + do 100 j = 1,Mp + x_v(i,j) = xr(i-1,j-1) + y_v(i,j) = yr(i-1,j-1) + 100 continue + do 110 i=1,Lp + x_v(i,0) = x_v(i,1) + y_v(i,0) = y_v(i,1) + x_v(i,M+2) = x_v(i,Mp) + y_v(i,M+2) = y_v(i,Mp) + 110 continue + do 120 j=1,M+2 + x_v(0,j) = x_v(1,j) + y_v(0,j) = y_v(1,j) + x_v(L+2,j) = x_v(Lp,j) + y_v(L+2,j) = y_v(Lp,j) + 120 continue + return + end + +! ******************************************************************** + + subroutine grdplt(x1,x2,y1,y2,gridid) + +! plots the psi points grid +! if called without advancing frame this can be used to overlay the grid +! on a colour filled contour plot + +#include "bathy.h" + character*40 gridid + real x1, x2, y1, y2 + integer i, j + + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq (0.5,0.96,gridid,.012,0.,0.) + call set(x1,x2,y1,y2,xmin,xmax,ymin,ymax,1) +#if DRAW_COASTS + call mapdrw +#endif /* DRAW_COASTS */ +#if DBLEPREC + do j = 1,Mm + do i = 1,Lm + if (mask_rho(i,j) .eq. 1.) then + call frstpt(sngl(xp(i,j)),sngl(yp(i,j))) + call vector(sngl(xp(i+1,j)),sngl(yp(i+1,j))) + call vector(sngl(xp(i+1,j+1)),sngl(yp(i+1,j+1))) + call vector(sngl(xp(i,j+1)),sngl(yp(i,j+1))) + call vector(sngl(xp(i,j)),sngl(yp(i,j))) + endif + enddo + enddo +#else + do j = 1,Mm + do i = 1,Lm + if (mask_rho(i,j) .eq. 1.) then + call frstpt(xp(i,j),yp(i,j)) + call vector(xp(i+1,j),yp(i+1,j)) + call vector(xp(i+1,j+1),yp(i+1,j+1)) + call vector(xp(i,j+1),yp(i,j+1)) + call vector(xp(i,j),yp(i,j)) + endif + enddo + enddo +#endif /* DBLEPREC */ + + return + end + +! ******************************************************************** + + subroutine ploth(gridid,colour,grover) + +#include "bathy.h" +#include "griddefs.h" + real dhdxx(L,0:M), dhdyy(0:L,M), tmp(L,M), & + & htmp(0:L,0:M) + character*24 ltit, lnote, lnote2 + character*40 gridid + logical colour, grover, tallflg + real x1, x2, y1, y2, depmin, depmax, ratio, slpmax + integer i, j + BIGREAL a1, a2, av2, vmin, vmax + real vsmax + + av2(a1,a2) = 0.5*(a1+a2) + +! find shape of domain to plot + if (xl .ge. el) then + x1 = 0.05 + x2 = 0.95 + y1 = -.45*el/xl + .5 + y2 = y1 + el/xl*.9 + tallflg = .false. + else + if (colour) then + y1 = 0.02 + y2 = 0.92 + else + y1 = 0.04 + y2 = 0.94 + end if + x1 = -.45*xl/el + .45 + x2 = x1 + xl/el*.9 + tallflg = .true. + end if + +! draw the grid first + call grdplt(x1,x2,y1,y2,gridid) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + call frame + + write (ltit,100) + 100 format ('Bottom Topography') + + call getxyh + depmin = vmin(h,Lp*Mp) + write (lnote,120) depmin + 120 format ('MIN DEPTH =',f9.3) + depmax = vmax(h,Lp*Mp) + write (lnote2,131) depmax + 131 format ('MAX DEPTH =',f9.1) + + do j=0,M + do i=0,L + htmp(i,j) = h(i,j) + enddo + enddo + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq(.50,.98,ltit(1:17),.012,0.,0.) + call plchhq(.85,.98,lnote(1:20),.012,0.,0.) + call plchhq(.85,.95,lnote2(1:20),.012,0.,0.) + call set(x1,x2,y1,y2,xmin,xmax,ymin,ymax,1) + if (colour) then + call cpsfill(htmp,Lp,Lp,Mp,16,lcflag,tallflg,.true.) + if (grover) call grdplt(x1,x2,y1,y2,gridid) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + else + call cpshift(htmp,Lp,Lp,Mp,0.,.false.,1.) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + endif + call frame + + call getxxyy + write (ltit,130) + 130 format ('Bottom Slope') + + do 140 j=0,M + do 140 i=1,L + dhdxx(i,j) = (h(i,j) - h(i-1,j))*av2(pm(i,j),pm(i-1,j)) + 140 continue + do 150 j=1,M + do 150 i=0,L + dhdyy(i,j) = (h(i,j) - h(i,j-1))*av2(pn(i,j),pn(i,j-1)) + 150 continue + do 160 j=1,M + do 160 i=1,L + tmp(i,j) = sqrt((0.5*(dhdxx(i,j)+dhdxx(i,j-1)))**2 + & + & (0.5*(dhdyy(i,j)+dhdyy(i-1,j)))**2) + 160 continue + + slpmax = vsmax(tmp,L*M) + write (lnote,170) slpmax + 170 format ('MAX SLOPE =',f9.3) + + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq (0.5,0.98,ltit(1:12),.012,0.,0.) + call plchhq(.85,.98,lnote(1:20),.012,0.,0.) + call set(x1,x2,y1,y2,xmin,xmax,ymin,ymax,1) + if (colour) then + call cpsfill(tmp,L,L,M,8,lcflag,tallflg,.false.) + if (grover) call grdplt(x1,x2,y1,y2,gridid) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + else + call cpshift(tmp,L,L,M,0.,.false.,1.) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + endif + call frame + + write (ltit,180) + 180 format ('r-Value') + + do 190 j=0,M + do 190 i=1,L + dhdxx(i,j) = abs((h(i,j) - h(i-1,j)) & + & / (h(i,j) + h(i-1,j))) & + & * mask_rho(i,j) * mask_rho(i-1,j) + 190 continue + do 200 j=1,M + do 200 i=0,L + dhdyy(i,j) = abs((h(i,j) - h(i,j-1)) & + & / (h(i,j) + h(i,j-1))) & + & * mask_rho(i,j) * mask_rho(i,j-1) + 200 continue + do 210 j=1,M + do 210 i=1,L + tmp(i,j) = max(max(dhdxx(i,j),dhdxx(i,j-1)), & + & max(dhdyy(i,j),dhdyy(i-1,j))) + 210 continue + + ratio = vsmax(tmp,L*M) + write (lnote,220) ratio + 220 format ('MAX RATIO =',f9.3) + + call set(0.,1.,0.,1.,0.,1.,0.,1.,1) + call plchhq (0.5,0.98,ltit(1:7),.012,0.,0.) + call plchhq(.85,.98,lnote(1:20),.012,0.,0.) + call set(x1,x2,y1,y2,xmin,xmax,ymin,ymax,1) + if (colour) then + call cpsfill(tmp,L,L,M,8,lcflag,tallflg,.false.) + if (grover) call grdplt(x1,x2,y1,y2,gridid) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + else + call cpshift(tmp,L,L,M,0.,.false.,1.) +#if DRAW_COASTS + call drawcoast +#endif /* DRAW_COASTS */ + endif + call frame + + return + end + +! *********************************************************** + + real function vsmax(vect,N) + integer N + real vect(N) + real tmp + integer i + + tmp = vect(1) + do i=2,N + tmp = max(tmp,vect(i)) + enddo + vsmax = tmp + return + end + + real function vsmin(vect,N) + integer N + real vect(N) + real tmp + integer i + + tmp = vect(1) + do i=2,N + tmp = min(tmp,vect(i)) + enddo + vsmin = tmp + return + end + diff --git a/Utility/sepaux.F b/Utility/sepaux.F new file mode 100644 index 0000000..33c9e91 --- /dev/null +++ b/Utility/sepaux.F @@ -0,0 +1,406 @@ +! +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! * * +! * f i s h p a k * +! * * +! * * +! * a package of fortran subprograms for the solution of * +! * * +! * separable elliptic partial differential equations * +! * * +! * (version 3.2 , november 1988) * +! * * +! * by * +! * * +! * john adams, paul swarztrauber and roland sweet * +! * * +! * of * +! * * +! * the national center for atmospheric research * +! * * +! * boulder, colorado (80307) u.s.a. * +! * * +! * which is sponsored by * +! * * +! * the national science foundation * +! * * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! +! package sepaux contains no user entry points. +! +! latest revision november 1988 +! +! purpose this package contains auxiliary routines for +! ncar public software packages such as sepeli +! and sepx4. +! +! usage since this package contains no user entries, +! no usage instructions or argument descriptions +! are given here. +! +! special conditions none +! +! i/o none +! +! precision single +! +! required library none +! files +! +! language fortran +! +! history developed in the late 1970's by john c. adams +! of ncar's scienttific computing division. +! +! portability fortran 77 +! ********************************************************************** +#include "griddefs.h" + subroutine seport (usol,idmn,zn,zm,pertrb) + integer idmn + BIGREAL usol(idmn,1) ,zn(*) ,zm(*) , pertrb +! +! this subroutine orthoganalizes the array usol with respect to +! the constant array in a weighted least squares norm +! + integer kswx ,kswy ,k ,l , & + & mit ,nit ,is ,ms , & + & js ,ns + BIGREAL ait ,bit ,cit ,dit , & + & dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + common /splp/ kswx ,kswy ,k ,l , & + & ait ,bit ,cit ,dit , & + & mit ,nit ,is ,ms , & + & js ,ns ,dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + +! local variables + integer i, j, ii, jj, istr, ifnl, jstr, jfnl + BIGREAL ete, ute + + istr = is + ifnl = ms + jstr = js + jfnl = ns +! +! compute weighted inner products +! + ute = 0.0 + ete = 0.0 + do 20 i=is,ms + ii = i-is+1 + do 10 j=js,ns + jj = j-js+1 + ete = ete+zm(ii)*zn(jj) + ute = ute+usol(i,j)*zm(ii)*zn(jj) + 10 continue + 20 continue +! +! set perturbation parameter +! + pertrb = ute/ete +! +! subtract off constant pertrb +! + do 40 i=istr,ifnl + do 30 j=jstr,jfnl + usol(i,j) = usol(i,j)-pertrb + 30 continue + 40 continue + return + end + + subroutine sepmin (usol,idmn,zn,zm,pertb) + integer idmn + BIGREAL usol(idmn,1) ,zn(*) ,zm(*), pertb +! +! this subroutine orhtogonalizes the array usol with respect to +! the constant array in a weighted least squares norm +! + integer kswx ,kswy ,k ,l , & + & mit ,nit ,is ,ms , & + & js ,ns + BIGREAL ait ,bit ,cit ,dit , & + & dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + common /splp/ kswx ,kswy ,k ,l , & + & ait ,bit ,cit ,dit , & + & mit ,nit ,is ,ms , & + & js ,ns ,dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + +! local variables + integer i, ii, j, jj, istr, ifnl, jstr, jfnl + BIGREAL ete, ute, pertrb +! +! entry at sepmin occurrs when the final solution is +! to be minimized with respect to the weighted +! least squares norm +! + istr = 1 + ifnl = k + jstr = 1 + jfnl = l +! +! compute weighted inner products +! + ute = 0.0 + ete = 0.0 + do 20 i=is,ms + ii = i-is+1 + do 10 j=js,ns + jj = j-js+1 + ete = ete+zm(ii)*zn(jj) + ute = ute+usol(i,j)*zm(ii)*zn(jj) + 10 continue + 20 continue +! +! set perturbation parameter +! + pertrb = ute/ete +! +! subtract off constant pertrb +! + do 40 i=istr,ifnl + do 30 j=jstr,jfnl + usol(i,j) = usol(i,j)-pertrb + 30 continue + 40 continue + return + end + + subroutine septri (n,a,b,c,d,u,z) +! +! this subroutine solves for a non-zero eigenvector corresponding +! to the zero eigenvalue of the transpose of the rank +! deficient one matrix with subdiagonal a, diagonal b, and +! superdiagonal c , with a(1) in the (1,n) position, with +! c(n) in the (n,1) position, and all other elements zero. +! + integer n + BIGREAL a(n) ,b(n) ,c(n) ,d(n) , & + & u(n) ,z(n) + +! local variables + integer j, k, nm1, nm2 + BIGREAL bn, v, den, an + + bn = b(n) + d(1) = a(2)/b(1) + v = a(1) + u(1) = c(n)/b(1) + nm2 = n-2 + do 10 j=2,nm2 + den = b(j)-c(j-1)*d(j-1) + d(j) = a(j+1)/den + u(j) = -c(j-1)*u(j-1)/den + bn = bn-v*u(j-1) + v = -v*d(j-1) + 10 continue + den = b(n-1)-c(n-2)*d(n-2) + d(n-1) = (a(n)-c(n-2)*u(n-2))/den + an = c(n-1)-v*d(n-2) + bn = bn-v*u(n-2) + den = bn-an*d(n-1) +! +! set last component equal to one +! + z(n) = 1.0 + z(n-1) = -d(n-1) + nm1 = n-1 + do 20 j=2,nm1 + k = n-j + z(k) = -d(k)*z(k+1)-u(k)*z(n) + 20 continue + return + end + + subroutine sepdx (u,idmn,i,j,uxxx,uxxxx) + integer idmn, i, j + BIGREAL u(idmn,1), uxxx, uxxxx +! +! this program computes second order finite difference +! approximations to the third and fourth x +! partial derivatives of u at the (i,j) mesh point +! + integer kswx ,kswy ,k ,l , & + & mit ,nit ,is ,ms , & + & js ,ns + BIGREAL ait ,bit ,cit ,dit , & + & dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + common /splp/ kswx ,kswy ,k ,l , & + & ait ,bit ,cit ,dit , & + & mit ,nit ,is ,ms , & + & js ,ns ,dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + + if (i.gt.2 .and. i.lt.(k-1)) go to 50 + if (i .eq. 1) go to 10 + if (i .eq. 2) go to 30 + if (i .eq. k-1) go to 60 + if (i .eq. k) go to 80 +! +! compute partial derivative approximations at x=a +! + 10 if (kswx .eq. 1) go to 20 + uxxx = (-5.0*u(1,j)+18.0*u(2,j)-24.0*u(3,j)+14.0*u(4,j)- & + & 3.0*u(5,j))/(tdlx3) + uxxxx = (3.0*u(1,j)-14.0*u(2,j)+26.0*u(3,j)-24.0*u(4,j)+ & + & 11.0*u(5,j)-2.0*u(6,j))/dlx4 + return +! +! periodic at x=a +! + 20 uxxx = (-u(k-2,j)+2.0*u(k-1,j)-2.0*u(2,j)+u(3,j))/(tdlx3) + uxxxx = (u(k-2,j)-4.0*u(k-1,j)+6.0*u(1,j)-4.0*u(2,j)+u(3,j))/dlx4 + return +! +! compute partial derivative approximations at x=a+dlx +! + 30 if (kswx .eq. 1) go to 40 + uxxx = (-3.0*u(1,j)+10.0*u(2,j)-12.0*u(3,j)+6.0*u(4,j)-u(5,j))/ & + & tdlx3 + uxxxx = (2.0*u(1,j)-9.0*u(2,j)+16.0*u(3,j)-14.0*u(4,j)+6.0*u(5,j)- & + & u(6,j))/dlx4 + return +! +! periodic at x=a+dlx +! + 40 uxxx = (-u(k-1,j)+2.0*u(1,j)-2.0*u(3,j)+u(4,j))/(tdlx3) + uxxxx = (u(k-1,j)-4.0*u(1,j)+6.0*u(2,j)-4.0*u(3,j)+u(4,j))/dlx4 + return +! +! compute partial derivative approximations on the interior +! + 50 continue + uxxx = (-u(i-2,j)+2.0*u(i-1,j)-2.0*u(i+1,j)+u(i+2,j))/tdlx3 + uxxxx = (u(i-2,j)-4.0*u(i-1,j)+6.0*u(i,j)-4.0*u(i+1,j)+u(i+2,j))/ & + & dlx4 + return +! +! compute partial derivative approximations at x=b-dlx +! + 60 if (kswx .eq. 1) go to 70 + uxxx = (u(k-4,j)-6.0*u(k-3,j)+12.0*u(k-2,j)-10.0*u(k-1,j)+ & + & 3.0*u(k,j))/tdlx3 + uxxxx = (-u(k-5,j)+6.0*u(k-4,j)-14.0*u(k-3,j)+16.0*u(k-2,j)- & + & 9.0*u(k-1,j)+2.0*u(k,j))/dlx4 + return +! +! periodic at x=b-dlx +! + 70 uxxx = (-u(k-3,j)+2.0*u(k-2,j)-2.0*u(1,j)+u(2,j))/tdlx3 + uxxxx = (u(k-3,j)-4.0*u(k-2,j)+6.0*u(k-1,j)-4.0*u(1,j)+u(2,j))/ & + & dlx4 + return +! +! compute partial derivative approximations at x=b +! + 80 uxxx = -(3.0*u(k-4,j)-14.0*u(k-3,j)+24.0*u(k-2,j)-18.0*u(k-1,j)+ & + & 5.0*u(k,j))/tdlx3 + uxxxx = (-2.0*u(k-5,j)+11.0*u(k-4,j)-24.0*u(k-3,j)+26.0*u(k-2,j)- & + & 14.0*u(k-1,j)+3.0*u(k,j))/dlx4 + return + end + + subroutine sepdy (u,idmn,i,j,uyyy,uyyyy) + integer idmn, i, j + BIGREAL u(idmn,*), uyyy, uyyyy +! +! this program computes second order finite difference +! approximations to the third and fourth y +! partial derivatives of u at the (i,j) mesh point +! + integer kswx ,kswy ,k ,l , & + & mit ,nit ,is ,ms , & + & js ,ns + BIGREAL ait ,bit ,cit ,dit , & + & dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + common /splp/ kswx ,kswy ,k ,l , & + & ait ,bit ,cit ,dit , & + & mit ,nit ,is ,ms , & + & js ,ns ,dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + if (j.gt.2 .and. j.lt.(l-1)) go to 50 + if (j .eq. 1) go to 10 + if (j .eq. 2) go to 30 + if (j .eq. l-1) go to 60 + if (j .eq. l) go to 80 +! +! compute partial derivative approximations at y=c +! + 10 if (kswy .eq. 1) go to 20 + uyyy = (-5.0*u(i,1)+18.0*u(i,2)-24.0*u(i,3)+14.0*u(i,4)- & + & 3.0*u(i,5))/tdly3 + uyyyy = (3.0*u(i,1)-14.0*u(i,2)+26.0*u(i,3)-24.0*u(i,4)+ & + & 11.0*u(i,5)-2.0*u(i,6))/dly4 + return +! +! periodic at x=a +! + 20 uyyy = (-u(i,l-2)+2.0*u(i,l-1)-2.0*u(i,2)+u(i,3))/tdly3 + uyyyy = (u(i,l-2)-4.0*u(i,l-1)+6.0*u(i,1)-4.0*u(i,2)+u(i,3))/dly4 + return +! +! compute partial derivative approximations at y=c+dly +! + 30 if (kswy .eq. 1) go to 40 + uyyy = (-3.0*u(i,1)+10.0*u(i,2)-12.0*u(i,3)+6.0*u(i,4)-u(i,5))/ & + & tdly3 + uyyyy = (2.0*u(i,1)-9.0*u(i,2)+16.0*u(i,3)-14.0*u(i,4)+6.0*u(i,5)- & + & u(i,6))/dly4 + return +! +! periodic at y=c+dly +! + 40 uyyy = (-u(i,l-1)+2.0*u(i,1)-2.0*u(i,3)+u(i,4))/tdly3 + uyyyy = (u(i,l-1)-4.0*u(i,1)+6.0*u(i,2)-4.0*u(i,3)+u(i,4))/dly4 + return +! +! compute partial derivative approximations on the interior +! + 50 continue + uyyy = (-u(i,j-2)+2.0*u(i,j-1)-2.0*u(i,j+1)+u(i,j+2))/tdly3 + uyyyy = (u(i,j-2)-4.0*u(i,j-1)+6.0*u(i,j)-4.0*u(i,j+1)+u(i,j+2))/ & + & dly4 + return +! +! compute partial derivative approximations at y=d-dly +! + 60 if (kswy .eq. 1) go to 70 + uyyy = (u(i,l-4)-6.0*u(i,l-3)+12.0*u(i,l-2)-10.0*u(i,l-1)+ & + & 3.0*u(i,l))/tdly3 + uyyyy = (-u(i,l-5)+6.0*u(i,l-4)-14.0*u(i,l-3)+16.0*u(i,l-2)- & + & 9.0*u(i,l-1)+2.0*u(i,l))/dly4 + return +! +! periodic at y=d-dly +! + 70 continue + uyyy = (-u(i,l-3)+2.0*u(i,l-2)-2.0*u(i,1)+u(i,2))/tdly3 + uyyyy = (u(i,l-3)-4.0*u(i,l-2)+6.0*u(i,l-1)-4.0*u(i,1)+u(i,2))/ & + & dly4 + return +! +! compute partial derivative approximations at y=d +! + 80 uyyy = -(3.0*u(i,l-4)-14.0*u(i,l-3)+24.0*u(i,l-2)-18.0*u(i,l-1)+ & + & 5.0*u(i,l))/tdly3 + uyyyy = (-2.0*u(i,l-5)+11.0*u(i,l-4)-24.0*u(i,l-3)+26.0*u(i,l-2)- & + & 14.0*u(i,l-1)+3.0*u(i,l))/dly4 + return +! +! revision history--- +! +! september 1973 version 1 +! april 1976 version 2 +! january 1978 version 3 +! december 1979 version 3.1 +! february 1985 documentation upgrade +! november 1988 version 3.2, fortran 77 changes +! june 1993 BIGREAL stuff added +!----------------------------------------------------------------------- + end diff --git a/Utility/sepeli.F b/Utility/sepeli.F new file mode 100644 index 0000000..ec1a8cd --- /dev/null +++ b/Utility/sepeli.F @@ -0,0 +1,1084 @@ + + subroutine sepeli (intl,iorder,a,b,m,mbdcnd,bda,alpha,bdb,beta,c, & + & d,n,nbdcnd,bdc,gama,bdd,xnu,cofx,cofy,grhs, & + & usol,idmn,w,pertrb,ierror) +! +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! * * +! * f i s h p a k * +! * * +! * * +! * a package of fortran subprograms for the solution of * +! * * +! * separable elliptic partial differential equations * +! * * +! * (version 3.2 , november 1988) * +! * * +! * by * +! * * +! * john adams, paul swarztrauber and roland sweet * +! * * +! * of * +! * * +! * the national center for atmospheric research * +! * * +! * boulder, colorado (80307) u.s.a. * +! * * +! * which is sponsored by * +! * * +! * the national science foundation * +! * * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! +! +! dimension of bda(n+1), bdb(n+1), bdc(m+1), bdd(m+1), +! arguments usol(idmn,n+1),grhs(idmn,n+1), +! w (see argument list) +! +! latest revision november 1988 +! +! purpose sepeli solves for either the second-order +! finite difference approximation or a +! fourth-order approximation to a separable +! elliptic equation +! +! 2 2 +! af(x)*d u/dx + bf(x)*du/dx + cf(x)*u + +! 2 2 +! df(y)*d u/dy + ef(y)*du/dy + ff(y)*u +! +! = g(x,y) +! +! on a rectangle (x greater than or equal to a +! and less than or equal to b; y greater than +! or equal to c and less than or equal to d). +! any combination of periodic or mixed boundary +! conditions is allowed. +! +! the possible boundary conditions are: +! in the x-direction: +! (0) periodic, u(x+b-a,y)=u(x,y) for all +! y,x (1) u(a,y), u(b,y) are specified for +! all y +! (2) u(a,y), du(b,y)/dx+beta*u(b,y) are +! specified for all y +! (3) du(a,y)/dx+alpha*u(a,y),du(b,y)/dx+ +! beta*u(b,y) are specified for all y +! (4) du(a,y)/dx+alpha*u(a,y),u(b,y) are +! specified for all y +! +! in the y-direction: +! (0) periodic, u(x,y+d-c)=u(x,y) for all x,y +! (1) u(x,c),u(x,d) are specified for all x +! (2) u(x,c),du(x,d)/dy+xnu*u(x,d) are +! specified for all x +! (3) du(x,c)/dy+gama*u(x,c),du(x,d)/dy+ +! xnu*u(x,d) are specified for all x +! (4) du(x,c)/dy+gama*u(x,c),u(x,d) are +! specified for all x +! +! usage call sepeli (intl,iorder,a,b,m,mbdcnd,bda, +! alpha,bdb,beta,c,d,n,nbdcnd,bdc, +! gama,bdd,xnu,cofx,cofy,grhs,usol, +! idmn,w,pertrb,ierror) +! +! arguments +! on input intl +! = 0 on initial entry to sepeli or if any +! of the arguments c,d, n, nbdcnd, cofy +! are changed from a previous call +! = 1 if c, d, n, nbdcnd, cofy are unchanged +! from the previous call. +! +! iorder +! = 2 if a second-order approximation +! is sought +! = 4 if a fourth-order approximation +! is sought +! +! a,b +! the range of the x-independent variable, +! i.e., x is greater than or equal to a +! and less than or equal to b. a must be +! less than b. +! +! m +! the number of panels into which the +! interval [a,b] is subdivided. hence, +! there will be m+1 grid points in the x- +! direction given by xi=a+(i-1)*dlx +! for i=1,2,...,m+1 where dlx=(b-a)/m is +! the panel width. m must be less than +! idmn and greater than 5. +! +! mbdcnd +! indicates the type of boundary condition +! at x=a and x=b +! +! = 0 if the solution is periodic in x, i.e., +! u(x+b-a,y)=u(x,y) for all y,x +! = 1 if the solution is specified at x=a +! and x=b, i.e., u(a,y) and u(b,y) are +! specified for all y +! = 2 if the solution is specified at x=a and +! the boundary condition is mixed at x=b, +! i.e., u(a,y) and du(b,y)/dx+beta*u(b,y) +! are specified for all y +! = 3 if the boundary conditions at x=a and +! x=b are mixed, i.e., +! du(a,y)/dx+alpha*u(a,y) and +! du(b,y)/dx+beta*u(b,y) are specified +! for all y +! = 4 if the boundary condition at x=a is +! mixed and the solution is specified +! at x=b, i.e., du(a,y)/dx+alpha*u(a,y) +! and u(b,y) are specified for all y +! +! bda +! a one-dimensional array of length n+1 +! that specifies the values of +! du(a,y)/dx+ alpha*u(a,y) at x=a, when +! mbdcnd=3 or 4. +! bda(j) = du(a,yj)/dx+alpha*u(a,yj), +! j=1,2,...,n+1. when mbdcnd has any other +! other value, bda is a dummy parameter. +! +! alpha +! the scalar multiplying the solution in +! case of a mixed boundary condition at x=a +! (see argument bda). if mbdcnd is not +! equal to 3 or 4 then alpha is a dummy +! parameter. +! +! bdb +! a one-dimensional array of length n+1 +! that specifies the values of +! du(b,y)/dx+ beta*u(b,y) at x=b. +! when mbdcnd=2 or 3 +! bdb(j) = du(b,yj)/dx+beta*u(b,yj), +! j=1,2,...,n+1. when mbdcnd has any other +! other value, bdb is a dummy parameter. +! +! beta +! the scalar multiplying the solution in +! case of a mixed boundary condition at +! x=b (see argument bdb). if mbdcnd is +! not equal to 2 or 3 then beta is a dummy +! parameter. +! +! c,d +! the range of the y-independent variable, +! i.e., y is greater than or equal to c +! and less than or equal to d. c must be +! less than d. +! +! n +! the number of panels into which the +! interval [c,d] is subdivided. +! hence, there will be n+1 grid points +! in the y-direction given by +! yj=c+(j-1)*dly for j=1,2,...,n+1 where +! dly=(d-c)/n is the panel width. +! in addition, n must be greater than 4. +! +! nbdcnd +! indicates the types of boundary conditions +! at y=c and y=d +! +! = 0 if the solution is periodic in y, +! i.e., u(x,y+d-c)=u(x,y) for all x,y +! = 1 if the solution is specified at y=c +! and y = d, i.e., u(x,c) and u(x,d) +! are specified for all x +! = 2 if the solution is specified at y=c +! and the boundary condition is mixed +! at y=d, i.e., u(x,c) and +! du(x,d)/dy+xnu*u(x,d) are specified +! for all x +! = 3 if the boundary conditions are mixed +! at y=c and y=d, i.e., +! du(x,d)/dy+gama*u(x,c) and +! du(x,d)/dy+xnu*u(x,d) are specified +! for all x +! = 4 if the boundary condition is mixed +! at y=c and the solution is specified +! at y=d, i.e. du(x,c)/dy+gama*u(x,c) +! and u(x,d) are specified for all x +! +! bdc +! a one-dimensional array of length m+1 +! that specifies the value of +! du(x,c)/dy+gama*u(x,c) at y=c. +! when nbdcnd=3 or 4 bdc(i) = du(xi,c)/dy + +! gama*u(xi,c), i=1,2,...,m+1. +! when nbdcnd has any other value, bdc +! is a dummy parameter. +! +! gama +! the scalar multiplying the solution in +! case of a mixed boundary condition at +! y=c (see argument bdc). if nbdcnd is +! not equal to 3 or 4 then gama is a dummy +! parameter. +! +! bdd +! a one-dimensional array of length m+1 +! that specifies the value of +! du(x,d)/dy + xnu*u(x,d) at y=c. +! when nbdcnd=2 or 3 bdd(i) = du(xi,d)/dy + +! xnu*u(xi,d), i=1,2,...,m+1. +! when nbdcnd has any other value, bdd +! is a dummy parameter. +! +! xnu +! the scalar multiplying the solution in +! case of a mixed boundary condition at +! y=d (see argument bdd). if nbdcnd is +! not equal to 2 or 3 then xnu is a +! dummy parameter. +! +! cofx +! a user-supplied subprogram with +! parameters x, afun, bfun, cfun which +! returns the values of the x-dependent +! coefficients af(x), bf(x), cf(x) in the +! elliptic equation at x. +! +! cofy +! a user-supplied subprogram with parameters +! y, dfun, efun, ffun which returns the +! values of the y-dependent coefficients +! df(y), ef(y), ff(y) in the elliptic +! equation at y. +! +! note: cofx and cofy must be declared +! external in the calling routine. +! the values returned in afun and dfun +! must satisfy afun*dfun greater than 0 +! for a less than x less than b, c less +! than y less than d (see ierror=10). +! the coefficients provided may lead to a +! matrix equation which is not diagonally +! dominant in which case solution may fail +! (see ierror=4). +! +! grhs +! a two-dimensional array that specifies the +! values of the right-hand side of the +! elliptic equation, i.e., +! grhs(i,j)=g(xi,yi), for i=2,...,m, +! j=2,...,n. at the boundaries, grhs is +! defined by +! +! mbdcnd grhs(1,j) grhs(m+1,j) +! ------ --------- ----------- +! 0 g(a,yj) g(b,yj) +! 1 * * +! 2 * g(b,yj) j=1,2,...,n+1 +! 3 g(a,yj) g(b,yj) +! 4 g(a,yj) * +! +! nbdcnd grhs(i,1) grhs(i,n+1) +! ------ --------- ----------- +! 0 g(xi,c) g(xi,d) +! 1 * * +! 2 * g(xi,d) i=1,2,...,m+1 +! 3 g(xi,c) g(xi,d) +! 4 g(xi,c) * +! +! where * means these quantities are not used. +! grhs should be dimensioned idmn by at least +! n+1 in the calling routine. +! +! usol +! a two-dimensional array that specifies the +! values of the solution along the boundaries. +! at the boundaries, usol is defined by +! +! mbdcnd usol(1,j) usol(m+1,j) +! ------ --------- ----------- +! 0 * * +! 1 u(a,yj) u(b,yj) +! 2 u(a,yj) * j=1,2,...,n+1 +! 3 * * +! 4 * u(b,yj) +! +! nbdcnd usol(i,1) usol(i,n+1) +! ------ --------- ----------- +! 0 * * +! 1 u(xi,c) u(xi,d) +! 2 u(xi,c) * i=1,2,...,m+1 +! 3 * * +! 4 * u(xi,d) +! +! where * means the quantities are not used +! in the solution. +! +! if iorder=2, the user may equivalence grhs +! and usol to save space. note that in this +! case the tables specifying the boundaries +! of the grhs and usol arrays determine the +! boundaries uniquely except at the corners. +! if the tables call for both g(x,y) and +! u(x,y) at a corner then the solution must +! be chosen. for example, if mbdcnd=2 and +! nbdcnd=4, then u(a,c), u(a,d), u(b,d) must +! be chosen at the corners in addition +! to g(b,c). +! +! if iorder=4, then the two arrays, usol and +! grhs, must be distinct. +! +! usol should be dimensioned idmn by at least +! n+1 in the calling routine. +! +! idmn +! the row (or first) dimension of the arrays +! grhs and usol as it appears in the program +! calling sepeli. this parameter is used +! to specify the variable dimension of grhs +! and usol. idmn must be at least 7 and +! greater than or equal to m+1. +! +! w +! a one-dimensional array that must be +! provided by the user for work space. +! let k=int(log2(n+1))+1 and set l=2**(k+1). +! then (k-2)*l+k+10*n+12*m+27 will suffice +! as a length of w. the actual length of w +! in the calling routine must be set in w(1) +! (see ierror=11). +! +! on output usol +! contains the approximate solution to the +! elliptic equation. +! usol(i,j) is the approximation to u(xi,yj) +! for i=1,2...,m+1 and j=1,2,...,n+1. +! the approximation has error +! o(dlx**2+dly**2) if called with iorder=2 +! and o(dlx**4+dly**4) if called with +! iorder=4. +! +! w +! contains intermediate values that must not +! be destroyed if sepeli is called again with +! intl=1. in addition w(1) contains the +! exact minimal length (in floating point) +! required for the work space (see ierror=11). +! +! pertrb +! if a combination of periodic or derivative +! boundary conditions +! (i.e., alpha=beta=0 if mbdcnd=3; +! gama=xnu=0 if nbdcnd=3) is specified +! and if the coefficients of u(x,y) in the +! separable elliptic equation are zero +! (i.e., cf(x)=0 for x greater than or equal +! to a and less than or equal to b; +! ff(y)=0 for y greater than or equal to c +! and less than or equal to d) then a +! solution may not exist. pertrb is a +! constant calculated and subtracted from +! the right-hand side of the matrix equations +! generated by sepeli which insures that a +! solution exists. sepeli then computes this +! solution which is a weighted minimal least +! squares solution to the original problem. +! +! ierror +! an error flag that indicates invalid input +! parameters or failure to find a solution +! = 0 no error +! = 1 if a greater than b or c greater than d +! = 2 if mbdcnd less than 0 or mbdcnd greater +! than 4 +! = 3 if nbdcnd less than 0 or nbdcnd greater +! than 4 +! = 4 if attempt to find a solution fails. +! (the linear system generated is not +! diagonally dominant.) +! = 5 if idmn is too small +! (see discussion of idmn) +! = 6 if m is too small or too large +! (see discussion of m) +! = 7 if n is too small (see discussion of n) +! = 8 if iorder is not 2 or 4 +! = 9 if intl is not 0 or 1 +! = 10 if afun*dfun less than or equal to 0 +! for some interior mesh point (xi,yj) +! = 11 if the work space length input in w(1) +! is less than the exact minimal work +! space length required output in w(1). +! +! note (concerning ierror=4): for the +! coefficients input through cofx, cofy, +! the discretization may lead to a block +! tridiagonal linear system which is not +! diagonally dominant (for example, this +! happens if cfun=0 and bfun/(2.*dlx) greater +! than afun/dlx**2). in this case solution +! may fail. this cannot happen in the limit +! as dlx, dly approach zero. hence, the +! condition may be remedied by taking larger +! values for m or n. +! +! special conditions see cofx, cofy argument descriptions above. +! +! i/o none +! +! precision single +! +! required library blktri, comf, and sepaux +! files from fishpak +! +! language fortran +! +! history developed at ncar during 1975-76 by +! john c. adams of the scientific computing +! division. released on ncar's public software +! libraries in january 1980. +! +! portability fortran 77 +! +! algorithm sepeli automatically discretizes the +! separable elliptic equation which is then +! solved by a generalized cyclic reduction +! algorithm in the subroutine, blktri. the +! fourth-order solution is obtained using +! 'deferred corrections' which is described +! and referenced in sections, references and +! method. +! +! timing the operational count is proportional to +! m*n*log2(n). +! +! accuracy the following accuracy results were obtained +! on a cdc 7600. note that the fourth-order +! accuracy is not realized until the mesh is +! sufficiently refined. +! +! second-order fourth-order +! m n error error +! +! 6 6 6.8e-1 1.2e0 +! 14 14 1.4e-1 1.8e-1 +! 30 30 3.2e-2 9.7e-3 +! 62 62 7.5e-3 3.0e-4 +! 126 126 1.8e-3 3.5e-6 +! +! +! references keller, h.b., numerical methods for two-point +! boundary-value problems, blaisdel (1968), +! waltham, mass. +! +! swarztrauber, p., and r. sweet (1975): +! efficient fortran subprograms for the +! solution of elliptic partial differential +! equations. ncar technical note +! ncar-tn/ia-109, pp. 135-137. +!*********************************************************************** +#include "griddefs.h" + integer intl ,iorder ,m ,n , & + & mbdcnd ,nbdcnd ,idmn ,ierror + BIGREAL a ,b ,c ,d , & + & alpha ,beta ,gama ,xnu , & + & pertrb + BIGREAL grhs(idmn,n+1) ,usol(idmn,n+1) + BIGREAL bda(*) ,bdb(*) ,bdc(*) ,bdd(*) , & + & w(*) + external cofx ,cofy + integer l ,logb2n ,ll ,linput , & + & loutpt ,i1 ,length ,i2 , & + & i3 ,i4 ,i5 ,i6 , & + & i7 ,i8 ,i9 ,i10 , & + & i11 ,i12 ,i13 ,k +! +! check input parameters +! + call chkprm (intl,iorder,a,b,m,mbdcnd,c,d,n,nbdcnd,cofx,cofy, & + & idmn,ierror) + if (ierror .ne. 0) return +! +! compute minimum work space and check work space length input +! + l = n+1 + if (nbdcnd .eq. 0) l = n + logb2n = int(alog(float(l)+0.5)/alog(2.0))+1 + ll = 2**(logb2n+1) + k = m+1 + l = n+1 + length = (logb2n-2)*ll+logb2n+max0(2*l,6*k)+5 + if (nbdcnd .eq. 0) length = length+2*l + ierror = 11 + linput = int(w(1)+0.5) + loutpt = length+6*(k+l)+1 + w(1) = float(loutpt) + if (loutpt .gt. linput) return + ierror = 0 +! +! set work space indices +! + i1 = length+2 + i2 = i1+l + i3 = i2+l + i4 = i3+l + i5 = i4+l + i6 = i5+l + i7 = i6+l + i8 = i7+k + i9 = i8+k + i10 = i9+k + i11 = i10+k + i12 = i11+k + i13 = 2 + call spelip (intl,iorder,a,b,m,mbdcnd,bda,alpha,bdb,beta,c,d,n, & + & nbdcnd,bdc,gama,bdd,xnu,cofx,cofy,w(i1),w(i2),w(i3), & + & w(i4),w(i5),w(i6),w(i7),w(i8),w(i9),w(i10),w(i11), & + & w(i12),grhs,usol,idmn,w(i13),pertrb,ierror) + return + end + subroutine spelip (intl,iorder,a,b,m,mbdcnd,bda,alpha,bdb,beta,c, & + & d,n,nbdcnd,bdc,gama,bdd,xnu,cofx,cofy,an,bn, & + & cn,dn,un,zn,am,bm,cm,dm,um,zm,grhs,usol,idmn, & + & w,pertrb,ierror) +! +! spelip sets up vectors and arrays for input to blktri +! and computes a second order solution in usol. a return jump to +! sepeli occurrs if iorder=2. if iorder=4 a fourth order +! solution is generated in usol. +! + integer intl ,iorder ,m ,mbdcnd , & + & n ,nbdcnd ,idmn ,ierror + BIGREAL a ,b ,c ,d , & + & alpha ,beta ,gama ,xnu , & + & pertrb + BIGREAL bda(*) ,bdb(*) ,bdc(*) ,bdd(*) , & + & w(*) + BIGREAL grhs(idmn,n+1) ,usol(idmn,n+1) + BIGREAL an(*) ,bn(*) ,cn(*) ,dn(*) , & + & un(*) ,zn(*) + BIGREAL am(*) ,bm(*) ,cm(*) ,dm(*) , & + & um(*) ,zm(*) + integer kswx ,kswy ,k ,l , & + & mit ,nit ,is ,ms , & + & js ,ns + BIGREAL ait ,bit ,cit ,dit , & + & dlx ,dly ,tdlx3 ,tdly3 , & + & dlx4 ,dly4 + common /splp/ kswx ,kswy ,k ,l , & + & ait ,bit ,cit ,dit , & + & mit ,nit ,is ,ms , & + & js ,ns ,dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + logical singlr + external cofx ,cofy + integer i ,j ,i1 ,mp , & + & np ,iord + BIGREAL xi ,ai ,bi ,ci , & + & axi ,bxi ,cxi ,yj , & + & dj ,ej ,fj ,dyj , & + & eyj ,fyj ,ax1 ,cxm , & + & dy1 ,fyn ,prtrb +! +! set parameters internally +! + kswx = mbdcnd+1 + kswy = nbdcnd+1 + k = m+1 + l = n+1 + ait = a + bit = b + cit = c + dit = d +! +! set right hand side values from grhs in usol on the interior +! and non-specified boundaries. +! + do 20 i=2,m + do 10 j=2,n + usol(i,j) = grhs(i,j) + 10 continue + 20 continue + if (kswx.eq.2 .or. kswx.eq.3) go to 40 + do 30 j=2,n + usol(1,j) = grhs(1,j) + 30 continue + 40 continue + if (kswx.eq.2 .or. kswx.eq.5) go to 60 + do 50 j=2,n + usol(k,j) = grhs(k,j) + 50 continue + 60 continue + if (kswy.eq.2 .or. kswy.eq.3) go to 80 + do 70 i=2,m + usol(i,1) = grhs(i,1) + 70 continue + 80 continue + if (kswy.eq.2 .or. kswy.eq.5) go to 100 + do 90 i=2,m + usol(i,l) = grhs(i,l) + 90 continue + 100 continue + if (kswx.ne.2 .and. kswx.ne.3 .and. kswy.ne.2 .and. kswy.ne.3) & + & usol(1,1) = grhs(1,1) + if (kswx.ne.2 .and. kswx.ne.5 .and. kswy.ne.2 .and. kswy.ne.3) & + & usol(k,1) = grhs(k,1) + if (kswx.ne.2 .and. kswx.ne.3 .and. kswy.ne.2 .and. kswy.ne.5) & + & usol(1,l) = grhs(1,l) + if (kswx.ne.2 .and. kswx.ne.5 .and. kswy.ne.2 .and. kswy.ne.5) & + & usol(k,l) = grhs(k,l) + i1 = 1 +! +! set switches for periodic or non-periodic boundaries +! + mp = 1 + np = 1 + if (kswx .eq. 1) mp = 0 + if (kswy .eq. 1) np = 0 +! +! set dlx,dly and size of block tri-diagonal system generated +! in nint,mint +! + dlx = (bit-ait)/float(m) + mit = k-1 + if (kswx .eq. 2) mit = k-2 + if (kswx .eq. 4) mit = k + dly = (dit-cit)/float(n) + nit = l-1 + if (kswy .eq. 2) nit = l-2 + if (kswy .eq. 4) nit = l + tdlx3 = 2.0*dlx**3 + dlx4 = dlx**4 + tdly3 = 2.0*dly**3 + dly4 = dly**4 +! +! set subscript limits for portion of array to input to blktri +! + is = 1 + js = 1 + if (kswx.eq.2 .or. kswx.eq.3) is = 2 + if (kswy.eq.2 .or. kswy.eq.3) js = 2 + ns = nit+js-1 + ms = mit+is-1 +! +! set x - direction +! + do 110 i=1,mit + xi = ait+float(is+i-2)*dlx + call cofx (xi,ai,bi,ci) + axi = (ai/dlx-0.5*bi)/dlx + bxi = -2.*ai/dlx**2+ci + cxi = (ai/dlx+0.5*bi)/dlx + am(i) = axi + bm(i) = bxi + cm(i) = cxi + 110 continue +! +! set y direction +! + do 120 j=1,nit + yj = cit+float(js+j-2)*dly + call cofy (yj,dj,ej,fj) + dyj = (dj/dly-0.5*ej)/dly + eyj = (-2.*dj/dly**2+fj) + fyj = (dj/dly+0.5*ej)/dly + an(j) = dyj + bn(j) = eyj + cn(j) = fyj + 120 continue +! +! adjust edges in x direction unless periodic +! + ax1 = am(1) + cxm = cm(mit) + go to (170,130,150,160,140),kswx +! +! dirichlet-dirichlet in x direction +! + 130 am(1) = 0.0 + cm(mit) = 0.0 + go to 170 +! +! mixed-dirichlet in x direction +! + 140 am(1) = 0.0 + bm(1) = bm(1)+2.*alpha*dlx*ax1 + cm(1) = cm(1)+ax1 + cm(mit) = 0.0 + go to 170 +! +! dirichlet-mixed in x direction +! + 150 am(1) = 0.0 + am(mit) = am(mit)+cxm + bm(mit) = bm(mit)-2.*beta*dlx*cxm + + cm(mit) = 0.0 + go to 170 +! +! mixed - mixed in x direction +! + 160 continue + am(1) = 0.0 + bm(1) = bm(1)+2.*dlx*alpha*ax1 + cm(1) = cm(1)+ax1 + am(mit) = am(mit)+cxm + bm(mit) = bm(mit)-2.*dlx*beta*cxm + cm(mit) = 0.0 + 170 continue +! +! adjust in y direction unless periodic +! + dy1 = an(1) + fyn = cn(nit) + go to (220,180,200,210,190),kswy +! +! dirichlet-dirichlet in y direction +! + 180 continue + an(1) = 0.0 + cn(nit) = 0.0 + go to 220 +! +! mixed-dirichlet in y direction +! + 190 continue + an(1) = 0.0 + bn(1) = bn(1)+2.*dly*gama*dy1 + cn(1) = cn(1)+dy1 + cn(nit) = 0.0 + go to 220 +! +! dirichlet-mixed in y direction +! + 200 an(1) = 0.0 + an(nit) = an(nit)+fyn + bn(nit) = bn(nit)-2.*dly*xnu*fyn + cn(nit) = 0.0 + go to 220 +! +! mixed - mixed direction in y direction +! + 210 continue + an(1) = 0.0 + bn(1) = bn(1)+2.*dly*gama*dy1 + cn(1) = cn(1)+dy1 + an(nit) = an(nit)+fyn + bn(nit) = bn(nit)-2.0*dly*xnu*fyn + cn(nit) = 0.0 + 220 if (kswx .eq. 1) go to 270 +! +! adjust usol along x edge +! + do 260 j=js,ns + if (kswx.ne.2 .and. kswx.ne.3) go to 230 + usol(is,j) = usol(is,j)-ax1*usol(1,j) + go to 240 + 230 usol(is,j) = usol(is,j)+2.0*dlx*ax1*bda(j) + 240 if (kswx.ne.2 .and. kswx.ne.5) go to 250 + usol(ms,j) = usol(ms,j)-cxm*usol(k,j) + go to 260 + 250 usol(ms,j) = usol(ms,j)-2.0*dlx*cxm*bdb(j) + 260 continue + 270 if (kswy .eq. 1) go to 320 +! +! adjust usol along y edge +! + do 310 i=is,ms + if (kswy.ne.2 .and. kswy.ne.3) go to 280 + usol(i,js) = usol(i,js)-dy1*usol(i,1) + go to 290 + 280 usol(i,js) = usol(i,js)+2.0*dly*dy1*bdc(i) + 290 if (kswy.ne.2 .and. kswy.ne.5) go to 300 + usol(i,ns) = usol(i,ns)-fyn*usol(i,l) + go to 310 + 300 usol(i,ns) = usol(i,ns)-2.0*dly*fyn*bdd(i) + 310 continue + 320 continue +! +! save adjusted edges in grhs if iorder=4 +! + if (iorder .ne. 4) go to 350 + do 330 j=js,ns + grhs(is,j) = usol(is,j) + grhs(ms,j) = usol(ms,j) + 330 continue + do 340 i=is,ms + grhs(i,js) = usol(i,js) + grhs(i,ns) = usol(i,ns) + 340 continue + 350 continue + iord = iorder + pertrb = 0.0 +! +! check if operator is singular +! + call chksng (mbdcnd,nbdcnd,alpha,beta,gama,xnu,cofx,cofy,singlr) +! +! compute non-zero eigenvector in null space of transpose +! if singular +! + if (singlr) call septri (mit,am,bm,cm,dm,um,zm) + if (singlr) call septri (nit,an,bn,cn,dn,un,zn) +! +! make initialization call to blktri +! + if (intl .eq. 0) & + & call blktri (intl,np,nit,an,bn,cn,mp,mit,am,bm,cm,idmn, & + & usol(is,js),ierror,w) + if (ierror .ne. 0) return +! +! adjust right hand side if necessary +! + 360 continue + if (singlr) call seport (usol,idmn,zn,zm,pertrb) +! +! compute solution +! + call blktri (i1,np,nit,an,bn,cn,mp,mit,am,bm,cm,idmn,usol(is,js), & + & ierror,w) + if (ierror .ne. 0) return +! +! set periodic boundaries if necessary +! + if (kswx .ne. 1) go to 380 + do 370 j=1,l + usol(k,j) = usol(1,j) + 370 continue + 380 if (kswy .ne. 1) go to 400 + do 390 i=1,k + usol(i,l) = usol(i,1) + 390 continue + 400 continue +! +! minimize solution with respect to weighted least squares +! norm if operator is singular +! + if (singlr) call sepmin (usol,idmn,zn,zm,prtrb) +! +! return if deferred corrections and a fourth order solution are +! not flagged +! + if (iord .eq. 2) return + iord = 2 +! +! compute new right hand side for fourth order solution +! + call defer (cofx,cofy,idmn,n,usol,grhs) + go to 360 + end + subroutine chkprm (intl,iorder,a,b,m,mbdcnd,c,d,n,nbdcnd,cofx, & + & cofy,idmn,ierror) +! +! this program checks the input parameters for errors +! + integer intl ,iorder ,m ,mbdcnd , & + & n ,nbdcnd ,idmn ,ierror + BIGREAL a ,b ,c ,d + external cofx ,cofy + integer i ,j + BIGREAL ai ,bi ,ci ,xi , & + & dj ,ej ,fj ,yj , & + & dlx ,dly +! +! check definition of solution region +! + ierror = 1 + if (a.ge.b .or. c.ge.d) return +! +! check boundary switches +! + ierror = 2 + if (mbdcnd.lt.0 .or. mbdcnd.gt.4) return + ierror = 3 + if (nbdcnd.lt.0 .or. nbdcnd.gt.4) return +! +! check first dimension in calling routine +! + ierror = 5 + if (idmn .lt. 7) return +! +! check m +! + ierror = 6 + if (m.gt.(idmn-1) .or. m.lt.6) return +! +! check n +! + ierror = 7 + if (n .lt. 5) return +! +! check iorder +! + ierror = 8 + if (iorder.ne.2 .and. iorder.ne.4) return +! +! check intl +! + ierror = 9 + if (intl.ne.0 .and. intl.ne.1) return +! +! check that equation is elliptic +! + dlx = (b-a)/float(m) + dly = (d-c)/float(n) + do 30 i=2,m + xi = a+float(i-1)*dlx + call cofx (xi,ai,bi,ci) + do 20 j=2,n + yj = c+float(j-1)*dly + call cofy (yj,dj,ej,fj) + if (ai*dj .gt. 0.0) go to 10 + ierror = 10 + return + 10 continue + 20 continue + 30 continue +! +! no error found +! + ierror = 0 + return + end + subroutine chksng (mbdcnd,nbdcnd,alpha,beta,gama,xnu,cofx,cofy, & + & singlr) +! +! this subroutine checks if the pde sepeli +! must solve is a singular operator +! + integer mbdcnd ,nbdcnd + BIGREAL alpha ,beta ,gama ,xnu + integer kswx ,kswy ,k ,l , & + & mit ,nit ,is ,ms , & + & js ,ns + BIGREAL ait ,bit ,cit ,dit , & + & dlx ,dly ,tdlx3 ,tdly3 , & + & dlx4 ,dly4 + common /splp/ kswx ,kswy ,k ,l , & + & ait ,bit ,cit ,dit , & + & mit ,nit ,is ,ms , & + & js ,ns ,dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + logical singlr + integer i ,j + BIGREAL ai ,bi ,ci ,xi , & + & dj ,ej ,fj ,yj + external cofx ,cofy + singlr = .false. +! +! check if the boundary conditions are +! entirely periodic and/or mixed +! + if ((mbdcnd.ne.0 .and. mbdcnd.ne.3) .or. & + & (nbdcnd.ne.0 .and. nbdcnd.ne.3)) return +! +! check that mixed conditions are pure neuman +! + if (mbdcnd .ne. 3) go to 10 + if (alpha.ne.0.0 .or. beta.ne.0.0) return + 10 if (nbdcnd .ne. 3) go to 20 + if (gama.ne.0.0 .or. xnu.ne.0.0) return + 20 continue +! +! check that non-derivative coefficient functions +! are zero +! + do 30 i=is,ms + xi = ait+float(i-1)*dlx + call cofx (xi,ai,bi,ci) + if (ci .ne. 0.0) return + 30 continue + do 40 j=js,ns + yj = cit+float(j-1)*dly + call cofy (yj,dj,ej,fj) + if (fj .ne. 0.0) return + 40 continue +! +! the operator must be singular if this point is reached +! + singlr = .true. + return + end + subroutine defer (cofx,cofy,idmn,n,usol,grhs) +! +! this subroutine first approximates the truncation error given by +! trun1(x,y)=dlx**2*tx+dly**2*ty where +! tx=afun(x)*uxxxx/12.0+bfun(x)*uxxx/6.0 on the interior and +! at the boundaries if periodic(here uxxx,uxxxx are the third +! and fourth partial derivatives of u with respect to x). +! tx is of the form afun(x)/3.0*(uxxxx/4.0+uxxx/dlx) +! at x=a or x=b if the boundary condition there is mixed. +! tx=0.0 along specified boundaries. ty has symmetric form +! in y with x,afun(x),bfun(x) replaced by y,dfun(y),efun(y). +! the second order solution in usol is used to approximate +! (via second order finite differencing) the truncation error +! and the result is added to the right hand side in grhs +! and then transferred to usol to be used as a new right +! hand side when calling blktri for a fourth order solution. +! + integer idmn ,n + integer kswx ,kswy ,k ,l , & + & mit ,nit ,is ,ms , & + & js ,ns + BIGREAL ait ,bit ,cit ,dit , & + & dlx ,dly ,tdlx3 ,tdly3 , & + & dlx4 ,dly4 + common /splp/ kswx ,kswy ,k ,l , & + & ait ,bit ,cit ,dit , & + & mit ,nit ,is ,ms , & + & js ,ns ,dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + BIGREAL grhs(idmn,n+1) ,usol(idmn,n+1) + external cofx ,cofy + integer i ,j + BIGREAL ai ,bi ,ci ,xi , & + & dj ,ej ,fj ,yj , & + & uxxx ,uxxxx ,uyyy ,uyyyy , & + & tx ,ty +! +! compute truncation error approximation over the entire mesh +! + do 40 j=js,ns + yj = cit+float(j-1)*dly + call cofy (yj,dj,ej,fj) + do 30 i=is,ms + xi = ait+float(i-1)*dlx + call cofx (xi,ai,bi,ci) +! +! compute partial derivative approximations at (xi,yj) +! + call sepdx (usol,idmn,i,j,uxxx,uxxxx) + call sepdy (usol,idmn,i,j,uyyy,uyyyy) + tx = ai*uxxxx/12.0+bi*uxxx/6.0 + ty = dj*uyyyy/12.0+ej*uyyy/6.0 +! +! reset form of truncation if at boundary which is non-periodic +! + if (kswx.eq.1 .or. (i.gt.1 .and. i.lt.k)) go to 10 + tx = ai/3.0*(uxxxx/4.0+uxxx/dlx) + 10 if (kswy.eq.1 .or. (j.gt.1 .and. j.lt.l)) go to 20 + ty = dj/3.0*(uyyyy/4.0+uyyy/dly) + 20 grhs(i,j) = grhs(i,j)+dlx**2*tx+dly**2*ty + 30 continue + 40 continue +! +! reset the right hand side in usol +! + do 60 i=is,ms + do 50 j=js,ns + usol(i,j) = grhs(i,j) + 50 continue + 60 continue + return +! +! revision history--- +! +! september 1973 version 1 +! april 1976 version 2 +! january 1978 version 3 +! december 1979 version 3.1 +! february 1985 documentation upgrade +! november 1988 version 3.2, fortran 77 changes +!----------------------------------------------------------------------- + end diff --git a/Utility/sepx4.F b/Utility/sepx4.F new file mode 100644 index 0000000..2d1b7b3 --- /dev/null +++ b/Utility/sepx4.F @@ -0,0 +1,1012 @@ + subroutine sepx4 (iorder,a,b,m,mbdcnd,bda,alpha,bdb,beta,c,d,n, & + & nbdcnd,bdc,bdd,cofx,grhs,usol,idmn,w,pertrb, & + & ierror) +! +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! * * +! * f i s h p a k * +! * * +! * * +! * a package of fortran subprograms for the solution of * +! * * +! * separable elliptic partial differential equations * +! * * +! * (version 3.2 , november 1988) * +! * * +! * by * +! * * +! * john adams, paul swarztrauber and roland sweet * +! * * +! * of * +! * * +! * the national center for atmospheric research * +! * * +! * boulder, colorado (80307) u.s.a. * +! * * +! * which is sponsored by * +! * * +! * the national science foundation * +! * * +! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +! +! +! +! dimension of bda(n+1), bdb(n+1), bdc(m+1), bdd(m+1), +! arguments usol(idmn,n+1), grhs(idmn,n+1), +! w (see argument list) +! +! latest revision november 1988 +! +! purpose sepx4 solves for either the second-order +! finite difference approximation or a +! fourth-order approximation to a separable +! elliptic equation +! +! af(x)*uxx+bf(x)*ux+cf(x)*u+uyy = g(x,y) +! +! on a rectangle (x greater than or equal to +! a and less than or equal to b, y greater than +! or equal to c and less than or equal to d). +! any combination of periodic or mixed boundary +! conditions is allowed. if boundary +! conditions in the x direction are periodic +! (see mbdcnd=0 below) then the coefficients +! must satisfy +! +! af(x)=c1,bf(x)=0,cf(x)=c2 for all x. +! +! here c1,c2 are constants, c1.gt.0. +! +! the possible boundary conditions are: +! in the x-direction: +! (0) periodic, u(x+b-a,y)=u(x,y) for +! all y,x +! (1) u(a,y), u(b,y) are specified for all y +! (2) u(a,y), du(b,y)/dx+beta*u(b,y) are +! specified for all y +! (3) du(a,y)/dx+alpha*u(a,y),du(b,y)/dx+ +! beta*u(b,y) are specified for all y +! (4) du(a,y)/dx+alpha*u(a,y),u(b,y) are +! specified for all y +! +! in the y-direction: +! (0) periodic, u(x,y+d-c)=u(x,y) for all x,y +! (1) u(x,c),u(x,d) are specified for all x +! (2) u(x,c),du(x,d)/dy are specified for +! all x +! (3) du(x,c)/dy,du(x,d)/dy are specified for +! all x +! (4) du(x,c)/dy,u(x,d) are specified for +! all x +! +! usage call sepx4(iorder,a,b,m,mbdcnd,bda,alpha,bdb, +! beta,c,d,n,nbdcnd,bdc,bdd,cofx, +! grhs,usol,idmn,w,pertrb,ierror) +! +! arguments +! on input iorder +! = 2 if a second-order approximation is +! sought +! = 4 if a fourth-order approximation is +! sought +! +! a,b +! the range of the x-independent variable, +! i.e., x is greater than or equal to a +! and less than or equal to b. a must be +! less than b. +! +! m +! the number of panels into which the +! interval (a,b) is subdivided. hence, +! there will be m+1 grid points in the x- +! direction given by xi=a+(i-1)*dlx +! for i=1,2,...,m+1 where dlx=(b-a)/m is +! the panel width. m must be less than +! idmn and greater than 5. +! +! mbdcnd +! indicates the type of boundary condition +! at x=a and x=b +! = 0 if the solution is periodic in x, i.e., +! u(x+b-a,y)=u(x,y) for all y,x +! = 1 if the solution is specified at x=a +! and x=b, i.e., u(a,y) and u(b,y) are +! specified for all y +! = 2 if the solution is specified at x=a +! and the boundary condition is mixed at +! x=b, i.e., u(a,y) and +! du(b,y)/dx+beta*u(b,y) are specified +! for all y +! = 3 if the boundary conditions at x=a and +! x=b are mixed, i.e., +! du(a,y)/dx+alpha*u(a,y) and +! du(b,y)/dx+beta*u(b,y) are specified +! for all y +! = 4 if the boundary condition at x=a is +! mixed and the solution is specified +! at x=b, i.e., du(a,y)/dx+alpha*u(a,y) +! and u(b,y) are specified for all y +! +! bda +! a one-dimensional array of length n+1 that +! specifies the values of +! du(a,y)/dx+ alpha*u(a,y) at x=a, when +! mbdcnd=3 or 4. +! bda(j) = du(a,yj)/dx+alpha*u(a,yj), +! j=1,2,...,n+1 +! when mbdcnd has any other value, bda is +! a dummy parameter. +! +! alpha +! the scalar multiplying the solution in case +! of a mixed boundary condition at x=a +! (see argument bda). if mbdcnd is not equal +! to either 3 or 4, then alpha is a dummy +! parameter. +! +! bdb +! a one-dimensional array of length n+1 that +! specifies the values of +! du(b,y)/dx+ beta*u(b,y) at x=b. +! when mbdcnd=2 or 3 +! bdb(j) = du(b,yj)/dx+beta*u(b,yj), +! j=1,2,...,n+1 +! when mbdcnd has any other value, bdb is +! a dummy parameter. +! +! beta +! the scalar multiplying the solution in +! case of a mixed boundary condition at x=b +! (see argument bdb). if mbdcnd is not equal +! to 2 or 3, then beta is a dummy parameter. +! +! c,d +! the range of the y-independent variable, +! i.e., y is greater than or equal to c and +! less than or equal to d. c must be less +! than d. +! +! n +! the number of panels into which the +! interval (c,d) is subdivided. hence, +! there will be n+1 grid points in the y- +! direction given by yj=c+(j-1)*dly for +! j=1,2,...,n+1 where dly=(d-c)/n is the +! panel width. in addition, n must be +! greater than 4. +! +! nbdcnd +! indicates the types of boundary conditions +! at y=c and y=d +! = 0 if the solution is periodic in y, +! i.e., u(x,y+d-c)=u(x,y) for all x,y +! = 1 if the solution is specified at y=c +! and y = d, i.e., u(x,c) and u(x,d) +! are specified for all x +! = 2 if the solution is specified at y=c +! and the boundary condition is mixed +! at y=d, i.e., du(x,c)/dy and u(x,d) +! are specified for all x +! = 3 if the boundary conditions are mixed +! at y=cand y=d i.e., +! du(x,d)/dy and du(x,d)/dy are +! specified for all x +! = 4 if the boundary condition is mixed +! at y=c and the solution is specified +! at y=d, i.e. du(x,c)/dy+gama*u(x,c) +! and u(x,d) are specified for all x +! +! bdc +! a one-dimensional array of length m+1 that +! specifies the value du(x,c)/dy at y=c. +! +! when nbdcnd=3 or 4 +! bdc(i) = du(xi,c)/dy i=1,2,...,m+1. +! +! when nbdcnd has any other value, bdc is +! a dummy parameter. +! +! bdd +! a one-dimensional array of length m+1 that +! specified the value of du(x,d)/dy at y=d. +! +! when nbdcnd=2 or 3 +! bdd(i)=du(xi,d)/dy i=1,2,...,m+1. +! +! when nbdcnd has any other value, bdd is +! a dummy parameter. +! +! cofx +! a user-supplied subprogram with parameters +! x, afun, bfun, cfun which returns the +! values of the x-dependent coefficients +! af(x), bf(x), cf(x) in the elliptic +! equation at x. if boundary conditions in +! the x direction are periodic then the +! coefficients must satisfy af(x)=c1,bf(x)=0, +! cf(x)=c2 for all x. here c1.gt.0 +! and c2 are constants. +! +! note that cofx must be declared external +! in the calling routine. +! +! grhs +! a two-dimensional array that specifies the +! values of the right-hand side of the +! elliptic equation, i.e.,grhs(i,j)=g(xi,yi), +! for i=2,...,m, j=2,...,n. at the +! boundaries, grhs is defined by +! +! mbdcnd grhs(1,j) grhs(m+1,j) +! ------ --------- ----------- +! 0 g(a,yj) g(b,yj) +! 1 * * +! 2 * g(b,yj) j=1,2,...,n+1 +! 3 g(a,yj) g(b,yj) +! 4 g(a,yj) * +! +! nbdcnd grhs(i,1) grhs(i,n+1) +! ------ --------- ----------- +! 0 g(xi,c) g(xi,d) +! 1 * * +! 2 * g(xi,d) i=1,2,...,m+1 +! 3 g(xi,c) g(xi,d) +! 4 g(xi,c) * +! +! where * means these quantites are not used. +! grhs should be dimensioned idmn by at least +! n+1 in the calling routine. +! +! usol +! a two-dimensional array that specifies the +! values of the solution along the boundaries. +! at the boundaries, usol is defined by +! +! mbdcnd usol(1,j) usol(m+1,j) +! ------ --------- ----------- +! 0 * * +! 1 u(a,yj) u(b,yj) +! 2 u(a,yj) * j=1,2,...,n+1 +! 3 * * +! 4 * u(b,yj) +! +! nbdcnd usol(i,1) usol(i,n+1) +! ------ --------- ----------- +! 0 * * +! 1 u(xi,c) u(xi,d) +! 2 u(xi,c) * i=1,2,...,m+1 +! 3 * * +! 4 * u(xi,d) +! +! where * means the quantites are not used +! in the solution. +! +! if iorder=2, the user may equivalence grhs +! and usol to save space. note that in this +! case the tables specifying the boundaries +! of the grhs and usol arrays determine the +! boundaries uniquely except at the corners. +! if the tables call for both g(x,y) and +! u(x,y) at a corner then the solution must +! be chosen. +! for example, if mbdcnd=2 and nbdcnd=4, +! then u(a,c), u(a,d),u(b,d) must be chosen +! at the corners in addition to g(b,c). +! +! if iorder=4, then the two arrays, usol and +! grhs, must be distinct. +! +! usol should be dimensioned idmn by at least +! n+1 in the calling routine. +! +! idmn +! the row (or first) dimension of the arrays +! grhs and usol as it appears in the program +! calling sepeli. this parameter is used +! to specify the variable dimension of grhs +! and usol. idmn must be at least 7 and +! greater than or equal to m+1. +! +! w +! a one-dimensional array that must be +! provided by the user for work space. +! 10*n+(16+int(log2(n+1)))*(m+1)+11 will +! suffice as a length for w. the actual +! length of w in the calling routine +! must be set in w(1) (see ierror=11). +! +! +! on output usol +! contains the approximate solution to the +! elliptic equation. usol(i,j) is the +! approximation to u(xi,yj) for i=1,2...,m+1 +! and j=1,2,...,n+1. the approximation has +! error o(dlx**2+dly**2) if called with +! iorder=2 and o(dlx**4+dly**4) if called +! with iorder=4. +! +! w +! contains intermediate values that must not +! be destroyed if sepeli is called again +! with intl=1. in addition w(1) contains +! the exact minimal length (in floating point) +! required for the work space (see ierror=11). +! +! pertrb +! if a combination of periodic or derivative +! boundary conditions (i.e., alpha=beta=0 if +! mbdcnd=3) is specified and if cf(x)=0 for +! all x then a solution to the discretized +! matrix equation may not exist +! (reflecting the non-uniqueness of solutions +! to the pde). +! pertrb is a constant calculated and +! subtracted from the right hand side of the +! matrix equation insuring the existence of a +! solution. sepx4 computes this solution +! which is a weighted minimal least squares +! solution to the original problem. if +! singularity is not detected pertrb=0.0 is +! returned by sepx4. +! +! ierror +! an error flag that indicates invalid input +! parameters or failure to find a solution +! +! = 0 no error +! = 1 if a greater than b or c greater +! than d +! = 2 if mbdcnd less than 0 or mbdcnd +! greater than 4 +! = 3 if nbdcnd less than 0 or nbdcnd +! greater than 4 +! = 4 if attempt to find a solution fails. +! (the linear system generated is not +! diagonally dominant.) +! = 5 if idmn is too small (see discussion +! of idmn) +! = 6 if m is too small or too large +! (see discussion of m) +! = 7 if n is too small (see discussion of n) +! = 8 if iorder is not 2 or 4 +! = 9 if intl is not 0 or 1 +! = 10 if afun is less than or equal to zero +! for some interior mesh point xi some +! interior mesh point (xi,yj) +! = 11 if the work space length input in w(1) +! is less than the exact minimal work +! space length required output in w(1). +! = 12 if mbdcnd=0 and af(x)=cf(x)=constant +! or bf(x)=0 for all x is not true. +! +! special conditions none +! +! i/o none +! +! required library comf, genbun, gnbnaux, and sepaux +! files from fishpak +! +! +! precision single +! +! required library none +! files +! +! language fortran +! +! history sepx4 was developed at ncar by john c. +! adams of the scientific computing division +! in october 1978. the basis of this code is +! ncar routine sepeli. both packages were +! released on ncar's public libraries in +! january 1980. +! +! portability fortran 77 +! +! algorithm sepx4 automatically discretizes the separable +! elliptic equation which is then solved by a +! generalized cyclic reduction algorithm in the +! subroutine pois. the fourth order solution +! is obtained using the technique of defferred +! corrections referenced below. +! +! timing when possible, sepx4 should be used instead +! of package sepeli. the increase in speed +! is at least a factor of three. +! +! references keller, h.b., numerical methods for two-point +! boundary-value problems, blaisdel (1968), +! waltham, mass. +! +! swarztrauber, p., and r. sweet (1975): +! efficient fortran subprograms for the +! solution of elliptic partial differential +! equations. ncar technical note +! ncar-tn/ia-109, pp. 135-137. +!*********************************************************************** +#include "griddefs.h" + integer iorder, m, mbdcnd, n, nbdcnd, idmn, ierror + BIGREAL grhs(idmn,1) ,usol(idmn,1) + BIGREAL bda(*) ,bdb(*) ,bdc(*) ,bdd(*) , & + & w(*) + BIGREAL a, b, alpha, beta, c, d, pertrb + external cofx + +! local variables + integer k, l, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, & + & i11, i12, i13, log2n, linput, loutpt, length + +! +! check input parameters +! + call c4kprm(iorder,a,b,m,mbdcnd,c,d,n,nbdcnd,cofx,idmn,ierror) + if (ierror .ne. 0) return +! +! compute minimum work space and check work space length input +! + l = n+1 + if (nbdcnd .eq. 0) l = n + k = m+1 + l = n+1 +! estimate log base 2 of n + log2n=int(alog(float(n+1))/alog(2.0)+0.5) + length=4*(n+1)+(10+log2n)*(m+1) + ierror = 11 + linput = int(w(1)+0.5) + loutpt = length+6*(k+l)+1 + w(1) = float(loutpt) + if (loutpt .gt. linput) return + ierror = 0 +! +! set work space indices +! + i1 = length+2 + i2 = i1+l + i3 = i2+l + i4 = i3+l + i5 = i4+l + i6 = i5+l + i7 = i6+l + i8 = i7+k + i9 = i8+k + i10 = i9+k + i11 = i10+k + i12 = i11+k + i13 = 2 + call s4elip(iorder,a,b,m,mbdcnd,bda,alpha,bdb,beta,c,d,n, & + & nbdcnd,bdc,bdd,cofx,w(i1),w(i2),w(i3), & + & w(i4),w(i5),w(i6),w(i7),w(i8),w(i9),w(i10),w(i11), & + & w(i12),grhs,usol,idmn,w(i13),pertrb,ierror) + return + end + + subroutine s4elip(iorder,a,b,m,mbdcnd,bda,alpha,bdb,beta,c,d,n, & + & nbdcnd,bdc,bdd,cofx,an,bn,cn,dn,un,zn,am,bm, & + & cm,dm,um,zm,grhs,usol,idmn,w,pertrb,ierror) +! +! s4elip sets up vectors and arrays for input to blktri +! and computes a second order solution in usol. a return jump to +! sepeli occurrs if iorder=2. if iorder=4 a fourth order +! solution is generated in usol. +! + integer iorder, m, mbdcnd, n, nbdcnd, idmn, ierror + BIGREAL bda(*) ,bdb(*) ,bdc(*) ,bdd(*) , & + & w(*) + BIGREAL grhs(idmn,1) ,usol(idmn,1) + BIGREAL an(*) ,bn(*) ,cn(*) ,dn(*) , & + & un(*) ,zn(*) + BIGREAL am(*) ,bm(*) ,cm(*) ,dm(*) , & + & um(*) ,zm(*) + integer kswx ,kswy ,k ,l , & + & mit ,nit ,is ,ms , & + & js ,ns + BIGREAL ait ,bit ,cit ,dit , & + & dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + common /splp/ kswx ,kswy ,k ,l , & + & ait ,bit ,cit ,dit , & + & mit ,nit ,is ,ms , & + & js ,ns ,dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + logical singlr + external cofx + +! local variables + integer i, j, i1, mp, np, iord, ieror + BIGREAL a, b, c, d, alpha, beta, pertrb, ai, bi, ci, & + & xi, axi, bxi, cxi, dyj, eyj, fyj, ax1, cxm, & + & dy1, fyn, gama, xnu, prtrb +! +! set parameters internally +! + kswx = mbdcnd+1 + kswy = nbdcnd+1 + k = m+1 + l = n+1 + ait = a + bit = b + cit = c + dit = d + dly=(dit-cit)/float(n) +! +! set right hand side values from grhs in usol on the interior +! and non-specified boundaries. +! + do 20 i=2,m + do 10 j=2,n + usol(i,j)=dly**2*grhs(i,j) + 10 continue + 20 continue + if (kswx.eq.2 .or. kswx.eq.3) go to 40 + do 30 j=2,n + usol(1,j)=dly**2*grhs(1,j) + 30 continue + 40 continue + if (kswx.eq.2 .or. kswx.eq.5) go to 60 + do 50 j=2,n + usol(k,j)=dly**2*grhs(k,j) + 50 continue + 60 continue + if (kswy.eq.2 .or. kswy.eq.3) go to 80 + do 70 i=2,m + usol(i,1)=dly**2*grhs(i,1) + 70 continue + 80 continue + if (kswy.eq.2 .or. kswy.eq.5) go to 100 + do 90 i=2,m + usol(i,l)=dly**2*grhs(i,l) + 90 continue + 100 continue + if (kswx.ne.2 .and. kswx.ne.3 .and. kswy.ne.2 .and. kswy.ne.3) & + &usol(1,1)=dly**2*grhs(1,1) + if (kswx.ne.2 .and. kswx.ne.5 .and. kswy.ne.2 .and. kswy.ne.3) & + &usol(k,1)=dly**2*grhs(k,1) + if (kswx.ne.2 .and. kswx.ne.3 .and. kswy.ne.2 .and. kswy.ne.5) & + &usol(1,l)=dly**2*grhs(1,l) + if (kswx.ne.2 .and. kswx.ne.5 .and. kswy.ne.2 .and. kswy.ne.5) & + &usol(k,l)=dly**2*grhs(k,l) + i1 = 1 +! +! set switches for periodic or non-periodic boundaries +! + mp=1 + if(kswx.eq.1) mp=0 + np=nbdcnd +! +! set dlx,dly and size of block tri-diagonal system generated +! in nint,mint +! + dlx = (bit-ait)/float(m) + mit = k-1 + if (kswx .eq. 2) mit = k-2 + if (kswx .eq. 4) mit = k + dly = (dit-cit)/float(n) + nit = l-1 + if (kswy .eq. 2) nit = l-2 + if (kswy .eq. 4) nit = l + tdlx3 = 2.0*dlx**3 + dlx4 = dlx**4 + tdly3 = 2.0*dly**3 + dly4 = dly**4 +! +! set subscript limits for portion of array to input to blktri +! + is = 1 + js = 1 + if (kswx.eq.2 .or. kswx.eq.3) is = 2 + if (kswy.eq.2 .or. kswy.eq.3) js = 2 + ns = nit+js-1 + ms = mit+is-1 +! +! set x - direction +! + do 110 i=1,mit + xi = ait+float(is+i-2)*dlx + call cofx (xi,ai,bi,ci) + axi = (ai/dlx-0.5*bi)/dlx + bxi = -2.*ai/dlx**2+ci + cxi = (ai/dlx+0.5*bi)/dlx + am(i)=dly**2*axi + bm(i)=dly**2*bxi + cm(i)=dly**2*cxi + 110 continue +! +! set y direction +! + dyj=1.0 + eyj=-2.0 + fyj=1.0 + do 120 j=1,nit + an(j) = dyj + bn(j) = eyj + cn(j) = fyj + 120 continue +! +! adjust edges in x direction unless periodic +! + ax1 = am(1) + cxm = cm(mit) + go to (170,130,150,160,140),kswx +! +! dirichlet-dirichlet in x direction +! + 130 am(1) = 0.0 + cm(mit) = 0.0 + go to 170 +! +! mixed-dirichlet in x direction +! + 140 am(1) = 0.0 + bm(1) = bm(1)+2.*alpha*dlx*ax1 + cm(1) = cm(1)+ax1 + cm(mit) = 0.0 + go to 170 +! +! dirichlet-mixed in x direction +! + 150 am(1) = 0.0 + am(mit) = am(mit)+cxm + bm(mit) = bm(mit)-2.*beta*dlx*cxm + cm(mit) = 0.0 + go to 170 +! +! mixed - mixed in x direction +! + 160 continue + am(1) = 0.0 + bm(1) = bm(1)+2.*dlx*alpha*ax1 + cm(1) = cm(1)+ax1 + am(mit) = am(mit)+cxm + bm(mit) = bm(mit)-2.*dlx*beta*cxm + cm(mit) = 0.0 + 170 continue +! +! adjust in y direction unless periodic +! + dy1 = an(1) + fyn = cn(nit) + gama=0.0 + xnu=0.0 + go to (220,180,200,210,190),kswy +! +! dirichlet-dirichlet in y direction +! + 180 continue + an(1) = 0.0 + cn(nit) = 0.0 + go to 220 +! +! mixed-dirichlet in y direction +! + 190 continue + an(1) = 0.0 + bn(1) = bn(1)+2.*dly*gama*dy1 + cn(1) = cn(1)+dy1 + cn(nit) = 0.0 + go to 220 +! +! dirichlet-mixed in y direction +! + 200 an(1) = 0.0 + an(nit) = an(nit)+fyn + bn(nit) = bn(nit)-2.*dly*xnu*fyn + cn(nit) = 0.0 + go to 220 +! +! mixed - mixed direction in y direction +! + 210 continue + an(1) = 0.0 + bn(1) = bn(1)+2.*dly*gama*dy1 + cn(1) = cn(1)+dy1 + an(nit) = an(nit)+fyn + bn(nit) = bn(nit)-2.0*dly*xnu*fyn + cn(nit) = 0.0 + 220 if (kswx .eq. 1) go to 270 +! +! adjust usol along x edge +! + do 260 j=js,ns + if (kswx.ne.2 .and. kswx.ne.3) go to 230 + usol(is,j) = usol(is,j)-ax1*usol(1,j) + go to 240 + 230 usol(is,j) = usol(is,j)+2.0*dlx*ax1*bda(j) + 240 if (kswx.ne.2 .and. kswx.ne.5) go to 250 + usol(ms,j) = usol(ms,j)-cxm*usol(k,j) + go to 260 + 250 usol(ms,j) = usol(ms,j)-2.0*dlx*cxm*bdb(j) + 260 continue + 270 if (kswy .eq. 1) go to 320 +! +! adjust usol along y edge +! + do 310 i=is,ms + if (kswy.ne.2 .and. kswy.ne.3) go to 280 + usol(i,js) = usol(i,js)-dy1*usol(i,1) + go to 290 + 280 usol(i,js) = usol(i,js)+2.0*dly*dy1*bdc(i) + 290 if (kswy.ne.2 .and. kswy.ne.5) go to 300 + usol(i,ns) = usol(i,ns)-fyn*usol(i,l) + go to 310 + 300 usol(i,ns) = usol(i,ns)-2.0*dly*fyn*bdd(i) + 310 continue + 320 continue +! +! save adjusted edges in grhs if iorder=4 +! + if (iorder .ne. 4) go to 350 + do 330 j=js,ns + grhs(is,j) = usol(is,j) + grhs(ms,j) = usol(ms,j) + 330 continue + do 340 i=is,ms + grhs(i,js) = usol(i,js) + grhs(i,ns) = usol(i,ns) + 340 continue + 350 continue + iord = iorder + pertrb = 0.0 +! +! check if operator is singular +! + call c4ksng(mbdcnd,nbdcnd,alpha,beta,cofx,singlr) +! +! compute non-zero eigenvector in null space of transpose +! if singular +! + if (singlr) call septri (mit,am,bm,cm,dm,um,zm) + if (singlr) call septri (nit,an,bn,cn,dn,un,zn) +! +! adjust right hand side if necessary +! + 360 continue + if (singlr) call seport (usol,idmn,zn,zm,pertrb) +! +! compute solution +! +! save adjusted right hand side in grhs + do 444 j=js,ns + do 444 i=is,ms + grhs(i,j)=usol(i,j) + 444 continue + call genbun(np,nit,mp,mit,am,bm,cm,idmn,usol(is,js),ieror,w) +! check if error detected in pois +! this can only correspond to ierror=12 + if(ieror.eq.0) go to 224 +! set error flag if improper coefficients input to pois + ierror=12 + return + 224 continue + if (ierror .ne. 0) return +! +! set periodic boundaries if necessary +! + if (kswx .ne. 1) go to 380 + do 370 j=1,l + usol(k,j) = usol(1,j) + 370 continue + 380 if (kswy .ne. 1) go to 400 + do 390 i=1,k + usol(i,l) = usol(i,1) + 390 continue + 400 continue +! +! minimize solution with respect to weighted least squares +! norm if operator is singular +! + if (singlr) call sepmin (usol,idmn,zn,zm,prtrb) +! +! return if deferred corrections and a fourth order solution are +! not flagged +! + if (iord .eq. 2) return + iord = 2 +! +! compute new right hand side for fourth order solution +! + call d4fer(cofx,idmn,usol,grhs) + go to 360 + end + + subroutine c4kprm(iorder,a,b,m,mbdcnd,c,d,n,nbdcnd,cofx,idmn, & + & ierror) + integer iorder, m, mbdcnd, n, nbdcnd, idmn, ierror + BIGREAL a, b, c, d + external cofx + +! local variables + integer i + BIGREAL ai, bi, ci, xi, dlx +! +! this program checks the input parameters for errors +! +! +! +! check definition of solution region +! + ierror = 1 + if (a.ge.b .or. c.ge.d) return +! +! check boundary switches +! + ierror = 2 + if (mbdcnd.lt.0 .or. mbdcnd.gt.4) return + ierror = 3 + if (nbdcnd.lt.0 .or. nbdcnd.gt.4) return +! +! check first dimension in calling routine +! + ierror = 5 + if (idmn .lt. 7) return +! +! check m +! + ierror = 6 + if (m.gt.(idmn-1) .or. m.lt.6) return +! +! check n +! + ierror = 7 + if (n .lt. 5) return +! +! check iorder +! + ierror = 8 + if (iorder.ne.2 .and. iorder.ne.4) return +! +! check intl +! +! +! check that equation is elliptic +! + dlx = (b-a)/float(m) + do 30 i=2,m + xi = a+float(i-1)*dlx + call cofx (xi,ai,bi,ci) + if (ai.gt.0.0) go to 10 + ierror=10 + return + 10 continue + 30 continue +! +! no error found +! + ierror = 0 + return + end + + subroutine c4ksng(mbdcnd,nbdcnd,alpha,beta,cofx,singlr) + integer mbdcnd, nbdcnd + BIGREAL alpha, beta + external cofx + logical singlr +! +! this subroutine checks if the pde sepeli +! must solve is a singular operator +! + integer kswx ,kswy ,k ,l , & + & mit ,nit ,is ,ms , & + & js ,ns + BIGREAL ait ,bit ,cit ,dit , & + & dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + common /splp/ kswx ,kswy ,k ,l , & + & ait ,bit ,cit ,dit , & + & mit ,nit ,is ,ms , & + & js ,ns ,dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 +! local variables + integer i + BIGREAL ai, bi, ci, xi + + singlr = .false. +! +! check if the boundary conditions are +! entirely periodic and/or mixed +! + if ((mbdcnd.ne.0 .and. mbdcnd.ne.3) .or. & + & (nbdcnd.ne.0 .and. nbdcnd.ne.3)) return +! +! check that mixed conditions are pure neuman +! + if (mbdcnd .ne. 3) go to 10 + if (alpha.ne.0.0 .or. beta.ne.0.0) return + 10 continue +! +! check that non-derivative coefficient functions +! are zero +! + do 30 i=is,ms + xi = ait+float(i-1)*dlx + call cofx (xi,ai,bi,ci) + if (ci .ne. 0.0) return + 30 continue +! +! the operator must be singular if this point is reached +! + singlr = .true. + return + end + + subroutine d4fer(cofx,idmn,usol,grhs) + integer idmn + BIGREAL grhs(idmn,1) ,usol(idmn,1) + external cofx +! +! this subroutine first approximates the truncation error given by +! trun1(x,y)=dlx**2*tx+dly**2*ty where +! tx=afun(x)*uxxxx/12.0+bfun(x)*uxxx/6.0 on the interior and +! at the boundaries if periodic(here uxxx,uxxxx are the third +! and fourth partial derivatives of u with respect to x). +! tx is of the form afun(x)/3.0*(uxxxx/4.0+uxxx/dlx) +! at x=a or x=b if the boundary condition there is mixed. +! tx=0.0 along specified boundaries. ty has symmetric form +! in y with x,afun(x),bfun(x) replaced by y,dfun(y),efun(y). +! the second order solution in usol is used to approximate +! (via second order finite differencing) the truncation error +! and the result is added to the right hand side in grhs +! and then transferred to usol to be used as a new right +! hand side when calling blktri for a fourth order solution. +! + integer kswx ,kswy ,k ,l , & + & mit ,nit ,is ,ms , & + & js ,ns + BIGREAL ait ,bit ,cit ,dit , & + & dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 + common /splp/ kswx ,kswy ,k ,l , & + & ait ,bit ,cit ,dit , & + & mit ,nit ,is ,ms , & + & js ,ns ,dlx ,dly , & + & tdlx3 ,tdly3 ,dlx4 ,dly4 +! local variables + integer i, j + BIGREAL ai, bi, ci, xi, uxxx, uxxxx, uyyy, uyyyy, & + & tx, ty +! +! +! compute truncation error approximation over the entire mesh +! + do 30 i=is,ms + xi = ait+float(i-1)*dlx + call cofx (xi,ai,bi,ci) + do 30 j=js,ns +! +! compute partial derivative approximations at (xi,yj) +! + call sepdx (usol,idmn,i,j,uxxx,uxxxx) + call sepdy (usol,idmn,i,j,uyyy,uyyyy) + tx = ai*uxxxx/12.0+bi*uxxx/6.0 + ty=uyyyy/12.0 +! +! reset form of truncation if at boundary which is non-periodic +! + if (kswx.eq.1 .or. (i.gt.1 .and. i.lt.k)) go to 10 + tx = ai/3.0*(uxxxx/4.0+uxxx/dlx) + 10 if (kswy.eq.1 .or. (j.gt.1 .and. j.lt.l)) go to 20 + ty = (uyyyy/4.0+uyyy/dly)/3.0 + 20 grhs(i,j)=grhs(i,j)+dly**2*(dlx**2*tx+dly**2*ty) + 30 continue +! +! reset the right hand side in usol +! + do 60 i=is,ms + do 50 j=js,ns + usol(i,j) = grhs(i,j) + 50 continue + 60 continue + return +! +! revision history--- +! +! september 1973 version 1 +! april 1976 version 2 +! january 1978 version 3 +! december 1979 version 3.1 +! february 1985 documentation upgrade +! november 1988 version 3.2, fortran 77 changes +! june 1993 BIGREAL stuff added +!----------------------------------------------------------------------- + end + diff --git a/Utility/start_plot.F b/Utility/start_plot.F new file mode 100644 index 0000000..9fe6e02 --- /dev/null +++ b/Utility/start_plot.F @@ -0,0 +1,34 @@ +! ********************************************************************* +! Copyright (c) 1991, 1993, 1995 Rutgers University +! +! ********************************************************************* + + subroutine start_plot + +#include "griddefs.h" +#if PLOTS + +! Open and activate the GKS "workstation" + call gopks(6,0) +#if X_WIN + call gopwk(1,2,8) +#else + call gopwk(1,2,1) +#endif /* X_WIN */ + call gacwk(1) + +! Set some plotting parameters + call pcseti('QUALITY',1) ! medium quality font +! call pcseti('CD - complex/duplex',1) ! complex or duplex font + + return + end + + subroutine end_plot + call gdawk(1) + call gclwk(1) + call gclks + +#endif /* PLOTS */ + return + end diff --git a/Utility/uv_mask.F b/Utility/uv_mask.F new file mode 100644 index 0000000..53c9099 --- /dev/null +++ b/Utility/uv_mask.F @@ -0,0 +1,39 @@ + subroutine uv_mask + +! *** In gridpak version 5.4 ***** October 18, 2001 **************** +! Kate Hedstrom (kate@arsc.edu) +! John Wilkin (wilkin@imcs.rutgers.edu) +! ******************************************************************* + +#include "griddefs.h" +#include "bathy.h" +#include "ncgrid.h" + integer i, j + BIGREAL a1, a2, av2 + + av2(a1,a2) = .5*(a1+a2) + +#include "gridid.h" + +! Compute u, v masks. + do i=1,L + do j=0,M + mask_u(i,j) = mask_rho(i,j) * mask_rho(i-1,j) + enddo + enddo + do i=0,L + do j=1,M + mask_v(i,j) = mask_rho(i,j) * mask_rho(i,j-1) + enddo + enddo + +! Compute psi mask. + do i=1,L + do j=1,M + mask_psi(i,j) = mask_rho(i,j) * mask_rho(i-1,j) & + & * mask_rho(i,j-1) * mask_rho(i-1,j-1) + enddo + enddo + + return + end diff --git a/Utility/vminmax.F b/Utility/vminmax.F new file mode 100644 index 0000000..5153e3a --- /dev/null +++ b/Utility/vminmax.F @@ -0,0 +1,31 @@ +#include "griddefs.h" +! *********************************************************** + + BIGREAL function vmax(vect,N) + integer N + BIGREAL vect(N) + BIGREAL tmp + integer i + + tmp = vect(1) + do 100 i=2,N + tmp = max(tmp,vect(i)) + 100 continue + vmax = tmp + return + end + + BIGREAL function vmin(vect,N) + integer N + BIGREAL vect(N) + BIGREAL tmp + integer i + + tmp = vect(1) + do 100 i=2,N + tmp = min(tmp,vect(i)) + 100 continue + vmin = tmp + return + end + diff --git a/Utility/wrt_all.F b/Utility/wrt_all.F new file mode 100644 index 0000000..a6daf22 --- /dev/null +++ b/Utility/wrt_all.F @@ -0,0 +1,293 @@ +#include "griddefs.h" + + subroutine wrt_all +! +!======================================================================= +! === +! This routine writes fields into the grid NetCDF file. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global data. +!----------------------------------------------------------------------- +! + use netcdf + +#include "bathy.h" +#include "ncgrid.h" +#include "proj.h" +! +!----------------------------------------------------------------------- +! Define local data. +!----------------------------------------------------------------------- +! + integer level + integer start(3), count(3) +! +!======================================================================= +! Begin Executable code. +!======================================================================= +! +! Open restart file for read/write. +! + rcode = nf90_open(TRIM(gridfile),nf90_write,ncgridid) + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,10) TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out Coriolis parameter. +! + rcode = nf90_inq_varid(ncgridid,'f',varid) + rcode = nf90_put_var(ncgridid,varid,f) + if (rcode.ne.0) then + write(stdout,10) 'f', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out bathymetry. +! + rcode = nf90_inq_varid(ncgridid,'h',varid) + rcode = nf90_put_var(ncgridid,varid,h) + if (rcode.ne.0) then + write(stdout,10) 'h', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Find out what slice to write into. +! + print *, 'There are ', bathsize, ' bathymetries.' + print *, 'Which level would you like to write to?' + read (5,*) level + if (level .lt. 1) then + call crash('Illegal level', level) + endif + if (level .gt. bathsize) then + level = bathsize+1 + bathsize = level + endif +! +! Write out next bathymetry into hraw. +! + start(1)=1 + count(1)=Lp + start(2)=1 + count(2)=Mp + start(3)=level + count(3)=1 + rcode=nf90_inq_varid(ncgridid,'hraw',varid) + rcode = nf90_put_var(ncgridid,varid,h,start,count) + if (rcode.ne.0) then + write(stdout,10) 'hraw', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out grid metrics. +! + rcode=nf90_inq_varid(ncgridid,'spherical',varid) + if (spherical) then + rcode = nf90_put_var(ncgridid,varid,'T') + else + rcode = nf90_put_var(ncgridid,varid,'F') + endif + if (rcode.ne.0) then + write(stdout,20) 'spherical', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'pm',varid) + rcode = nf90_put_var(ncgridid,varid,pm) + if (rcode.ne.0) then + write(stdout,20) 'pm', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'pn',varid) + rcode = nf90_put_var(ncgridid,varid,pn) + if (rcode.ne.0) then + write(stdout,20) 'pn', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'dndx',varid) + rcode = nf90_put_var(ncgridid,varid,dndx) + if (rcode.ne.0) then + write(stdout,20) 'dndx', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'dmde',varid) + rcode = nf90_put_var(ncgridid,varid,dmde) + if (rcode.ne.0) then + write(stdout,20) 'dmde', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! x,y grids. +! + rcode=nf90_inq_varid(ncgridid,'x_rho',varid) + rcode = nf90_put_var(ncgridid,varid,xr) + if (rcode.ne.0) then + write(stdout,20) 'x_rho', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'y_rho',varid) + rcode = nf90_put_var(ncgridid,varid,yr) + if (rcode.ne.0) then + write(stdout,20) 'y_rho', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'x_psi',varid) + rcode = nf90_put_var(ncgridid,varid,xp) + if (rcode.ne.0) then + write(stdout,20) 'x_psi', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'y_psi',varid) + rcode = nf90_put_var(ncgridid,varid,yp) + if (rcode.ne.0) then + write(stdout,20) 'y_psi', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'x_u',varid) + rcode = nf90_put_var(ncgridid,varid,xu) + if (rcode.ne.0) then + write(stdout,20) 'x_u', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'y_u',varid) + rcode = nf90_put_var(ncgridid,varid,yu) + if (rcode.ne.0) then + write(stdout,20) 'y_u', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'x_v',varid) + rcode = nf90_put_var(ncgridid,varid,xv) + if (rcode.ne.0) then + write(stdout,20) 'x_v', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'y_v',varid) + rcode = nf90_put_var(ncgridid,varid,yv) + if (rcode.ne.0) then + write(stdout,20) 'y_v', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out lat/lon at RHO-points. +! + rcode=nf90_inq_varid(ncgridid,'lat_rho',varid) + rcode = nf90_put_var(ncgridid,varid,lat_rho) + if (rcode.ne.0) then + write(stdout,10) 'lat_rho', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'lon_rho',varid) + rcode = nf90_put_var(ncgridid,varid,lon_rho) + if (rcode.ne.0) then + write(stdout,10) 'lon_rho', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out lat/lon at PSI-points. +! + rcode=nf90_inq_varid(ncgridid,'lat_psi',varid) + rcode = nf90_put_var(ncgridid,varid,lat_psi) + if (rcode.ne.0) then + write(stdout,10) 'lat_psi', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'lon_psi',varid) + rcode = nf90_put_var(ncgridid,varid,lon_psi) + if (rcode.ne.0) then + write(stdout,10) 'lon_psi', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out lat/lon at U-points. +! + rcode=nf90_inq_varid(ncgridid,'lat_u',varid) + rcode = nf90_put_var(ncgridid,varid,lat_u) + if (rcode.ne.0) then + write(stdout,10) 'lat_u', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'lon_u',varid) + rcode = nf90_put_var(ncgridid,varid,lon_u) + if (rcode.ne.0) then + write(stdout,10) 'lon_u', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out lat/lon at V-points. +! + rcode=nf90_inq_varid(ncgridid,'lat_v',varid) + rcode = nf90_put_var(ncgridid,varid,lat_v) + if (rcode.ne.0) then + write(stdout,10) 'lat_v', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif + rcode=nf90_inq_varid(ncgridid,'lon_v',varid) + rcode = nf90_put_var(ncgridid,varid,lon_v) + if (rcode.ne.0) then + write(stdout,10) 'lon_v', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out mask at RHO-points. +! + rcode = nf90_inq_varid(ncgridid,'mask_rho',varid) + rcode = nf90_put_var(ncgridid,varid,mask_rho) + if (rcode.ne.0) then + write(stdout,10) 'mask_rho', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out mask at U-points. +! + rcode=nf90_inq_varid(ncgridid,'mask_u',varid) + rcode = nf90_put_var(ncgridid,varid,mask_u) + if (rcode.ne.0) then + write(stdout,10) 'mask_u', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out mask at V-points. +! + rcode=nf90_inq_varid(ncgridid,'mask_v',varid) + rcode = nf90_put_var(ncgridid,varid,mask_v) + if (rcode.ne.0) then + write(stdout,10) 'mask_v', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out mask at PSI-points. +! + rcode=nf90_inq_varid(ncgridid,'mask_psi',varid) + rcode = nf90_put_var(ncgridid,varid,mask_psi) + if (rcode.ne.0) then + write(stdout,10) 'mask_psi', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Write out grid angle. +! + rcode = nf90_inq_varid(ncgridid,'angle',varid) + rcode = nf90_put_var(ncgridid,varid,angle) + if (rcode.ne.0) then + write(stdout,10) 'angle', TRIM(gridfile) + call crash ('WRT_ALL',1) + endif +! +! Synchronize restart NetCDF file to disk to allow other processes to +! access data immediately after it is written. +! + rcode = nf90_sync(ncgridid) + if (rcode.ne.0) then + write(stdout,20) + call crash ('WRT_ALL',1) + endif +! + 10 format(/,' WRT_ALL - error while writing variable: ',a,/,11x, & + & 'into grid NetCDF file for time record: ',i4) + 20 format(/,' WRT_ALL - unable to synchronize grid NetCDF to ', & + & 'disk.') + return + end diff --git a/Utility/wrt_fhmn.F b/Utility/wrt_fhmn.F new file mode 100644 index 0000000..918a1d5 --- /dev/null +++ b/Utility/wrt_fhmn.F @@ -0,0 +1,135 @@ +#include "griddefs.h" + + subroutine wrt_fhmn(f0,beta) +! +!======================================================================= +! === +! This routine writes fields into the grid NetCDF file. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global data. +!----------------------------------------------------------------------- +! + use netcdf + +#include "bathy.h" +#include "ncgrid.h" +#include "proj.h" +! +!----------------------------------------------------------------------- +! Define local data. +!----------------------------------------------------------------------- +! + BIGREAL f0, beta +! +!======================================================================= +! Begin Executable code. +!======================================================================= +! +! Open restart file for read/write. +! + rcode = nf90_open(TRIM(gridfile),nf90_write,ncgridid) + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,10) TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif +! +! Write out Coriolis parameter. +! + if (.not. spherical) then + rcode = nf90_inq_varid(ncgridid,'spherical',varid) + rcode = nf90_put_var(ncgridid,varid,'F') + if (rcode.ne.0) then + write(stdout,10) 'spherical', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif + rcode = nf90_inq_varid(ncgridid,'f0',varid) + rcode = nf90_put_var(ncgridid,varid,f0) + if (rcode.ne.0) then + write(stdout,10) 'f0', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif + rcode = nf90_inq_varid(ncgridid,'dfdy',varid) + rcode = nf90_put_var(ncgridid,varid,beta) + if (rcode.ne.0) then + write(stdout,10) 'dfdy', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif + endif + rcode = nf90_inq_varid(ncgridid,'f',varid) + rcode = nf90_put_var(ncgridid,varid,f) + if (rcode.ne.0) then + write(stdout,10) 'f', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif +! +! Write out bathymetry. +! + rcode = nf90_inq_varid(ncgridid,'h',varid) + rcode = nf90_put_var(ncgridid,varid,h) + if (rcode.ne.0) then + write(stdout,10) 'h', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif +! +! Write out grid metrics. +! + rcode = nf90_inq_varid(ncgridid,'spherical',varid) + if (spherical) then + rcode = nf90_put_var(ncgridid,varid,'T') + if (rcode.ne.0) then + write(stdout,20) 'spherical', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif + rcode = nf90_inq_varid(ncgridid,'pm',varid) + rcode = nf90_put_var(ncgridid,varid,pm) + if (rcode.ne.0) then + write(stdout,10) 'pm', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif + rcode = nf90_inq_varid(ncgridid,'pn',varid) + rcode = nf90_put_var(ncgridid,varid,pn) + if (rcode.ne.0) then + write(stdout,10) 'pn', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif + rcode = nf90_inq_varid(ncgridid,'dndx',varid) + rcode = nf90_put_var(ncgridid,varid,dndx) + if (rcode.ne.0) then + write(stdout,10) 'dndx', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif + rcode = nf90_inq_varid(ncgridid,'dmde',varid) + rcode = nf90_put_var(ncgridid,varid,dmde) + if (rcode.ne.0) then + write(stdout,10) 'dmde', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif + endif +! +! Write out grid angle. +! + rcode = nf90_inq_varid(ncgridid,'angle',varid) + rcode = nf90_put_var(ncgridid,varid,angle) + if (rcode.ne.0) then + write(stdout,10) 'angle', TRIM(gridfile) + call crash ('WRT_FHMN',1) + endif +! +! Synchronize restart NetCDF file to disk to allow other processes to +! access data immediately after it is written. +! + rcode = nf90_sync(ncgridid) + if (rcode.ne.0) then + write(stdout,20) + call crash ('WRT_FHMN',1) + endif +! + 10 format(/,' WRT_FHMN - error while writing variable: ',a,/,11x, & + & 'into grid NetCDF file for time record: ',i4) + 20 format(/,' WRT_FHMN - unable to synchronize grid NetCDF to ', & + & 'disk.') + return + end diff --git a/Utility/wrt_h.F b/Utility/wrt_h.F new file mode 100644 index 0000000..c350131 --- /dev/null +++ b/Utility/wrt_h.F @@ -0,0 +1,82 @@ +#include "griddefs.h" + + subroutine wrt_h +! +!======================================================================= +! === +! This routine writes bathymetry into grid NetCDF file. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global data. +!----------------------------------------------------------------------- +! + use netcdf + +#include "bathy.h" +#include "ncgrid.h" +#include "proj.h" +! +!----------------------------------------------------------------------- +! Define local data. +!----------------------------------------------------------------------- +! + integer count(3), start(3) + integer level +! +!======================================================================= +! Begin Executable code. +!======================================================================= +! +! Open restart file for read/write. +! + rcode=nf90_open(TRIM(gridfile),nf90_write,ncgridid) + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,10) TRIM(gridfile) + call crash ('WRT_H',1) + endif +! +! Find out what slice to write into. +! + print *, 'There are ', bathsize, ' bathymetries.' + print *, 'Which level would you like to write to?' + read (5,*) level + if (level .lt. 1) then + call crash('Illegal level', level) + endif + if (level .gt. bathsize) then + level = bathsize+1 + bathsize = level + endif +! +! Write out next bathymetry into hraw. +! + start(1)=1 + count(1)=Lp + start(2)=1 + count(2)=Mp + start(3)=level + count(3)=1 + rcode=nf90_inq_varid(ncgridid,'hraw',varid) + rcode = nf90_put_var(ncgridid,varid,h,start,count) + if (rcode.ne.0) then + write(stdout,10) 'hraw', TRIM(gridfile) + call crash ('WRT_H',1) + endif +! +! Synchronize restart NetCDF file to disk to allow other processes to +! access data immediately after it is written. +! + rcode = nf90_sync(ncgridid) + if (rcode.ne.0) then + write(stdout,20) + call crash ('WRT_H',1) + endif +! + 10 format(/,' WRT_H - error while writing variable: ',a,/,11x, & + & 'into grid NetCDF file for time record: ',i4) + 20 format(/,' WRT_H - unable to synchronize grid NetCDF to ', & + & 'disk.') + return + end diff --git a/Utility/wrt_lat.F b/Utility/wrt_lat.F new file mode 100644 index 0000000..2b30537 --- /dev/null +++ b/Utility/wrt_lat.F @@ -0,0 +1,151 @@ +#include "griddefs.h" + + subroutine wrt_lat +! +!======================================================================= +! === +! This routine writes latitude/longitude fields into grid === +! NetCDF file. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global data. +!----------------------------------------------------------------------- +! + use netcdf + +#include "bathy.h" +#include "ncgrid.h" +#include "proj.h" +! +!----------------------------------------------------------------------- +! Define local data. +!----------------------------------------------------------------------- +! + real lat(2) +! +!======================================================================= +! Begin Executable code. +!======================================================================= +! +! Open restart file for read/write. +! + rcode=nf90_open(TRIM(gridfile),nf90_write,ncgridid) + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,10) TRIM(gridfile) + call crash ('WRT_LAT',1) + endif +! +! Write out map projection parameters. +! + rcode=nf90_inq_varid(ncgridid,'JPRJ',varid) + rcode = nf90_put_var(ncgridid,varid,JPRJ) + lat(1) = PLAT + if (JPRJ .eq. 'LC') then + lat(2) = ROTA + else + lat(2) = 0. + endif + rcode=nf90_inq_varid(ncgridid,'PLAT',varid) + rcode = nf90_put_var(ncgridid,varid,lat) + rcode=nf90_inq_varid(ncgridid,'PLONG',varid) + rcode = nf90_put_var(ncgridid,varid,PLONG) + if (JPRJ .eq. 'LC') then + lat(1) = 0. + else + lat(1) = ROTA + endif + rcode=nf90_inq_varid(ncgridid,'ROTA',varid) + rcode = nf90_put_var(ncgridid,varid,lat) + + rcode=nf90_inq_varid(ncgridid,'JLTS',varid) + rcode = nf90_put_var(ncgridid,varid,JLTS) + rcode=nf90_inq_varid(ncgridid,'P1',varid) + rcode = nf90_put_var(ncgridid,varid,P1) + rcode=nf90_inq_varid(ncgridid,'P2',varid) + rcode = nf90_put_var(ncgridid,varid,P2) + rcode=nf90_inq_varid(ncgridid,'P3',varid) + rcode = nf90_put_var(ncgridid,varid,P3) + rcode=nf90_inq_varid(ncgridid,'P4',varid) + rcode = nf90_put_var(ncgridid,varid,P4) + rcode=nf90_inq_varid(ncgridid,'XOFF',varid) + rcode = nf90_put_var(ncgridid,varid,XOFF) + rcode=nf90_inq_varid(ncgridid,'YOFF',varid) + rcode = nf90_put_var(ncgridid,varid,YOFF) +! +! Write out lat/lon at RHO-points. +! + rcode=nf90_inq_varid(ncgridid,'lat_rho',varid) + rcode = nf90_put_var(ncgridid,varid,lat_rho) + if (rcode.ne.0) then + write(stdout,10) 'lat_rho', TRIM(gridfile) + call crash ('WRT_LAT',1) + endif + rcode=nf90_inq_varid(ncgridid,'lon_rho',varid) + rcode = nf90_put_var(ncgridid,varid,lon_rho) + if (rcode.ne.0) then + write(stdout,10) 'lon_rho', TRIM(gridfile) + call crash ('WRT_LAT',1) + endif +! +! Write out lat/lon at PSI-points. +! + rcode=nf90_inq_varid(ncgridid,'lat_psi',varid) + rcode = nf90_put_var(ncgridid,varid,lat_psi) + if (rcode.ne.0) then + write(stdout,10) 'lat_psi', TRIM(gridfile) + call crash ('WRT_LAT',1) + endif + rcode=nf90_inq_varid(ncgridid,'lon_psi',varid) + rcode = nf90_put_var(ncgridid,varid,lon_psi) + if (rcode.ne.0) then + write(stdout,10) 'lon_psi', TRIM(gridfile) + call crash ('WRT_LAT',1) + endif +! +! Write out lat/lon at U-points. +! + rcode=nf90_inq_varid(ncgridid,'lat_u',varid) + rcode = nf90_put_var(ncgridid,varid,lat_u) + if (rcode.ne.0) then + write(stdout,10) 'lat_u', TRIM(gridfile) + call crash ('WRT_LAT',1) + endif + rcode=nf90_inq_varid(ncgridid,'lon_u',varid) + rcode = nf90_put_var(ncgridid,varid,lon_u) + if (rcode.ne.0) then + write(stdout,10) 'lon_u', TRIM(gridfile) + call crash ('WRT_LAT',1) + endif +! +! Write out lat/lon at V-points. +! + rcode=nf90_inq_varid(ncgridid,'lat_v',varid) + rcode = nf90_put_var(ncgridid,varid,lat_v) + if (rcode.ne.0) then + write(stdout,10) 'lat_v', TRIM(gridfile) + call crash ('WRT_LAT',1) + endif + rcode=nf90_inq_varid(ncgridid,'lon_v',varid) + rcode = nf90_put_var(ncgridid,varid,lon_v) + if (rcode.ne.0) then + write(stdout,10) 'lon_v', TRIM(gridfile) + call crash ('WRT_LAT',1) + endif +! +! Synchronize restart NetCDF file to disk to allow other processes to +! access data immediately after it is written. +! + rcode = nf90_sync(ncgridid) + if (rcode.ne.0) then + write(stdout,20) + call crash ('WRT_LAT',1) + endif +! + 10 format(/,' WRT_LAT - error while writing variable: ',a,/,11x, & + & 'into grid NetCDF file for time record: ',i4) + 20 format(/,' WRT_LAT - unable to synchronize grid NetCDF to ', & + & 'disk.') + return + end diff --git a/Utility/wrt_mask.F b/Utility/wrt_mask.F new file mode 100644 index 0000000..16bfbb7 --- /dev/null +++ b/Utility/wrt_mask.F @@ -0,0 +1,97 @@ +#include "griddefs.h" + + subroutine wrt_mask +! +!======================================================================= +! === +! This routine writes the masks into grid NetCDF file. === +! === +!======================================================================= +! +!----------------------------------------------------------------------- +! Define global data. +!----------------------------------------------------------------------- +! + use netcdf + +#include "bathy.h" +#include "ncgrid.h" +! +!----------------------------------------------------------------------- +! Define local data. +!----------------------------------------------------------------------- +! + BIGREAL bvar +! +!======================================================================= +! Begin Executable code. +!======================================================================= +! +! Open restart file for read/write. +! + rcode=nf90_open(TRIM(gridfile),nf90_write,ncgridid) + if ((rcode.ne.0).or.(ncgridid.eq.-1)) then + write(stdout,10) TRIM(gridfile) + call crash ('WRT_MASK',1) + endif +! +! Write out bathymetry clipping depths. +! + bvar = depthmin + rcode = nf90_inq_varid(ncgridid,'depthmin',varid) + rcode = nf90_put_var(ncgridid,varid,bvar) + bvar = depthmax + rcode = nf90_inq_varid(ncgridid,'depthmax',varid) + rcode = nf90_put_var(ncgridid,varid,bvar) +! +! Write out mask at RHO-points. +! + rcode = nf90_inq_varid(ncgridid,'mask_rho',varid) + rcode = nf90_put_var(ncgridid,varid,mask_rho) + if (rcode.ne.0) then + write(stdout,10) 'mask_rho', TRIM(gridfile) + call crash ('WRT_MASK',1) + endif +! +! Write out mask at U-points. +! + rcode=nf90_inq_varid(ncgridid,'mask_u',varid) + rcode = nf90_put_var(ncgridid,varid,mask_u) + if (rcode.ne.0) then + write(stdout,10) 'mask_u', TRIM(gridfile) + call crash ('WRT_MASK',1) + endif +! +! Write out mask at V-points. +! + rcode=nf90_inq_varid(ncgridid,'mask_v',varid) + rcode = nf90_put_var(ncgridid,varid,mask_v) + if (rcode.ne.0) then + write(stdout,10) 'mask_v', TRIM(gridfile) + call crash ('WRT_MASK',1) + endif +! +! Write out mask at PSI-points. +! + rcode=nf90_inq_varid(ncgridid,'mask_psi',varid) + rcode = nf90_put_var(ncgridid,varid,mask_psi) + if (rcode.ne.0) then + write(stdout,10) 'mask_psi', TRIM(gridfile) + call crash ('WRT_MASK',1) + endif +! +! Synchronize restart NetCDF file to disk to allow other processes to +! access data immediately after it is written. +! + rcode = nf90_sync(ncgridid) + if (rcode.ne.0) then + write(stdout,20) + call crash ('WRT_MASK',1) + endif +! + 10 format(/,' WRT_MASK - error while writing variable: ',a,/,11x, & + & 'into grid NetCDF file for time record: ',i4) + 20 format(/,' WRT_MASK - unable to synchronize grid NetCDF to ', & + & 'disk.') + return + end diff --git a/makefile b/makefile new file mode 100644 index 0000000..893a17f --- /dev/null +++ b/makefile @@ -0,0 +1,346 @@ +#:::::::::::::::::::::::::::::::::::::::::::::::::::::::: Kate Hedstrom ::: +# ::: +# ROMS/TOMS Gridpak Code Master Makefile ::: +# ::: +# This makefile is designed to work only with GNU Make version 3.77 or ::: +# higher. It can be used in any architecture provided that there is a ::: +# machine/compiler rules file in the "Compilers" subdirectory. You ::: +# may need to modify the rules file to specify the correct path for ::: +# the NetCDF and ARPACK libraries. The ARPACK library is only used in ::: +# the Generalized Stability Theory analysis. ::: +# ::: +# If appropriate, the USER needs to modify the macro definitions in ::: +# in user-defined section below. To activate an option set the macro ::: +# to "on". For example, if you want to compile with debugging options ::: +# set: ::: +# ::: +# DEBUG := on ::: +# ::: +# Otherwise, leave macro definition blank. ::: +# ::: +# The USER needs to provide a value for the macro FORT. Choose the ::: +# appropriate value from the list below. ::: +# ::: +#::::::::::::::::::::::::::::::::::::::::::::::::::::: Hernan G. Arango ::: + + +NEED_VERSION := 3.80 3.81 +$(if $(filter $(MAKE_VERSION),$(NEED_VERSION)),, \ + $(error This makefile requires one of GNU make version $(NEED_VERSION).)) + + +#-------------------------------------------------------------------------- +# Initialize some things. +#-------------------------------------------------------------------------- + + sources := + libraries := + +#========================================================================== +# Start of user-defined options. Modify macro variables: on is TRUE while +# blank is FALSE. +#========================================================================== +# +# Activate debugging compiler options: + + DEBUG := + +# If parallel applications, use at most one of these definitions +# (leave both definitions blank in serial applications): + + MPI := + OpenMP := + +# If applicable, compile with the ARPACK library (GST analysis): + + ARPACK := + +# If applicable, activate 64-bit compilation: + + LARGE := + +#-------------------------------------------------------------------------- +# We are going to include a file with all the settings that depend on +# the system and the compiler. We are going to build up the name of the +# include file using information on both. Set your compiler here from +# the following list: +# +# Operating System Compiler(s) +# +# AIX: xlf +# ALPHA: f90 +# CYGWIN: g95, df +# Darwin: f90 +# IRIX: f90 +# Linux: ifc, ifort, pgi, path, g95, mpif90 +# SunOS: f95 +# UNICOS-mp: ftn +# SunOS/Linux: ftn (Cray cross-compiler) +# +# Feel free to send us additional rule files to include! Also, be sure +# to check the appropriate file to make sure it has the right paths to +# NetCDF and so on. +#-------------------------------------------------------------------------- + + FORT ?= gfortran + +#-------------------------------------------------------------------------- +# Set directory for executable. +#-------------------------------------------------------------------------- + + BINDIR := . + +#========================================================================== +# End of user-defined options. See also the machine-dependent include +# file being used above. +#========================================================================== + +#-------------------------------------------------------------------------- +# Set directory for temporary objects. +# #-------------------------------------------------------------------------- + +SCRATCH_DIR ?= Build + clean_list := core *.ipo $(SCRATCH_DIR) + +ifeq "$(strip $(SCRATCH_DIR))" "." + clean_list := core *.o *.oo *.mod *.f90 lib*.a *.bak + clean_list += $(CURDIR)/*.ipo +endif +ifeq "$(strip $(SCRATCH_DIR))" "./" + clean_list := core *.o *.oo *.ipo *.mod *.f90 lib*.a *.bak + clean_list += $(CURDIR)/*.ipo +endif + +#-------------------------------------------------------------------------- +# Make functions for putting the temporary files in $(SCRATCH_DIR) +# # DO NOT modify this section; spaces and blank lines are needed. +#-------------------------------------------------------------------------- + +# $(call source-dir-to-binary-dir, directory-list) +source-dir-to-binary-dir = $(addprefix $(SCRATCH_DIR)/, $(notdir $1)) + +# $(call source-to-object, source-file-list) +source-to-object = $(call source-dir-to-binary-dir, \ + $(subst .F,.o,$1)) + +# $(call source-to-object, source-file-list) +c-source-to-object = $(call source-dir-to-binary-dir, \ + $(subst .c,.o,$(filter %.c,$1)) \ + $(subst .cc,.o,$(filter %.cc,$1))) + +$(call make-library, library-name, source-file-list) +define make-library + libraries += $(SCRATCH_DIR)/$1 + sources += $2 + + $(SCRATCH_DIR)/$1: $(call source-dir-to-binary-dir, \ + $(subst .F,.o,$2)) + $(AR) $(ARFLAGS) $$@ $$^ + $(RANLIB) $$@ +endef + +$(call make-c-library, library-name, source-file-list) +define make-c-library + libraries += $(SCRATCH_DIR)/$1 + c_sources += $2 + + $(SCRATCH_DIR)/$1: $(call source-dir-to-binary-dir, \ + $(subst .c,.o,$(filter %.c,$2)) \ + $(subst .cc,.o,$(filter %.cc,$2))) + $(AR) $(ARFLAGS) $$@ $$^ + $(RANLIB) $$@ +endef + +# $(call f90-source, source-file-list) +f90-source = $(call source-dir-to-binary-dir, \ + $(subst .F,.f90,$1)) + +# $(compile-rules) +define compile-rules + $(foreach f, $(local_src), \ + $(call one-compile-rule,$(call source-to-object,$f), \ + $(call f90-source,$f),$f)) +endef + +# $(c-compile-rules) +define c-compile-rules + $(foreach f, $(local_c_src), \ + $(call one-c-compile-rule,$(call c-source-to-object,$f), $f)) +endef + +# $(call one-compile-rule, binary-file, f90-file, source-file) +define one-compile-rule + $1: $2 $3 + cd $$(SCRATCH_DIR); $$(FC) -c $$(FFLAGS) $(notdir $2) + + $2: $3 + $$(CPP) $$(CPPFLAGS) $$(MY_CPP_FLAGS) $$< > $$@ + $$(CLEAN) $$@ + +endef + +# $(call one-c-compile-rule, binary-file, source-file) +define one-c-compile-rule + $1: $2 + cd $$(SCRATCH_DIR); $$(CXX) -c $$(CXXFLAGS) $$< + +endef + +#-------------------------------------------------------------------------- +# Set ROMS/TOMS executable file name. +#-------------------------------------------------------------------------- + +COAST := $(BINDIR)/coast +GRID := $(BINDIR)/grid +SQGRID := $(BINDIR)/sqgrid +TOLAT := $(BINDIR)/tolat +BATHTUB := $(BINDIR)/bathtub +BATHSUDS := $(BINDIR)/bathsuds +BATHSOAP := $(BINDIR)/bathsoap +SPHERE := $(BINDIR)/sphere +ifdef DEBUG + COAST := $(BINDIR)/coastG + GRID := $(BINDIR)/gridG + SQGRID := $(BINDIR)/sqgridG + TOLAT := $(BINDIR)/tolatG + BATHTUB := $(BINDIR)/bathtubG + BATHSUDS := $(BINDIR)/bathsudsG + BATHSOAP := $(BINDIR)/bathsoapG + SPHERE := $(BINDIR)/sphereG +endif + +#-------------------------------------------------------------------------- +# Set name of module files for netCDF F90 interface. On some platforms +# these will need to be overridden in the machine-dependent include file. +#-------------------------------------------------------------------------- + + NETCDF_MODFILE := netcdf.mod +TYPESIZES_MODFILE := typesizes.mod + +#-------------------------------------------------------------------------- +# "uname -s" should return the OS or kernel name and "uname -m" should +# return the CPU or hardware name. In practice the results can be pretty +# flaky. Run the results through sed to convert "/" and " " to "-", +# then apply platform-specific conversions. +#-------------------------------------------------------------------------- + +OS := $(shell uname -s | sed 's/[\/ ]/-/g') +OS := $(patsubst CYGWIN_%,CYGWIN,$(OS)) +OS := $(patsubst sn%,UNICOS-sn,$(OS)) + +CPU := $(shell uname -m | sed 's/[\/ ]/-/g') + +ifndef FORT + $(error Variable FORT not set) +endif + +ifneq "$(MAKECMDGOALS)" "clean" + include Compilers/$(OS)-$(strip $(FORT)).mk +endif + +#-------------------------------------------------------------------------- +# Pass the platform variables to the preprocessor as macros. Convert to +# valid, upper-case identifiers. +#-------------------------------------------------------------------------- + +CPPFLAGS += -D$(shell echo ${OS} | tr "-" "_" | tr [a-z] [A-Z]) +CPPFLAGS += -D$(shell echo ${CPU} | tr "-" "_" | tr [a-z] [A-Z]) +CPPFLAGS += -D$(shell echo ${FORT} | tr "-" "_" | tr [a-z] [A-Z]) + +#-------------------------------------------------------------------------- +# Build target directories. +#-------------------------------------------------------------------------- + +.PHONY: all + +all: $(SCRATCH_DIR) $(SCRATCH_DIR)/MakeDepend $(COAST) $(GRID) $(SQGRID) \ + $(TOLAT) $(BATHTUB) $(BATHSUDS) $(BATHSOAP) $(SPHERE) + +modules := Utility Drivers + +includes := Include + +vpath %.F $(modules) +vpath %.h $(includes) +vpath %.f90 $(SCRATCH_DIR) +vpath %.o $(SCRATCH_DIR) + +include $(addsuffix /Module.mk,$(modules)) + +MDEPFLAGS += $(patsubst %,-I %,$(includes)) --silent --moddir=$(SCRATCH_DIR) + +CPPFLAGS += $(patsubst %,-I%,$(includes)) + +$(SCRATCH_DIR): + $(shell $(TEST) -d $(SCRATCH_DIR) || $(MKDIR) $(SCRATCH_DIR) ) + +#-------------------------------------------------------------------------- +.PHONY: libraries + +libraries: $(libraries) + +#-------------------------------------------------------------------------- +# Target to create ROMS/TOMS dependecies. +#-------------------------------------------------------------------------- + +$(SCRATCH_DIR)/$(NETCDF_MODFILE): | $(SCRATCH_DIR) + cp -f $(NETCDF_INCDIR)/$(NETCDF_MODFILE) $(SCRATCH_DIR) + +$(SCRATCH_DIR)/$(TYPESIZES_MODFILE): | $(SCRATCH_DIR) + cp -f $(NETCDF_INCDIR)/$(TYPESIZES_MODFILE) $(SCRATCH_DIR) + +$(SCRATCH_DIR)/MakeDepend: makefile \ + $(SCRATCH_DIR)/$(NETCDF_MODFILE) \ + $(SCRATCH_DIR)/$(TYPESIZES_MODFILE) \ + | $(SCRATCH_DIR) + $(SFMAKEDEPEND) $(MDEPFLAGS) $(sources) > $(SCRATCH_DIR)/MakeDepend + +.PHONY: depend + +SFMAKEDEPEND := ./Bin/sfmakedepend + +depend: $(SCRATCH_DIR) + $(SFMAKEDEPEND) $(MDEPFLAGS) $(sources) > $(SCRATCH_DIR)/MakeDepend + +ifneq "$(MAKECMDGOALS)" "clean" + -include $(SCRATCH_DIR)/MakeDepend +endif + +#-------------------------------------------------------------------------- +# Target to create ROMS/TOMS tar file. +#-------------------------------------------------------------------------- + +.PHONY: tarfile + +tarfile: + tar -cvf gridpak.tar * + +.PHONY: zipfile + +zipfile: + zip -r gridpak.zip * + + +#-------------------------------------------------------------------------- +# Cleaning targets. +#-------------------------------------------------------------------------- + +.PHONY: clean + +clean: + $(RM) -r $(clean_list) + +#-------------------------------------------------------------------------- +# A handy debugging target. This will allow to print the value of any +# makefile defined macro (see http://tinyurl.com/8ax3j). For example, +# to find the value of CPPFLAGS execute: +# +# gmake print-CPPFLAGS +# or +# make print-CPPFLAGS +#-------------------------------------------------------------------------- + +.PHONY: print-% + +print-%: + @echo $* = $($*)

H6vCZ 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 @ZP2_< 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