| 1 | function [CONFIG] = loadconfig(varargin) | 
| 2 | %loadconfig() | 
| 3 | %loadconfig(DIRECTORY) | 
| 4 | % | 
| 5 | %Reads MITgcm parameter input files ("data") to create a CONFIG structure | 
| 6 | %If DIRECTORY is not specified the current working directory is used. | 
| 7 | % | 
| 8 | %e.g. | 
| 9 | % >> CONFIG=loadconfig; | 
| 10 | % >> CONFIG2=loadconfig('/scratch/john/run2/'); | 
| 11 | % | 
| 12 | %Written by adcroft@mit.edu, 2002 | 
| 13 | %$Header: | 
| 14 |  | 
| 15 | if nargin==0 | 
| 16 | Dir='./'; | 
| 17 | elseif nargin==1 | 
| 18 | Dir=[varargin{1} '/']; | 
| 19 | else | 
| 20 | error('I don''t know what to do with the second argument'); | 
| 21 | end | 
| 22 |  | 
| 23 | % Extract names of forcing files from "data" file | 
| 24 | datafile=[Dir 'data']; | 
| 25 |  | 
| 26 | fid=fopen(datafile,'r'); | 
| 27 | if fid==-1 | 
| 28 | error(['Could not open file:' datafile ' for reading']); | 
| 29 | end | 
| 30 |  | 
| 31 | CONFIG.tinitfile=grepparameter(datafile,'hydrogthetafile'); | 
| 32 | CONFIG.sinitfile=grepparameter(datafile,'hydrogsaltfile'); | 
| 33 | CONFIG.sstfile=grepparameter(datafile,'thetaclimfile'); | 
| 34 | CONFIG.sssfile=grepparameter(datafile,'saltclimfile'); | 
| 35 | CONFIG.tauxfile=grepparameter(datafile,'zonalwindfile'); | 
| 36 | CONFIG.tauyfile=grepparameter(datafile,'meridwindfile'); | 
| 37 | CONFIG.qfile=grepparameter(datafile,'surfqfile'); | 
| 38 | CONFIG.empmrfile=grepparameter(datafile,'empmrfile'); | 
| 39 |  | 
| 40 | CONFIG.dt=grepparameter(datafile,'deltat'); | 
| 41 | CONFIG.tau_cd=grepparameter(datafile,'taucd'); | 
| 42 | CONFIG.tau_t=grepparameter(datafile,'tauthetaclimrelax'); | 
| 43 | CONFIG.tau_s=grepparameter(datafile,'tausaltclimrelax'); | 
| 44 |  | 
| 45 | CONFIG.diffkh=grepparameter(datafile,'diffkh'); | 
| 46 | CONFIG.viscar=grepparameter(datafile,'visca[rz]'); | 
| 47 | CONFIG.viscah=grepparameter(datafile,'viscah'); | 
| 48 | CONFIG.visca4=grepparameter(datafile,'visca4'); | 
| 49 | CONFIG.diffkht=grepparameter(datafile,'diffkht'); | 
| 50 | CONFIG.diffk4t=grepparameter(datafile,'diffk4t'); | 
| 51 | CONFIG.diffkrt=grepparameter(datafile,'diffk[rz]t'); | 
| 52 | CONFIG.diffkhs=grepparameter(datafile,'diffkhs'); | 
| 53 | CONFIG.diffk4s=grepparameter(datafile,'diffk4s'); | 
| 54 | CONFIG.diffkrs=grepparameter(datafile,'diffk[rz]s'); | 
| 55 |  | 
| 56 | CONFIG.rhonil=grepparameter(datafile,'rhonil'); | 
| 57 | if isempty(CONFIG.rhonil); CONFIG.rhonil=1000; end | 
| 58 |  | 
| 59 | CONFIG.hfacmin=grepparameter(datafile,'hfacmin'); | 
| 60 | CONFIG.hfacmindr=grepparameter(datafile,'hfacmind[rz]'); | 
| 61 |  | 
| 62 | CONFIG.usegmredi=grepparameter([datafile '.pkg'],'usegmredi'); | 
| 63 | CONFIG.useptracers=grepparameter([datafile '.pkg'],'useptracers'); | 
| 64 | CONFIG.usekpp=grepparameter([datafile '.pkg'],'usekpp'); | 
| 65 |  | 
| 66 | if ( ~isempty(CONFIG.usegmredi) & CONFIG.usegmredi=='true') | 
| 67 | CONFIG.background_k=grepparameter([datafile '.gmredi'],'gm_background_k'); | 
| 68 | CONFIG.taper_scheme=grepparameter([datafile '.gmredi'],'gm_taper_scheme'); | 
| 69 | CONFIG.maxslope=grepparameter([datafile '.gmredi'],'gm_maxslope'); | 
| 70 | CONFIG.kmin_horiz=grepparameter([datafile '.gmredi'],'gm_kmin_horiz'); | 
| 71 | end |