Low viscosity ratios in Oldroyd-B model, log-conform approach

253 views
Skip to first unread message

Anjishnu Choudhury

unread,
Aug 16, 2022, 6:59:25 PM8/16/22
to basilisk-fr
Hello all,

I am writing to know if anyone has implemented the Elastic Viscous Stress Splitting (EVSS) technique in the log-conform approach [Viezel, Caroline, et al., Journal of Non-Newtonian Fluid Mechanics 285 (2020).]. This apparently helps one to obtain stable numerical solutions of viscoelastic free surface flows by alleviating the singularity in the interfacial stress conditions as \beta --> 0. 

I have tried using simple transformations of viscosities in the existing definitions. However, there is an upper-convective derivative of deformation tensor term which needs to be implemented in the formulations. Any tips on how to proceed ?

P.S: I am new to Basilisk and still not very confident in changing source files.

-Anjishnu
Message has been deleted

Anjishnu Choudhury

unread,
Aug 17, 2022, 12:49:46 PM8/17/22
to basilisk-fr
The above problem boils down to changing f_s(A) in log-conform approach, from f_s(A) = [A - I] to f_s(A) = [A - I - 2*lambda*D] where D is the deformation tensor. I have tried changing the part of the code (log-conform.h) to:

double fa = (mup[] != 0 ? lambda[]/(mup[]*eta) : 0.);

      pseudo_t D;
      D.x.y = lambda[]*(u.y[1,0] - u.y[-1,0] +
         u.x[0,1] - u.x[0,-1])/(2.*Delta);
      foreach_dimension()
        D.x.x = lambda[]*(u.x[1,0] - u.x[-1,0])/(Delta);

      pseudo_t A;
      A.x.y = (fa*tau_p.x.y[] + D.x.y)/nu;
      foreach_dimension()
      A.x.x = (fa*tau_p.x.x[] + 1. + D.x.x)/nu;
   
      /** Old code
      pseudo_t A;
      A.x.y = fa*tau_p.x.y[]/nu;
      foreach_dimension()
      A.x.x = (fa*tau_p.x.x[] + 1.)/nu;
       */


However, this gives floating point errors while compiling. 

Is there something trivial I'm missing ? 

Thanks a lot in advance !

Stefan Bošković

unread,
Aug 18, 2022, 6:55:46 AM8/18/22
to Anjishnu Choudhury, basilisk-fr
Hello Anjishnu,

I'm not sure whether this is important, but in the first row you used:
"mup[] != 0 ?"
and latter you used:
": 0.);"
So maybe you can change the first zero from I guess int to double:
"mup[] != 0. ?"

Best regards,
Stefan Bošković
>> [Viezel, Caroline, et al., _Journal of Non-Newtonian Fluid Mechanics
>> _285 (2020).]. This apparently helps one to obtain stable numerical
>> solutions of viscoelastic free surface flows by alleviating the
>> singularity in the interfacial stress conditions as \beta --> 0.
>>
>> I have tried using simple transformations of viscosities in the
>> existing definitions. However, there is an upper-convective
>> derivative of deformation tensor term which needs to be implemented
>> in the formulations. Any tips on how to proceed ?
>>
>> P.S: I am new to Basilisk and still not very confident in changing
>> source files.
>>
>> -Anjishnu
>
> --
> You received this message because you are subscribed to the Google
> Groups "basilisk-fr" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to basilisk-fr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/basilisk-fr/8f073600-f7e1-485f-94c4-f80f5a341d5dn%40googlegroups.com
> [1].
>
>
> Links:
> ------
> [1]
> https://groups.google.com/d/msgid/basilisk-fr/8f073600-f7e1-485f-94c4-f80f5a341d5dn%40googlegroups.com?utm_medium=email&utm_source=footer

Anjishnu Choudhury

unread,
Aug 20, 2022, 6:15:41 AM8/20/22
to basilisk-fr
Follow up:

With f_s(A)= A - I - 2*lam*D, the modified log-conform.h file seems to work for slowly starting BCs like u.t[bottom] = Dirichlet (U*sin(t)) or a Navier slip condition. However,  for suddenly started plate, u.t[bottom] = Dirichlet(U), it gives a floating point error.

My initial conditions are u.x[]=0. and u.y[]=0. Any ideas on how to fix it?

Thanks in advance!!

Shyam Sunder Yadav

unread,
Aug 20, 2022, 12:04:46 PM8/20/22
to basilisk-fr
Dear Anjishnu

To calculate Psi = log(A), we need to diagonalize A, for which A must be positive definite...

With f_s(A)= A - I - 2*lam*D,     the conformation tensor  A may be loosing its positive definiteness property...

Hence the divergence...

In Basilisk approach, the extra stress is decomposed as Tau = Tau_p + 2*mu_s*D where Tau_p is calculated by log-conform.h and the 2*mu_s*D part is handled by viscosity.h

In  EVSS, the extra stress is decomposed as follows:   Tau = (Tau_p - 2*mu_p*D)  + 2*mu_total*D, so viscosity one has to provide to the centered.h solver is the total viscosity, i.e, polymer plus the solvent viscosity.

So viscosity.h will have to handle a higher viscosity which may be problematic in spite of the fact that it is an implicit formulation...

Also, as I mentioned above, the (Tau_p - 2*mu_p*D) part may cause A to loose its positive definiteness, hence the divergence...


I may be wrong here, others please correct me!

What approach is used for solving the polymer stresses in the paper you mentioned?

Thanks, Regards

Anjishnu Choudhury

unread,
Aug 21, 2022, 5:02:33 AM8/21/22
to basilisk-fr
Dear Shyam,

Thanks a lot for your reply and opinion on this matter.

I have had this doubt of A losing its positive-definiteness property before. However, I thought if [\tau_p+I] and 2*lam*D are both positive definite, then the sum might be positive definite too. Also, the code works when I prescribe a slowly starting BC: u.t[bottom]=sin(omega*t) with a free surface at the top and periodic BCs for left-right. How is the positive-definiteness retained for such a condition then?

Regarding viscosity, the \mu_s can be interpreted as the total viscosity following the EVSS scheme. \tau_p is also interpreted as the 'purely elastic' tensor S. I tried using very low viscosities as the total viscosity as well, but it doesn't make a difference.

The polymer stresses in Viezel20 are calculated from simple finite difference upwind schemes and the log-conform approach is not used (so their simulations are limited to low Wi number). 

Perhaps, I should focus more on the positive definiteness of A, as you suggested. It might only be satisfied for slowly starting BCs and not for other situations.

Best regards,

-Anjishnu

Shyam Sunder Yadav

unread,
Aug 21, 2022, 11:38:29 PM8/21/22
to basilisk-fr
Dear Anjishnu

To calculate Tau_p - 2*mu_p*D, can you subtract the 2*mu_p*D part from the polymer stresses calculated using log-conform.h just before the acceleration event?

I doubt that will work but you can try...


You received this message because you are subscribed to a topic in the Google Groups "basilisk-fr" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/basilisk-fr/Gpwyxco313Y/unsubscribe.
To unsubscribe from this group and all its topics, send an email to basilisk-fr...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/basilisk-fr/b6e69161-823c-406f-a4e6-1f2119bcd0dcn%40googlegroups.com.


--
Dr. Shyam Sunder Yadav
Assistant Professor
Mechanical Engineering
BITS Pilani
09902346342
http://www.bits-pilani.ac.in/pilani/ssyadav/Profile

The information contained in this electronic communication is intended solely for the individual(s) or entity to which it is addressed. It may contain proprietary, confidential and/or legally privileged information. Any review, retransmission, dissemination, printing, copying or other use of, or taking any action in reliance on the contents of this information by person(s) or entities other than the intended recipient is strictly prohibited and may be unlawful. If you have received this communication in error, please notify us by responding to this email or telephone and immediately and permanently delete all copies of this message and any attachments from your system(s). The contents of this message do not necessarily represent the views or policies of BITS Pilani.

Giancarlo Esposito

unread,
Sep 25, 2023, 9:03:45 AM9/25/23
to basilisk-fr
Hello everyone, did someone manage to implement the EVSS (or the Both sides diffusion, analogously) technique?
Reply all
Reply to author
Forward
0 new messages