Lines Matching +full:- +full:o
1 // SPDX-FileCopyrightText: Copyright (c) 2017-2024, HONEE contributors.
2 // SPDX-License-Identifier: Apache-2.0 OR BSD-2-Clause
22 MPI_Comm comm = honee->comm; in PRINT_ADVECTION()
23 Ceed ceed = honee->ceed; in PRINT_ADVECTION()
29 PetscCall(DMGetDimension(honee->dm, &dim)); in PRINT_ADVECTION()
30 PetscCallCeed(ceed, CeedQFunctionContextGetData(problem->ics.qfctx, CEED_MEM_HOST, &setup_ctx)); in PRINT_ADVECTION()
31 …PetscCallCeed(ceed, CeedQFunctionContextGetData(problem->apply_vol_rhs.qfctx, CEED_MEM_HOST, &adve… in PRINT_ADVECTION()
38 app_ctx->problem_name, StabilizationTypes[advection_ctx->stabilization], in PRINT_ADVECTION()
39 … StabilizationTauTypes[advection_ctx->stabilization_tau], AdvDifWindTypes[setup_ctx->wind_type])); in PRINT_ADVECTION()
41 if (setup_ctx->wind_type == ADVDIF_WIND_TRANSLATION) { in PRINT_ADVECTION()
42 CeedScalar *wind = setup_ctx->wind; in PRINT_ADVECTION()
53 …mm, " Initial Condition Type : %s\n", AdvDifICTypes[setup_ctx->initial_condition_ty… in PRINT_ADVECTION()
54 switch (setup_ctx->initial_condition_type) { in PRINT_ADVECTION()
61 …e Continuity : %s\n", AdvDifBubbleContinuityTypes[setup_ctx->bubble_continuity_ty… in PRINT_ADVECTION()
64 …ntf(comm, " Wave Type : %s\n", AdvDifWaveTypes[setup_ctx->wave_type])); in PRINT_ADVECTION()
68 PetscCallCeed(ceed, CeedQFunctionContextRestoreData(problem->ics.qfctx, &setup_ctx)); in PRINT_ADVECTION()
69 …PetscCallCeed(ceed, CeedQFunctionContextRestoreData(problem->apply_vol_rhs.qfctx, &advection_ctx)); in PRINT_ADVECTION()
77 Ceed ceed = honee->ceed; in CreateKSPMassOperator_AdvectionStabilized()
87 PetscCall(DMGetDimension(honee->dm, &dim)); in CreateKSPMassOperator_AdvectionStabilized()
93 PetscCallCeed(ceed, CeedOperatorCompositeGetSubList(honee->op_rhs_ctx->op, &sub_ops)); in CreateKSPMassOperator_AdvectionStabilized()
123 …PetscCallCeed(ceed, CeedOperatorSetName(*op_mass, "RHS Mass Operator, Advection-Diffusion Stabiliz… in CreateKSPMassOperator_AdvectionStabilized()
125 PetscCallCeed(ceed, CeedOperatorSetField(*op_mass, "q", elem_restr_q, basis_q, honee->q_ceed)); in CreateKSPMassOperator_AdvectionStabilized()
147 Ceed ceed = honee->ceed; in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
148 NodalProjectionData projection = diff_flux_proj->projection; in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
153 // -- Get Pre-requisite things in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
154 PetscCall(DMGetDimension(projection->dm, &dim)); in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
155 PetscCall(DMGetFieldNumComps(honee->dm, 0, &num_comp_q)); in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
157 { // Get advection-diffusion QF context in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
161 …if (honee->op_ifunction) PetscCallCeed(ceed, CeedOperatorCompositeGetSubList(honee->op_ifunction, … in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
162 else PetscCallCeed(ceed, CeedOperatorCompositeGetSubList(honee->op_rhs_ctx->op, &sub_ops)); in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
174 …PetscCall(DMPlexCeedElemRestrictionCreate(ceed, honee->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALUE,… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
175 …PetscCall(DMPlexCeedBasisCreate(ceed, honee->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALUE, 0, 0, &ba… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
177 …PetscCall(QDataGet(ceed, projection->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALUE, &elem_restr_qd, &… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
188 …PetscCheck(qf_rhs_volume, honee->comm, PETSC_ERR_SUP, "%s not valid for DM of dimension %" PetscIn… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
193 …PetscCallCeed(ceed, CeedQFunctionAddOutput(qf_rhs_volume, "diffusive flux RHS", projection->num_co… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
218 // -- Build RHS operator in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
230 PetscCall(QDataBoundaryGradientGetNumComponents(honee->dm, &q_data_size)); in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
234 …PetscCallCeed(ceed, CeedQFunctionAddOutput(qf_rhs_boundary, "diffusive flux RHS", projection->num_… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
236 PetscCall(DMGetLabel(projection->dm, "Face Sets", &face_sets_label)); in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
237 …PetscCall(DMLabelCreateGlobalValueArray(projection->dm, face_sets_label, &num_face_set_values, &fa… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
245 …PetscCall(DMPlexCreateFaceLabel(projection->dm, face_set_values[f], &face_orientation_label_name)); in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
246 PetscCall(DMGetLabel(projection->dm, face_orientation_label_name, &face_orientation_label)); in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
249 …PetscCall(DMLabelCreateGlobalValueArray(projection->dm, face_orientation_label, &num_orientations_… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
250 for (PetscInt o = 0; o < num_orientations_values; o++) { in DivDiffFluxProjectionCreateRHS_Direct_AdvDif() local
256 …PetscInt orientation = orientation_values[o], dm_field_q = 0, height_cell = 0, height_f… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
258 …PetscCall(DMPlexCeedElemRestrictionCreate(ceed, honee->dm, face_orientation_label, orientation, he… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
259 …PetscCall(DMPlexCeedBasisCellToFaceCreate(ceed, honee->dm, face_orientation_label, orientation, or… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
260 …PetscCall(DMPlexCeedElemRestrictionCreate(ceed, projection->dm, face_orientation_label, orientatio… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
262 …PetscCall(DMPlexCeedBasisCreate(ceed, projection->dm, face_orientation_label, orientation, height_… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
263 …PetscCall(QDataBoundaryGradientGet(ceed, honee->dm, face_orientation_label, orientation, &elem_res… in DivDiffFluxProjectionCreateRHS_Direct_AdvDif()
299 Ceed ceed = honee->ceed; in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
300 NodalProjectionData projection = diff_flux_proj->projection; in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
311 PetscCall(DMGetDimension(projection->dm, &dim)); in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
312 PetscCall(DMGetFieldNumComps(honee->dm, 0, &num_comp_q)); in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
314 { // Get advection-diffusion QF context in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
318 …if (honee->op_ifunction) PetscCallCeed(ceed, CeedOperatorCompositeGetSubList(honee->op_ifunction, … in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
319 else PetscCallCeed(ceed, CeedOperatorCompositeGetSubList(honee->op_rhs_ctx->op, &sub_ops)); in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
322 …PetscCall(DMPlexCeedElemRestrictionCreate(ceed, honee->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALUE,… in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
323 …PetscCall(DMPlexCeedBasisCreate(ceed, honee->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALUE, 0, 0, &ba… in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
324 …PetscCall(DMPlexCeedElemRestrictionCreate(ceed, projection->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_V… in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
325 …PetscCall(DMPlexCeedBasisCreate(ceed, projection->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALUE, heig… in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
326 …PetscCall(QDataGet(ceed, projection->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALUE, &elem_restr_qd, &… in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
336 …PetscCheck(qf_rhs, honee->comm, PETSC_ERR_SUP, "%s not valid for DM of dimension %" PetscInt_FMT, … in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
341 …PetscCallCeed(ceed, CeedQFunctionAddOutput(qf_rhs, "F_diff RHS", projection->num_comp, CEED_EVAL_I… in DivDiffFluxProjectionCreateRHS_Indirect_AdvDif()
370 …CCreateIFunctionQF(bc_def, Advection2d_InOutFlow, Advection2d_InOutFlow_loc, honee_bc->qfctx, qf)); in AdvectionInflowBCSetup_CreateIFunctionQF()
373 …neeBCCreateIFunctionQF(bc_def, Advection_InOutFlow, Advection_InOutFlow_loc, honee_bc->qfctx, qf)); in AdvectionInflowBCSetup_CreateIFunctionQF()
384 AdvDifBubbleContinuityType bubble_continuity_type = -1; in NS_ADVECTION()
389 MPI_Comm comm = honee->comm; in NS_ADVECTION()
390 Ceed ceed = honee->ceed; in NS_ADVECTION()
401 // ------------------------------------------------------ in NS_ADVECTION()
403 // ------------------------------------------------------ in NS_ADVECTION()
408 CeedScalar Ctau_a = PetscPowScalarInt(honee->app_ctx->degree, 2); in NS_ADVECTION()
409 CeedScalar Ctau_d = PetscPowScalarInt(honee->app_ctx->degree, 4); in NS_ADVECTION()
415 AdvDifWaveType wave_type = -1; in NS_ADVECTION()
419 for (PetscInt i = 0; i < dim; i++) domain_size[i] = domain_max[i] - domain_min[i]; in NS_ADVECTION()
421 // ------------------------------------------------------ in NS_ADVECTION()
423 // ------------------------------------------------------ in NS_ADVECTION()
425 // -- Physics in NS_ADVECTION()
427 …PetscCall(PetscOptionsEnum("-wind_type", "Wind type in Advection", NULL, AdvDifWindTypes, (PetscEn… in NS_ADVECTION()
431 …PetscCall(PetscOptionsRealArray("-wind_translation", "Constant wind vector", NULL, wind, &n, &user… in NS_ADVECTION()
432 …PetscCall(PetscOptionsScalar("-diffusion_coeff", "Diffusion coefficient", NULL, diffusion_coeff, &… in NS_ADVECTION()
433 …PetscCall(PetscOptionsScalar("-CtauS", "Scale coefficient for tau (nondimensional)", NULL, CtauS, … in NS_ADVECTION()
434 …PetscCall(PetscOptionsBool("-strong_form", "Strong (true) or weak/integrated by parts (false) adve… in NS_ADVECTION()
436 …PetscCall(PetscOptionsScalar("-E_wind", "Total energy of inflow wind", NULL, E_wind, &E_wind, NULL… in NS_ADVECTION()
437 …PetscCall(PetscOptionsEnum("-stab", "Stabilization method", NULL, StabilizationTypes, (PetscEnum)(… in NS_ADVECTION()
438 …PetscCall(PetscOptionsEnum("-stab_tau", "Stabilization constant, tau", NULL, StabilizationTauTypes… in NS_ADVECTION()
440 …PetscCall(PetscOptionsScalar("-Ctau_t", "Stabilization time constant", NULL, Ctau_t, &Ctau_t, NULL… in NS_ADVECTION()
441 …PetscCall(PetscOptionsScalar("-Ctau_a", "Coefficient for the stabilization, advection component", … in NS_ADVECTION()
442 …PetscCall(PetscOptionsScalar("-Ctau_d", "Coefficient for the stabilization, diffusion component", … in NS_ADVECTION()
443 …PetscCall(PetscOptionsBool("-implicit", "Use implicit (IFunction) formulation", NULL, implicit = P… in NS_ADVECTION()
444 …PetscCall(PetscOptionsEnum("-advection_ic_type", "Initial condition for Advection problem", NULL, … in NS_ADVECTION()
446 // IC-specific options in NS_ADVECTION()
449 PetscCall(PetscOptionsDeprecated("-wave_type", "-advection_ic_wave_type", "HONEE 0.0", NULL)); in NS_ADVECTION()
450 …PetscCall(PetscOptionsDeprecated("-wave_frequency", "-advection_ic_wave_frequency", "HONEE 0.0", N… in NS_ADVECTION()
451 … PetscCall(PetscOptionsDeprecated("-wave_phase", "-advection_ic_wave_phase", "HONEE 0.0", NULL)); in NS_ADVECTION()
452 …PetscCall(PetscOptionsEnum("-advection_ic_wave_type", "Type of wave", NULL, AdvDifWaveTypes, (Pets… in NS_ADVECTION()
454 …PetscCall(PetscOptionsScalar("-advection_ic_wave_frequency", "Frequency of sine wave", NULL, wave_… in NS_ADVECTION()
455 …PetscCall(PetscOptionsScalar("-advection_ic_wave_phase", "Length correction", NULL, wave_phase, &w… in NS_ADVECTION()
458 …PetscCall(PetscOptionsScalar("-advection_ic_bl_height_factor", "Height of boundary layer in IC", N… in NS_ADVECTION()
463 PetscCall(PetscOptionsDeprecated("-rc", "-advection_ic_bubble_rc", "HONEE 0.0", NULL)); in NS_ADVECTION()
464 …PetscCall(PetscOptionsDeprecated("-bubble_continuity", "-advection_ic_bubble_continuity", "HONEE 0… in NS_ADVECTION()
465 …PetscCall(PetscOptionsScalar("-advection_ic_bubble_rc", "Characteristic radius of thermal bubble",… in NS_ADVECTION()
467 …PetscCall(PetscOptionsEnum("-advection_ic_bubble_continuity", "Smooth, back_sharp, or thick", NULL… in NS_ADVECTION()
475 // -- Warnings in NS_ADVECTION()
477 … PetscCall(PetscPrintf(comm, "Warning! Use -wind_translation only with -wind_type translation\n")); in NS_ADVECTION()
482 …"Warning! Background wind in the z direction should be zero (-wind_translation x,x,0) with -advect… in NS_ADVECTION()
485 PetscCall(PetscPrintf(comm, "Warning! Use -CtauS only with -stab su or -stab supg\n")); in NS_ADVECTION()
489 if (stab == STAB_SUPG) problem->create_mass_operator = CreateKSPMassOperator_AdvectionStabilized; in NS_ADVECTION()
491 // ------------------------------------------------------ in NS_ADVECTION()
493 // ------------------------------------------------------ in NS_ADVECTION()
494 // -- Scale variables to desired units in NS_ADVECTION()
495 Units units = honee->units; in NS_ADVECTION()
496 E_wind *= units->Joule; in NS_ADVECTION()
497 rc = fabs(rc) * units->meter; in NS_ADVECTION()
499 wind[i] *= (units->meter / units->second); in NS_ADVECTION()
502 // -- Setup Context in NS_ADVECTION()
503 setup_context->rc = rc; in NS_ADVECTION()
504 setup_context->lx = domain_size[0]; in NS_ADVECTION()
505 setup_context->ly = domain_size[1]; in NS_ADVECTION()
506 setup_context->lz = dim == 3 ? domain_size[2] : 0.; in NS_ADVECTION()
507 setup_context->wind[0] = wind[0]; in NS_ADVECTION()
508 setup_context->wind[1] = wind[1]; in NS_ADVECTION()
509 setup_context->wind[2] = dim == 3 ? wind[2] : 0.; in NS_ADVECTION()
510 setup_context->wind_type = wind_type; in NS_ADVECTION()
511 setup_context->initial_condition_type = advectionic_type; in NS_ADVECTION()
512 setup_context->bubble_continuity_type = bubble_continuity_type; in NS_ADVECTION()
513 setup_context->time = 0; in NS_ADVECTION()
514 setup_context->wave_frequency = wave_frequency; in NS_ADVECTION()
515 setup_context->wave_phase = wave_phase; in NS_ADVECTION()
516 setup_context->wave_type = wave_type; in NS_ADVECTION()
517 setup_context->bl_height_factor = bl_height_factor; in NS_ADVECTION()
519 // -- QFunction Context in NS_ADVECTION()
520 honee->phys->implicit = implicit; in NS_ADVECTION()
521 advection_ctx->CtauS = CtauS; in NS_ADVECTION()
522 advection_ctx->E_wind = E_wind; in NS_ADVECTION()
523 advection_ctx->implicit = implicit; in NS_ADVECTION()
524 advection_ctx->strong_form = strong_form; in NS_ADVECTION()
525 advection_ctx->stabilization = stab; in NS_ADVECTION()
526 advection_ctx->stabilization_tau = stab_tau; in NS_ADVECTION()
527 advection_ctx->Ctau_a = Ctau_a; in NS_ADVECTION()
528 advection_ctx->Ctau_d = Ctau_d; in NS_ADVECTION()
529 advection_ctx->Ctau_t = Ctau_t; in NS_ADVECTION()
530 advection_ctx->diffusion_coeff = diffusion_coeff; in NS_ADVECTION()
531 advection_ctx->divFdiff_method = honee->app_ctx->divFdiffproj_method; in NS_ADVECTION()
533 PetscCallCeed(ceed, CeedQFunctionContextCreate(honee->ceed, &ics_qfctx)); in NS_ADVECTION()
537 PetscCallCeed(ceed, CeedQFunctionContextCreate(honee->ceed, &advection_qfctx)); in NS_ADVECTION()
543 // ------------------------------------------------------ in NS_ADVECTION()
545 // ------------------------------------------------------ in NS_ADVECTION()
546 problem->print_info = PRINT_ADVECTION; in NS_ADVECTION()
547 problem->num_comps_jac_data = 0; in NS_ADVECTION()
550 …problem->ics = (HoneeQFSpec){.qf_func_ptr = ICsAdvection2d, .qf_loc = ICs… in NS_ADVECTION()
551 …problem->apply_vol_rhs = (HoneeQFSpec){.qf_func_ptr = RHS_Advection2d, .qf_loc = RH… in NS_ADVECTION()
552 …problem->apply_vol_ifunction = (HoneeQFSpec){.qf_func_ptr = IFunction_Advection2d, .qf_lo… in NS_ADVECTION()
553 problem->compute_exact_solution_error = PETSC_TRUE; in NS_ADVECTION()
556 …problem->ics = (HoneeQFSpec){.qf_func_ptr = ICsAdvection, .qf_loc = ICsAd… in NS_ADVECTION()
557 …problem->apply_vol_rhs = (HoneeQFSpec){.qf_func_ptr = RHS_Advection, .qf_loc = RHS_… in NS_ADVECTION()
558 …problem->apply_vol_ifunction = (HoneeQFSpec){.qf_func_ptr = IFunction_Advection, .qf_loc … in NS_ADVECTION()
559 problem->compute_exact_solution_error = PETSC_FALSE; in NS_ADVECTION()
562 problem->ics.qfctx = ics_qfctx; in NS_ADVECTION()
563 problem->apply_vol_rhs.qfctx = advection_qfctx; in NS_ADVECTION()
564 …PetscCallCeed(ceed, CeedQFunctionContextReferenceCopy(advection_qfctx, &problem->apply_vol_ifuncti… in NS_ADVECTION()
566 problem->num_components = 5; in NS_ADVECTION()
567 PetscCall(PetscMalloc1(problem->num_components, &problem->component_names)); in NS_ADVECTION()
568 …for (PetscInt i = 0; i < 5; i++) PetscCall(PetscStrallocpy(component_names[i], &problem->component… in NS_ADVECTION()
570 …PetscCall(DivDiffFluxProjectionCreate(honee, honee->app_ctx->divFdiffproj_method, 1, &honee->diff_… in NS_ADVECTION()
571 if (honee->diff_flux_proj) { in NS_ADVECTION()
572 DivDiffFluxProjectionData diff_flux_proj = honee->diff_flux_proj; in NS_ADVECTION()
573 NodalProjectionData projection = diff_flux_proj->projection; in NS_ADVECTION()
576 diff_flux_proj->CreateRHSOperator_Direct = DivDiffFluxProjectionCreateRHS_Direct_AdvDif; in NS_ADVECTION()
577 diff_flux_proj->CreateRHSOperator_Indirect = DivDiffFluxProjectionCreateRHS_Indirect_AdvDif; in NS_ADVECTION()
578 PetscCall(DMGetLocalSection(projection->dm, §ion)); in NS_ADVECTION()
579 switch (honee->diff_flux_proj->method) { in NS_ADVECTION()
591 …SETERRQ(PetscObjectComm((PetscObject)honee->dm), PETSC_ERR_ARG_WRONG, "Should not reach here with … in NS_ADVECTION()
592 DivDiffFluxProjectionMethods[honee->app_ctx->divFdiffproj_method]); in NS_ADVECTION()
597 for (PetscCount b = 0; b < problem->num_bc_defs; b++) { in NS_ADVECTION()
598 BCDefinition bc_def = problem->bc_defs[b]; in NS_ADVECTION()
606 PetscCallCeed(ceed, CeedQFunctionContextReferenceCopy(advection_qfctx, &honee_bc->qfctx)); in NS_ADVECTION()
607 honee_bc->honee = honee; in NS_ADVECTION()
608 honee_bc->num_comps_jac_data = 0; in NS_ADVECTION()