________________________________
> From: fried...@gmail.com 
> Date: Mon, 22 Aug 2016 16:56:31 +0000 
> Subject: Re: [Libmesh-users] DenseSubMatrix and DenseSubVector lack of 
> ctor and operators 
> To: marchy...@hotmail.com; jwpeter...@gmail.com 
> CC: libmesh-users@lists.sourceforge.net 
> 
> Mike: you seem overly concerned with optimization even though you are 
> just getting started. Optimization is something better handled after 
> you have your application working. Try to write good solid code that 
> makes sense first. 

I tried that and the compiler did not like it because of the way you designed 
the classes...
I was curious why you did that so the code would be more solid and optimization 
is one possibility
although no one did mention the rationale behind making the size() of
a fixed size vector into a norm - it sounds like you are still deprecating 
things as you go. 
It would be easier to get it working if I could move code around freely
with normal operations being permitted. That biock of initialization may not
seem like a big deal but I'm trying to move stuff that does not seem critical
out of the way and at each step rebuild and test a few results such as
extreme values of the solution and overall shape in "R" plots. 

Thanks.

> 
> Right now you are just guessing at what's going to be slow... the only 
> way to know is to build your application and then use a profiler to see 
> where the time is going and try to target those areas with 
> optimization. 
> 
> For instance: if you are doing an implicit calculation then your linear 
> solver and preconditioner are likely going to take up 80% (or more) of 
> your solve time... so optimizing your FE assembly won't matter much. 
> 
> Now: that's not a reason to be sloppy... But libMesh has endured for 
> ~15 years at this point and it's anything but sloppy. 
> 
> Just some advice... 
> 
> Derek 
> On Mon, Aug 22, 2016 at 10:51 AM Mike Marchywka 
> <marchy...@hotmail.com<mailto:marchy...@hotmail.com>> wrote: 
> 
> 
> 
> 
> 
> ________________________________ 
>> From: jwpeter...@gmail.com<mailto:jwpeter...@gmail.com> 
>> Date: Mon, 22 Aug 2016 08:28:18 -0600 
>> Subject: Re: [Libmesh-users] DenseSubMatrix and DenseSubVector lack of 
>> ctor and operators 
>> To: marchy...@hotmail.com<mailto:marchy...@hotmail.com> 
>> CC: 
> libmesh-users@lists.sourceforge.net<mailto:libmesh-users@lists.sourceforge.net>
>  
>> 
>> 
>> 
>> On Mon, Aug 22, 2016 at 7:53 AM, Mike Marchywka 
>> 
> <marchy...@hotmail.com<mailto:marchy...@hotmail.com><mailto:marchy...@hotmail.com<mailto:marchy...@hotmail.com>>>
>  
> wrote: 
>> I was trying to move some code around related to the vars typically 
>> called Ke and Fe 
>> but encountered several errors due to missing ctor or operators such as 
>> assignment. 
>> Can someone comment on the benefit of or need for these restrictions? 
>> 
>> I think you are probably referring to a default constructor for 
>> DenseSubMatrix, i.e. one that does not need a reference to a parent 
>> matrix in order to be created? I don't think this is a good 
>> idea/necessary, as it would introduce extra bookkeeping and potentially 
>> make DenseSubMatrix too easy to use incorrectly... 
>> 
>> 
>> I was trying to clean up 
>> my own code a bit and debating about how to handle things which seem 
> to often 
>> be compile time constants. One possibility is to create a code 
> generator that 
>> creates specific c++ code for a given set of conditions. This is ok if 
>> there are some 
>> compiler optimizations that just not easy with other approaches. Thanks. 
>> 
>> 
>> 
>> DMN Ke; DVN Fe; 
>> //DSM Ke_var; DSV Fe_var; 
>> DSM Ke_var; // [mla.nvar][mla.nvar]; 
>> DSV Fe_var; // [mla.nvar] ; 
>> // InitMats(Ke,Fe,Ke_var,Fe_var,mla.nvar); 
>> 
>> What specifically is a compile-time constant limitation here from libmesh? 
>> 
>> 
>> 
>> //const IdxTy dofsz=dof_indices.size(); 
>> //const IdxTy dofsz=mla.di.dof_indices_var[0].size(); 
>> //Ke.resize (dofsz,dofsz); Fe.resize (dofsz); 
>> /* 
>> DSM Ke_var[mla.nvar][mla.nvar] = 
>> { 
>> { DSM(Ke), DSM(Ke), DSM(Ke), DSM(Ke)}, 
>> { DSM(Ke), DSM(Ke), DSM(Ke), DSM(Ke)}, 
>> { DSM(Ke), DSM(Ke), DSM(Ke), DSM(Ke)}, 
>> { DSM(Ke), DSM(Ke), DSM(Ke), DSM(Ke)} 
>> }; 
>> 
>> DSV Fe_var[mla.nvar] = {DSV(Fe), DSV(Fe), DSV(Fe), DSV(Fe) }; 
>> 
>> Are you just wanting to know how to create dynamically-size 2D arrays 
>> at runtime? 
> 
> Yes, I guess that would do it but then the question is why 
> the examples differ from that method. Certainly compile time 
> does give the compiler more opportunities to optimize. 
> 
> There is any object that can do this internally, 
> 
> Ty * Ke_var_data = new Ty[n*m] ? 
> 
> and I would have guessed that for best performance you have some way of 
> organizing memory. 
> 
>>From what I have now, I only need to be able to interface to these 
> things from the 
> function that assembles the FEM RHS and LHS, 
> 
> dof_map.constrain_element_matrix_and_vector (Ke, Fe, dof_indices); 
> system.matrix->add_matrix (Ke, dof_indices); 
> system.rhs->add_vector (Fe, dof_indices); 
> 
> I could probably check the documentation but are any of there templated 
> or accept iterators 
> or do they require these libmesh DenseSub types? 
> 
> Thanks. 
> 
> 
>> 
>> -- 
>> John 
> 
> ------------------------------------------------------------------------------
>  
> _______________________________________________ 
> Libmesh-users mailing list 
> Libmesh-users@lists.sourceforge.net<mailto:Libmesh-users@lists.sourceforge.net>
>  
> https://lists.sourceforge.net/lists/listinfo/libmesh-users 
                                          
------------------------------------------------------------------------------
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to