Changeset 13108


Ignore:
Timestamp:
08/21/12 12:13:57 (13 years ago)
Author:
jschierm
Message:

NEW: netcdf version of runme.m (called runme2.m), runme.py, and test101.py.

Location:
issm/trunk-jpl/test/NightlyRun
Files:
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/test/NightlyRun/runme.py

    r12952 r13108  
    142142                        if strcmpi(procedure,'update'):
    143143
    144                                 if not strcmp(socket.gethostname().lower().split('.')[0],'larsen'):
    145 #                                       raise RuntimeError("Nightly run archives must be saved on 'larsen' (hostname is '"+socket.gethostname()+"').")
    146                                         print "Nightly run archives must be saved on 'larsen' (hostname is '"+socket.gethostname()+"')."
    147 #                               f = h5py.File(os.path.join('..','Archives',archive_name+'.hdf5'),'w')
    148                                 f = netCDF4.Dataset(os.path.join('..','Archives',archive_name+'.nc'),'w')
     144                                os.remove(os.path.join('..','Archives',archive_name+'.nc'))
     145                                f = netCDF4.Dataset(os.path.join('..','Archives',archive_name+'.nc'),'w',format='NETCDF3_CLASSIC')
    149146                                for k,fieldname in enumerate(field_names):
    150147                                        field=numpy.array(field_values[k],dtype=float)
    151 #                                       f.create_dataset(archive_name+'_field'+str(k),data=field)
    152                                         f.createDimension(archive_name+'_field'+str(k)+'_0',numpy.size(field,0))
    153                                         f.createDimension(archive_name+'_field'+str(k)+'_1',numpy.size(field,1))
    154                                         v = f.createVariable(archive_name+'_field'+str(k),'f8',(archive_name+'_field'+str(k)+'_0',archive_name+'_field'+str(k)+'_1'))
     148                                        if len(field.shape) == 1:
     149                                                if numpy.size(field):
     150                                                        field=field.reshape(numpy.size(field),1)
     151                                                else:
     152                                                        field=field.reshape(0,0)
     153                                        # Matlab uses base 1, so use base 1 in labels
     154                                        f.createDimension(archive_name+'_field'+str(k+1)+'_1',numpy.size(field,0))
     155                                        f.createDimension(archive_name+'_field'+str(k+1)+'_2',numpy.size(field,1))
     156                                        v = f.createVariable(archive_name+'_field'+str(k+1),field.dtype,(archive_name+'_field'+str(k+1)+'_1',archive_name+'_field'+str(k+1)+'_2'))
    155157                                        v[:] = field
    156158                                f.close()
     
    162164                                #load archive
    163165                                if os.path.exists(os.path.join('..','Archives',archive_name+'.nc')):
    164 #                                       f = h5py.File(os.path.join('..','Archives',archive_name+'.hdf5'),'r')
    165166                                        f = netCDF4.Dataset(os.path.join('..','Archives',archive_name+'.nc'),'r')
    166167                                else:
     
    171172                                        try:
    172173                                                #Get field and tolerance
    173                                                 field=numpy.array(field_values[k],dtype=float)
    174 #                                               print 'field =',field
     174                                                field=numpy.array(field_values[k])
     175                                                if len(field.shape) == 1:
     176                                                        if numpy.size(field):
     177                                                                field=field.reshape(numpy.size(field),1)
     178                                                        else:
     179                                                                field=field.reshape(0,0)
    175180                                                tolerance=field_tolerances[k]
    176 #                                               print 'tolerance =',tolerance
    177181
    178182                                                #compare to archive
    179 #                                               if archive_name+'_field'+str(k) in f:
    180 #                                                       archive=f[archive_name+'_field'+str(k)][...]
    181                                                 if archive_name+'_field'+str(k) in f.variables:
    182                                                         archive=f.variables[archive_name+'_field'+str(k)][:]
    183                                                 else:
    184                                                         raise NameError("Field name '"+archive_name+'_field'+str(k)+"' does not exist in archive file.")
    185 #                                               print 'archive =',archive
    186                                                 error_diff=numpy.amax(numpy.abs(archive-field),axis=1)/ \
    187                                                                    (numpy.amax(numpy.abs(archive),axis=1)+sys.float_info.epsilon)
    188 #                                               print 'error_diff =',error_diff
     183                                                # Matlab uses base 1, so use base 1 in labels
     184                                                if archive_name+'_field'+str(k+1) in f.variables:
     185                                                        archive=f.variables[archive_name+'_field'+str(k+1)][:]
     186                                                else:
     187                                                        raise NameError("Field name '"+archive_name+'_field'+str(k+1)+"' does not exist in archive file.")
     188                                                error_diff=numpy.amax(numpy.abs(archive-field),axis=0)/ \
     189                                                                   (numpy.amax(numpy.abs(archive),axis=0)+sys.float_info.epsilon)
    189190
    190191                                                #disp test result
    191                                                 if (error_diff>tolerance):
     192                                                if (numpy.any(error_diff>tolerance)):
    192193                                                        print 'ERROR   difference: %-7.2g > %7.2g test id: %i test name: %s field: %s' % \
    193194                                                                (error_diff,tolerance,id,id_string,fieldname)
     
    202203                                                message=me2
    203204                                                if   strcmpi(output,'nightly'):
    204                                                         fid=open(os.path.join(ISSM_DIR,'nightlylog','matlaberror.log'), 'a')
     205                                                        fid=open(os.path.join(ISSM_DIR,'nightlylog','pythonerror.log'), 'a')
    205206                                                        fid.write('%s' % message)
    206207                                                        fid.write('\n------------------------------------------------------------------\n')
     
    208209                                                        print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,fieldname)
    209210                                                elif strcmpi(output,'daily'):
    210                                                         fid=open(os.path.join(ISSM_DIR,'dailylog','matlaberror.log'), 'a')
     211                                                        fid=open(os.path.join(ISSM_DIR,'dailylog','pythonerror.log'), 'a')
    211212                                                        fid.write('%s' % message)
    212213                                                        fid.write('\n------------------------------------------------------------------\n')
     
    225226                        message=me
    226227                        if   strcmpi(output,'nightly'):
    227                                 fid=open(os.path.join(ISSM_DIR+'nightlylog','matlaberror.log'), 'a')
     228                                fid=open(os.path.join(ISSM_DIR+'nightlylog','pythonerror.log'), 'a')
    228229                                fid.write('%s' % message)
    229230                                fid.write('\n------------------------------------------------------------------\n')
     
    231232                                print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,'N/A')
    232233                        elif strcmpi(output,'daily'):
    233                                 fid=open(os.path.join(ISSM_DIR+'dailylog','matlaberror.log'), 'a')
     234                                fid=open(os.path.join(ISSM_DIR+'dailylog','pythonerror.log'), 'a')
    234235                                fid.write('%s' % message)
    235236                                fid.write('\n------------------------------------------------------------------\n')
  • issm/trunk-jpl/test/NightlyRun/runme2.m

    r13103 r13108  
    124124                archive_name=['Archive' num2str(id) ];
    125125                if strcmpi(procedure,'update'),
    126 
    127                         if ~strcmp(oshostname(),'larsen');
    128                                 error(['Nightly run archives must be saved on "larsen" (hostname is "' oshostname() '")']);
    129                         end
     126                        delete(['../Archives/' archive_name '.nc'])
    130127                        for k=1:length(field_names),
    131128                                field=field_values{k};
    132                                 eval([ archive_name '_field' num2str(k) ' =  field ;']);
     129                                % matlab writes the dimensions reversed and matrices transposed into netcdf, so compensate for that
     130                                nccreate(['../Archives/' archive_name '.nc'],[archive_name '_field' num2str(k)],...
     131                                         'Dimensions',{[archive_name '_field' num2str(k) '_2'] size(field,2) [archive_name '_field' num2str(k) '_1'] size(field,1)},...
     132                                         'Format','classic');
     133                                ncwrite(['../Archives/' archive_name '.nc'],[archive_name '_field' num2str(k)],transpose(field));
    133134                        end
    134                         eval(['save ../Archives/' archive_name ' ' archive_name '_field*']);
    135                         disp(sprintf(['File ./../Archives/' archive_name ' saved\n']));
     135                        disp(sprintf(['File ./../Archives/' archive_name '.nc saved\n']));
    136136
    137137                %ELSE: CHECK TEST
    138138                else,
    139 
    140                         %load archive
    141                         load(['../Archives/' archive_name ]);
    142 
    143139                        for k=1:length(field_names),
    144140
     
    150146
    151147                                        %compare to archive
    152                                         eval(['archive=' archive_name '_field' num2str(k) ';']);
     148                                        % matlab reads the dimensions reversed and matrices transposed from netcdf, so compensate for that
     149                                        archive=transpose(ncread(['../Archives/' archive_name '.nc'],[archive_name '_field' num2str(k)]));
    153150                                        error_diff=full(max(abs(archive(:)-field(:)))/(max(abs(archive))+eps));
    154151
  • issm/trunk-jpl/test/NightlyRun/test101.py

    r13070 r13108  
    2323        1e-13,1e-13,1e-13]
    2424field_values=[\
    25         [md.results.DiagnosticSolution.Vx],\
    26         [md.results.DiagnosticSolution.Vy],\
    27         [md.results.DiagnosticSolution.Vel],\
    28         [md.results.DiagnosticSolution.Pressure],\
    29         [md.results.DiagnosticSolution.StressTensorxx],\
    30         [md.results.DiagnosticSolution.StressTensoryy],\
    31         [md.results.DiagnosticSolution.StressTensorxy],\
     25        md.results['DiagnosticSolution'][1]['Vx'],\
     26        md.results['DiagnosticSolution'][1]['Vy'],\
     27        md.results['DiagnosticSolution'][1]['Vel'],\
     28        md.results['DiagnosticSolution'][1]['Pressure'],\
     29        md.results['DiagnosticSolution'][1]['StressTensorxx'],\
     30        md.results['DiagnosticSolution'][1]['StressTensoryy'],\
     31        md.results['DiagnosticSolution'][1]['StressTensorxy'],\
    3232        ]
Note: See TracChangeset for help on using the changeset viewer.