kraken_continuation_eigen2.py :  » Mobile » Pysces » pysces-0.7.2-(test) » pysces » kraken » controllers » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Mobile » Pysces 
Pysces » pysces 0.7.2 test  » pysces » kraken » controllers » kraken_continuation_eigen2.py
from Kraken import *
from KrakenDataTools import DataTools

os.chdir('c:/mypysces/btk')
##  os.chdir('/home/bgoli/mypysces/kraken')

START = time.time()
"""
Build controller and initialise active tentacles
Get a name for this task (task == collection of jobs)
"""
kcntrl = KrakenScanController()
kcntrl.setEnv(task_id='isola_cont_eigen', working_dir='c:\\mypysces\\btk',\
        model_file='2006_isola1_dem.psc', model_dir='c:\\mypysces\\pscmodels\\isola06')
kcntrl.startController()
"""
Set up a list of 'static' initialisation commands that will be used to
initialise each server before a job is sent to it
"""
I_list = ['P_INIT,' + kcntrl.kc_model_server.model_file_name, 'P_LOAD',\
    'P_SET_FLOAT,mode_state_init,3', 'P_SET_FLOAT,nleq2_nitmax,30',\
    'P_SET_FLOAT,mode_state_init3_factor,0.5', 'P_SET_FLOAT,pitcon_iter,20',\
    'P_SET_FLOAT,V2,100.0', 'P_SET_FLOAT,V3,100.0', 'P_SET_FLOAT,S05,1.0']
    ##  'P_SET_FLOAT,V2,1000.0', 'P_SET_FLOAT,V3,1000.0', 'P_SET_FLOAT,S05,1.0']
kcntrl.setInitCmds(I_list)


"""
Set up our continuation:
We want a parameter to be set with every new job/server and make use
of the deltaCommand() function. Here we use it to set our y-axis (A05) values
"""
# node split on yrange
# A05
yrange = 57
# P start points
xpoints = 200

# create a list of values A05
##  delta_list_vl = scipy.logspace(scipy.log10(0.1),scipy.log10(5.0), yrange)
##  delta_list_l = scipy.logspace(scipy.log10(5.1),scipy.log10(100.0), yrange)
##  delta_list_h = scipy.logspace(scipy.log10(100.1),scipy.log10(5000.0), yrange*3)
delta_list = scipy.logspace(scipy.log10(0.5),scipy.log10(1000.0), yrange)

# initiate an 'looping' generator with it
delta_gen = kcntrl.buildCycler(delta_list)

def deltaCommand():
    """
    This is used to setup conditions for each next-job-on-server
    Used in sendCmdListToOne() so may be one or more commands returned
    as a list
    """
    delta = 'P_SET_FLOAT,A05,%s' % delta_gen.next()
    # must return a list !!!
    return [delta]

kcntrl.deltaCommand = deltaCommand

"""
Set up our list of jobs, in this case a single continuation+eigen with
density xpoints at each of the delta (A05 values)
"""
J_list = []
for d in delta_list:
    ##  J_list.append('P_CONTINUATION,P,0.001,4.0e2,%s,%s' % (xpoints,d))
    J_list.append('P_CONTINUATION_WITH_EIGEN,P,0.01,3.8e4,%s,%s' % (xpoints,d))

kcntrl.setJobList(J_list)
kcntrl.Run(raw_data_dump=False)


DaResults = kcntrl.getAndClearResultList()

# Have data will travel

kdata = DataTools()

iRes = []
sRes = []
jRes = []
eRes = []
for res in DaResults:
    iRes.append(res[0])
    sRes.append(res[1])
    jRes.append(res[2])
    eRes.append(res[3])
del DaResults

def concatenateArrays(array_list):
    output = None
    for arr in range(len(array_list)):
        if type(array_list[arr]) == numpy.ndarray:
            if arr == 0:
                output = array_list[arr]
            else:
                output = scipy.concatenate((output,array_list[arr]))
    return output

FinalIArray = concatenateArrays(iRes)
print 'Indexes[0]', FinalIArray[0]
FinalSArray = concatenateArrays(sRes)
FinalJArray = concatenateArrays(jRes)
FinalEArray = concatenateArrays(eRes)
print 'FinalIArray', FinalIArray.shape, FinalIArray.dtype
print 'FinalSArray', FinalSArray.shape, FinalSArray.dtype
print 'FinalJArray', FinalJArray.shape, FinalJArray.dtype
print FinalEArray.shape, FinalEArray.dtype
del iRes
del sRes
del jRes
del eRes

kcntrl.Dump((FinalIArray,FinalSArray,FinalJArray,FinalEArray), kcntrl.task_id+'_result_array.bin')

# get rid of negative values in axes and fluxes
FinalArrayCleanJ1 = []
FinalArrayCleanJ4 = []
FinalVTK = []
for r in range(FinalSArray.shape[0]):
    if FinalIArray[r,:].all() > 0.0 and FinalSArray[r,:].all() > 0.0 and \
        FinalJArray[r,:].all() > 0.0 and FinalIArray[r,1] >= 0.2 and FinalJArray[r,1] >= 0.08 and FinalIArray[r,1] <= 40000.0:
        FinalArrayCleanJ1.append([FinalIArray[r,0], FinalIArray[r,1], FinalJArray[r,0], max(FinalEArray[r,:].real)])
        FinalArrayCleanJ4.append([FinalIArray[r,0], FinalIArray[r,1], FinalJArray[r,3], max(FinalEArray[r,:].real)])
    else:
        FinalIArray[r,:] = 0.0
        FinalSArray[r,:] = 0.0
        FinalJArray[r,:] = 0.0
        FinalEArray[r,:] = 0.0
FinalArrayCleanJ1 = numpy.array(FinalArrayCleanJ1)
FinalArrayCleanJ4 = numpy.array(FinalArrayCleanJ4)

kdata.writeGnuPlot_3D(FinalArrayCleanJ1, kcntrl.task_id+'_J1')

def ScalarFunc(val):
    """
    Manipulate the scalar (z-axis) values
    Accepts and returns a double
    """
    if val >= 0.0:
        return 60.0
    else:
        return val


kdata.vtk_scalar_func = ScalarFunc

# prepare vtk data
vtkcoords = numpy.transpose(numpy.array((FinalArrayCleanJ1[:,0],FinalArrayCleanJ1[:,1],FinalArrayCleanJ1[:,2],FinalArrayCleanJ1[:,3]),'d'))
for row in range(vtkcoords.shape[0]):
    vtkcoords[row,:3] = scipy.log10(vtkcoords[row,:3])

print vtkcoords[:5,:]
vtkcoords = kdata.GridSortLR(vtkcoords)
print vtkcoords[:5,:]

kdata.writeVTK_UnstructuredGrid(vtkcoords, kcntrl.task_id+'_result_ug')
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.