| 831 | } // hasFluidSources |
| 832 | |
| 833 | void |
| 834 | IBMethod::computeLagrangianForce(const double data_time) |
| 835 | { |
| 836 | int ierr; |
| 837 | const int coarsest_ln = 0; |
| 838 | const int finest_ln = d_hierarchy->getFinestLevelNumber(); |
| 839 | std::vector<Pointer<LData>>*F_data, *X_data, *U_data; |
| 840 | bool *F_needs_ghost_fill, *X_needs_ghost_fill; |
| 841 | getForceData(&F_data, &F_needs_ghost_fill, data_time); |
| 842 | getPositionData(&X_data, &X_needs_ghost_fill, data_time); |
| 843 | getVelocityData(&U_data, data_time); |
| 844 | for (int ln = coarsest_ln; ln <= finest_ln; ++ln) |
| 845 | { |
| 846 | if (!d_l_data_manager->levelContainsLagrangianData(ln)) continue; |
| 847 | ierr = VecSet((*F_data)[ln]->getVec(), 0.0); |
| 848 | IBTK_CHKERRQ(ierr); |
| 849 | if (d_ib_force_fcn) |
| 850 | { |
| 851 | d_ib_force_fcn->computeLagrangianForce( |
| 852 | (*F_data)[ln], (*X_data)[ln], (*U_data)[ln], d_hierarchy, ln, data_time, d_l_data_manager); |
| 853 | } |
| 854 | } |
| 855 | *F_needs_ghost_fill = true; |
| 856 | return; |
| 857 | } // computeLagrangianForce |
| 858 | |
| 859 | void |
| 860 | IBMethod::computeLinearizedLagrangianForce(Vec& X_vec, const double /*data_time*/) |
no test coverage detected