------------------------------------------------------------------------ r694 | foster | 2011-10-08 14:48:15 -0600 (Sat, 08 Oct 2011) | 10 lines sami3/trunk: - Add read of day-of-year and ut (hours) from timegcm history file. New tgcm module data (tgcm.f) is tgcm_day(ntime) and tgcm_ut(ntime). The "tgcm_" prefix avoids naming conflicts w/ main sami3. - Also rewrote timegcm single-res and double-res test files, see /hao/aim3/tgcm/data/sami3 (and top of namelist file). Single-res test file (equinox solar minimum) has 15 minute histories for 1 day. Double-res file (equinox solar medium) has 15 minute histories for 6 hours. ------------------------------------------------------------------------ r693 | foster | 2011-10-07 16:33:31 -0600 (Fri, 07 Oct 2011) | 51 lines sami3/trunk: - Add tgcm module (tgcm.f) that reads TIMEGCM NetCDF history files to provide neutrals (T,U,V,O2,O,N2, etc) to sami3. Sub read_tgcm is called from sub initial, instead of calling sub readunvn (source for sub readunvn is still in sami3_mpi-1.82_p_TD.f, but it is not called). The data section of the tgcm module replaces common /UNVN/ in previous versions. - Paths to local netcdf library and include files LIB_NETCDF and INC_NETCDF must be set in the Makefile. At hao on 64-bit linux systems, I am using v4.1.1, built with the Intel openmpi-1.4.3 mpif90 compiler (ifort v11.1). Note tgcm.f uses the netcdf f90 API (call NF90_xxx). - Only tgcm.f use-associates the netcdf library, but the include path must be provided when compiling any source files that use-associate the tgcm module (Makefile provides the include path when compiling all source files). - The tgcm_module is use-associated into 3 subs (sami3_mpi-1.82_p_TD.f) (subs initial, readunvn, and getunvn, altho readunvn is not called). - Sub read_tgcm is called by all mpi tasks (not just the master, as in the former call to readunvn). This is because the dimension sizes are determined at runtime (they are no longer parameters), and the module data arrays are dynamically allocated accordingly. Since all mpi tasks must do their own allocations, it seemed easier to just have all mpi tasks read the file, which they can do simultaneously, rather than only the master, and then doing mpi_bcasts out to the worker tasks (these calls are commented out in sami3_mpi-1.82_p_TD.f). - This has been run with single (5-deg) and double (2.5 deg) resolution timegcm files. The timegcm input file path is read from the namelist and passed to read_tgcm. Note the double-res file used in the tests has only a single history, whereas the single-res file has 24 hours of 15-min histories). These files are *not* provided in the repository source code. - This has *not* been run long enough to read more than one timegcm history in a single run (i.e., > 15 mins). This is due to a bug in our intel v11.1 compiler, in which it accumulates memory useage during a run. The tests were run for only 10 steps. - Also note that this code will *not* work with TIEGCM history files because the target lower boundary height (target_zkm = 78 km) is below the tiegcm lower boundary (97 km). This code does not yet have extrapolation of tiegcm fields downward to 78 km. - Made some minor modifications to write_density.pro, and added cmreplicate.pro (altho these are not used, assuming netcdf history files are being read). ------------------------------------------------------------------------ r691 | foster | 2011-09-28 14:32:59 -0600 (Wed, 28 Sep 2011) | 13 lines Initial import of sami3 to $SVN/sami3: - All code is imported to sami3/trunk, but empty directories tags and branches are also created. - This is Joe Huba's v1.82 code, with very minor changes to Makefile. - This version has a loose coupling with timegcm, i.e., to execute it needs to read neutrals from fortran unformatted file TIMEGCM.inp, which can be made from a timegcm history file by running IDL script read_density.pro, followed by write_density.pro. Other than this file, all source code and input data files are available under the trunk to build and execute. - The Makefile is set up to use the Intel compiler (mpif90 to compile and mpirun to execute). Typically, 7 processors are used to execute, e.g. "mpirun -np 7 osi07_TD.x" ------------------------------------------------------------------------