Changeset 15539
- Timestamp:
- 07/22/13 14:08:19 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
r15538 r15539 44 44 if(!ismacayeal & !ispattyn & !isstokes & !isl1l2) return; 45 45 46 /*Create pressure loads as boundary conditions. Pay attention to the partitioning if we are running in parallel (the nodes47 * referenced by a certain load must belong to the cluster node): */48 iomodel->FetchData(3,DiagnosticIcefrontEnum,ThicknessEnum,BedEnum);49 iomodel->FetchData(&pressureload,&numberofpressureloads,NULL,DiagnosticIcefrontEnum);50 iomodel->FetchData(&elements_type,NULL,NULL,FlowequationElementEquationEnum);51 52 46 /*Initialize counter: */ 53 47 count=0; 54 55 /*First load data:*/56 for (i=0;i<numberofpressureloads;i++){57 58 /*Retrieve element to which this icefront belongs: */59 if(iomodel->dim==2) segment_width=4;60 else segment_width=6;61 element=reCast<int,IssmDouble>(*(pressureload+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill)62 63 /*Now, if this element is not in the partition, pass: */64 if(!iomodel->my_elements[element]) continue;65 66 /*Do not create ice front if Hutter or Stokes elements*/67 if (reCast<int,IssmDouble>(*(elements_type+element))==HutterApproximationEnum) continue;68 if (reCast<int,IssmDouble>(*(elements_type+element))==MacAyealApproximationEnum) continue;69 if (reCast<int,IssmDouble>(*(elements_type+element))==L1L2ApproximationEnum) continue;70 if (reCast<int,IssmDouble>(*(elements_type+element))==PattynApproximationEnum) continue;71 if (reCast<int,IssmDouble>(*(elements_type+element))==StokesApproximationEnum) continue;72 73 /*Create and add load: */74 if (reCast<int,IssmDouble>(*(elements_type+element))==(MacAyealPattynApproximationEnum)){75 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum));76 count++;77 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,PattynIceFrontEnum,DiagnosticHorizAnalysisEnum));78 count++;79 }80 else if (reCast<int,IssmDouble>(*(elements_type+element))==(PattynStokesApproximationEnum)){81 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,PattynIceFrontEnum,DiagnosticHorizAnalysisEnum));82 count++;83 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,StokesIceFrontEnum,DiagnosticHorizAnalysisEnum));84 count++;85 }86 else if (reCast<int,IssmDouble>(*(elements_type+element))==(MacAyealStokesApproximationEnum)){87 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum));88 count++;89 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,StokesIceFrontEnum,DiagnosticHorizAnalysisEnum));90 count++;91 }92 }93 94 /*Free data: */95 iomodel->DeleteData(3,DiagnosticIcefrontEnum,ThicknessEnum,BedEnum);96 iomodel->DeleteData(elements_type,FlowequationElementEquationEnum);97 iomodel->DeleteData(pressureload,DiagnosticIcefrontEnum);98 48 99 49 /*Create Penpair for penalties: */
Note:
See TracChangeset
for help on using the changeset viewer.