!   Commands inserted into this file will be executed just prior to the ANSYS SOLVE command.
!   These commands may supersede command settings set by Workbench.

!   Active UNIT system in Workbench when this object was created:  Metric (m, kg, N, s, V, A)
!   NOTE:  Any data that requires units (such as mass) is assumed to be in the consistent solver unit system.
!                See Solving Units in the help system for more information.


/com,### Inistate definition #####################################################################

!---------------------------------------
! Inistate soil

CMSEL,S,elem_outer1_soil
CMSEL,A,elem_outer2_soil
CM,elem_outer_soil,ELEM

accelz=-9.81

*dim,zone,char,1,2
zone(1,1)='outer'
zone(1,2)='inner'

!Loop outer/inner zone
*do,kk,1,2
    varzone=zone(1,kk)
    CSYS,0
    
    CMSEL,S,elem_%varzone%_soil
    NSLE,S,CORNER
    NSEL,R,LOC,Y,0
    *GET,mnloc_x,NODE,0,MNLOC,X
    NSEL,R,LOC,X,mnloc_x
    
    *GET,layer_nodes,NODE,0,COUNT
    layers=layer_nodes-1
    
    *DIM,layer_%varzone%_soil,ARRAY,layers,9
        !column1: item number
        !column2: upper z-coordinate
        !column3: lower z-coordinate
        !column4: item thickness
        !column5: item density
        !column6: item poisson's ratio
        !column7: INISTATE Cxx & Cyy
        !column8: INISTATE Czz
        *GET,min_elem_num,ELEM,0,NUM,MIN
        *GET,min_mat_num,ELEM,min_elem_num,ATTR,MAT
        *DO,ii,1,layers
            layer_%varzone%_soil(ii,1)=ii
            upper_node=NODE(mnloc_x,0,0)
            layer_%varzone%_soil(ii,2)=NZ(upper_node)
            NSEL,U,,,upper_node
            lower_node=NODE(mnloc_x,0,0)
            layer_%varzone%_soil(ii,3)=NZ(lower_node)
            layer_%varzone%_soil(ii,4)=layer_%varzone%_soil(ii,2)-layer_%varzone%_soil(ii,3)
            
            layer_cent=0.5*layer_%varzone%_soil(ii,4)
            elem_cent_depth=layer_cent-layer_%varzone%_soil(ii,2)
            *GET,layer_dens,DENS,min_mat_num,TEMP,elem_cent_depth    
            *GET,layer_pois,NUXY,min_mat_num,TEMP,elem_cent_depth    

            *if,layer_dens,eq,0,then                                              
                *GET,layer_lat_pres,KXX,min_mat_num,TEMP,elem_cent_depth          
                layer_%varzone%_soil(ii,9)=layer_lat_pres                         
            *else                                                                 
                layer_%varzone%_soil(ii,9)=0                                      
	     *endif                                                                     

            layer_%varzone%_soil(ii,5)=layer_dens
            layer_%varzone%_soil(ii,6)=layer_pois
        *ENDDO
    
    INISTATE,SET,DTYP,STRE
    
    *IF,kk,LT,3,THEN                                                              
    upper_load=0                                                                  
    *ENDIF                                                                        
    
    *DO,ii,1,layers
        CMSEL,S,elem_%varzone%_soil
        NSLE
        NSEL,R,LOC,Z,layer_%varzone%_soil(ii,3),layer_%varzone%_soil(ii,2)
        ESLN,R,1
        layer_weight=layer_%varzone%_soil(ii,4)*layer_%varzone%_soil(ii,5)*accelz
        depth_weight=layer_weight/2+upper_load
        
        *if,layer_weight,eq,0,then                                                
            lat_earth_pres=layer_%varzone%_soil(ii,9)                             
            layer_%varzone%_soil(ii,7)=-lat_earth_pres                            
            layer_%varzone%_soil(ii,8)=depth_weight                               
        *else
            k0=layer_%varzone%_soil(ii,6)/(1-layer_%varzone%_soil(ii,6))
            layer_%varzone%_soil(ii,7)=k0*depth_weight
            layer_%varzone%_soil(ii,8)=depth_weight
        *endif
		
        ! INISTATE command Cxx, Cyy, Czz, Cxy, Cyz, Cxz
        INISTATE,DEFINE,,,,,layer_%varzone%_soil(ii,7),layer_%varzone%_soil(ii,7),layer_%varzone%_soil(ii,8),0,0,0
        upper_load=layer_weight+upper_load
    *ENDDO
    *STATUS,layer_%varzone%_soil
	
*ENDDO
ALLSEL,ALL
INISTATE,WRITE,1,,,0,S

CMACEL,elem_soil,,,9.81    
allsel,all

