コード例 #1
0
ファイル: pyforce.py プロジェクト: naoyak/pyforce
 def getDeleted(self, sObjectType, start, end):
     res = BaseClient.getDeleted(self, sObjectType, start, end)
     res = res[_tPartnerNS.deletedRecords:]
     if type(res) not in (TupleType, ListType):
         res = [res]
     data = list()
     for r in res:
         d = dict(
             id = str(r[_tPartnerNS.id]),
             deletedDate = marshall('datetime', 'deletedDate', r,
             ns=_tPartnerNS))
         data.append(d)
     return data
コード例 #2
0
 def getDeleted(self, sObjectType, start, end):
     res = BaseClient.getDeleted(self, sObjectType, start, end)
     res = res[_tPartnerNS.deletedRecords:]
     if type(res) not in (TupleType, ListType):
         res = [res]
     data = list()
     for r in res:
         d = dict(
             id = str(r[_tPartnerNS.id]),
             deletedDate = marshall('datetime', 'deletedDate', r,
             ns=_tPartnerNS))
         data.append(d)
     return data
コード例 #3
0
ファイル: python_client.py プロジェクト: davisagli/beatbox
 def marshall(self, fieldname, xml):
     if self.fields.has_key(fieldname):
         field = self.fields[fieldname]
     else:
         return marshall(DEFAULT_FIELD_TYPE, fieldname, xml)
     return field.marshall(xml)
コード例 #4
0
ファイル: python_client.py プロジェクト: davisagli/beatbox
 def marshall(self, xml):
     return marshall(self.type, self.name, xml)
コード例 #5
0
ファイル: pyforce.py プロジェクト: vagishdwivedi/pyforce
 def marshall(self, fieldname, xml):
     if fieldname in self.fields.keys():
         field = self.fields[fieldname]
     else:
         return marshall(DEFAULT_FIELD_TYPE, fieldname, xml)
     return field.marshall(xml)
コード例 #6
0
ファイル: pyforce.py プロジェクト: vagishdwivedi/pyforce
 def marshall(self, xml):
     return marshall(self.type, self.name, xml)
コード例 #7
0
 def marshall(self, fieldname, xml):
     if self.fields.has_key(fieldname):
         field = self.fields[fieldname]
     else:
         return marshall(DEFAULT_FIELD_TYPE, fieldname, xml)
     return field.marshall(xml)
コード例 #8
0
ファイル: pyforce.py プロジェクト: alanjcastonguay/pyforce
 def marshall(self, fieldname, xml):
     if fieldname in self.fields.keys():
         field = self.fields[fieldname]
     else:
         return marshall(DEFAULT_FIELD_TYPE, fieldname, xml)
     return field.marshall(xml)
コード例 #9
0
def solve(md, solutionenum, **kwargs):
    """
	SOLVE - apply solution sequence for this model
 
	   Usage:
	      md=solve(md,solutionenum,varargin)
	      where varargin is a list of paired arguments of string OR enums
 
	   solution types available comprise:
	      - StressbalanceSolutionEnum
	      - MasstransportSolutionEnum
	      - ThermalSolutionEnum
	      - SteadystateSolutionEnum
	      - TransientSolutionEnum
	      - BalancethicknessSolutionEnum
	      - BedSlopeSolutionEnum
	      - SurfaceSlopeSolutionEnum
	      - HydrologySolutionEnum
	      - FlaimSolutionEnum
 
	   extra options:
	      - loadonly : does not solve. only load results
		  - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
		  - restart: 'directory name (relative to the execution directory) where the restart file is located.
 
	   Examples:
	      md=solve(md,StressbalanceSolutionEnum);
	"""

    #recover and process solve options
    if EnumToString(solutionenum)[0][-8:] != 'Solution':
        raise ValueError("solutionenum '%s' not supported!" %
                         EnumToString(solutionenum)[0])
    options = pairoptions(solutionenum=solutionenum, **kwargs)

    #recover some fields
    md.private.solution = solutionenum
    cluster = md.cluster

    #check model consistency
    if m.strcmpi(options.getfieldvalue('checkconsistency', 'yes'), 'yes'):
        print("checking model consistency")
        if solutionenum == FlaimSolutionEnum():
            md.private.isconsistent = True
            md.mesh.checkconsistency(md, solutionenum)
            md.flaim.checkconsistency(md, solutionenum)
            if not md.private.isconsistent:
                raise RuntimeError("Model not consistent, see messages above.")
        else:
            ismodelselfconsistent(md)

    #First, build a runtime name that is unique
    restart = options.getfieldvalue('restart', '')
    if restart == 1:
        pass  #do nothing
    else:
        if restart:
            md.private.runtimename = restart
        else:
            if options.getfieldvalue('runtimename', True):
                c = datetime.datetime.now()
                md.private.runtimename = "%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (
                    md.miscellaneous.name, c.month, c.day, c.year, c.hour,
                    c.minute, c.second, os.getpid())
            else:
                md.private.runtimename = md.miscellaneous.name

    #if running qmu analysis, some preprocessing of dakota files using models
    #fields needs to be carried out.
    if md.qmu.isdakota:
        md = preqmu(md, options)

    #flaim analysis
    if solutionenum == FlaimSolutionEnum():
        md = flaim_sol(md, options)
        [md.private.solution] = EnumToString(solutionenum)
        return md

    #Do we load results only?
    if options.getfieldvalue('loadonly', False):
        md = loadresultsfromcluster(md)
        return md

    #Write all input files
    marshall(md)  # bin file
    md.toolkits.ToolkitsFile(md.miscellaneous.name +
                             '.toolkits')  # toolkits file
    cluster.BuildQueueScript(md.private.runtimename, md.miscellaneous.name,
                             md.private.solution, md.settings.io_gather,
                             md.debug.valgrind, md.debug.gprof,
                             md.qmu.isdakota)  # queue file

    #Stop here if batch mode
    if m.strcmpi(options.getfieldvalue('batch', 'no'), 'yes'):
        print('batch mode requested: not launching job interactively')
        print('launch solution sequence on remote cluster by hand')
        return md

    #Upload all required files:
    modelname = md.miscellaneous.name
    filelist = [
        modelname + '.bin ', modelname + '.toolkits ', modelname + '.queue '
    ]
    if md.qmu.isdakota:
        filelist.append(modelname + '.qmu.in')

    if not restart:
        cluster.UploadQueueJob(md.miscellaneous.name, md.private.runtimename,
                               filelist)

    #Launch job
    cluster.LaunchQueueJob(md.miscellaneous.name, md.private.runtimename,
                           filelist, restart)

    #wait on lock
    if md.settings.waitonlock > 0:
        #we wait for the done file
        islock = waitonlock(md)
        if islock == 0:  #no results to be loaded
            print(
                'The results must be loaded manually with md=loadresultsfromcluster(md).'
            )
        else:  #load results
            print('loading results from cluster')
            md = loadresultsfromcluster(md)

    #post processes qmu results if necessary
    if md.qmu.isdakota:
        if not strncmpi(options['keep'], 'y', 1):
            shutil.rmtree('qmu' + str(os.getpid()))

    return md
コード例 #10
0
ファイル: solve.py プロジェクト: pf4d/issm
def solve(md, solutionstring, *args):
    """
	SOLVE - apply solution sequence for this model
 
	   Usage:
	      md=solve(md,solutionstring,varargin)
	      where varargin is a list of paired arguments of string OR enums
 
		solution types available comprise:
		 - 'Stressbalance'    or 'sb'
		 - 'Masstransport'    or 'mt'
		 - 'Thermal'          or 'th'
		 - 'Steadystate'      or 'ss'
		 - 'Transient'        or 'tr'
		 - 'Balancethickness' or 'mc'
		 - 'Balancevelocity'  or 'bv'
		 - 'BedSlope'         or 'bsl'
		 - 'SurfaceSlope'     or 'ssl'
		 - 'Hydrology'        or 'hy'
		 - 'DamageEvolution'  or 'da'
		 - 'Gia'              or 'gia'
		 - 'Sealevelrise'     or 'slr'

	   extra options:
        - loadonly : does not solve. only load results
		  - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
		  - restart: 'directory name (relative to the execution directory) where the restart file is located.
 
	   Examples:
	      md=solve(md,'Stressbalance');
         md=solve(md,'sb');
	"""

    #recover and process solve options
    if solutionstring.lower() == 'sb' or solutionstring.lower(
    ) == 'stressbalance':
        solutionstring = 'StressbalanceSolution'
    elif solutionstring.lower() == 'mt' or solutionstring.lower(
    ) == 'masstransport':
        solutionstring = 'MasstransportSolution'
    elif solutionstring.lower() == 'th' or solutionstring.lower() == 'thermal':
        solutionstring = 'ThermalSolution'
    elif solutionstring.lower() == 'st' or solutionstring.lower(
    ) == 'steadystate':
        solutionstring = 'SteadystateSolution'
    elif solutionstring.lower() == 'tr' or solutionstring.lower(
    ) == 'transient':
        solutionstring = 'TransientSolution'
    elif solutionstring.lower() == 'mc' or solutionstring.lower(
    ) == 'balancethickness':
        solutionstring = 'BalancethicknessSolution'
    elif solutionstring.lower() == 'bv' or solutionstring.lower(
    ) == 'balancevelocity':
        solutionstring = 'BalancevelocitySolution'
    elif solutionstring.lower() == 'bsl' or solutionstring.lower(
    ) == 'bedslope':
        solutionstring = 'BedSlopeSolution'
    elif solutionstring.lower() == 'ssl' or solutionstring.lower(
    ) == 'surfaceslope':
        solutionstring = 'SurfaceSlopeSolution'
    elif solutionstring.lower() == 'hy' or solutionstring.lower(
    ) == 'hydrology':
        solutionstring = 'HydrologySolution'
    elif solutionstring.lower() == 'da' or solutionstring.lower(
    ) == 'damageevolution':
        solutionstring = 'DamageEvolutionSolution'
    elif solutionstring.lower() == 'gia' or solutionstring.lower() == 'gia':
        solutionstring = 'GiaSolution'
    elif solutionstring.lower() == 'slr' or solutionstring.lower(
    ) == 'sealevelrise':
        solutionstring = 'SealevelriseSolution'
    else:
        raise ValueError("solutionstring '%s' not supported!" % solutionstring)
    options = pairoptions('solutionstring', solutionstring, *args)

    #recover some fields
    md.private.solution = solutionstring
    cluster = md.cluster
    if options.getfieldvalue('batch', 'no') == 'yes':
        batch = 1
    else:
        batch = 0

    #check model consistency
    if options.getfieldvalue('checkconsistency', 'yes') == 'yes':
        print "checking model consistency"
        ismodelselfconsistent(md)

    #First, build a runtime name that is unique
    restart = options.getfieldvalue('restart', '')
    if restart == 1:
        pass  #do nothing
    else:
        if restart:
            md.private.runtimename = restart
        else:
            if options.getfieldvalue('runtimename', True):
                c = datetime.datetime.now()
                md.private.runtimename = "%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (
                    md.miscellaneous.name, c.month, c.day, c.year, c.hour,
                    c.minute, c.second, os.getpid())
            else:
                md.private.runtimename = md.miscellaneous.name

    #if running qmu analysis, some preprocessing of dakota files using models
    #fields needs to be carried out.
    if md.qmu.isdakota:
        md = preqmu(md, options)

    #Do we load results only?
    if options.getfieldvalue('loadonly', False):
        md = loadresultsfromcluster(md)
        return md

    #Write all input files
    marshall(md)  # bin file
    md.toolkits.ToolkitsFile(md.miscellaneous.name +
                             '.toolkits')  # toolkits file
    cluster.BuildQueueScript(md.private.runtimename, md.miscellaneous.name,
                             md.private.solution, md.settings.io_gather,
                             md.debug.valgrind, md.debug.gprof,
                             md.qmu.isdakota,
                             md.transient.isoceancoupling)  # queue file

    #Stop here if batch mode
    if options.getfieldvalue('batch', 'no') == 'yes':
        print 'batch mode requested: not launching job interactively'
        print 'launch solution sequence on remote cluster by hand'
        return md

    #Upload all required files:
    modelname = md.miscellaneous.name
    filelist = [
        modelname + '.bin ', modelname + '.toolkits ', modelname + '.queue '
    ]
    if md.qmu.isdakota:
        filelist.append(modelname + '.qmu.in')

    if not restart:
        cluster.UploadQueueJob(md.miscellaneous.name, md.private.runtimename,
                               filelist)

    #Launch job
    cluster.LaunchQueueJob(md.miscellaneous.name, md.private.runtimename,
                           filelist, restart, batch)

    #wait on lock
    if md.settings.waitonlock > 0:
        #we wait for the done file
        islock = waitonlock(md)
        if islock == 0:  #no results to be loaded
            print 'The results must be loaded manually with md=loadresultsfromcluster(md).'
        else:  #load results
            print 'loading results from cluster'
            md = loadresultsfromcluster(md)

    #post processes qmu results if necessary
    if md.qmu.isdakota:
        if not strncmpi(options['keep'], 'y', 1):
            shutil.rmtree('qmu' + str(os.getpid()))

    return md