Changeset 15539


Ignore:
Timestamp:
07/22/13 14:08:19 (12 years ago)
Author:
seroussi
Message:

CHG: trying ice front for coupling solutions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp

    r15538 r15539  
    4444        if(!ismacayeal & !ispattyn & !isstokes & !isl1l2) return;
    4545
    46         /*Create pressure loads as boundary conditions. Pay attention to the partitioning if we are running in parallel (the nodes
    47          * 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 
    5246        /*Initialize counter: */
    5347        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);
    9848
    9949        /*Create Penpair for penalties: */
Note: See TracChangeset for help on using the changeset viewer.