SPHewitt / OpenFPCI

Open source FOAM to ParaFEM Coupling Interface
15 stars 7 forks source link

Accumulated Displacement Problems #2

Open Aunura opened 4 years ago

Aunura commented 4 years ago

Hello, Hewitt.

Recently, I was doing some works about Wave-Structure interaction. I integrated the codes of waves2Foam with foam-extend FSI toolkits. Indeed, the OpenFPCI was also combined into the framework. The result was quite good in this case. The OpenFPCI could spend only one-third of the time running this case compare with the original solid solver in foam-extend. Therefore, I am glad to apply this plugin in my further study.

Unfortunately, something goes wrong when I alter the parameters of my case. The Maximal accumulated displacement is extraordinarily large for the first time step of the calculation. Thus, my case crashed with a floating-point error at the first time step. When I turn to the original solver unsTotalLagrangianSolid, this simulation could proceed successfully. However, the simulation is still very slow as before.

I guess the reason why I encounter this problem is the mesh of solid. You know, the unsTotalLagrangianSolid is based on FVM. But paraFem is a FEM-based solver. Thus, I guess some additional work must be done for my calculation. Could you please give me some clues or some advice?

Here is my log File

log.fsiOpenMPCI.txt

Here is my case:

Cube.zip

Thank you for your help.

Best regards, Matte

SPHewitt commented 4 years ago

Hi Aunura,

I am glad to hear it being use. The FEM solver in OpenFPCI uses the classic Newmark method, to step in time. The original solver unsTotalLagrangianSolid uses a backward differencing scheme. The newmark scheme is not as diffusive as the backward differencing method and gives an osciliatory profile of acceleration and velocity. This make it more unstable than the backward differencing method, particularly in FSI problems where the boundary velocity is used to update the local fluid velocity.

There are a couple of solutions:

  1. Update the Newmark parameters to make the scheme more diffusive. I have found beta=0.4 and delta=0.6 to be a bit more stable.

  2. If you look at the development branch, parafemnl.f90 has been updated with the generalised alpha method that has a few more controls and the damping can be controlled more precisely.

  3. Within the development branch I have also implemented the backward differencing method within the runbd subroutine in parafembd.f90. This should give almost identical profiles of both displacement, velocity and acceleration with the unsTotalLagrangianSolid solver. The scheme that is implemented in this Fortran file is from the paper:

Liu TY, Li Q Bin, Zhao C Bin. An efficient time-integration method for nonlinear dynamic analysis of solids and structures. Sci China Physics, Mech Astron. 2013;56(4):798–804.

Please let me know if these have been helpful or you need any help using these.

Best wishes

Sam Hewitt


From: Aunura [notifications@github.com] Sent: 19 December 2019 12:38 To: SPHewitt/OpenFPCI Cc: Subscribed Subject: [SPHewitt/OpenFPCI] Accumulated Displacement Problems (#2)

Hello, Hewitt.

Recently, I was doing some works about Wave-Structure interaction. I integrated the codes of waves2Foam with foam-extend FSI toolkits. Indeed, the OpenFPCI was also combined into the framework. The result was quite good in this case. The OpenFPCI could spend only one-third of the time running this case compare with the original solid solver in foam-extend. Therefore, I am glad to apply this plugin in my further study.

Unfortunately, something goes wrong when I alter the parameters of my case. The Maximal accumulated displacement is extraordinarily large for the first time step of the calculation. Thus, my case crashed with a floating-point error at the first time step. When I turn to the original solver unsTotalLagrangianSolid, this simulation could proceed successfully. However, the simulation is still very slow as before.

I guess the reason why I encounter this problem is the mesh of solid. You know, the unsTotalLagrangianSolid is based on FVM. But paraFem is a FEM-based solver. Thus, I guess some additional work must be done for my calculation. Could you please give me some clues or some advice?

Here is my log File

log.fsiOpenMPCI.txthttps://github.com/SPHewitt/OpenFPCI/files/3983587/log.fsiOpenMPCI.txt

Here is my case:

Cube.ziphttps://github.com/SPHewitt/OpenFPCI/files/3983590/Cube.zip

Thank you for your help.

Best regards, Matte

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/SPHewitt/OpenFPCI/issues/2?email_source=notifications&email_token=AGJWNVDP3UTRVQNTQRT6B4TQZNTL3A5CNFSM4J5FEK7KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IBUE6AA, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGJWNVCORHFS3XYYIKGHVB3QZNTL3ANCNFSM4J5FEK7A.

Aunura commented 4 years ago

Hi Aunura, I am glad to hear it being use. The FEM solver in OpenFPCI uses the classic Newmark method, to step in time. The original solver unsTotalLagrangianSolid uses a backward differencing scheme. The newmark scheme is not as diffusive as the backward differencing method and gives an osciliatory profile of acceleration and velocity. This make it more unstable than the backward differencing method, particularly in FSI problems where the boundary velocity is used to update the local fluid velocity. There are a couple of solutions: 1. Update the Newmark parameters to make the scheme more diffusive. I have found beta=0.4 and delta=0.6 to be a bit more stable. 2. If you look at the development branch, parafemnl.f90 has been updated with the generalised alpha method that has a few more controls and the damping can be controlled more precisely. 3. Within the development branch I have also implemented the backward differencing method within the runbd subroutine in parafembd.f90. This should give almost identical profiles of both displacement, velocity and acceleration with the unsTotalLagrangianSolid solver. The scheme that is implemented in this Fortran file is from the paper: Liu TY, Li Q Bin, Zhao C Bin. An efficient time-integration method for nonlinear dynamic analysis of solids and structures. Sci China Physics, Mech Astron. 2013;56(4):798–804. Please let me know if these have been helpful or you need any help using these. Best wishes Sam Hewitt ____ From: Aunura [notifications@github.com] Sent: 19 December 2019 12:38 To: SPHewitt/OpenFPCI Cc: Subscribed Subject: [SPHewitt/OpenFPCI] Accumulated Displacement Problems (#2) Hello, Hewitt. Recently, I was doing some works about Wave-Structure interaction. I integrated the codes of waves2Foam with foam-extend FSI toolkits. Indeed, the OpenFPCI was also combined into the framework. The result was quite good in this case. The OpenFPCI could spend only one-third of the time running this case compare with the original solid solver in foam-extend. Therefore, I am glad to apply this plugin in my further study. Unfortunately, something goes wrong when I alter the parameters of my case. The Maximal accumulated displacement is extraordinarily large for the first time step of the calculation. Thus, my case crashed with a floating-point error at the first time step. When I turn to the original solver unsTotalLagrangianSolid, this simulation could proceed successfully. However, the simulation is still very slow as before. I guess the reason why I encounter this problem is the mesh of solid. You know, the unsTotalLagrangianSolid is based on FVM. But paraFem is a FEM-based solver. Thus, I guess some additional work must be done for my calculation. Could you please give me some clues or some advice? Here is my log File log.fsiOpenMPCI.txthttps://github.com/SPHewitt/OpenFPCI/files/3983587/log.fsiOpenMPCI.txt Here is my case: Cube.ziphttps://github.com/SPHewitt/OpenFPCI/files/3983590/Cube.zip Thank you for your help. Best regards, Matte — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub<#2?email_source=notifications&email_token=AGJWNVDP3UTRVQNTQRT6B4TQZNTL3A5CNFSM4J5FEK7KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IBUE6AA>, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGJWNVCORHFS3XYYIKGHVB3QZNTL3ANCNFSM4J5FEK7A.

Thank you Hewitt. I have tried to alter the parameters of Newmark-beta Method. However, it still doesn't work. I will try the solution 2 and 3. It will take me some time to finish this work, because a comprehensive review of the codes of Parafem is necessary for me.

Thank you very much indeed, and Happy New year.

Best regards, Matte