Package PyFoam :: Package Site :: Module ChangeGGIBoundary
[hide private]
[frames] | no frames]

Source Code for Module PyFoam.Site.ChangeGGIBoundary

  1  """ 
  2  Application-class that implements pyFoamChangeGGIBoundary.py 
  3   
  4  Modification of GGI and cyclicGGI interface parameters in 
  5  constant/polymesh/boundary file. 
  6   
  7  Author: 
  8    Martin Beaudoin, Hydro-Quebec, 2009.  All rights reserved 
  9   
 10  """ 
 11   
 12  from PyFoam.Applications.PyFoamApplication import PyFoamApplication 
 13  from PyFoam.RunDictionary.ParsedParameterFile import ParsedParameterFile 
 14  from PyFoam.ThirdParty.six import print_ 
 15  from os import path 
 16  import sys 
 17  import re 
 18   
19 -class ChangeGGIBoundary(PyFoamApplication):
20 - def __init__(self,args=None):
21 description="""\ 22 Change GGI boundary condition parameters 23 """ 24 PyFoamApplication.__init__(self, 25 args=args, 26 description=description, 27 usage="%prog <caseDirectory> ggiPatchName", 28 interspersed=True, 29 changeVersion=False, 30 nr=2)
31
32 - def addOptions(self):
33 self.parser.add_option("--shadowPatch", 34 action="store", 35 dest="shadowPatch", 36 default=None, 37 help='Name of the shadowPatch') 38 self.parser.add_option("--shadowName", 39 action="store", 40 dest="shadowName", 41 default=None, 42 help='Name of the shadowPatch. Deprecated. Use --shadowPatch instead') 43 self.parser.add_option("--zone", 44 action="store", 45 dest="zone", 46 default=None, 47 help='Name of the zone for the GGI patch') 48 self.parser.add_option("--patchZoneName", 49 action="store", 50 dest="patchZoneName", 51 default=None, 52 help='Name of the zone for the GGI patch. Deprecated. Use --zone instead') 53 self.parser.add_option("--bridgeOverlap", 54 action="store", 55 dest="bridgeOverlap", 56 default=None, 57 help='bridgeOverlap flag (on/off)') 58 self.parser.add_option("--bridgeOverlapFlag", 59 action="store", 60 dest="bridgeOverlapFlag", 61 default=None, 62 help='bridgeOverlap flag (on/off). Deprecated. Use --bridgeOverlap instead') 63 self.parser.add_option("--rotationAxis", 64 action="store", 65 dest="rotationAxis", 66 default=None, 67 help='rotation axis for cyclicGgi') 68 self.parser.add_option("--rotationAngle", 69 action="store", 70 dest="rotationAngle", 71 default=None, 72 help='rotation axis angle for cyclicGgi') 73 self.parser.add_option("--separationOffset", 74 action="store", 75 dest="separationOffset", 76 default=None, 77 help='separation offset for cyclicGgi') 78 79 self.parser.add_option("--test", 80 action="store_true", 81 default=False, 82 dest="test", 83 help="Only print the new boundary file")
84
85 - def run(self):
86 fName=self.parser.getArgs()[0] 87 bName=self.parser.getArgs()[1] 88 89 boundary=ParsedParameterFile(path.join(".",fName,"constant","polyMesh","boundary"),debug=False,boundaryDict=True) 90 91 bnd=boundary.content 92 93 if type(bnd)!=list: 94 self.error("Problem with boundary file (not a list)") 95 96 found=False 97 98 for val in bnd: 99 if val==bName: 100 found=True 101 elif found: 102 bcType=val["type"] 103 if re.match("cyclicGgi", bcType)!= None or re.match("ggi", bcType)!= None: 104 if self.parser.getOptions().shadowPatch!=None: 105 shadowPatch=self.parser.getOptions().shadowPatch 106 val["shadowPatch"]=shadowPatch 107 if shadowPatch not in bnd: 108 self.error("\n Option --shadowPatch for patch:",bName,": there is no patch called",shadowPatch,"\n") 109 110 if self.parser.getOptions().zone!=None: 111 val["zone"]=self.parser.getOptions().zone 112 113 if self.parser.getOptions().bridgeOverlap!=None: 114 val["bridgeOverlap"]=self.parser.getOptions().bridgeOverlap 115 116 if val["type"]=="cyclicGgi": 117 if self.parser.getOptions().rotationAxis!=None: 118 val["rotationAxis"]=self.parser.getOptions().rotationAxis 119 120 if self.parser.getOptions().rotationAngle!=None: 121 val["rotationAngle"]=self.parser.getOptions().rotationAngle 122 123 if self.parser.getOptions().separationOffset!=None: 124 val["separationOffset"]=self.parser.getOptions().separationOffset 125 126 127 # Deprecated 128 if self.parser.getOptions().shadowName!=None: 129 self.warning("\n PatchName:",bName,": Option --shadowName is deprecated. Use --shadowPatch instead\n") 130 shadowName=self.parser.getOptions().shadowName 131 val["shadowPatch"]=shadowName 132 if shadowName not in bnd: 133 self.error("\n Option --shadowName for patch:",bName,": there is no patch called",shadowName,"\n") 134 135 # Deprecated 136 if self.parser.getOptions().patchZoneName!=None: 137 self.warning("\n PatchName:",bName,": Option --patchZoneName is deprecated. Use --zone instead\n") 138 val["zone"]=self.parser.getOptions().patchZoneName 139 140 # Deprecated 141 if self.parser.getOptions().bridgeOverlapFlag!=None: 142 self.warning("\n PatchName:",bName,": Option --bridgeOverlapFlag is deprecated. Use --bridgeOverlap instead\n") 143 val["bridgeOverlap"]=self.parser.getOptions().bridgeOverlapFlag 144 145 146 else: 147 print_("Unsupported GGI type '",bcType,"' for patch",bName) 148 break 149 150 if not found: 151 self.error("Boundary",bName,"not found in",bnd[::2]) 152 153 if self.parser.getOptions().test: 154 print_(boundary) 155 else: 156 boundary.writeFile()
157