density summation
åŗē±»
樔ęæDensitySummation<Base, DataDelegationType>ļ¼ęęDensitySummationēåŗē±»ćęÆLocalDynamicsåDataDelegationTypeēå
¬ęē»§ęæćå®äøå®ē°å
·ä½interaction/updateļ¼åŖč“č“£ļ¼éčæDataDelegateęæå°ē²å/é»åé
ē½®ēę°ę®å
„å£ē»å®/注åéč¦ēē²ååéęéäøåøøéć
InneråęÆļ¼åäøęµä½ä½å
ēēøäŗä½ēØļ¼
ęē §äøå¼ę“ę°åÆåŗ¦ļ¼
å
¶äøäøŗåå§ę¶å»ļ¼äø„ę ¼ę„诓ęÆē²¾ē”®ęē
§Latticeęåøļ¼ēę øå½ę°å¼ć
å®ä¾DensitySummation<Inner<Base>>ļ¼ęęInnerēę¬ēåŗē±»ćåŖęÆęå§ęē±»ååŗå®äøŗDataDelegateInnerć
å®ä¾
DensitySummation<Inner<>>ļ¼å«åDensitySummationInnerćå®ē°äŗinteraction()+update()ćęÆęåøøēØē inneråÆåŗ¦ę±åćå®ä¾
DensitySummation<Inner<Adaptive>>ćå®ē°äŗinteraction()+update()ļ¼åø¦åå ę»éæåŗ¦/čŖéåŗäæ®ę£ļ¼ć
ContactåęÆļ¼äøę„触ä½/å¤ä½ę„触ēøäŗä½ēØļ¼
åØInneråęÆåŗē”äøę·»å äŗäøé”¹ļ¼ēØäøę f蔨示ęµä½ļ¼
čæéäøę 蔨示ęäøŖęµä½ē²åļ¼äøę 蔨示ęäøŖę„触ä½ē²åćå设åŖęäøē§ę„触ä½ļ¼é£ä¹åęÆåøøę°ļ¼ę们ę
ę仄ę„触ä½ēdensity summationå®é äøęÆä¹äŗäøäøŖä½ē§Æēęéćå¦ęęęē²åé½ęÆēøåé“č·ļ¼é£ä¹ContactåęÆåInneråęÆå°±äøęØ”äøę ·äŗćęµä½ē²åēdensity summationäøå£é¢ē²åēåÆåŗ¦å®é äøęÆę å ³ēļ¼åŖäøä½ē§Æęå ³ćę仄å³ä½æå£é¢ęÆåÆåŗ¦å¾å¤§ēęęļ¼ä¹äøä¼ä½æå¾ęµä½åØåå®density summationååÆåŗ¦åé«ć
å®ä¾DensitySummation<Contact<Base>>ļ¼ęęcontactēę¬ēåŗē±»ćęå§ęē±»ååŗå®äøŗDataDelegateContactćē¼åę„触ä½äæ”ęÆļ¼contact_inv_rho0_ćcontact_mass_ćęä¾ContactSummation(index_i)ļ¼åƹęęcontacté»ååäøéåÆåŗ¦ę±åć
注ęļ¼ęęContactåęÆåę²”ęå®ē°update()ęåå½ę°ļ¼åŖå®ē°äŗinteraction()ęåå½ę°ćčæęÆå äøŗå®åØčæå„设讔é被å½ä½ā对 rho_sum_ēå¢éäæ®ę£é”¹ļ¼correction termļ¼āļ¼čäøęÆäøäøŖāå®ę“ēåÆåŗ¦ę“ę°ē®ę³āćęē»ęrho_sum_åårho_ć仄åē±rho_擾ēåŗVol_ļ¼Vol = mass / rhoļ¼čæē±»ē¶ęč½ēåØä½ļ¼åŗå½ē±Innerļ¼ęå
¶FreeSurface/NearSurfaceč£
é„°ēļ¼ę„ē»äøåäøę¬”ļ¼éæå
éå¤/å²ēŖć
å®ä¾
DensitySummation<Contact<>>ļ¼å®ē°interaction()ļ¼ęcontactę±åāå å°ārho_sum_äøćå®ä¾
DensitySummation<Contact<Adaptive>>ćå®ē°interaction()ļ¼äøContact<>类似ļ¼ä½åƹčŖéåŗåNumberDensityScaleFactor(h_ratio)äæ®ę£ć
FreeSurface/NearSurfaceå å åęÆļ¼åŖę¹updateč§åļ¼
SummationTypeåÆä»„ęÆē©ŗęč
Adaptiveć
樔ęæDensitySummation<Inner<FreeSurface, SummationType...>>ļ¼ē»§ęæčŖDensitySummation<Inner<SummationType...>>ćåŖå®ē°update()ļ¼rho = max(rho_sum, rho0)ļ¼éæå
čŖē±é¢å¤äøåēä½åÆåŗ¦ļ¼ć
å®ä¾
using DensitySummationFreeSurfaceInner = DensitySummation<Inner<FreeSurface>>;ćčæéSummationTypeęÆē©ŗć
FreeStreamäøNotNearSurfaceļ¼äø¤äøŖāNearSurfaceType policy functorā
NotNearSurfaceļ¼čæč”Øé¢å°±ē“ę„čæårhoļ¼ēøå½äŗäæęåå¼ļ¼äøēØrho_sumļ¼ćFreeStreamļ¼å¦ęrho_sum < rhoļ¼ęęÆä¾ęē¼ŗå£č”„äøē¹ļ¼ę“āęø©åāēčŖē±ęµäæ®ę£ļ¼āārho_sum + SMAX(Real(0), (rho - rho_sum)) * rho0 / rhoć
樔ęæDensitySummation<Inner<NearSurfaceType, SummationType...>>ļ¼NearSurfaceTypeęēęÆFreeStreamåNotNearSurfacećåŖå®ē°update()ļ¼å¦ęāé čæčŖē±é¢āåēØnear_surface_rho_(rho_sum,rho0,rho)ļ¼å¦åēØrho_sum éčæē²ååéIndicator+å
é»åå¤ęisNearFreeSurface(i)åŖč¦é»å±
éęIndicator==1就认为near surfaceļ¼
å®ä¾
using DensitySummationInnerNotNearSurface = DensitySummation<Inner<NotNearSurface>>;å®ä¾
using DensitySummationInnerFreeStream = DensitySummation<Inner<FreeStream>>;ēä»·äŗ
对äŗč”Øé¢ē²åęč čæč”Øé¢ē²åļ¼äøč¬ä¼ę
ļ¼äŗęÆć
ļ¼äŗęÆć
ä¹å³ćę仄ę们åÆä»„认为
FreeStreamē±»åēdensity summationå°č¾¹ēē²åēęé«äŗäøäŗļ¼ä½ę²”ęåFreeSurfaceē±»åé£ę ·ē“ę„ęé«å°åčåÆåŗ¦ļ¼å ę¤čæęÆäøē§ę“软ēå¤ēć
å¤åē±»åļ¼Inner+Contactēē»åļ¼
å¤åē±»åēåŗē±»ļ¼
using DensitySummationComplex = BaseDensitySummationComplex<Inner<>, Contact<>>;using DensitySummationComplexAdaptive = BaseDensitySummationComplex<Inner<Adaptive>, Contact<Adaptive>>;using DensitySummationComplexFreeSurface = BaseDensitySummationComplex<Inner<FreeSurface>, Contact<>>;using DensitySummationFreeSurfaceComplexAdaptive = BaseDensitySummationComplex<Inner<FreeSurface, Adaptive>, Contact<Adaptive>>;using DensitySummationFreeStreamComplex = BaseDensitySummationComplex<Inner<FreeStream>, Contact<>>;using DensitySummationFreeStreamComplexAdaptive = BaseDensitySummationComplex<Inner<FreeStream, Adaptive>, Contact<Adaptive>>;using DensitySummationNotNearSurfaceComplex = BaseDensitySummationComplex<Inner<NotNearSurface>, Contact<>>;
é对ååč¾¹ēēēę¬
设置ååč¾¹ēę¶ļ¼äøč¬ä¼åę„设置BidirectionalBufferćdensity summationé»č®¤é对ęęęµä½ē²åćä½ęÆåØbufferåŗåäøēē²å使ēØtarget pressureę“ę°åÆåŗ¦ļ¼
ę仄éč¦åƹé»č®¤ēdensity summationåäøäøŖę¹čæāāčÆå«ē²åęÆå¦äøŗå
éØęµåØåŗåēē²åļ¼åŖęå½ę”件滔足ę¶ļ¼ęådensity summationćč§tests\extra_source_and_tests\extra_src\shared\pressure_boundary\density_correciton.hļ¼
å
¶äøassignDensity(index_i)åēęÆrho_[index_i] = rho_sum_[index_i];ć
Last updated