Changeset 27635


Ignore:
Timestamp:
03/07/23 13:12:47 (2 years ago)
Author:
jdquinn
Message:

CHG: Attempt to call gmsh first, then find it at standard locations if it returns an error

Location:
issm/trunk-jpl/src/m/mesh/planet/gmsh
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.m

    r27632 r27635  
    1515%      md.mesh=gmshplanet('radius',6000,'resolution',100);
    1616
    17         %Find path to gmsh
    18         paths={
    19                 [getenv('ISSM_EXT_DIR') '/shared/gmsh/install/bin'],...
    20                 [getenv('ISSM_EXT_DIR') '/static/gmsh/install/bin'],...
    21                 [getenv('ISSM_EXT_DIR') '/gmsh/install/bin'],...
    22                 [issmdir() '/externalpackages/gmsh/install/bin'],...
    23                 [issmdir() '/bin'],...
    24                 ['/usr/bin']...
    25         };
    26         gmshpath='';
    27         for i=paths
    28                 if exist([i{1} '/gmsh'],'file'),
    29                         gmshpath = i{1};
    30                         break;
    31                 end
    32         end
    33         if isempty(gmshpath),
    34                 error('gmshplanet: gmsh executable not found!');
    35         end
    36 
    37         setenv('PATH', [gmshpath ':' getenv('PATH')]);
    38 
    39         % Get Gmsh version
     17        %Get Gmsh version
    4018        [s,r]=system(['gmsh -info | command grep ''Version'' | sed -e ''s/Version[[:blank:]]*:[[:blank:]]//'' | cut -d ''.'' -f1']);
    41         if s~=0 || contains(r, 'dyld'),
     19        if contains(r, 'dyld'),
    4220                error(['gmshplanet: ' r]);
    4321        end
     22        if s~=0,
     23                %gmsh executable may not be on path; attempt to find it
     24
     25                paths={
     26                        [getenv('ISSM_EXT_DIR') '/shared/gmsh/install/bin'],...
     27                        [getenv('ISSM_EXT_DIR') '/static/gmsh/install/bin'],...
     28                        [getenv('ISSM_EXT_DIR') '/gmsh/install/bin'],...
     29                        [issmdir() '/externalpackages/gmsh/install/bin'],...
     30                        [issmdir() '/bin'],...
     31                        ['/usr/bin']...
     32                };
     33                gmshpath='';
     34                for i=paths
     35                        if exist([i{1} '/gmsh'],'file'),
     36                                gmshpath = i{1};
     37                                break;
     38                        end
     39                end
     40                if isempty(gmshpath),
     41                        error('gmshplanet: gmsh executable not found!');
     42                end
     43                setenv('PATH', [gmshpath ':' getenv('PATH')]);
     44
     45                %Get Gmsh version
     46                [s,r]=system(['gmsh -info | command grep ''Version'' | sed -e ''s/Version[[:blank:]]*:[[:blank:]]//'' | cut -d ''.'' -f1']);
     47                if contains(r, 'dyld'),
     48                        error(['gmshplanet: ' r]);
     49                end
     50        end
     51
    4452        gmshmajorversion=str2num(r);
    4553        if ~ismember([3,4],gmshmajorversion),
  • issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py

    r27632 r27635  
    2424    """
    2525
    26     # Find path to gmsh
    27     paths = [
    28         os.environ.get('ISSM_EXT_DIR') + '/shared/gmsh/install/bin',
    29         os.environ.get('ISSM_EXT_DIR') + '/static/gmsh/install/bin',
    30         os.environ.get('ISSM_EXT_DIR') + '/gmsh/install/bin',
    31         issmdir() + '/externalpackages/gmsh/install/bin',
    32         issmdir() + '/bin',
    33         '/usr/bin'
    34     ]
    35     gmshpath = ''
    36     for path in paths:
    37         if exists(path + '/gmsh'):
    38             gmshpath = path
    39             break
    40     if gmshpath == '':
    41         error('gmshplanet: gmsh executable not found!')
    42 
    43     os.environ['PATH'] = gmshpath ':' os.environ.get['PATH']
    44 
    4526    # Get Gmsh version
    4627    subproc_args = 'gmsh -info 2>&1 | command grep \'Version\' | sed -e \'s/Version[[:blank:]]*:[[:blank:]]//\' | cut -d \'.\' -f1'
     
    4930    try:
    5031        strErrs = errs.decode()
    51     except AttributeError:  #this is not a byte variable, let's assume string
     32    except AttributeError:  # this is not a byte variable, let's assume string
    5233        strErrs = errs
    5334    if strErrs != '':
    54         raise Exception('gmshplanet: call to gmsh failed: {}'.format(errs))
     35        # gmsh executable may not be on path; attempt to find it
     36        paths = [
     37            os.environ.get('ISSM_EXT_DIR') + '/shared/gmsh/install/bin',
     38            os.environ.get('ISSM_EXT_DIR') + '/static/gmsh/install/bin',
     39            os.environ.get('ISSM_EXT_DIR') + '/gmsh/install/bin',
     40            issmdir() + '/externalpackages/gmsh/install/bin',
     41            issmdir() + '/bin',
     42            '/usr/bin'
     43        ]
     44        gmshpath = ''
     45        for path in paths:
     46            if exists(path + '/gmsh'):
     47                gmshpath = path
     48                break
     49        if gmshpath == '':
     50            error('gmshplanet: gmsh executable not found!')
     51
     52        os.environ['PATH'] = gmshpath ':' os.environ.get['PATH']
     53
     54        # Get Gmsh version
     55        subproc_args = 'gmsh -info 2>&1 | command grep \'Version\' | sed -e \'s/Version[[:blank:]]*:[[:blank:]]//\' | cut -d \'.\' -f1'
     56        subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
     57        outs, errs = subproc.communicate()
     58        try:
     59            strErrs = errs.decode()
     60        except AttributeError:  # this is not a byte variable, let's assume string
     61            strErrs = errs
     62        if strErrs != '':
     63            raise Exception('gmshplanet: call to gmsh failed: {}'.format(errs))
     64
    5565    gmshmajorversion = int(outs)
    5666    if gmshmajorversion not in [3, 4]:
Note: See TracChangeset for help on using the changeset viewer.