94 |
self.density_rate=Scalar(0.,Function(self.domain)) |
self.density_rate=Scalar(0.,Function(self.domain)) |
95 |
d={} |
d={} |
96 |
for i in self.__volumes: |
for i in self.__volumes: |
97 |
if self.mass_rate.has_key(i): d[i]=self.mass_rate[i]/self.__volumes[i] |
if self.mass_rate.has_key(i): d[i]=-self.mass_rate[i]/self.__volumes[i] |
98 |
self.tag_map.insert(self.density_rate,**d) |
self.tag_map.insert(self.density_rate,**d) |
99 |
|
|
100 |
class LinearElasticStressChange(Model): |
class LinearElasticStressChange(Model): |
162 |
def doInitialStep(self): |
def doInitialStep(self): |
163 |
""" |
""" |
164 |
""" |
""" |
165 |
|
d=self.domain.getDim() |
166 |
self.__pde.setValue(Y=-kronecker(Function(self.domain))[d-1]*9.81*self.density) |
self.__pde.setValue(Y=-kronecker(Function(self.domain))[d-1]*9.81*self.density) |
167 |
ddisp=self.__pde.getSolution() |
ddisp=self.__pde.getSolution() |
168 |
deps=symmetric(grad(ddisp)) |
deps=symmetric(grad(ddisp)) |
176 |
def terminateIteration(self): |
def terminateIteration(self): |
177 |
return not self.__first |
return not self.__first |
178 |
|
|
179 |
def doInitialStepPostprocessing(self): |
def doInitialPostprocessing(self): |
180 |
self.__stress=self.stress |
self.__stress=self.stress |
181 |
self.__displacement=self.displacement |
self.__displacement=self.displacement |
182 |
|
self.trace("initial displacement range : %s: %s"%(inf(self.displacement[2]),sup(self.displacement[2]))) |
183 |
|
self.trace("initial stress range : %s: %s"%(inf(self.stress),sup(self.stress))) |
184 |
|
|
185 |
def doStepPreprocessing(self,dt): |
def doStepPreprocessing(self,dt): |
186 |
self.stress=self.__stress |
self.stress=self.__stress |
187 |
self.displacement=self.__displacement |
self.displacement=self.__displacement |
188 |
self.__first=True |
self.__first=True |
189 |
|
|
190 |
def doStep(self): |
def doStep(self,dt): |
191 |
""" |
""" |
192 |
""" |
""" |
193 |
|
d=self.domain.getDim() |
194 |
if not self.density_rate == None: |
if not self.density_rate == None: |
195 |
self.__pde.setValue(Y=-kronecker(Function(self.domain))[d-1]*9.81*self.density_rate) |
self.__pde.setValue(Y=-kronecker(Function(self.domain))[d-1]*9.81*self.density_rate) |
196 |
ddisp=self.__pde.getSolution() |
ddisp=self.__pde.getSolution() |
202 |
def doStepPostprocessing(self, dt): |
def doStepPostprocessing(self, dt): |
203 |
self.__stress=self.stress |
self.__stress=self.stress |
204 |
self.__displacement=self.displacement |
self.__displacement=self.displacement |
205 |
|
self.trace("displacement range : %s: %s"%(inf(self.displacement[2]),sup(self.displacement[2]))) |
206 |
|
self.trace("stress range : %s: %s"%(inf(self.stress),sup(self.stress))) |