Re: [petsc-users] Strategies for coupled nonlinear problems

2024-07-09 Thread Miguel Angel Salazar de Troya
Are there other alternative methods that might be easier to implement? Miguel On Mon, Jul 8, 2024 at 1:43 PM Matthew Knepley wrote: > On Mon, Jul 8, 2024 at 6:14 AM Miguel Angel Salazar de Troya < > miguel.sala...@corintis.com> wrote: > >> Thanks Adam and Matt, >> &

Re: [petsc-users] Strategies for coupled nonlinear problems

2024-07-08 Thread Miguel Angel Salazar de Troya
diagonally dominant Jacobian. I have not found any reference so I might be wrong. Best, Miguel On Sat, Jul 6, 2024 at 3:33 PM Matthew Knepley wrote: > On Fri, Jul 5, 2024 at 3:29 AM Miguel Angel Salazar de Troya < > miguel.sala...@corintis.com> wrote: > >> Hello, I have the N

[petsc-users] Strategies for coupled nonlinear problems

2024-07-05 Thread Miguel Angel Salazar de Troya
Hello, I have the Navier-Stokes equation coupled with a convection-diffusion equation for the temperature. It is a two-way coupling because the viscosity depends on the temperature. One way to solve this is with some kind of fixed point iteration scheme, where I solve each equation separately in a

[petsc-users] Parallelism of the Mat.convert() function

2024-04-23 Thread Miguel Angel Salazar de Troya
.assemblyBegin() mat_2.assemblyEnd() N = PETSc.Mat().createNest([[mat, mat_2]], comm=COMM_WORLD) N.assemblyBegin() N.assemblyEnd() PETSc.Sys.Print(f"N sizes: {N.getSize()}") N.convert("mpiaij").view() ``` -- * Miguel Angel Salazar de Troya * Head of Software Engineering EPFL Innova

Re: [petsc-users] Error handling in petsc4py

2023-11-27 Thread Miguel Angel Salazar de Troya
Hello, Is there any way to get the PETSc error codes in the python interface? The test I provided below is just a simple example that I know will run out of memory. Miguel On Wed, Nov 15, 2023 at 10:00 AM Miguel Angel Salazar de Troya < miguel.sala...@corintis.com> wrote: > Hello

[petsc-users] Error handling in petsc4py

2023-11-15 Thread Miguel Angel Salazar de Troya
Hello, The following simple petsc4py snippet runs out of memory, but I would like to handle it from python with the usual try-except. Is there any way to do so? How can I get the PETSc error codes in the python interface? Thanks from petsc4py import PETSc import sys, petsc4py petsc4py.init(sys.a

[petsc-users] Structured (DMDA) vs Unstructured (DMPlex) meshes

2023-07-17 Thread Miguel Angel Salazar de Troya
Hello, I am trying to understand if I should make the effort to make my code use structured meshes instead of unstructured ones. My domain is cartesian so that is the first check for structured meshes. However, the problem size I am looking at is ~20 million degrees of freedom. My understanding is

[petsc-users] Segregated solvers in PETSc

2023-02-14 Thread Miguel Angel Salazar de Troya
Hello, I am solving the Navier-Stokes equation and an advection-diffusion equation to model the temperature. They are fully coupled because the viscosity is temperature dependent. I plan to solve the fully-coupled problem with a segregated approach: I first solve the Navier-Stokes equation for a f

Re: [petsc-users] TSAdjoint not working correctly when using TSThetaSetEndpoint(true)

2020-06-03 Thread Miguel Angel Salazar de Troya
Thanks! On Tue, Jun 2, 2020, 20:51 Zhang, Hong via petsc-users < petsc-users@mcs.anl.gov> wrote: > I checked the results again and can confirm that it is a bug on our side. > A merge request has been created to fix it: > https://gitlab.com/petsc/petsc/-/merge_requests/2830 > > Thanks, > Hong (Mr.

[petsc-users] Passing a context to TSPreStep()

2015-05-24 Thread Miguel Angel Salazar de Troya
that I can use to store some results. Is there a similar thing for TSPreStep() How could I implement it? Thanks Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz

Re: [petsc-users] Discrete adjoint and adaptive time stepping

2015-04-29 Thread Miguel Angel Salazar de Troya
various smaller of the > dt requires a tiny dt for all time steps then you are not getting an > advantage of adaptive time-stepping, but ok. > > The idea of actually propagating the gradients through the time-step > controller seems IMHO to be absurd; I won't even put it on our

[petsc-users] Discrete adjoint and adaptive time stepping

2015-04-29 Thread Miguel Angel Salazar de Troya
? If so, how is it done? Thanks in advance Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz...@illinois.edu

Re: [petsc-users] FSAL property in TS

2015-04-13 Thread Miguel Angel Salazar de Troya
Sorry I should have been more specific. I was talking about the explicit Runge-Kutta method. Thanks Miguel On Mon, Apr 13, 2015 at 9:29 AM, Jed Brown wrote: > Miguel Angel Salazar de Troya writes: > > > Hi > > > > I realized that even though there's a bool

[petsc-users] FSAL property in TS

2015-04-13 Thread Miguel Angel Salazar de Troya
Hi I realized that even though there's a boolean named FSAL (First Same As Last) inside the TS object, it seems this property is not implemented yet. I just wanted to double check this is like this and also ask if it will be implemented soon. Thanks Miguel -- *Miguel Angel Salazar de

[petsc-users] Partitioning in DMNetwork

2015-02-26 Thread Miguel Angel Salazar de Troya
could it happen? Would the partitioning be made in some other way to avoid this load unbalance? Thanks Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz...@illinois.edu

Re: [petsc-users] DMNetworkGetEdgeRange() in parallel

2015-02-25 Thread Miguel Angel Salazar de Troya
etsc-users@mcs.anl.gov> >> >> Subject: Re: [petsc-users] DMNetworkGetEdgeRange() in parallel >> >> I modified the DMNetwork example to include the new DM with the >> modified section. It has the same problems. Please find attached the code >> to this email. >&g

Re: [petsc-users] DMNetworkGetEdgeRange() in parallel

2015-02-25 Thread Miguel Angel Salazar de Troya
I modified the DMNetwork example to include the new DM with the modified section. It has the same problems. Please find attached the code to this email. Thanks On Tue, Feb 24, 2015 at 6:49 PM, Matthew Knepley wrote: > On Tue, Feb 24, 2015 at 6:42 PM, Miguel Angel Salazar de Tr

Re: [petsc-users] DMNetworkGetEdgeRange() in parallel

2015-02-24 Thread Miguel Angel Salazar de Troya
--- [0]PETSC ERROR: Object is in wrong state [0]PETSC ERROR: DM must have a default PetscSection in order to create a global PetscSection Thanks in advance Miguel On Mon, Feb 23, 2015 at 3:24 PM, Matthew Knepley wrote: > On Mon, Feb 23, 2015 at 2:15 PM, Miguel Angel Salazar de Troya

Re: [petsc-users] DMNetworkGetEdgeRange() in parallel

2015-02-23 Thread Miguel Angel Salazar de Troya
Thanks a lot, the partition should be done before setting up the section, right? Miguel On Mon, Feb 23, 2015 at 2:05 PM, Matthew Knepley wrote: > On Mon, Feb 23, 2015 at 1:40 PM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > >> Wouldn't inclu

Re: [petsc-users] DMNetworkGetEdgeRange() in parallel

2015-02-23 Thread Miguel Angel Salazar de Troya
23, 2015 at 8:42 AM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > >> Thanks, that will help me. Now what I would like to have is the >> following: if I have two processors and ten edges, the partitioning results >> in the first processor having

Re: [petsc-users] DMNetworkGetEdgeRange() in parallel

2015-02-23 Thread Miguel Angel Salazar de Troya
used for > anything. > > Shri > From: Matthew Knepley > Date: Mon, 23 Feb 2015 07:54:34 -0600 > To: Miguel Angel Salazar de Troya > Cc: "petsc-users@mcs.anl.gov" > Subject: Re: [petsc-users] DMNetworkGetEdgeRange() in parallel > > On Sun, Feb 22, 2015

Re: [petsc-users] DMNetworkGetEdgeRange() in parallel

2015-02-22 Thread Miguel Angel Salazar de Troya
Knepley wrote: > On Sun, Feb 22, 2015 at 11:01 AM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > >> Hi >> >> I noticed that the routine DMNetworkGetEdgeRange() returns the local >> indices for the edge range. Is there any way to

[petsc-users] DMNetworkGetEdgeRange() in parallel

2015-02-22 Thread Miguel Angel Salazar de Troya
-- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz...@illinois.edu

[petsc-users] DMNetworkSetSizes called by all processors

2015-02-20 Thread Miguel Angel Salazar de Troya
in parallel? Thanks Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz...@illinois.edu

Re: [petsc-users] Changing TSAdapt

2014-12-12 Thread Miguel Angel Salazar de Troya
de. When we > changed the adapt type we did not zero out the function pointers for the > old basic adaptor hence they were improperly called when the object was > finally destroyed at the end. > > > > Lisandro fixed this here. > > > > > https://bitbucket.o

[petsc-users] Changing TSAdapt

2014-12-11 Thread Miguel Angel Salazar de Troya
the TSAdaptDestroy_Basic, but I think it was already destroyed when I changed the TSAdaptType to none, is this true? How can I effectively change the TSAdaptType without having this error? Thanks Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical

Re: [petsc-users] PetscFunctionBegin, -malloc_dump and C++ classes with PETSc objects

2014-11-19 Thread Miguel Angel Salazar de Troya
4, at 11:54 AM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > > > > PetscFinalize() is inside of the class destructor (the last line of the > destructor), so when the object goes out of scope, the class destructor is > called and PetscFinalize() as

Re: [petsc-users] PetscFunctionBegin, -malloc_dump and C++ classes with PETSc objects

2014-11-18 Thread Miguel Angel Salazar de Troya
On Tue, Nov 18, 2014 at 11:32 AM, Barry Smith wrote: > > > On Nov 18, 2014, at 11:19 AM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > > > > Hi > > > > I'm implementing a problem using the TS. Most of my functions are > metho

[petsc-users] PetscFunctionBegin, -malloc_dump and C++ classes with PETSc objects

2014-11-18 Thread Miguel Angel Salazar de Troya
TS routines that need them (e.g. TSSetRHSFunction() ) I can compile the code and run it, but many memory allocations are not freed. What can be the issue here? Do you know of an example using C++ classes to implement PETSc methods? Thanks in advance. Miguel -- *Miguel Angel Salazar de Troya* Gradua

Re: [petsc-users] Adaptive controllers in TS

2014-10-28 Thread Miguel Angel Salazar de Troya
Sorry to be pushy, but could anyone help me on this? Thanks Miguel On Thu, Oct 23, 2014 at 10:46 AM, Miguel Angel Salazar de Troya < salazardetr...@gmail.com> wrote: > I decided to implement the continuous adjoint because it is clearer to me > how to do it and the gradient will conv

Re: [petsc-users] Adaptive controllers in TS

2014-10-23 Thread Miguel Angel Salazar de Troya
f the next time step after previous_timestep (therefore interpolate_timestep is between these guys) and it's not close either. I've read that TSInterpolate() has to be extended to support continuous adjoints. Thanks Miguel On Tue, Oct 21, 2014 at 6:04 PM, Miguel Angel Salazar de Troy

Re: [petsc-users] Cloning a DMNetwork

2014-10-22 Thread Miguel Angel Salazar de Troya
Re: [petsc-users] Cloning a DMNetwork > > >There is no clone method implemented for DMNetwork yet. I'll work on it > >tomorrow. > > > >Thanks, > >Shri > > > >From: Miguel Angel Salazar de Troya > >Date: Tue, 21 Oct 2014 18:10:42 -05

[petsc-users] Cloning a DMNetwork

2014-10-21 Thread Miguel Angel Salazar de Troya
Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz...@illinois.edu

Re: [petsc-users] Adaptive controllers in TS

2014-10-21 Thread Miguel Angel Salazar de Troya
> is > > that they mention these terms must be removed. I don't understand this. > I'm > > planning to hard-code the discrete adjoint problem (and use the TS if > > possible). > > Are they suggesting that the time step sizes for a given run should be >

Re: [petsc-users] Adaptive controllers in TS

2014-10-19 Thread Miguel Angel Salazar de Troya
adjoint problem (and use the TS if possible). I know this might not be the place to ask this. Maybe Hong can help me here. Miguel On Sun, Oct 19, 2014 at 1:41 PM, Jed Brown wrote: > Miguel Angel Salazar de Troya writes: > > > Hi all > > > > I'm trying to find out wh

[petsc-users] Adaptive controllers in TS

2014-10-19 Thread Miguel Angel Salazar de Troya
e solution, something that is necessary in an adjoint analysis, hence my question about the example. Thanks Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz...@illinois.edu

[petsc-users] When is the TSMonitor called?

2014-10-08 Thread Miguel Angel Salazar de Troya
Hi all I want to save a certain quantity at the very beginning of each time step, before any TSFunction of any kind is called. Can I do this within the TSMonitor? It would also be ok to save that quantity at the very end of the time step. Thanks Miguel -- *Miguel Angel Salazar de Troya

Re: [petsc-users] Error when trying to write solution to a file

2014-10-07 Thread Miguel Angel Salazar de Troya
It was that, I totally forgot it. Thanks a lot! On Tue, Oct 7, 2014 at 11:50 AM, Jed Brown wrote: > Miguel Angel Salazar de Troya writes: > > > Hi all > > > > I'm solving a discretized PDE with TS. Inside my MonitorFunction(), > hooked > > up with TSMonito

[petsc-users] Error when trying to write solution to a file

2014-10-07 Thread Miguel Angel Salazar de Troya
n't be created in that folder. Any suggestion? Thanks. Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz...@illinois.edu

Re: [petsc-users] DMPlex with spring elements

2014-09-30 Thread Miguel Angel Salazar de Troya
ankar, Shrirang G. < abhy...@mcs.anl.gov> wrote: > > From: Miguel Angel Salazar de Troya > Date: Mon, 29 Sep 2014 16:55:14 -0500 > To: Shri > Cc: "petsc-users@mcs.anl.gov" > Subject: Re: [petsc-users] DMPlex with spring elements > > > >Hi all >

Re: [petsc-users] DMPlex with spring elements

2014-09-29 Thread Miguel Angel Salazar de Troya
oblem is that the edge has information to provide to these nodes. Thanks Miguel On Fri, Sep 26, 2014 at 12:33 PM, Miguel Angel Salazar de Troya < salazardetr...@gmail.com> wrote: > I understand. Thanks a lot. > > Miguel > > On Fri, Sep 26, 2014 at 10:53 AM, Abhyankar, Shrirang

[petsc-users] Best way to save entire solution history of a TS

2014-09-27 Thread Miguel Angel Salazar de Troya
Vec that I get from TSGetSolution there. Would this be a problem if I'm running the simulation in parallel? Is there a better way to save the entire solution history in memory? Thanks Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Sci

Re: [petsc-users] DMPlex with spring elements

2014-09-26 Thread Miguel Angel Salazar de Troya
does the > LocalToGlobal gather to form the global residual. > > I chose to use SNESSetFunction in the example. You can use either of them. > > Shri > > From: Matthew Knepley > Date: Fri, 26 Sep 2014 10:28:26 -0500 > To: Miguel Angel Salazar de Troya > Cc: Jed Brown

Re: [petsc-users] DMPlex with spring elements

2014-09-26 Thread Miguel Angel Salazar de Troya
Ok thanks. Miguel On Fri, Sep 26, 2014 at 10:28 AM, Matthew Knepley wrote: > On Fri, Sep 26, 2014 at 10:26 AM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > >> Yeah, but doesn't it only work with the local vectors localX and localF? >&g

Re: [petsc-users] DMPlex with spring elements

2014-09-26 Thread Miguel Angel Salazar de Troya
Yeah, but doesn't it only work with the local vectors localX and localF? Miguel On Fri, Sep 26, 2014 at 10:10 AM, Matthew Knepley wrote: > On Fri, Sep 26, 2014 at 10:06 AM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > >> That means that if we

Re: [petsc-users] DMPlex with spring elements

2014-09-26 Thread Miguel Angel Salazar de Troya
local vectors. I don't understand this. Thanks Miguel On Fri, Sep 26, 2014 at 9:34 AM, Matthew Knepley wrote: > On Fri, Sep 26, 2014 at 9:31 AM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > >> Thanks. I had another question about the DM and SN

Re: [petsc-users] DMPlex with spring elements

2014-09-26 Thread Miguel Angel Salazar de Troya
25, 2014 at 5:15 PM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > >> > If you need a symmetric Jacobian, you can use the BC facility in >> > PetscSection, which eliminates the >> > variables completely. This is how the FEM

Re: [petsc-users] DMPlex with spring elements

2014-09-25 Thread Miguel Angel Salazar de Troya
e > > variables completely. This is how the FEM examples, like ex12, work. > > You can also use MatZeroRowsColumns() or do the equivalent > transformation during assembly (my preference). > -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz...@illinois.edu

Re: [petsc-users] DMPlex with spring elements

2014-09-25 Thread Miguel Angel Salazar de Troya
Why not? Wouldn't we have a row of zeros except for the diagonal term? The column that corresponds to that degree of from doesn't have to be zero, right? Thanks Miguel On Sep 25, 2014 12:38 PM, "Abhyankar, Shrirang G." wrote: > > > From: Miguel Angel Salazar de Tr

Re: [petsc-users] DMPlex with spring elements

2014-09-25 Thread Miguel Angel Salazar de Troya
gt;ide == ISOLATED_BUS) { >farr[offset] = 0.0; >farr[offset+1] = 0.0; > break; > } > > This sets the residual at the nodes marked with REF_BUS or ISOLATED_BUS > to 0.0. You can do something similar. > > Shri > > > > From: Miguel Angel Sala

Re: [petsc-users] DMPlex with spring elements

2014-09-25 Thread Miguel Angel Salazar de Troya
t; > > >If you have equations only at the nodes, with a part of it contributed by > >the edges (springs), then you can use DMNetwork. If you are planning to > >have equations for the beads in the future, or other higher layers, then > >DMPlex has better functionality > >

Re: [petsc-users] DMPlex with spring elements

2014-09-25 Thread Miguel Angel Salazar de Troya
the edges (springs), then you can use DMNetwork. If you are planning to > have equations for the beads in the future, or other higher layers, then > DMPlex has better functionality to manage that. > > Shri > > From: Miguel Angel Salazar de Troya > Date: Wed, 24 Sep 2014

Re: [petsc-users] DMPlex with spring elements

2014-09-24 Thread Miguel Angel Salazar de Troya
anual and an example is in > src/snes/examples/tutorials/network/pflow. > > Shri > > From: Matthew Knepley > Date: Tue, 23 Sep 2014 22:40:52 -0400 > To: Miguel Angel Salazar de Troya > Cc: "petsc-users@mcs.anl.gov" > Subject: Re: [petsc-users] DMPlex with spr

[petsc-users] DMPlex with spring elements

2014-09-23 Thread Miguel Angel Salazar de Troya
E and my equations are algebraic. What is the best way in petsc to solve this problem? Is there any example that I can follow? Thanks in advance Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at U

[petsc-users] Initial estimation on SNES and KSP

2014-09-04 Thread Miguel Angel Salazar de Troya
the vector X we passed to the SNES? Thanks in advance. Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz...@illinois.edu

Re: [petsc-users] Adaptive mesh refinement in Petsc

2014-05-02 Thread Miguel Angel Salazar de Troya
manages almost all >> of what you need for finite element analysis. >> >>Barry >> >> On May 1, 2014, at 7:19 PM, Matthew Knepley wrote: >> >> > On Thu, May 1, 2014 at 6:14 PM, Miguel Angel Salazar de Troya < >> salazardetr...@gmail.com> w

[petsc-users] Adaptive mesh refinement in Petsc

2014-05-01 Thread Miguel Angel Salazar de Troya
petsc capabilities, but I would not mind start with some restrictions. I hope my question is not too broad. Take care Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360

Re: [petsc-users] Elasticity tensor in ex52

2014-04-21 Thread Miguel Angel Salazar de Troya
Thank you. On Mon, Apr 21, 2014 at 10:24 AM, Matthew Knepley wrote: > On Mon, Apr 21, 2014 at 10:23 AM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > >> Thank you. Now it makes sense. Just to confirm though, back to the weak >> form I wr

Re: [petsc-users] Elasticity tensor in ex52

2014-04-21 Thread Miguel Angel Salazar de Troya
you talk about the components and the derivatives of the components. On Mon, Apr 21, 2014 at 9:48 AM, Matthew Knepley wrote: > On Sun, Apr 20, 2014 at 4:17 PM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > >> I understand. So if we had a linear elast

Re: [petsc-users] Elasticity tensor in ex52

2014-04-20 Thread Miguel Angel Salazar de Troya
t itself (or the derivative of a gradient with respect to itself). This is assuming the indices of g3 correspond to what I said. Thanks in advance. Miguel On Apr 19, 2014 6:19 PM, "Matthew Knepley" wrote: > On Sat, Apr 19, 2014 at 5:25 PM, Miguel Angel Salazar de Troya < > sa

Re: [petsc-users] Elasticity tensor in ex52

2014-04-19 Thread Miguel Angel Salazar de Troya
fields? I think this is what is confusing me. On Sat, Apr 19, 2014 at 11:35 AM, Matthew Knepley wrote: > On Fri, Apr 18, 2014 at 1:23 PM, Miguel Angel Salazar de Troya < > salazardetr...@gmail.com> wrote: > >> Hello everybody. >> >> First, I am taking this example

[petsc-users] Elasticity tensor in ex52

2014-04-18 Thread Miguel Angel Salazar de Troya
you vectorize the fourth order tensor? Thanks in advance Miguel -- *Miguel Angel Salazar de Troya* Graduate Research Assistant Department of Mechanical Science and Engineering University of Illinois at Urbana-Champaign (217) 550-2360 salaz...@illinois.edu